Php 当不存在翻译文件时,如何修改YII核心消息?

Php 当不存在翻译文件时,如何修改YII核心消息?,php,yii,Php,Yii,Yii不提供英、美语言的翻译信息文件。相反,我们需要依靠核心信息来确保其正确性 如果我成功地找到了核心消息的存放位置,我仍然不想弄乱核心文件,因为,A.这是不明智的,B.未来的版本修订将覆盖我的更改 我唯一的选择是复制任何其他语言的邮件文件并手工编辑每一条邮件,以便翻译的邮件与英文邮件相同(我的更正已到位)?为了一个需要更正的单词,似乎需要做很多工作 我提出这个的原因是 如果导航到不存在的页面,则其错误消息为: '找不到请求的视图{name}' 我认为应该说: '找不到请求的视图{name}'

Yii不提供英、美语言的翻译信息文件。相反,我们需要依靠核心信息来确保其正确性

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

我唯一的选择是复制任何其他语言的邮件文件并手工编辑每一条邮件,以便翻译的邮件与英文邮件相同(我的更正已到位)?为了一个需要更正的单词,似乎需要做很多工作

我提出这个的原因是

如果导航到不存在的页面,则其错误消息为: '找不到请求的视图{name}' 我认为应该说: '找不到请求的视图{name}'

我认为他们在这句话中是混合时态('请求'=过去时态,'是'=现在时态)


不管是对是错,我对他们的语法感到“不舒服”。

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”,然后在google代码上提交您的补丁。

无需修补核心文件即可使其正常工作。 看看

如果您试图在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文件,而不是受保护的/messages/en文件夹中的yii.php文件。 它将使用与上面显示的yii.php代码完全相同的格式


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

感谢答案的最佳方式是接受答案,并最终投票。