首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >全球化架构

全球化架构
EN

Stack Overflow用户
提问于 2008-08-26 16:48:47
回答 4查看 646关注 0票数 4

我需要在数据库中存储电子商务解决方案的产品。每个产品都应该有描述性信息,如名称、描述等。

我需要任何产品被本地化到x语言的数量。

到目前为止,我所做的就是创建任何应该本地化的列,然后存储一个nvarchar(MAX)字符串,如下所示:

代码语言:javascript
复制
<cultures>
    <culture code="en-us">Super fast laptop</culture>
    <culture code="da-dk">Super hurtig bærbar</culture>
</cultures>

当我将它从数据库加载到我的业务逻辑对象中时,我将该XML字符串解析为一个Dictionary<string, string>,其中的关键字是区域性/语言代码。

因此,当我想要显示产品的名称时,我这样做:

代码语言:javascript
复制
lblName.Text = product.Name["en-us"];

有人有更好的解决方案吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2008-08-26 19:08:54

您应该将当前语言存储在某个位置(例如,在singleton中),并在product.Name属性中使用language设置来获取正确的字符串。这样,您只需为每个字段编写一次特定于语言的代码,而不必考虑该字段使用的所有语言。

例如,假设您的单例是在Localizer类中定义的,该类存储与当前语言对应的枚举:

代码语言:javascript
复制
public class Product
{
  private idType id;
  public string Name
  {
    get
    {
      return Localizer.Instance.GetLocalString(id, "Name");
    }
  }
}

其中GetLocalString类似于:

代码语言:javascript
复制
  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;
    }
  }
票数 2
EN

Stack Overflow用户

发布于 2008-08-26 16:58:32

Rob Conery的MVC Storefront网络广播系列有a video on this issue (他在5:30左右到达数据库)。他存储了一个区域性列表,然后有一个用于非本地化数据的Product表和一个用于本地化文本的ProductCultureDetail表。

票数 1
EN

Stack Overflow用户

发布于 2008-08-26 16:59:22

资源文件

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28577

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档