使用 zend-framework3 和 gettext 处理文本域
Handle textDomains with zend-framework3 and gettext
我们正在将 ZF3 用于具有国际化的大型应用程序。
i18n 是通过 zend-i18n、zend-mvc-i18n 和 xgettext cli 完成的,用于提取/编译 pot / po / mo 文件。
对于像 Contact
这样可以是动词或名词的词,我们指定了 $textDomain
:$this->translate('Contact', 'Verb')
或 $this->translate('Contact', 'Noun')
.
问题是,当我们提取这些字符串时,它们都在同一个 pot 文件中。
由于 Zend 通过 textDomain 加载翻译文件,如果我们可以通过 textDomain 拆分 pot
文件会更好,但 xgettext 似乎不能这样做。
有人可以帮助我们使用 Zend 和 gettext 正确管理 textDomains 吗?
对于那些可能遇到相同问题的人,我们最终创建了自己的 Gettext
文件加载器,它可以正确解析 msgctxt 和 returns 由 msgctxt 结构化的 TextDomain
。
我们还创建了自己的 Translator extends Zend\I18n\Translator\Translator
来覆盖 loadMessagesFrom...
函数并正确更新 $this->messages
变量
我们正在将 ZF3 用于具有国际化的大型应用程序。
i18n 是通过 zend-i18n、zend-mvc-i18n 和 xgettext cli 完成的,用于提取/编译 pot / po / mo 文件。
对于像 Contact
这样可以是动词或名词的词,我们指定了 $textDomain
:$this->translate('Contact', 'Verb')
或 $this->translate('Contact', 'Noun')
.
问题是,当我们提取这些字符串时,它们都在同一个 pot 文件中。
由于 Zend 通过 textDomain 加载翻译文件,如果我们可以通过 textDomain 拆分 pot
文件会更好,但 xgettext 似乎不能这样做。
有人可以帮助我们使用 Zend 和 gettext 正确管理 textDomains 吗?
对于那些可能遇到相同问题的人,我们最终创建了自己的 Gettext
文件加载器,它可以正确解析 msgctxt 和 returns 由 msgctxt 结构化的 TextDomain
。
我们还创建了自己的 Translator extends Zend\I18n\Translator\Translator
来覆盖 loadMessagesFrom...
函数并正确更新 $this->messages
变量