Yii2 - 多语言

Ale*_*sta 9 php yii yii2-advanced-app

我正在尝试使用i18l设置网站的前端翻译.这是我在前端/配置上放置的i18l.php文件

    <?php
return [
    'sourcePath' => 'frontend',
    'languages' => ['en-US', 'pt-BR'] , //Add languages to the array for the language files to be generated.
    'translator' => 'Yii::t',
    'sort' => false,
    'removeUnused' => false,
    'only' => ['*.php'],
    'except' => [
        '.svn',
        '.git',
        '.gitignore',
        '.gitkeep',
        '.hgignore',
        '.hgkeep',
        '/messages',
        '/vendor',
    ],
    'format' => 'php',
    'messagePath' => 'frontend' . DIRECTORY_SEPARATOR . 'translations',
    'overwrite' => true,
];
Run Code Online (Sandbox Code Playgroud)

在这里我的main.php也在前端

(...)
'language' => 'en-US',
'components' => [
        'i18n' => [
          'translations' => [
            'app*' => [
              'class' => 'yii\i18n\PhpMessageSource',
              'basePath' => 'frontend/translations',

              'fileMap' => [
                  'app' => 'app.php',
                  'app/error' => 'error.php',
              ],
          ],
        ],
]
Run Code Online (Sandbox Code Playgroud)

我正在使用<?= Yii::t('app', 'some string') ?>网站和布局,当我运行命令./yii message/extract @ frontend/config/i18n.php时,它为我创建了一个名为'translations'的文件夹,其中包含其他两个文件夹'en-US'和'pt-BR'都有app.php,我已经填写了一些翻译.但是,当我更改main.php上的语言(我认为)时,没有翻译.如果有人能帮助我,我将不胜感激.

谢谢.

MEM*_*MEM 4

很棒的帖子,包含所有需要的详细信息。

我也在为同样的事情而挣扎,但你做得很好。

因此,如果您可以运行该命令并生成该文件,则说明sourcePath正确的。如果它在运行时不显示翻译消息,尽管您的设置发生了更改,那么,我认为问题可能出在您的basePath

尝试在您的 basePath 配置上使用以下内容:

'basePath' => '@frontend/translations',
Run Code Online (Sandbox Code Playgroud)