I18N,L10N和数据库,怎么样?

时间:2011-04-05 10:00:31

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

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

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

最好的解决方法是什么?

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

有任何反馈吗?


修改

让我们说一个应用程序。确定。

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

内容由社区提供,因此无法对其进行翻译,也不适用于应用程序范围,仅适用于配置为使用国家/地区C的应用程序。

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

我知道我可以将每个应用程序配置为使用不同的数据库,但我想如果我需要添加一个列来添加功能,我将不得不在每个国家/地区执行此操作。

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

我将使用Zend_Locale& Zend_Translate / gettext,所以我知道如何在php中完成它。

这两种解决方案都有其优点和缺点。但是我没有足够的经验来选择合适的方式。

2 个答案:

答案 0 :(得分:3)

区域设置很少是数据库的一部分。

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

因此每个用户都提供他们的语言环境。

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

您的应用程序使用普通的i18n库将数据库文本和应用程序消息转换为本地化文本。

答案 1 :(得分:0)

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

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