SQL Server,EF和MVC组合的多语言最佳实践

时间:2010-12-31 13:10:16

标签: sql-server asp.net-mvc asp.net-mvc-3 ef-code-first

ASP.NET MVC,资源管理对应用程序多语言多文化支持来说已经足够了。

但我想知道有关数据的做法。

用户故事;

  1. 用户将文化设置为en-US并查看所有英文产品。
  2. 用户将文化设置为fr-FR并查看法语版的所有产品。
  3. 用户将文化设置为ru-RU并查看所有俄语产品。
  4. 用户没有正确的更改文化设置,应用程序永远不会达到多语言资源,它将使用默认语言和文化。

2 个答案:

答案 0 :(得分:2)

我不确定这正是您所要求的,但如果您希望在数据库级别进行本地化,则可以使用依赖于CONTEXT_INFO的VIEW来完成。 这样,您始终可以查询相同的VIEW,但它会根据CONTEXT_INFO返回不同的结果。

您可以在此处详细了解: Database Localization - Lookup lists - smarter way

答案 1 :(得分:0)

在数据库中进行本地化可能有一种更优雅的方式,但我只是将不同语言的数据值存储在这样的表中:

            WIDGETS
            widgetid
            widgetname nvarchar (default English)


            WIDGETSLOCAL
            widgetid      foreign key references WIDGETS(widgetid)
            language_code
            widgetname  nvarchar
            unique composite index on (widgetid, language_code)

然后我要么创建单独的视图(例如view_WIDGETS_enus,view_WIDGETS_ruru),要么使用WHERE子句中的语言代码,或者将用户的语言代码传递给存储过程。从严格意义上讲,我们的数据库没有得到适当的“本地化”;我们只根据用户群的主要母语提供了几种不同的翻译,这些语言恰好是英语,西班牙语和法语。

对于日期,我们总是使用美国格式,但缩写为月份:2010年3月15日,而不是在dd / mm / yyyyy和mm / dd / yyyy格式之间切换。我们的数据库不包含任何货币栏,因此我们不会遇到小数或货币格式问题。