2012-02-23 57 views
1

我希望这里有一些想法,我们已经全球化了我们网站上的所有静态内容而没有问题,但现在我们已经到了网站用户可以输入的数据库内容。例如,用户可以创建一个问题和答案的调查,这一点需要以及下文将要全球化是我曾想过这样做的方式和问题:全球化数据库ASP.NET MVC

解决方案 - 针对特定文化不同的表,例如我们有一个带名称字段的Survey表格,我们将该名称字段移动到SurveyCultures表格,该表格允许针对每个我们希望支持的文化的多个名称字段针对调查添加。这将必须为SurveyQuestionsSurveyAnswers表完成。 (这是它似乎已经在MVC storefront example所做的那样)

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

我的问题是:这是最好的方式,这是人们通常这样做的方式,如果不是这通常采取什么建议的做法?

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

非常感谢

回答

0

我已经处理这个问题经验不多,但我想接近它的方式是一个“语言”栏添加到现有的表。这可能导致类似于:

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. 

(所有这些等等是填充在任何你需要特定于您的需求) 这种方式你:

  • 调查
  • 列表语言列表,该调查是在(与标志的开/关,或准备/仍然被写入)
  • 在每种语言
  • 所支持
+0

所有的语言列表我的东西就非常沿着这些线路,因为它给了我最大程度的控制的问题清单。非常感谢。 – user351711 2012-04-22 15:25:37

2

坚持与您的原始表。添加大量表格绝对不正确。梦魇保持和一般错误。

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

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

可以,例如:

  • 查询是在一个给定的语言的所有问题。
  • 以所有可用语言获取给定问题。
  • 以相同的表格和列结构保存您想要的每种语言的所有数据。