我正在尝试使用 Catalyst 了解 i18n。据我了解,使用 Perl 进行翻译有两种方法:Maketext和Gettext。但是,我需要支持 gettext 的.po格式,所以基本上我会使用 gettext。
现在,我找到了 Catalyst::Plugin::I18n 和 Locale::Maketext::Lexicon,它大部分时间都能满足我的需求。但是,它不会生成正确的复数形式,即正确写入msgid_plural
并msgstr[x]
写入.pot文件。这可能是因为 Maketext 依赖于它的括号符号[quant,_1...]
,因此在翻译中必须具有相同的符号。
另一个解决方案可能是使用一些直接的 gettext 端口,例如 Locale::Messages,但这意味着重写 C::P::I18n。
除了重写几个模块之外,是否有人对这个问题有适当的解决方案?任何将适当的 gettext 与其所有功能和 Catalyst 相结合的东西都可以。