【问题标题】:Change language in YII在 YII 中更改语言
【发布时间】:2013-03-10 18:37:31
【问题描述】:

使用 YII 创建新站点后,我在 protected/messages 中添加了一个文件夹“fr”并添加了一个文件“site.php”,其中包含:

返回数组('hello' => 'bonjour');

在view/layout/main.php中,我添加了以下代码:

<?php 
    // I change the language to english and french using session. 
    //  This is just for example.
    Yii::app()->language = 'fr'; 

    // I also used Yii::app()->setLanguage('fr');
    echo Yii::t('site','hello');
?>

但是语言没有翻译..我哪里错了。请推荐

【问题讨论】:

  • 如果您希望翻译在所有视图中正常工作,您应该在控制器中设置语言
  • 它有效。谢谢。但是在所有控制器中设置语言将是一项繁重的任务。我想在一个地方更改语言,它适用于所有人。我在哪里可以这样做?
  • 我把它作为答案发布了

标签: php yii


【解决方案1】:

如果您希望翻译在所有视图中正常工作,您应该在控制器中设置语言。

为了将语言应用于所有控制器,请在组件文件夹中创建新的 Controller.php 文件,并使用扩展 class ControllerCController,然后所有控制器都应扩展 Controller 类。在Controller 类中覆盖init() 方法(不要忘记调用parent::init())并在那里设置语言。例如:

class Controller extends CController
{
    public $layout='//layouts/column1';

    function init()
    {
        parent::init();
        Yii::app()->language = 'fr';
    }
 }

通过这种方式,您可以在一处添加适用于所有控制器的其他内容

【讨论】:

    【解决方案2】:

    您忘记设置源语言。

    进入配置:

    return array(
       'sourceLanguage'=>'en',
    ),
    

    或应用程序:

    Yii::app()->sourceLanguage = 'en';
    

    【讨论】:

      【解决方案3】:

      你可以在config/main.php中设置默认语言为

      return array(
          ...
          'sourceLanguage' => 'fr',
          'language'=>'en',
          ...
          'params' => array(
                     ...
                     'languages'=>array('en_us'=>'English', 'fr'=>'French', 'fa_ir'=>'فارسی'),
                     ....
                     ), 
      ); 
      

      并随心所欲地更改您的语言:

      Yii::app()->language = Yii::app()->params->languages['fa_ir'];
      

      也为了更多的经验,也许:

      Yii::app()->language = Yii::app()->params->languages[$_GET['lang']];
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-30
        • 1970-01-01
        • 1970-01-01
        • 2017-07-12
        • 2021-05-08
        • 1970-01-01
        相关资源
        最近更新 更多