I18N、L10N 和数据库,如何?
我将更新/重写现有的硬编码网站。
我需要对其进行本地化,但应用程序将根据国家/语言提供不同的内容。
处理这个问题的最佳方法是什么?
我想在数据库中为每个本地化创建的内容添加一列,例如“locale = en_GB”,或者为每个应用程序使用不同的数据库。
有任何反馈吗?
编辑
假设有一个应用程序。好的。
我希望这个应用程序具有相同的功能,但在不同的国家/地区。
内容是由社区提供的,因此无法对其进行翻译,并且不是应用程序范围内的,仅适用于配置为与国家/地区一起使用的应用程序 C.
国家/地区 = 一个域名 = 特定内容 = 与其他国家相同的功能。
我知道我可以将每个应用程序配置为使用不同的数据库,但我想如果我需要添加一列来添加功能,我将必须在每个国家/地区执行此操作。
如果我添加一列来本地化内容,则无论应用程序是什么,我都可以通过指定当前使用的区域设置来获取本地化内容。
我将使用 Zend_Locale & Zend_Translate/gettext,所以我知道如何在 php 中做到这一点。
两种解决方案都有其优点和缺点。缺点,但我在此类应用程序中没有足够的经验来选择正确的方法。
I'm going to update/rewrite an existing hard coded websites.
I need to localize it, but the application will serve different contents depending on the country/language.
What would be the best way to work with this?
I though to add a column in my database for each localized created content such "locale = en_GB" or use a different database for each application.
Any feedbacks?
Edit
Let's say an application. Ok.
I want this application to have the same features but in different countries.
The content is provided by a community, so there is no way to translate it, and is not application wide, only available for the application configured to work with the country C.
Country = One Domain Name = Specific Content = Same Features as the others.
I know I could configure each application to use a different database, but I imagine if I need to add a column to add features, I'll have to do it on each countries.
If I add a column to localize content, I'll be able to fetch the localized content whatever the application is by specifying the currently used locale.
I'm going to use Zend_Locale & Zend_Translate/gettext, so I know how to do it in php.
Both solution have their pros & cons but I've not enough experiences in such application to choose the right way.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
区域设置很少是数据库的一部分。
区域设置是数据库中数据表示的一部分。
因此每个用户都提供他们的区域设置。
您的应用程序使用普通本地化来翻译数字和日期。
您的应用程序使用普通的 i18n 库将数据库文本和应用程序消息转换为本地化文本。
The locale is rarely part of the database.
The locale is part of the presentation of data in the database.
So each user provides their locale.
Your application uses ordinary localization to translate numbers and dates.
Your application uses ordinary i18n libraries to translate the database text and application messages into localized text.
我会采用第一种方法:用特定的列标记每种不同的语言。比管理不同的数据库/表更容易管理、更灵活。
在布局上:您可以使用 PHP 的 gettext() 函数,或者如果需要,您可以为每种语言创建不同的模板。
I'd go with the first approach: mark each different language with a specific column. Easier to manage and more flexible than managing different databases/tables.
On the layouts: you can use PHP's gettext() functions or you can create different templates for each language if you want.