poedit 动态 gettext 的解决方法
我已经开始使用 gettext 来翻译我发送给用户的文本和消息。 我正在使用 poedit 作为编辑器,但我正在努力处理动态消息。
例如,我有类似登录的内容,其中有一个变量可以告诉错误类型。
$this->translate('page-error-' . $error);
当我从 poedit 自动更新时,这会被读作“页面错误-”。 我所做的是有一个文件,我在其中对翻译方法进行虚拟调用,其中包含所有可能的键,以便在自动更新时将它们添加到我的 poedit 中。
我不是特别喜欢这种情况。 你们怎么做到的。
感谢您的想法
I have started using gettext for translating text and messages i send to user.
I am using poedit as an editor, but i am struggling with dynamic messages.
For example i have things like the login where i have a variable that tells the type of error.
$this->translate('page-error-' . $error);
When i auto update from poedit this gets read like "page-error-".
What i do is have a file where i place dummy calls to the translate method with all the possible keys to have them added in my poedit when auto updating.
I don't particularly like this situation.
How do you guys do it.
Thanks for your ideas
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
不——这是不可能的,因为编辑器(和
gettext
工具)正在读取您的源代码,而不是执行您的程序。 您必须保留虚拟调用或自行将密钥添加到翻译文件中。No -- this is not possible, because the editor (and the
gettext
tools) are reading your sources, not executing your program. You'll have to keep the dummy calls or add the keys to the translation files yourself.你是否正在尝试类似的东西
Are you trying something like
我遇到了同样的问题。
例如我
在 php 中,
当我与 poedit 同步时,它会拾取“FORM_HEADER_”,这不是我在代码中(生成)的标识符。
所以我必须解决给 Poedit 提供完整标识符的问题,我通过在 php
UPDATE 中执行以下操作解决了这个问题!
我一直在研究这个问题。 我目前放弃了从源头导入。 这就是我继续的方式,直到找到更好的解决方案
启用未翻译(动态)标识符的记录
使用 Poedit 与源同步并翻译找到的字符串。
将未翻译的字符串添加到 .po 文件中。
打开 po 文件并保存以创建 mo 文件(请勿与源同步,否则全部丢失)。
更新2。
我现在通过使用文本编辑器(gedit/记事本)为我的手动标识符使用单独的文件。 现在我有两个文件:
我在 application.ini 中配置了翻译,以扫描语言目录中的所有文件
(如果您想翻译)在 poedit do file 中转换成另一种语言 -> 从 POT 文件创建新目录,然后开始翻译手动添加的字符串。
I came across the same problem.
for example i have
in php
When i sync with poedit it will pick up 'FORM_HEADER_' which is not a identifier i have (generated) in the code.
So i had to fix the problem my giving Poedit full identifiers i solved that by doing the following in php
UPDATE!
I kept looking into this problem. And i currently gave up importing from source. This is how i continue until i find a better solution
Enable logging of untranslated (dynamic) identifiers
Use Poedit to sync with source and translate the strings that are found.
Add the untranslated strings to the .po file.
Open po file and save it to create the mo file (DO NOT SYNC WITH SOURCE OR ALL IS LOST).
UPDATE 2.
I now use a seperate file for my manual identifiers , by using a text editor (gedit/notepad). Now i have two files:
i configured my translate in application.ini to scan for all files in the language directory
if you want to translate into another language in poedit do file -> new catalog from POT file, and start translating your manually added strings.
如果错误数量有限,您可以在
if (false)
条件中添加一些虚拟代码,其唯一目的是让 PoEdit 获取翻译。例如:
然后您可以使用以下内容进行翻译:
致谢: http://eng.marksw.com/2012/12/05/how-to-expose-dynamic-translatable-text-to-translation-tools-like-poedit /
If you have a finite number of errors, you can add some dummy code inside a
if (false)
condition, whose sole purpose is to have PoEdit pick up the translations.For example:
You can then translate with:
Credits to: http://eng.marksw.com/2012/12/05/how-to-expose-dynamic-translatable-text-to-translation-tools-like-poedit/