如果没有翻译文件,如何修改YII核心消息?

时间:2010-02-06 02:44:07

标签: php yii

Yii没有为en_us语言提供翻译消息文件。相反,我们希望依靠核心信息是正确的。

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

我唯一的选择是复制任何其他语言消息文件并手动编辑每条消息,以便翻译的消息与英语消息相同(我的纠正措施到位了吗?)似乎很多工作为了一个需要纠正的词。

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

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

我认为他们在这个陈述中混合时态('要求'=过去时和'是'=现在时)。

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

2 个答案:

答案 0 :(得分:4)

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

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

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

至于实际问题,您可以使用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”,并在谷歌代码上提交补丁。

答案 1 :(得分: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'的语言设置与核心语言相同;所以你需要强制翻译。

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

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

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

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

作为一个FYI, IF 您使用GREP发现的Yii :: t(' yii ',...)调用实际上是对Yii :: t(' zii ',...) 那么你需要一个 zii.php 文件而不是protected / messages / en文件夹中的yii.php文件。 它将使用与上面显示的yii.php代码完全相同的格式。

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