CakePHP i18n没有多个po文件

时间:2013-04-01 14:22:37

标签: cakephp internationalization gettext

对于我的CakePHP 2.3应用程序,我创建了pot文件并使用Poedit创建了po文件。但我有近100个字符串和12种语言。因此,在每次更改/添加时,我都不想重新创建pot文件并使用Poedit添加po文件。

所以我需要另一种适合CakePHP的解决方案 - 是否可以使用没有po文件的i18n,只使用csv文件? (似乎Zend Translate有类似的解决方案)
- 是否可以为所有翻译使用一个po文件,或者它会使这个字符串的性能太差? - 我不喜欢将翻译写入数据库。什么是小项目的gettext的更好的替代方案?

相关:CakePHP translations in one or multiple po files and performance

1 个答案:

答案 0 :(得分:2)

默认情况下,CakePHP仅支持.po或.mo文件进行本地化,因此如果您想使用CSV,则必须实现自己的机制。

将每个区域设置放在单独的文件中是(IMO)最佳实践;您可以为每种语言设立单独的翻译/翻译机构。我没有看到将所有语言放在一个文件中的任何优势。将所有语言放在一个文件中可能只会使事情变得更加困难,因为每种语言都需要拥有自己独特的标识符'对于每个字符串。此外,每种语言使用单独的文件可以更轻松地比较不同的语言,例如检查缺少的信息' msgids'

但是,您不必每次更改都必须重新生成.pot文件。如果您跟踪所做的更改,您可以随时添加新的' msgids'现有的.po文件。

根据@Admad的建议,您在项目中同时拥有.po .mo(二进制)文件。如果两者都存在,CakePHP将更喜欢.mo文件。

就个人而言,我更喜欢使用.po文件,因为它们只需少一步就可以创建(将.po转换为二进制格式),并且因为它们是二进制的,所以CakePHP可以(可能)更快地解析,但这是我的偏好,你的情况可能会有所不同。