1

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

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

相关:一个或多个 po 文件中的 CakePHP 翻译和性能

4

1 回答 1

3

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

将每个区域设置在一个单独的文件中是(IMO)最佳实践;您将能够为每种语言配备单独的翻译/翻译局。我认为将所有语言放在一个文件中没有任何优势。将所有语言放在一个文件中可能只会使事情变得更加困难,因为每种语言都需要为每个字符串拥有自己唯一的“标识符”。此外,每种语言都有单独的文件可以更容易地比较不同的语言,例如检查是否缺少“msgids”

但是,您不必在每次更改重新生成 .pot 文件。如果您跟踪所做的更改,您始终可以将新的“msgids”添加到现有的 .po 文件中。

正如@Admad 所建议的那样,您的项目中不应同时包含 .po.mo (二进制)文件。如果两者都存在,CakePHP 将更喜欢 .mo 文件。

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

于 2013-04-01T17:39:57.813 回答