onunix 2012-05-24 15:24:25 2848次浏览 4条回复 0 0 0

请问 自动生成的_from.php中有

<?php echo $form->labelEx($model,'departmentID'); ?>

我希望是中文的名称,并且名称从一个统一的资源文件中取。 大概就是: <?php echo $form->labelEx($model,getChineseName('departmentID')); ?>

getChineseName,大家有成熟的代码么?

或者getResourceName(),根据某个环境变量lang=zh(中文)读取对应的资源文件,并且在没有读取到这个名字的情况下,就直接显示 英文字符串(上例中就是显示departmentID)。

我想label中文化应该是个普遍的要求,大家是否有已经完善的功能模块提供啊。

  • 回复于 2012-05-24 16:32 举报

    model中有个 public function attributeLabels() 这里就可以写成对应的中文

  • 回复于 2012-05-24 16:41 举报

    明白你的意思了,就是应用国际化吧?
    首先,在main.php中设置语言
    'language'=>'zh_cn',
    然后再messages目录下面新建一个zh_cn的目录,在zh_cn目录下面新建一个app.php
    在你需要显示翻译文字的地方这样用
    Yii::t('app','this is a test')//这里会显示为后面翻译的文字
    在上面的app.php中插入以下语句:

    return array(
     'this is a test'=>'这是一个测试',
    );
    

    最后提下,你上面说道的
    <?php echo $form->labelEx($model,getChineseName('departmentID')); ?>
    里面不应该这样写
    <?php echo $form->labelEx($model,'departmentID'); ?>
    中的departmentID应该是$model实例的一个属性,或者是数据库当中$model所指表的一个字段,你要使用翻译的话,可以在$model对应的模型中修改,如

    public function attributeLabels() {
        return array(
            'id' => Yii::t('app', 'ID'),
            'title' => Yii::t('app', 'Title'),
            'category_id' => Yii::t('app', 'Category'),
            'uid' => Yii::t('app', 'Uid'),
            'node_type' => Yii::t('app', 'Node Type'),
            'status' => Yii::t('app', 'Status'),
            'create_time' => Yii::t('app', 'Create Time'),
            'update_time' => Yii::t('app', 'Update Time'),
        );
    }
    
  • 回复于 2012-05-24 16:41 举报
    1 条回复
    回复于 2016-01-19 14:51 回复

    这个页面有问题。。。

  • 回复于 2012-05-24 17:20 举报

    MARK~~以前纠结过这个问题。还是收藏一下,以防忘记。

您需要登录后才可以回复。登录 | 立即注册