0

目前我正在使用 cakephp 解决方案(不幸的是封闭源代码)并且注意到有时即使它在 po 文件中有 msgid 条目也不会翻译字符串。我意识到如果源引用不在条目中,就会发生这种情况。如果我输入对该字符串的源引用,或者从条目中删除所有源引用,它将被翻译。

为了测试这一点,我制作了一个带有可翻译字符串的小 cakephp 应用程序(使用 __() 函数),但我无法获得相同的行为。

例如:

#: /views/view1/add.ctp:6
#: /views/view1/edit.ctp:6
#: /views/view2/add.ctp:5
#: /views/view2/edit.ctp:5
msgid "Name"
msgstr "localized name string"

App1:如果我删除 view1 引用,则 view1 的该语言环境不会发生任何翻译,但 view2 可以翻译。如果我删除所有引用都有效。

App2(我的测试):引用没有影响,全部翻译

怎么可能?我在第一个应用程序中使用主题,字符串因主题而异。这会导致这种行为吗?

其他问题:如果我在视图中创建任何新字符串,在 po 文件中插入新字符串的最佳做法是什么?我可以提取一个新的空锅,没关系,但总是搜索 po 文件并手动插入这些文件非常耗时。我找不到更好的自动方式。GNU/gettext 手册太复杂了,我无法理解这个过程:(

4

1 回答 1

1

我总是使用 poedit - http://www.poedit.net/ - 这是最好的,但仍然不是很好。设置它可能会非常混乱,但要坚持。

它将管理引用并为您生成 mo(二进制)文件。

我在 Mac 和 Ubuntu 上使用它,并且过去在 Windows 上使用过它。

于 2010-07-08T11:40:04.330 回答