微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – 在Yii2中不使用环境翻译

我设置了3个环境.

我的应用程序需要加载不同的翻译集,因为每个env都不同.

我有RO,HU,DE语言.

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

在frontend / config main.PHP我有

‘sourceLanguage’=> “恩”,
    ‘language’=> “恩”,

在frontend / web / index.PHP我有

定义(‘YII_ENV’)或定义(‘YII_ENV’,’dev_ro’);

另外,我正在合并配置数组:

(file_exists(__ DIR__.’/../../environments /’.YII_ENV.’/ common / config / main-local.PHP’)?require(__ DIR__.’/ /././ environment /’.YII_ENV .’/common/config/main-local.PHP’):[])

现在,在环境/ dev_ro / common / config /中,我有以下组件:

'i18n' => [
            'translations' => [
                'companie' => [
                    'class' => 'yii\i18n\PHPMessageSource',
                    'basePath' => '@app/messages',
                    'sourceLanguage' => 'en',
                    'fileMap' => [
                        'companie' => 'companie.PHP',
                    ],
                ],
            ],
        ],

在Companie模型中,我有

'nume' => Yii::t('companie', 'Name'),

这是电影,我的事:

movie

解决方法:

问题出现在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',
                ],
  ....

在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');

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐