【问题标题】:Yii2 - Multi languageYii2 - 多语言
【发布时间】:2015-07-18 06:29:34
【问题描述】:

我正在尝试使用 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,
];

我的 main.php 也在前端

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

              'fileMap' => [
                  'app' => 'app.php',
                  'app/error' => 'error.php',
              ],
          ],
        ],
]

我在站点和布局上使用&lt;?= Yii::t('app', 'some string') ?&gt;,当我运行命令 ./yii message/extract @frontend/config/i18n.php 时,它会为我创建一个名为“translations”的文件夹,其中包含其他两个文件夹'en-US' 和 'pt-BR' 都带有 app.php,我已经填写了一些翻译。但是,当我更改 main.php 上的语言(我认为)时,仍然没有发生翻译。 如果有人能帮我解决这个问题,我将不胜感激。

谢谢。

【问题讨论】:

  • 很棒的帖子。我只想指出一件事。 &lt;?= 可能有风险。并非所有设置都启用了短标签。听起来可能很傻,但是当您迁移到新服务器时,它可以关闭您的整个系统。为什么不改用&lt;?php echo? :)
  • 不确定是不是这样,但是我发现如果目标和源目标相同,则需要强制翻译以使其尊重文件而不是参数输入来自Yii::tyiiframework.com/doc-2.0/…

标签: php yii yii2-advanced-app


【解决方案1】:

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

我在同样的事情上苦苦挣扎,但你做得很好。

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

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

'basePath' => '@frontend/translations',

【讨论】:

    猜你喜欢
    • 2018-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多