多语言站点中的动态语言环境名称

时间:2013-05-11 04:58:14

标签: cakephp internationalization

我正在开发cakephp 2.3.4中的一个应用程序,它是多语言的。

管理员可以添加任意数量的新语言。

我的问题是,当管理员决定添加新语言时,应该如何定义生成的区域设置名称。

语言环境名称可以是由admin给出的任意名称,也可以是根据语言包含所有语言代码的下拉列表。

1 个答案:

答案 0 :(得分:1)

不幸的是,你的问题有点'模糊',即管理员是否可以添加GNU-locale文件(*.po),或者你是在谈论在数据库中添加翻译

在任何情况下,CakePHP都会根据ISO 639-3标准使用区域设置,请参阅herehere以获取更多信息。可以在I10n类中找到这些语言环境的完整列表。

由于您可能还希望在切换区域设置时切换PHP 本身的区域设置,因此,例如,日期,金钱和时间格式将遵循正确的区域设置格式,这是最好的坚持使用这些语言环境而'发明'你自己的语言环境。

setlocale()。但请注意,PHP可能会使用与CakePHP使用略有不同的语言环境代码。它取决于您的服务器上安装的区域设置。

要获取服务器上安装的语言环境列表,请在命令行中使用locale -a。有关详细信息,请参阅此页面:https://wiki.archlinux.org/index.php/Locale

用于本地化的技术

使用技巧的快速摘要;

短消息(界面/ UI)

通常,区域设置文件用于文本。因此,区域设置文件主要用于修复字符串, 例如,接口中使用的字符串(如'are you sure you want to delete this file?' => 'weet u zeker dat u dit bestand wilt verwijderen?)。

更长(固定)的文字

对于应用中更长的文本,'内容'的一部分不是 >博客文章,但例如带有免责声明的固定页面, 最好对翻译的内容使用单独的视图,例如;

app/Views/MyController/disclaimer_eng.ctp
app/Views/MyController/disclaimer_deu.ctp
app/Views/MyController/disclaimer_fre.ctp

内容

对于您网站的内容(您的网站由网站的“用户”管理的部分), 将翻译放在数据库中。这些数据可能会经常更新,所有翻译也应该更新。

如何实施此,取决于您的具体情况。 CakePHP提供了一个Translate行为,您可以使用http://book.cakephp.org/2.0/en/core-libraries/behaviors/translate.html),但在我的大多数情况下,这种行为并不真正符合我们的需求(IMO它不是非常有效,因为它存储了翻译 - 领域,每个模型)。