4

我已经设置了3 environments

我的应用需要加载不同的翻译集,因为每个环境都不同。

我有RO, HU,DE语言。

我正在尝试设置翻译,但它不起作用。

在前端/配置 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'),

这是电影,我的东西:

电影

4

2 回答 2

2

问题出在 app* 中,因为它不是 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',
                ],
  ....

在翻译文件/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');
于 2014-04-23T15:58:12.253 回答
0

您还可以尝试在语言代码和文件夹名称中用下划线替换破折号:

en-US >> en_US

为我工作。

于 2015-06-25T17:08:09.003 回答