我们有一个多语言 (PHP) 应用程序,并为 i18n 使用 gettext。后端/模型中有一些类为 printf() 返回消息或消息格式。
我们使用 xgettext 来提取我们想要翻译的字符串。
我们在前端/视图中应用 gettext 函数 T_() - 这似乎是它所属的地方。到目前为止,我们从 T_() 调用中保持后端清洁,这样我们也可以对消息进行单元测试。
所以在前端我们有类似的东西
echo T_($mymodel->getMessage());
或者
printf(T_($mymodel->getMessageFormat()), $mymodel->getValue());
这使得无法应用 xgettext 来提取字符串,除非我们在 MyModel 类中放置一些虚拟 T_("my message %s to translate") 调用。
所以这导致了一个更普遍的问题:
你在后端类中应用翻译吗?你在哪里应用翻译,你如何跟踪你必须翻译的字符串?