我使用CodeIgniter构建多语言Web应用程序。我有/system/languages/
文件夹下的英文和其他语言,并且我创建了一个负责在运行时更改工作语言的模型。表单验证在运行时更改时忽略语言
默认笨在法国工作作为/application/config/config.php
$config['language'] = 'french';
后来所定义,根据URI段的模型相应地改变语言,波纹管简化的示例:
class multilang extends CI_Model {
public function __construct() {
parent::__construct();
if ($this->uri->segment(1) == 'en') {
$this->config->set_item('language', 'english');
}
}
}
这型号是在/application/config/autoload.php
的自动加载设置下列出的第一个型号,我可以确认该语言确实通过调用动态更改:
echo $this->config->item('language');
但是内置的表单验证库不考虑改变的语言,而不是只显示在设置硬编码的语言错误消息文件/application/config/config.php
在这种情况下,法国。
起初我以为这是因为表单验证在multilang
模型之前加载。为了确保模型加载第一,我修改了表单验证构造别的像在此之前加载模型:
public function __construct($rules = array())
{
$this->CI =& get_instance();
$this->CI->load->model('multilang');
// normal code after....
}
这确信表单验证之前加载模型。不幸的是,这还不够,表单验证在运行时更改时仍会忽略语言。任何人都知道这是为什么发生?
谢谢。