CodeIgniter在验证表单时获取CI加载正确的语言文件

CodeIgniter在验证表单时获取CI加载正确的语言文件

问题描述:

这不仅仅是一个真实的问题,而是要求证明。我非常感谢CI专家和粉丝的反馈。CodeIgniter在验证表单时获取CI加载正确的语言文件

我一直在网上搜索有关这个问题的小时数:获取CI表单验证类动态加载适当的语言文件。

让我解释一下。在我的config.php文件中,我有:

$config['language'] = 'english'; 

这确实是默认语言。但我已经实现了一个设置控制器,让我的用户设置一些值,当然还可以更改它们的默认语言。我可以存储在设置到一个会话变量,但目前我没有,我只是加载语言用户设置到每个控制器构造函数中:

$this->idiom = get_user_setting('language'); 
$this->lang->load('main', $this->idiom); 
$this->lang->load('settings', $this->idiom); 
$this->lang->load('cst', $this->idiom); 

,正如你可以看到我然后加载所有我需要为每个控制器提供适当语言的语言文件。 'get_user_setting'函数只是帮助我查询数据库以获取特定的设置ID。

我抄在/系统/语言/英文/目录下的form_validation_lang.php,并把它放到我的/应用/语言/法语/目录下,然后我觉得做以下会做的魔力:

$this->lang->load('form_validation', $this->idiom); 

但是不......不会改变任何东西。我看了看在核心文件夹中的表单验证类,看到以下内容:

// Load the language file containing error messages 
$this->CI->lang->load('form_validation'); 

这显然让我觉得它永远加载config.php文件设置的默认语言的文件。我是对还是错?

因此,我有我的用户定义的设置这个工作,我从数据库中获取(和我也可以存储在一个会话变量)的唯一途径,就是要做到以下几点:

$this->idiom = get_user_setting('language'); 
$this->config->set_item('language', $this->idiom); 
... 

如果你们中的一些人已经不得不应对这种需求,并且你的确按照我的方式进行了管理,我将不胜感激。如果我完全错了,我当然会很欣赏解决方案。

谢谢你的帮助。文件。如果要加载不同的语言,你可以做一个把戏或更改表单验证类的源代码

+0

这是你做的唯一方法。 –

form_validation负载的默认语言。

我使用的伎俩,使用表单验证(如果需要你可以改变后表单验证完全回来了。)

您可以更改默认的语言与此代码之前更改默认语言。

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

此代码后,您可以使用表单验证,它会加载您设置的语言。

下面是我解决它的办法:

  1. 创建您自己的application\libraries\My_Form_validation.php
  2. run()方法从system\libraries\Form_validation.php复制到您的文件中。
  3. 变化在run()方法下面一行在你的文件来源:

$this->CI->lang->load('form_validation');

要:

$language = !empty($this->CI->session->language) ? $this->CI->session->language : 'english'; 
$this->CI->lang->load('form_validation', $language); 

这是假设你是存储在会话语言。在你的情况下,你会做$language = get_user_setting('language');我假设。