我们有一个多语言(PHP)应用程序,并使用gettext for i18n。后端/模型中有一些类为printf()返回消息或消息格式。
我们使用xgettext来提取我们想要翻译的字符串。
我们在前端/视图中应用gettext函数T_() - 这似乎是它所属的位置。到目前为止,我们通过T_()调用保持后端干净,这样我们也可以对消息进行单元测试。
所以在前端我们有类似
的东西echo T_($mymodel->getMessage());
或
printf(T_($mymodel->getMessageFormat()), $mymodel->getValue());
这使得无法应用xgettext来提取字符串,除非我们在MyModel类中调用了一些虚拟T _(“我的消息%s to translate”)调用。
因此,这导致了更普遍的问题:
您是否在后端课程中应用翻译?你在哪里应用翻译?你如何跟踪你必须翻译的字符串?
答案 0 :(得分:1)
我的后端类通常输出带有参数的英文字符串。实施例
["Good job %s you have %i points", "Paul", 10]
然后翻译的关键是英文字符串(因为我不太喜欢消息代码)。
答案 1 :(得分:0)
翻译对我来说完全是一个View问题,除了明确定义的商业原因,比如必须存储显示的消息,如图所示。后者可以例如如果您希望将已发送的发票存储到客户端,则会发生这种情况。