【问题标题】:Multilingual best practices on SQL Server, EF and MVC combinationsSQL Server、EF 和 MVC 组合的多语言最佳实践
【发布时间】:2011-06-02 00:01:37
【问题描述】:

ASP.NET MVC,资源管理看起来足以支持应用程序多语言多文化。

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

用户故事;

  1. 用户将文化设置为 en-US,并以英语查看所有产品项目。
  2. 用户将文化设置为 fr-FR,并以法语查看所有产品项目。
  3. 用户将文化设置为 ru-RU,并以俄语查看所有产品项目。
  4. 用户无权更改文化设置,应用程序永远无法访问多语言资源,它将使用默认语言和文化。

【问题讨论】:

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


【解决方案1】:

我不确定这正是您要问的,但如果您想在 DB 级别进行本地化,可以使用依赖 CONTEXT_INFO 的 VIEW 来完成。 这样你总是查询同一个 VIEW,但它会根据 CONTEXT_INFO 返回不同的结果。

您可以在此处阅读更多相关信息: Database Localization - Lookup lists - smarter way

【讨论】:

    【解决方案2】:

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

                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 格式之间切换。我们的数据库不包含任何货币列,因此我们不会遇到小数或货币格式问题。

    【讨论】:

      猜你喜欢
      • 2010-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-30
      • 2017-06-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多