Yii::t(‘a’,‘a’);
如果当前是英文,源也是英文,
即使我配置了 en_us/a.php 中有 a=>‘aaaa’
也不会返回 "aaa" ?
有没有办法让它返回 "aaa" ?
Yii::t(‘a’,‘a’);
如果当前是英文,源也是英文,
即使我配置了 en_us/a.php 中有 a=>‘aaaa’
也不会返回 "aaa" ?
有没有办法让它返回 "aaa" ?
不行,但是你可以将源文件写成一个没有存在的语言。
这不太好吧~
我觉得 Yii::t() 应该有个接口可以强制不忽略源语言的对照~
顶起来啊,qiang,给个答复啊~
这主要是出于性能考虑。
正如dongbeta建议的,你可以把sourceLanguage设成一个不存在的语言,这样就能强制翻译了。
嗯,我也是很在乎性能~
可是我觉得,可以多开一个参数,作为接口~~ 就可以实现了。
更改 sourceLanguage是一个bad idea,至少在我的多语模型行为插件中,这个suorceLanguage是非常重要的参考依据~
你可以配置messageSource的language属性,而不用变动application的sourceLanguage。
这样始终还是有点麻烦,因为需求是很简单的,假如还需要这么麻烦的配置来实现,还不如另外想办法
其实我感觉我这个需求应该还是蛮普遍的。
举个例子:
有一段留言后提示成功的message,因为我不太确定英文的内容,假如直接使用 Yii::t(‘app’,’%^%$^#’),然后再定义 ‘%^%$^#’ 的对应翻译内容的话,将来会对这句话进行改动,我就必须改动至少两个地方。
假如可以使用key模式的话, 我就只需要改动 message里面对应的翻译即可~
这不麻烦啊。就是在main.php里把messages的messageSource属性配置成一个不存在的locale id而已。这样就完全达到你的目的了,而且没有副作用。
关键是我也非常在乎效率~~
我只是在偶尔一两处会希望使用key=>value的模式~其余还是默认情况
怎么是好?
你可以考虑override message source的translate函数。比如当category是某些特定值时你强制翻译(或者message以某些特定字串开始时)。
ok~ 看了只能够这样了~
你可以重写Yii::t()