0

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

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

我的问题是,当管理员决定添加一种新语言时,应该如何定义生成的语言环境名称。

语言环境名称可以是管理员给出的任意名称,或者它应该是包含根据语言的所有语言代码的下拉列表。

4

1 回答 1

1

不幸的是,您的问题有点“模糊”,即管理员是否能够添加 GNU 语言环境文件(*.po),或者您是在谈论在数据库中添加翻译。

无论如何,CakePHP 使用符合 ISO 639-3 标准的语言环境,请参阅此处此处了解更多信息。这些语言环境的完整列表可以在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 它不是很有效,因为它存储每个字段,每个模型的翻译)。

于 2013-05-11T11:23:27.997 回答