我在使用Yii2高级模板中的i18n时遇到了麻烦。 翻译不起作用!
我在yii2项目根目录中运行了这些命令。
./yii message/config --languages=de,it,fr --messagePath=messages i18n.php
./yii message/extract i18n.php
它在项目根目录下生成i18n.php,在消息目录下生成de,it,fr目录。
在de目录中,我使用以下内容创建了新文件app.php
:
<?php
return [
'Home' => 'Home de',
'Getting Started' => 'Getting Started de',
];
通用/ 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') ?>
我如何才能让它发挥作用?
答案 0 :(得分:3)
您可以在配置中设置目标语言:
...
'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',
];
希望它有所帮助。
Goodluck,玩得开心!
答案 1 :(得分:0)
如果您使用的是高级模板,请编辑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',
],
],
],
],
....
]
并在视野中使用。祝你好运