6

有没有办法翻译CodeIgniter的表单验证错误信息而不接触系统文件?翻译CodeIgniter的表单验证错误信息

+0

这是我的答案http://stackoverflow.com/a/36331269/3143384。我们需要在验证lang文件中进行更改,但这样您可以将自定义消息设置为任何字段。 – 2016-03-31 10:56:53

回答

25

如果您正在谈论实际翻译为另一种语言,可以通过将配置值$config['language']设置为您想要的语言来完成此操作。如果你不想改变实际的config.php文件,你可以通过使用配置对象的set_item()功能的这样做:

$this->config->set_item('language', 'spanish'); 

参见:CodeIgniter Doc for the Config Class

这是假设你有一个西班牙语目录至少包含form_validation_lang.php文件,您的language目录中。

但是,如果您只是想为Form_validation对象创建自定义消息,则可以将form_validation_lang.php文件从system\language目录复制并移动到application\language目录。您现在可以编辑新的语言文件,使其反映您想要的任何不同的消息。您也可以通过从application/language目录中删除文件轻松恢复为默认消息。

另一种方式来做到这一点,如果你不想触摸即使language文件是手动覆盖消息。你可以做到这一点通过Form_validation库对象,像这样:

$this->form_validation->set_message('required', 'This is a required item!');` 

参见:CodeIgniter Doc for the Form Validation Class

+1

这是一个非常优秀的答案 – 2013-08-06 03:00:11

+1

语言包:https://github.com/EllisLab/CodeIgniter/wiki/Language-Translation - 然而,很多这些链接都很遗憾: – user2019515 2013-11-12 17:03:59

+0

应用@wescrow提到的方法。并去语言包。这是一个正式的工作新的链接CI 3.x语言https://github.com/bcit-ci/codeigniter3-translations – TechCare99 2016-10-10 11:24:13

0

如果您需要设置自定义错误消息对某些特定规则的特定字段,使用set_rules()方法:

$this->form_validation->set_rules('field_name', 'Field Label', 'rule1|rule2|rule3', 
     array('rule2' => 'Error Message on rule2 for this field_name') 
); 

这将独立解决您的所有领域的问题。 :)