Yii2 i18n 不工作
Yii2 i18n not working
我在使用 Yii2 高级模板中的 i18n 时遇到问题。
翻译无效!
我在 yii2 项目根目录中有 运行 这些命令。
./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 运气
我在使用 Yii2 高级模板中的 i18n 时遇到问题。 翻译无效!
我在 yii2 项目根目录中有 运行 这些命令。
./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 运气