【问题标题】:How do you localize a database driven website如何本地化数据库驱动的网站
【发布时间】:2008-10-02 00:11:56
【问题描述】:

我一直在使用 .NET 内置的本地化功能,它们似乎都依赖于将数据放入 resx 文件中。

但大多数系统不能依赖此,因为它们是数据库驱动的。那么你如何解决这个问题呢?是否有内置的 .NET 方式,或者您是否在 SQL 中创建翻译表并手动完成所有操作?如果您必须在大多数网站上执行此操作,是否有任何理由甚至使用 resx 本地化方式?

这方面的一个例子是我的网站上有一个常见问题解答列表,我将此列表保存在数据库中,以便我可以轻松添加/删除更多内容,但是将其放入数据库中,我无法翻译此信息翻译成多种语言。

【问题讨论】:

    标签: c# .net asp.net localization


    【解决方案1】:

    在我看来,本地化动态内容(例如,您的常见问题解答)应该由您在数据库中完成。根据您的问题的存储方式,我可能会创建一个“区域设置”列并在从数据库中选择常见问题解答问题时使用它。我不确定当您开始本地化大量表时这是否会很好地扩展。

    对于静态内容(例如,表单字段标签、静态文本、图标等),您应该可以使用基于文件的资源。但是,如果您真的想这样做,看起来创建一个可以处理此问题的自定义资源提供程序实现并不难。

    以下是一些相关链接:

    【讨论】:

      【解决方案2】:

      对于数据模型中的给定项目,将描述部分拆分为具有区域设置 ID 列 (LCID) 的本地化表。

      因此 Product 表实际上不会包含产品描述或名称,而仅包含其硬性和快速值(ProductId、EAN、NumberInStock、NextStockData、IsActive、IsPublished)等。

      ProductDescription 然后包含 产品 ID、名称、描述、LCID

      【讨论】:

        【解决方案3】:

        我住在加拿大,所以多语种很重要。我见过两种方法。第一个选项是将特定记录的所有本地化数据存储在不同的表中,通过主键和区域设置链接到原始表。第二个选项与第一个选项类似,只是对于每个区域设置,都有一个不同的表,区域设置作为表名的后缀。

        选项 A

        Item (ItemID, ...)
        ItemLocal (ItemID,LocaleID,....)
        

        选项 B

        Item (ItemID, ...)
        Item_ENUS (ItemID,....)
        Item_ENGB (ItemID,....)
        Item_FR (ItemID,....)
        

        我最近想到的第三个选项,如果数据库本身支持它,那将非常好的是将所有本地人的值存储在同一字段中。如果该字段设置为 varchar-multilocal,那么您必须通过传递参数来指定语言来访问它。据我所知,没有这样的东西存在,但我认为它确实会让事情变得更容易,更流畅。

        【讨论】:

          【解决方案4】:

          目前,翻译不是可以自动完成的。最好的方法是让一个人翻译并使用尼克的方法来显示正确的语言。

          【讨论】:

            【解决方案5】:

            我们混合使用了 RESX 文件和 Kibbee 响应的选项 A。我们创建了一个简单的工具来在线管理 RESX 文件: http://blog.lavablast.com/post/2008/02/RESX-file-Web-Editor.aspx

            【讨论】:

              猜你喜欢
              • 2011-02-05
              • 1970-01-01
              • 2012-07-19
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2012-01-27
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多