从Yii中的不同模块访问模块的翻译

时间:2014-06-03 16:54:58

标签: yii module internationalization translation

我真的需要一些帮助。

我在项目中创建了两个模块: admin 帐户。 在我的 admin 模块中,我有用户模型

我已设法使用以下结构翻译管理模块

modules
   -admin
       -models
       -controllers
       -views
       -messages
         - en
           user.php  
         - ru
           user.php
       -AdminModule.php

并使用以下表达式Yii::t("adminModule.user","Username")输出我翻译的消息。

但是,如果我尝试从帐户模块访问用户模型,则此功能无效。字段未翻译,应用程序甚至是例外: include(adminModule.php): failed to open stream: No such file or directory

似乎我无法包含 admin 模块。所以我尝试在我的帐户/ AccountModule.php

中导入如下
 public function init() {

    $this->setImport(array(
        'account.models.*',
        'account.components.*',            
        'application.modules.admin.models.*',
        'application.modules.admin.messages.*',
    ));
}

在我的主 config 文件中,我添加了以下代码行,因为它已被建议。 但没有帮助,我仍然有同样的例外。

'sourceLanguage' => 'en',
'language' => 'ru',

我已尝试过以下资源中建议的大量内容

  1. Yii modules internationalization
  2. http://www.rymland.org/post/27?title=Enforcing+translation+of+message+in+Yii
  3. yii use message in module
  4. 另请阅读Yii文档

    1. http://yiiframework.ru/doc/guide/ru/topics.i18n
    2. 但是没有任何帮助我。

      如果有人有想法,请向您寻求帮助, 提前致谢

1 个答案:

答案 0 :(得分:0)

解决方案非常简单。 我试图以错误的方式导入管理模块

public function init() {

    $this->setImport(array(
        'account.models.*',
        'account.components.*',
        'application.modules.admin.models.*',
        'application.modules.*'
    ));
}

通过这样做,我假设导入了我的所有模块,包括管理模块。但我错了。

正确的方法是使用以下声明!

public function init() {
        ...
        'application.modules.admin.AdminModule'            
    ));
}