【问题标题】:I18N, L10N and database, how to?I18N、L10N和数据库,怎么做?
【发布时间】:2011-07-29 20:08:42
【问题描述】:

我将更新/重写现有的硬编码网站。

我需要对其进行本地化,但应用程序会根据国家/语言提供不同的内容。

处理这个问题的最佳方法是什么?

我想在我的数据库中为每个本地化创建的内容添加一个列,例如“locale = en_GB”,或者为每个应用程序使用不同的数据库。

有什么意见吗?


编辑

假设是一个应用程序。好的。

我希望此应用程序具有相同的功能,但在不同的国家/地区。

内容由社区提供,因此无法翻译,并且不是应用程序范围内的,仅适用于配置为与 C 国合作的应用程序。

国家 = 一个域名 = 特定内容 = 与其他域名相同的功能。

我知道我可以将每个应用程序配置为使用不同的数据库,但我想如果我需要添加一列来添加功能,我必须在每个国家/地区都这样做。

如果我添加一列来本地化内容,我将能够通过指定当前使用的区域设置来获取本地化内容,无论应用程序是什么。

我将使用 Zend_Locale 和 Zend_Translate/gettext,所以我知道如何在 php 中进行操作。

两种解决方案各有利弊,但我在此类应用中没有足够的经验来选择正确的方法。

【问题讨论】:

  • 这个问题非常广泛。您能否提供更多关于哪些内容应被视为本地化内容的详细信息。更重要的是,如何将本地化内容提供给应用程序?例如:它会是一种 CMS 设置,内容管理器将能够为应用程序插入本地化内容吗?

标签: php zend-framework database-design localization internationalization


【解决方案1】:

语言环境很少是数据库的一部分。

语言环境是数据库中数据表示的一部分。

所以每个用户都提供了他们的语言环境。

您的应用程序使用普通本地化来翻译数字和日期。

您的应用程序使用普通 i18n 库将数据库文本和应用程序消息翻译成本地化文本。

【讨论】:

  • The locale is rarely part of the database. 除非是 CMS 设置,否则内容管理员将能够为应用程序输入本地化内容。
  • @fireeyedboy:是的。但这不是“我的数据库中每个本地化创建内容的列”,不是吗?
  • 好吧,正如我对提问者所说的那样;这个问题太广泛了,无法弄清楚OP到底在想什么。所以我真的不知道。可能是 OP is 正在寻找类似的东西。如果不是,那我同意你的回答。
【解决方案2】:

我会采用第一种方法:用特定的列标记每种不同的语言。比管理不同的数据库/表更容易管理和更灵活。

在布局上:您可以使用 PHP 的 gettext() 函数,也可以根据需要为每种语言创建不同的模板。

【讨论】:

    猜你喜欢
    • 2011-05-31
    • 2016-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-17
    • 2010-09-28
    • 1970-01-01
    • 2021-06-14
    相关资源
    最近更新 更多