没有多个po文件的CakePHP i18n

没有多个po文件的CakePHP i18n,cakephp,internationalization,gettext,Cakephp,Internationalization,Gettext,对于我的cakephp2.3应用程序,我创建了pot文件,并使用Poedit创建了po文件。但我有将近100个字符串和12种语言。因此,在每次更改/添加中,我不想重新创建pot文件,也不想使用Poedit添加po文件 因此,我需要另一个适合CakePHP的解决方案。 -是否可以不使用po文件而仅使用csv文件来使用i18n?(似乎有类似的解决方案) -是否可以对所有翻译使用一个po文件,或者对于这么多的字符串来说,这会使性能太差? -我不喜欢把翻译写进数据库。对于小型项目,什么是gettext的

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

因此,我需要另一个适合CakePHP的解决方案。
-是否可以不使用po文件而仅使用csv文件来使用i18n?(似乎有类似的解决方案)
-是否可以对所有翻译使用一个po文件,或者对于这么多的字符串来说,这会使性能太差?
-我不喜欢把翻译写进数据库。对于小型项目,什么是gettext的更好替代方案


相关:

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

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

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

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


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

默认情况下,CakePHP只支持.po文件进行本地化,因此如果您想改用CSV,你必须实现你自己的机制。将每个区域设置放在单独的文件中是(IMO)最佳实践;你将能够有单独的翻译/翻译局,每个翻译局翻译一种语言。我不认为将所有语言放在一个文件中有任何好处。但是,您不必在每次更改时重新生成.pot文件吗?如果您跟踪所做的更改,您始终可以将“msgid”添加到现有的.po文件中?@thaJeztah您应该将此作为答案而不是注释发布,以便我可以更新:)此外,*.mo文件也应该更新吗?因为当我用记事本++更新po文件时,直到我更改mo,翻译才起作用files@trante不能同时使用.mo或.po。(如果两者都有,则mo将优先考虑)。Cake以序列化格式缓存翻译,因此使用binary.mo没有多大好处。只需使用.po,这样它们更易于维护。@ADmad只使用po文件。这对我来说是非常有价值的信息:))