我已设置3 environments
。
我的应用需要加载不同的翻译集,因为每个环境都不同。
我有RO
,HU
,DE
种语言。
我正在尝试设置翻译,但它不起作用。
在frontend / config main.php中我有:
'sourceLanguage' => 'en',
'language' => 'en',
在frontend/web/index.php
我有:
defined('YII_ENV') or define('YII_ENV', 'dev_ro');
另外,我正在合并配置数组:
(file_exists(__DIR__ . '/../../environments/' . YII_ENV . '/common/config/main-local.php') ? require(__DIR__ . '/../../environments/' . YII_ENV . '/common/config/main-local.php') : [])
现在,在environments/dev_ro/common/config/
,components
我有:
'i18n' => [
'translations' => [
'companie' => [
'class' => 'yii\i18n\PhpMessageSource',
'basePath' => '@app/messages',
'sourceLanguage' => 'en',
'fileMap' => [
'companie' => 'companie.php',
],
],
],
],
在Companie
模型中我有:
'nume' => Yii::t('companie', 'Name'),
这是电影,我的东西:
答案 0 :(得分:2)
问题出现在app *中,因为它不是应用*类别,这有效:
'i18n' => [
'translations' => [
'*' => [
'class' => 'yii\i18n\PhpMessageSource',
'fileMap' => [
'companie' => 'companie.php',
],
],
],
],
或者如果你想写'companie*' =>
如果仍然无效,则确实设置了错误的翻译文件路径。默认情况下,它必须是BasePath/messages/LanguageID/CategoryName.php
。
如果你想在后端和前端使用一个文件,你应该在common config(高级yii应用程序)中创建例如公共别名,并在i18n config中设置这个别名。这是完整的例子:
通用配置:
Yii::setAlias('@common', dirname(__DIR__));
return [
'language' => 'ru',
'sourceLanguage' => 'ru',
'components' => [
'i18n' => [
'translations' => [
'*' => [
'class' => 'yii\i18n\PhpMessageSource',
'basePath' => '@common/messages',
'fileMap' => [
'companie' => 'companie.php',
],
....
在traslate文件/common/messages/en-US/companie.php
<?php
return [
'string in russian' => 'string in english'
];
使用以下代码检查翻译:
\Yii::$app->language = 'en-US';
echo \Yii::t('companie', 'string in russian');
答案 1 :(得分:0)
您还可以尝试在语言代码和文件夹名称中用短划线替换短划线:
en-US >> en_US
适合我。