我正在尝试使用Codeigniter创建一个多语言网站,并且通过从控制器动态加载来自正确语言文件夹的_lang.php
文件,内容工作正常。只是因为form_validation_lang.php file
我无法做到这一点。
有没有办法设置应该从控制器获取_lang.php
文件的文件夹?
这是我使用的,留下大多数set_rules()行。
$this->lang->load('MY_register_lang', $this->_language);
$this->load->library('form_validation');
$this->lang->load('form_validation', $this->_language);
$this->form_validation->set_rules('username', 'lang:un', 'trim|required|min_length[3]|max_length[25]|alpha_dash|is_unique[user.username]');
$this->form_validation->set_rules('pass2', 'lang:pass2', 'trim|required|matches[pass1]');
$this->form_validation->set_message('matches', $this->lang->line('no_match'));
它确实加载了正确的MY_register_lang.php,但没有加载form_validation_lang.php(是的,尝试添加_lang)。它确实使用了set_message()方法中的正确语言,但它来自加载的文件。
答案 0 :(得分:0)
请查看CI文档Loading A Language File
它说要从特定文件中获取一行,您必须先加载该文件。使用以下代码加载语言文件。
$this->lang->load('filename', 'language');
所以你的情况应该是
$this->lang->load('form_validation', 'YOUR_SPECIFIC_LANGUAGE');
但是在使用表单验证规则之前以及加载库($this->load->library('form_validation');
)
答案 1 :(得分:0)
如果您需要为某个特定规则的特定字段设置自定义错误消息,请使用带有lang的set_rules()方法:
$this->form_validation->set_rules('field_name', 'Field Label', 'rule1|rule2|rule3',
array('rule2' => lang('your_lang_keyword'))
);
这将独立解决您的所有字段问题。 :)