目前我正在使用 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 手册太复杂了,我无法理解这个过程:(