【发布时间】:2011-07-23 16:21:04
【问题描述】:
我正在用 PHP + CodeIgniter 构建一个多语言应用程序。我已经决定使用 gettext 进行 UI 文本翻译,到目前为止,它已被证明是高效且易于使用的。
但现在我遇到了一件非常烦人的事情:gettext() 函数只接受一个参数,而我想要从 Zend Framework 的 gettext 适配器获得的类似 printf 的行为,我可以在其中使用 %1$s、@ 987654324@ 等作为占位符,然后将替换字符串指定为 Zend 视图的 translate() 函数的附加参数。
我不想放弃 gettext,因为 .po 文件和 poEdit 易于翻译管理(毕竟,我只需单击一下即可更新它)。我有哪些选择?
我已经尝试编写一个助手来与 gettext 交互:通过 gettext 运行第一个参数,然后在结果字符串上运行 strtr。您还有其他/更好的方法可以推荐吗?
【问题讨论】:
-
我确实知道您说过您不想放弃 gettext,但您应该知道您可以一起使用 Zend_Translate 和 CI,而不会有太多麻烦。 The manual says 可以读取
.mo文件。我不确定这些与.po文件有何不同,因此我将其作为评论而不是答案发布的原因。手册确实说“POEdit”适用于该格式。 -
.mo是.po编译后的样子。 Gettext 读取.mo,但.po是人类可读的,这就是您编辑的内容:)。是的,使用 Zend_Translate 绝对是一个值得考虑的选择。
标签: php internationalization gettext placeholder