【问题标题】:Yii2 i18n not workingYii2 i18n 不工作
【发布时间】:2016-07-18 21:49:37
【问题描述】:

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

我怎样才能让它工作?

【问题讨论】:

标签: yii2 yii2-advanced-app


【解决方案1】:

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

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

如果'sourceLanguage' =&gt; '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',
];

希望对您有所帮助。

祝你好运,玩得开心!

【讨论】:

  • 谢谢,我试试看。
  • " 如果 'sourceLanguage' => 'en-US',yii 会从 en-US 翻译成 ru-RU。" 这部分很重要。如果你碰巧把它改成了你的查看语言,就像我一样,yii2 根本不会翻译!
【解决方案2】:

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

并按您的意愿使用。祝您好运

【讨论】:

    猜你喜欢
    • 2012-05-06
    • 2012-12-18
    • 1970-01-01
    • 1970-01-01
    • 2015-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多