问题描述
我尝试使用 Yii :: t()函数创建虚拟应用程序:
I try to create myltilingual application using Yii::t() function:
我使用Yii::t('MyModule.source', 'Test');
翻译模块消息,它适用于模块.
但不适用于子模块Yii::t('MyModule.SubModule.source', 'Test');
问题是:
消息存储在以下位置时,如何在模块中为SubModule定义源路径:/protected/modules/MyModule/modules/SubModule/messages/
I translate modules messages with Yii::t('MyModule.source', 'Test');
it works for modules.
But not works for submodules Yii::t('MyModule.SubModule.source', 'Test');
The question is:
How to define source path for SubModule in Module when messages stored in:/protected/modules/MyModule/modules/SubModule/messages/
推荐答案
您正试图错误地使用Yii::t
.
CPhpMessageSource
(Yii::t
的第一个参数)的路径应为模块,在其中出现对Yii::t
的调用.该模块是否聚集在另一个模块中没关系.
The path for the CPhpMessageSource
(first parameter of Yii::t
) should be the module in which the call to Yii::t
appears. It doesn't matter if that module is aggregated inside another module.
因此在您的示例中,您应该使用
So in your example, you should use
Yii::t('SubModule.source', 'Test');
并将邮件放置在/protected/modules/SubModule/messages/
中.
如果您需要根据是否从子模块内部执行转换来更改消息,请在消息中添加参数.
If you need the message to change based on whether the translation is performed from inside a submodule, add parameters to the message.
这篇关于Yii模块国际化的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!