0

我们有一个多语言 (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") 调用。

所以这导致了一个更普遍的问题:

你在后端类中应用翻译吗?你在哪里应用翻译,你如何跟踪你必须翻译的字符串?

(我知道Question: poedit workaround for dynamic gettext。)

4

2 回答 2

1

我的后端类通常输出带有省略参数的英文字符串。例子

["Good job %s you have %i points", "Paul", 10]

那么翻译的关键是英文字符串(因为我不太喜欢消息代码)。

于 2009-06-05T09:49:16.517 回答
0

翻译对我来说完全是一个视图问题,除了明确定义的业务原因,比如必须存储显示的消息,如图所示。例如,如果您希望将已发送的发票存储为交付给客户的发票,则后者可能会发生。

于 2009-06-05T09:47:19.143 回答