PHP gettext找不到任何转换的日志字符串

Dav*_*vid 1 php translation gettext internationalization po

我有一个使用php内置的Gettext/PO支持进行国际化的网站

echo _("string to be translated");

该网站处于测试阶段,肯定会有一些字符串无法翻译.为了帮助调试,有没有办法记录gettext错误,即PO没有在PO文件中找到任何匹配条目的日志字符串?

dec*_*eze 7

您想要做的问题是,您只能在运行时找到未翻译的字符串,并且仅用于实际执行的代码路径.您可能需要数年才能找到所有字符串,同时您必须定期查看日志文件并将更新后的翻译与日志文件中发生的内容同步.这不是一种确定性的翻译方法.

如果您使用的是gettext,则需要建立适合它的工作流程.gettext工作流程和工具链经过深思熟虑和时间测试.

  1. 通过在gettext函数中包装字符串来准备源代码.
  2. 将准备好的字符串提取到POT文件中,通常使用xgettext但可能使用自定义解析器/提取器和库如Kunststube\POTools(无耻的自我推销).
  3. 使用msginit提取的模板文件创建PO文件.
  4. 翻译PO文件.
  5. 保持更新的源/ POT文件同步与PO文件使用msgmerge.
  6. 使用将msgfmt PO文件编译为MO文件.
  7. 冲洗,重复.

简而言之,这是正确的gettext工作流程,它解释了翻译过程中的大多数问题.特别是如果你有分布式翻译器,你通常会有时间延迟,并且在更新的源代码和翻译之间存在重叠.没有自动字符串提取和msgmerge实用程序,这个过程很容易陷入混乱,这就是为什么你应该坚持上面脚步.

如果这样做,您的问题变得无关紧要,因为您可以随时使用gettext实用程序或Poedit等工具检查您的PO文件,以查看哪些字符串未翻译.