yii2 基础多语言

G'u*_*nov 1 php frameworks yii2 yii2-basic-app

我需要在 Yii2 基本框架中用 2 种语言制作网站,但是,我在谷歌和其他搜索引擎上研究了很多次,我只能找到 yii2 高级内化。我需要基本模式,如果你有 yii2 基本多语言的源代码,或者如果你知道任何关于 yii2 基本内化的链接或视频教程,请与我分享,我会非常感激。

我期待着尽快收到您的来信。 

Dmi*_*try 5

最好的教程是官方文档。 所以,看这里

在基本应用程序中,i18n 实现与高级应用程序没有区别。

首先,设置您的主配置,添加以下键:

return [
    // set target language to be Russian
    'language' => 'ru-RU',

    // set source language to be English
    'sourceLanguage' => 'en-US',

    ......
];
Run Code Online (Sandbox Code Playgroud)

之后,创建新文件/messages/ru-RU/app.php(用于实现ru-RU语言翻译。如果你的目标语言是es-MX,那么,那将是/messages/es-MX/app.php

现在在这个文件中,您可以实现字符串的翻译

<?php

/**
* Translation map for ru-RU
*/
return [
    'welcome' => '????? ??????????',
    'log in' => '?????',
    'This is a string to translate!' => '??? ?????? ??? ????????'
    //...
];
Run Code Online (Sandbox Code Playgroud)

文件准备好后,只需在主配置文件中配置 i18n 组件,如下所示:

'components' => [
    // ...
    'i18n' => [
        'translations' => [
            'app*' => [
                'class' => 'yii\i18n\PhpMessageSource',
                //'basePath' => '@app/messages',
                //'sourceLanguage' => 'en-US',
                'fileMap' => [
                    'app' => 'app.php',
                    'app/error' => 'error.php',
                ],
            ],
        ],
    ],
],
Run Code Online (Sandbox Code Playgroud)

最后,您可以使用echo \Yii::t('app', 'This is a string to translate!');So显示您的字符串,您将看到This is a string to translate!您的应用程序何时使用en-US语言,??? ?????? ??? ????????何时应用程序使用ru-RU

要更改目标语言,只需创建一个简单的操作,例如

public function actionChangeLang($local) 
{
    $available_locales = [
        'ru-RU',
        'en-US'
    ];    

    if (!in_array($local, $available_locales)) {
        throw new \yii\web\BadRequestHttpException();
    }

    \Yii::$app->language = $local;

    return $this->goBack();
}
Run Code Online (Sandbox Code Playgroud)