2012-08-22 90 views
0

我目前正在使用3种不同语言查看网站。我已将所有文本都放入语言文件中,几乎所有内容都按预期工作。 之类的东西配置分页我已经投入到一个配置文件,并为application/config,像这样:CodeIgniter表单验证多语言标签

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 

$config['num_links']  = 2; 
$config['full_tag_open'] = '<p class="pagination">'; 
$config['full_tag_close'] = '</p>'; 
$config['first_link']  = '&laquo;&nbsp;' . lang('first'); 
$config['last_link']  = lang('last') . '&nbsp;&raquo;'; 

它的伟大工程,但我已经试过了我的表单验证的配置文件是相同的,就像这样:

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 

$config = array(

    'login' => array(
     array(
      'field' => 'login_email', 
      'label' => lang('emailaddress'), 
      'rules' => 'trim|required|valid_email|min_length[6]' 
     ), 
     array(
      'field' => 'login_password', 
      'label' => lang('password'), 
      'rules' => 'trim|required' 
     ), 
    ), 

但这似乎并不奏效。看起来这个配置文件在语言文件/库之前被加载。 说实话,目前我并不知道如何解决这个问题,而不是把所有的东西都拿出来再放到配置文件中,然后放到控制器中,但我宁愿不这样做。

任何想法如何解决这个问题?

+0

检查这是否有帮助http://stackoverflow.com/questions/1328420/the-best-way-to-make- codeigniter-website-multi-language-calling-from-lang-array/1328437#1328437 – TigerTiger

+0

@HappyApe谢谢,但我已经看到了,我已经使用了语言库和帮助程序。问题是表单验证配置文件似乎在所有语言的东西之前加载。 – Crinsane

回答

4

如果你检查范围平移是如何定义表单验证规则时(见下面的例子,并考虑第二个参数)来完成:

$this->form_validation->set_rules('first_name', 'lang:first_name', 'required'); 

你可以看到你在你的实际代码做错了。的 代替:

array(
    'field' => 'login_password', 
    'label' => lang('password'), 
    'rules' => 'trim|required' 
), 

要走的路是:

array(
    'field' => 'login_password', 
    'label' => 'lang:password', 
    'rules' => 'trim|required' 
), 
+0

有没有任何选择使用这样的自定义翻译助手功能?我有一个'trans'函数来扩展默认翻译。尝试'trans:password',但无法正常工作。 –

+0

辉煌!这确实是一个很好的解决方案 –