PO 文件中的引用 - 使用 cakephp:它们对翻译有影响吗?
目前,我正在使用 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 手册对我来说太复杂了,无法理解这个过程:(
At present I am working with a cakephp solution (closed source unfortunatelly) and noticed sometimes that a string won't be translated even if it has msgid entry in the po file.
I realized that this happens if the source reference is not in the entry. If I type in a source reference to that string, or remove all source references from an entry it will be translated.
To test this I made a small cakephp app with translatable strings (using the __() function) but I can't get the same behavior.
e.g.:
#: /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: If I remove view1 references than no translation happens for that locale for view1, but view2 works translated. If I remove all references both work.
App2 (my test): references has no affect, all translated
How it could be?
I am using theming in the first app and the strings are vary depending on the theme. Could this cause such behavior?
Other question: what is the best practice to insert new strings in the po files if I make any new one in the views? I can extract a new empty pot, it is ok, but always search the po files and insert the ones manually is very time consuming. There should be a better automatic way what I could not find. The GNU/gettext manual is too complicated for me to understand the process of this :(
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我总是使用 poedit - http://www.poedit.net/ - 这是最好的,但仍然不是很好。设置它可能会非常混乱,但请坚持下去。
它将管理引用并为您生成 mo(二进制)文件。
我在 Mac 和 Ubuntu 上使用它,并且过去在 Windows 上使用过它。
I always use poedit - http://www.poedit.net/ - it's the best of the bunch, but still not great. Setting it up can be very confusing, but persevere.
It will manage the references and generate the mo (binary) files for you.
I use it on Mac and Ubuntu, and have used it in the past on Windows.