Yii2 i18n 不工作

Yii2 i18n not working

我在使用 Yii2 高级模板中的 i18n 时遇到问题。 翻译无效!

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

Official link

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

在项目根目录下生成i18n.php,在message目录下生成de,it,fr目录。 在 de 目录中,我创建了包含以下内容的新文件 app.php

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

在common/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') ?>

如何让它工作?

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

...
'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',
];

希望对您有所帮助。

祝你好运,玩得开心!

如果您使用的是高级模板,请编辑 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',
            ],
        ],
    ],
],
....
]

并且考虑到使用 have.Good 运气