标签:c architecture localization globalization
我需要在数据库中存储电子商务解决方案的产品.每个产品都应该有描述性信息,例如名称,描述等.
我需要将任何产品本地化为x种语言.
到目前为止我所做的是制作任何应该本地化的列和nvarchar(MAX),然后我存储一个这样的XML字符串:
<cultures>
<culture code="en-us">Super fast laptop</culture>
<culture code="da-dk">Super hurtig bærbar</culture>
</cultures>
当我从数据库加载到我的业务逻辑对象时,我将XML字符串解析为Dictionary< string,string>关键是文化/语言代码.
所以,当我想显示产品的名称时,我这样做:
lblName.Text = product.Name["en-us"];
有没有人有更好的解决方案?
解决方法:
您应该将当前语言存储在某处(例如,在singleton中),并在product.Name属性中使用语言设置来获取正确的字符串.这样,您只需为每个字段编写一次特定于语言的代码,而不是考虑使用字段的语言.
例如,假设您的单例在Localizer类中定义,该类存储与当前语言对应的枚举:
public class Product
{
private idType id;
public string Name
{
get
{
return Localizer.Instance.GetLocalString(id, "Name");
}
}
}
GetLocalString看起来像这样:
public string GetLocalString(idType objectId, string fieldName)
{
switch (_currentLanguage)
{
case Language.English:
// db access code to retrieve your string, may need to include the table
// the object is in (e.g. "Products" "Orders" etc.)
db.GetValue(objectId, fieldName, "en-us");
break;
}
}
标签:c,architecture,localization,globalization 来源: https://codeday.me/bug/20190627/1302752.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。