使Yii :: t()与Yii中的扩展一起使用的步骤

时间:2014-02-26 20:54:17

标签: php yii

我创建了一个名为GalleryManager的扩展,存储在应用程序的extensions目录中。 我有这个结构:

gallerymanager
|--  assets
|--  messages
|    |-- en
|    |    |-- main.php
|    |-- es
|    |    |-- main.php
|    GalleryManager.php

我的GalleryManager类(在GalleryManager.php中定义)类似于:

class GalleryManager extends CApplicationComponent{...

这就是documentation关于定义翻译类别的说法:

  

扩展类(例如小部件,模块)的消息可以是   特别管理和使用。特别是,如果消息属于   类名为Xyz的扩展名,则可以是消息类别   以'Xyz.categoryName'格式指定。和相应的   消息文件被假定为   'BasePath / messages / LanguageID / categoryName.php',其中'BasePath'   指的是包含扩展类文件的目录。什么时候   使用Yii :: t()翻译扩展消息,类别名称   应设置为'Xyz.categoryName'。

所以,我在视图中尝试这样的一行:

<?php echo Yii::t('GalleryManager.main', 'Add');?>

它不起作用。 为了使翻译适用于Yii扩展,我还需要做些什么?

1 个答案:

答案 0 :(得分:1)

您所做的一切都是正确的,并且根据文档。

您确定要在主配置中正确声明扩展名吗?你应该在那里:

'components' => array(
            /* load extension */
            'GalleryManager' => array(
                'class' => 'app.extensions.GalleryManager',
            ),

我有时候不会自己加载这样的扩展(因为这仍然有效),但是对于要工作的消息,我相信你也必须在配置中声明它。