2017-08-02 108 views
1

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

我很期待收到您的来信。

+0

U可以参考的多语言 1)[文件基地]这些视频(https://www.youtube.com/watch ?v = _qNMcJKoEK0) 2)[数据库库](https://www.youtube.com/watch?v=-OKk83F-4zc) – Mohan

回答

2

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

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

首先,请设置您的主要配置添加下列键:

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

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

    ...... 
]; 

之后,创建新的文件/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!' => 'Это строка для перевода' 
    //... 
]; 

当你的文件准备就绪,只配置国际化组件在你的主配置文件是这样的:

'components' => [ 
    // ... 
    'i18n' => [ 
     'translations' => [ 
      'app*' => [ 
       'class' => 'yii\i18n\PhpMessageSource', 
       //'basePath' => '@app/messages', 
       //'sourceLanguage' => 'en-US', 
       'fileMap' => [ 
        'app' => 'app.php', 
        'app/error' => 'error.php', 
       ], 
      ], 
     ], 
    ], 
], 

Finaly,您可以使用echo \Yii::t('app', 'This is a string to translate!');所以,你会看到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(); 
} 
+0

谢谢soovorow,你能解释一下我的主要配置是什么一? –

+0

G'ulornjon,我的意思是你正在配置应用程序组件的配置文件。我想为你,这将是这个文件https://github.com/yiisoft/yii2-app-basic/blob/master/config/web.php – soovorow

+0

感谢您的帮助兄弟Soovorow,我尽我所能) –