yii2 i18n国际化?

时间:2015-11-12 14:57:21

标签: internationalization yii2

您的想法

第1步 web.php

'language' => 'de', when i change 'language' => 'hu'

第二步 我创建了-foldert消息,并在messages文件夹中添加了三个文件夹(en,fr,de)并创建了三个文件(每个包含一个)-app.php

<a href="<?php echo Url::to(['']); ?>">German</a><br> <a href="<?php echo Url::to(['']); ?>">Hungarian</a> 适用于翻译

第3步 但因为我是初学者,我不知道下一步是什么。 我创建了两个按钮,但我无法编写控制器。

查看/ index.php的

cygstart bash "/home/FirstName LastName/bin/script.sh"

我的问题是如何切换语言的按钮,需要创建一个控制器,或者没有它的工作,这是怎么回事?

第4步

谢谢

2 个答案:

答案 0 :(得分:1)

在控制器中创建一个设置语言的操作,例如SiteController,即

public function actionSetLang($lang)
{
    switch ($lang) {
        case "en":
            \Yii::$app->language = "en";
            break;
        case "de":
            \Yii::$app->language = "de";
            break;
        case "hu":
            \Yii::$app->language = "hu";
            break;
        default:
            \Yii::$app->language = "en";
    }
    $this->goBack();
}

然后在您看来,您可以设置按钮,即

<a href="<?php echo Url::to(['site/setLang', 'lang' => 'hu']); ?>">Hungarian</a>
<a href="<?php echo Url::to(['site/setLang', 'lang' => 'de']); ?>">German</a>

以上是一种非常简单的方法。理想情况下,您希望使用cookie在浏览器中存储用户的首选语言,因此用户无需在每次访问页面时更改语言。 Cookie可以在setLang操作中实现。我将跳过cookie实现,因为它们超出了这个问题的范围。

答案 1 :(得分:0)

您可以使用它来设置语言:

Yii::$app->language = 'ru_RU';

在您的控制器中使用此功能:

    public function init()
    {
      //set here your language
      parent::init();

    }

它将适用于该控制器的所有功能。

编辑:

第一个函数设置应用程序其余部分的语言。当您调用该函数时,如果标签以该语言存在,则Yii::t()标签的其余部分将使用该语言。 de init是一个在控制器中的操作之前始终调用的函数,每个控制器都有该函数。因此,如果您在那里设置语言,则该函数的其余部分将使用该语言

相关问题