关于i18n

在视图中使用:

<?php echo CHtml::submitButton(‘Login’); ?>

生成:

<input tabindex="100" type="submit" name="yt0" value="Login" />

当在main.php 设置了language='zh_cn’后,

是否允许在 messages/zh_cn/ 下面,自动读取 _CHtml.php 文件,获取里面对应的 Login => 登录 ?

这样的好处是,无需在视图进行多语转换,这种机制最好是可以结合框架,即:

优先查找 messages/languageCode/YiiModuleName.php, 假如没有,则读取框架的多语对应的翻译模块~

这只是一个设想~

不知道,qiang是否有考虑这个呢?

这个可以应用到很多领域,如 model的验证 required, 假如,通过配置项目的messages对应的文件,就可以达到更改翻译结果的话,

我想是非常方便的~ 虽然这样可能会牺牲一点性能,不过我觉得还是值得~

不是太明白你的意思。

如果是自动翻译多语言视图,那么你可以创建views/post/zh_cn/view.php,这样在显示views/post/view.php,Yii会自动去读取zh_cn下面的视图,假设language=zh_cn的话。

对于消息翻译,Yii会在messages/zh_cn去寻找消息文件。

views/post/zh_cn/view.php 这样的设计非常好!~

这完全是自动的? 假如是,应该有效率问题吧,每次都检查目录一次

我觉得这种做法,可以考虑在控制器层进行控制,如:

$this->useI18NView();

return $this->render(‘view’);

application有两个语言相关的属性:language和sourceLanguage。如果两者一样,Yii就不去找子目录的视图文件了。这样,对于不需要多语言的网站就没有性能损失了。如果你的网站只是部分需要支持多语言,那么你可以在控制器里动态控制这两个属性值。

十分周到,十分~