2015-09-03 59 views
0

我想本地化Korzh組件EasyQuery。實際上,我設法將ui消息本地化。但是實體名稱,屬性和操作符拼寫仍然是英文。在asp.net中Korzh EasyQuery的本地化mvc

以下是我已經做了korzh.com描述(指步

$(document).ready(function() { 
    var culture = $('#hidCulture').val(); 

    if (culture.contains('nl')) { 
     EQ.core.texts = getDutchText(); 
    } else if (culture.contains('fr')) { 
     EQ.core.texts = getFrenchText(); 
    } else { 
     EQ.core.texts = getEnglishText(); 
    } 
}); 

的文本資源來自另一個文件,看起來像這樣:

getFrenchText = function() { 
    return { 
     Local: "fr", 
     AltMenuAttribute: "Attribute", 
     AltMenuAttribute: "Attribut", 
     ...    
     StrAddColumns: "Ajouter des colonnes", 

     Entities: { 
      "Company": "Entreprise", 
      "Office": "Site", 
      ... 
     }, 
     Attribute: { 
      "Company.Name": "Nom", 
      ... 
     }, 
     Operators: { 
      "Equal": { 
       "caption": "Egal à", 
       "displayFormat": "{expr1} [[est égal à]] {expr2}" 
     } 
    }; 
} 

有使用resource or property files其他解決方案但它不符合我的需要,據我瞭解,它並不本地化實體名稱。一個遇到同樣的問題?

回答

0

我無法解決使用JavaScript的問題。

我首先想到了使用EasyQuery提供的數據模型編輯器以一種語言對實體和屬性字幕進行硬編碼。這個解決方案只允許我使用xml文件的一種語言或一種語言。根據我的觀點,爲每種語言生成不同的xml是一個非常糟糕的主意。

在查詢生成器控制器中,有一種加載模型的方法。我只是簡單地添加了一個遞歸查找資源集中的標題的方法。

[HttpPost] 
public ActionResult GetModel(string modelName) 
{ 
    var dbModel = _eqService.GetModel(modelName); 
    var resources = EasyQueryModule.ResourceManager.GetResourceSet(
     CultureInfo.CurrentUICulture, false, true 
    ); 

    Translate(dbModel.EntityRoot.SubEntities, resources); 

    return Json(dbModel.SaveToDictionary()); 
} 

private static void Translate(IEnumerable<Entity> entities, ResourceSet resources) 
{ 
    entities.ForEach(entity => 
    { 
     entity.Name = resources.GetString(entity.Name) ?? entity.Name; 

     entity.Attributes.ForEach(attribute => 
      attribute.Caption = resources.GetString(attribute.Caption) ?? attribute.Caption 
     ); 

     Translate(entity.SubEntities, resources); 
    }); 
} 

它可能不是本地化小部件的最有效方式。我還沒有找到更好的。請注意,我防止錯誤的情況下,如果缺少資源項

爲了我的擔心,本地化的運營商將會很好,但不是強制性的。他們保持英語直到進一步調查。