【问题标题】:Globalize Database ASP.NET MVC全球化数据库 ASP.NET MVC
【发布时间】:2012-02-23 15:05:19
【问题描述】:

我会很感激这里的一些想法,我们已经毫无问题地全球化了我们网站上的所有静态内容,但现在我们来到了网站用户可以输入的数据库内容。例如,用户可以创建一个包含问题和答案的调查,这需要全球化,以下是我的想法和问题:

解决方案 - 为特定文化分开表,例如我们有一个带有名称字段的 Survey 表,我们将该名称字段移动到一个 SurveyCultures 表中,该表允许每个表有多个名称字段我们希望支持的文化被添加到调查中。这必须为SurveyQuestions 和SurveyAnswers 表完成。 (这似乎是在MVC storefront example 上完成的方式)

问题 - 这将创建许多额外的表格,每个表格都有一个,允许用户输入对其他用户可见的文本。还将创建一个非常复杂的前端,允许用户输入问题,然后选择输入不同文化的问题。如果他们只翻译了一半的文化调查,也会导致问题。

我的问题是:这是最好的方法吗?这是人们通常的做法吗?如果不是,推荐的做法是什么?

任何反馈或想法将不胜感激,因为我正在兜圈子。

非常感谢

【问题讨论】:

    标签: asp.net sql-server asp.net-mvc c#-4.0 globalization


    【解决方案1】:

    坚持使用您的原始表格。添加很多表肯定是不正确的。噩梦般的维护而且通常是错误的。

    在相关表中添加名为Locale 的列(字段)。它将包含例如:en-US、fr-FR、he-IL 等。

    然后在您的代码中,查询此字段并决定如何呈现您的文本或将其路由到何处。插入/更新也是如此。

    例如,您可以:

    • 查询使用给定语言的所有问题。
    • 获取所有可用语言的给定问题。
    • 以表和列的相同结构以所需的每种语言保存所有数据。

    等等

    【讨论】:

      【解决方案2】:

      我几乎没有处理这个问题的经验,但我处理它的方法是在现有表中添加一个“语言”列。这可能会导致:

      Table: Survey
      Columns: Unique identifier, date created, owner, etc.
      
      Table: SurveyTitle
      Columns: Language, Title, IsReleased (flag indicating whether survey in this language is ready for use), etc.
      
      Table: SurveyQuestion
      Columns: Language, QuestionNumber, QuestiontText etc.
      
      Table: Language (this is a lookup table, used for foreign keys on all those Language columns)
      Columns: Language (Id), Description, etc.
      

      (所有这些等都是根据您的要求填写您需要的任何内容) 这样你就有了:

      • 调查列表
      • 调查使用的语言列表(带有打开/关闭标志,或准备好/仍在编写中)
      • 每种语言的问题列表
      • 支持的所有语言的列表

      【讨论】:

      • 我非常喜欢这些东西,因为它给了我最大的控制权。非常感谢。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多