【问题标题】:How to create a multilanguage label in Yii如何在 Yii 中创建多语言标签
【发布时间】:2010-12-09 09:07:58
【问题描述】:

我想知道 Yii 框架是否在多语言进程中使用定义的标签属性。

如果我有

 public function attributeLabels() {
        return array(
            'email' => 'Email address',
            'rememberMe' => 'Remember me next time',
            'password' => 'Password'
        );
    }

这会被翻译成其他语言吗?还是我必须手动做一些事情才能工作?

【问题讨论】:

    标签: php internationalization multilingual yii


    【解决方案1】:

    Yii 不会自动翻译它。您需要使用 Yii 内置的 i18n 并手动添加翻译并修改标签如下:

     public function attributeLabels() {
        return array(
            'email' => Yii::t('account','Email address'),
            'rememberMe' => Yii::t('account','Remember me next time'),
            'password' => Yii::t('account','Password')
        );
    }
    

    您可以在Quick Start to Internationalize your application in Yii Framework获取更多关于应用国际化的信息

    【讨论】:

      【解决方案2】:

      嗯,你可以使用内置的翻译系统来翻译你的属性标签,例如:

       public function attributeLabels() {
          return array(
              'email' => Yii::t('myapp','Email address'),
          );
      }
      

      然后在消息文件夹中为您的语言创建一个目录,例如:

      messages\dk\myapp.php
      

      myapp.php 应该返回翻译,例如:

      return array('Email address' => 'TRANSLATION...');
      

      接下来,您需要在配置文件中设置应用程序的语言。

      'language' => 'dk',
      

      【讨论】:

        【解决方案3】:

        我曾假设 Yii AR 会通过 Yii::t 运行 getAttributeLabel。不想在几十个模型上进行所有复制和粘贴,我将此功能添加到我的中间 AR 类中:

        public function getAttributeLabel($attribute)
        {
            $baseLabel = parent::getAttributeLabel($attribute);
            return Yii::t(get_called_class(), $baseLabel);
        }
        

        现在编写一个循环遍历模型并将它们的标签添加到消息文件的 shell 命令。

        【讨论】:

          猜你喜欢
          • 2014-02-26
          • 2016-06-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-04-22
          • 1970-01-01
          相关资源
          最近更新 更多