Yii2 i18n无法正常工作

时间:2016-07-18 21:49:37

标签: yii2 yii2-advanced-app

我在使用Yii2高级模板中的i18n时遇到了麻烦。 翻译不起作用!

我在yii2项目根目录中运行了这些命令。

Official link

./yii message/config --languages=de,it,fr  --messagePath=messages i18n.php 
./yii message/extract i18n.php 

它在项目根目录下生成i18n.php,在消息目录下生成de,it,fr目录。 在de目录中,我使用以下内容创建了新文件app.php

<?php
return [
    'Home' => 'Home de',
    'Getting Started' => 'Getting Started de',
];

通用/ config / main.php

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

  // set source language to be English
 'sourceLanguage' => 'en-US',
'components' => [
        'i18n' => [
        'translations' => [
            'app*' => [
                'class' => 'yii\i18n\PhpMessageSource',
                'basePath' => realpath(dirname(__FILE__).'/../../').'messages',
                //'sourceLanguage' => 'en-US',
                //'fileMap' => [
                    //'app' =>  realpath(dirname(__FILE__).'/../../').'app.php',
                  //  'app/error' => 'error.php',
                //],
            ],
            ],
        ],
]

查看:

<?= Yii::t('app','Home')?>
<?= Yii::t('app','Getting Started') ?>

我如何才能让它发挥作用?

2 个答案:

答案 0 :(得分:3)

您可以在配置中设置目标语言:

...
'language' => 'ru-RU',
...

如果'sourceLanguage' => 'en-US', yii将从en-US翻译为ru-RU

配置i18n组件将是:

'i18n' => [
    'translations' => [
        'app' => [
            'class' => 'yii\i18n\PhpMessageSource',
            'basePath' => '@app/translation',
            'fileMap' => [
                 'app' => 'app.php',
            ],
        ],
    ],
 ],

目录结构是:

- translation
    - ru-RU
        - app.php

文件app.php

中的示例
return [
    'Home' => 'abcxyz',
    'source key' => 'translate to russian',
];

希望它有所帮助。

Goodluck,玩得开心!

答案 1 :(得分:0)

如果您使用的是高级模板,请编辑i18n.php

'sourcePath' =>__DIR__. DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR,

将在公共文件夹中创建消息文件夹。

在配置文件中

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

并在视野中使用。祝你好运