2017-08-25 15:53:40 3316次浏览 2条回答 0 悬赏 10 金钱

在common下的main.php加上了如下配置,其中'basePath' => '@common/language'这样的,代码如下:

'i18n' => [
	'translations' => [
		'*' => [
			'class' => 'yii\i18n\PhpMessageSource',
			'basePath' => '@common/language', // if advanced application, set @frontend/messages
			'sourceLanguage' => 'zh-CN',
			'fileMap' => [
				'language' => 'language.php',
				//'main' => 'main.php',
			],
		],
	],
],

具体的文件路径是common/language/zh-CN/language.php;
在language.php添加

return array(
    'abc'=>'efg'
);

然后在页面上使用Yii:t('language','abc');无效,这是为什么?

还有个奇怪的问题,配置文件的'basePath' 改成 '@backend/messages',然后相应的在backend下有语言包文件,路径:backend/messages/zh-CN/app.php;在页面上使用Yii:t('language','abc');这样却可以生效输出efg。
现在有多个项目除了backend还有其他的,我不可能每个项目下有存一份配置文件吧,所以放在公共目录下common是最好的,可是不生效,求各位大神解答

  • 回答于 2017-08-28 17:39 举报

    language 和 sourceLanguage 打印看看是不是一样的
    如果是一样的,默认是不会翻译的, 或者设置另外一个 forceTranslation 看看

  • 回答于 2017-08-30 09:24 举报
    'i18n' => [
                'translations' => [
                    'app*' => [
                        'class' => 'yii\i18n\PhpMessageSource',
                        'fileMap' => [
                            'app' => 'app.php' //可以加多个,是yii::t里面的第一个参数名
                        ],
                        'basePath' => '@common/message', //配置语言文件路径,现在采用默认的,就可以不配置这个
                    ],
                ],
            ],
    

    我的是这样配置的可以正常

您需要登录后才可以回答。登录 | 立即注册
o__荒年
总监

o__荒年

注册时间:2015-01-17
最后登录:2019-06-29
在线时长:32小时27分
  • 粉丝6
  • 金钱2395
  • 威望40
  • 积分3115

热门问题