2

Yii 不提供 en_us 语言的翻译消息文件。相反,我们应该依赖核心信息是正确的。

如果我成功地找到了核心消息的保存位置,我仍然不想弄乱核心文件,因为 A. 这是不明智的,B. 未来的版本修订会覆盖我的更改。

我唯一的选择是复制任何其他语言消息文件并手动编辑每条消息,以便翻译的消息与英文消息相同(有我的更正吗?为了一个需要纠正的词。

我提出这个的原因是这个...

如果您导航到一个不存在的页面,他们的错误消息是:“未找到请求的视图“{name}”。我认为它应该说:“未找到请求的视图“{name}”。

我认为他们在这个陈述中混合了时态(“请求”=过去时,“是”=现在时)。

对或错,我对他们的语法“不舒服”。

4

2 回答 2

4

Yii 是开源的。为什么不提交你的补丁?

这些消息可以在 yii-read-only/framework/messages/ 中找到,你可能也想看看 yii-read-only/framework/messages/config.php。

此外,您可以使用 yiic 的 message 命令。

至于实际问题,你可以用 fgrep 找到任何消息:

fgrep -rn "请求的视图" *

结果:

framework/web/actions/CViewAction.php:110:              throw new CHttpException(404,Yii::t('yii','The requested view "{name}" is not found.', 

所以去那里,检查 SVN 主干,修改,然后“svn diff”,然后提交你的谷歌代码补丁。

于 2010-02-06T14:27:29.813 回答
4

无需修补核心文件即可使其正常工作。看看 http://www.yiiframework.com/wiki/18/how-to-customize-yii-core-messages/

如果您尝试在 main.php 中将语言设置为 en_us,希望使用 protected/messages/en_us 中的本地 yii.php 将无法正常工作。不会翻译,因为 main.php 中 'en_us' 的语言设置与核心语言相同;所以你需要强制翻译。

解决方案是创建一种语言,它只会覆盖您想要更改/修复的消息。因此,按照上面链接中显示的示例,在 main.php 中使用en而不是 de 作为语言。在 protected/messages 下创建一个 en 文件夹而不是 de 文件夹。

然后在本地 en 文件夹中创建您自定义的 yii.php 文件,在您的情况下,该文件仅包含

return array (
  'The requested view "{name}" is not found.' => 'The requested view "{name}" was not found.',
);

这样,无需调整核心文件;并且,您的更改将在框架版本升级中保留。

作为一个仅供参考,如果您使用 GREP 找到的Yii ::t(' yii ', ...) 调用实际上是 Yii::t(' zii ',...) 那么您需要一个zii.php文件而不是protected/messages/en 文件夹中的 yii.php 文件。它将使用与上面显示的 yii.php 代码完全相同的格式。

这对于没有搜索结果时返回的消息很有用。

于 2010-11-18T06:18:39.823 回答