1

codeigniter 2.1.3 多语言网站如何?

我有 /language/english 和 /language/french

这个法语 $lang['user_login'] = 'Connecté';

这个英文 $lang['user_login'] = 'Login';

语言文件称为 user_lang.php

在控制器构造器上我有这个:

$this->load->helper('url');         
    $this->load->helper('language');

在函数索引上我有这个:

public function index()
{

           $this->lang->load('user', 'french');

……

在视图上我有以下几点:

<div class="pageTitle"><?php echo $this->lang->line('user_login');?></div>

/*
| -------------------------------------------------------------------
|  Auto-load Language files
| -------------------------------------------------------------------
| Prototype:
|
|   $autoload['language'] = array('lang1', 'lang2');
|
| NOTE: Do not include the "_lang" part of your file.  For example
| "codeigniter_lang.php" would be referenced as array('codeigniter');
|
*/

$autoload['language'] = array('user');

问题是该网站正在访问 user_lang.php 以获取登录一词

但只进入英文文件

 $this->lang->load('user', 'french');

我在上面做这个,它不工作从不读取法语文件

我还有一个问题,我怎样才能让它工作,这样我就可以用锚或href切换语言

谢谢佩德罗

4

2 回答 2

1

我会创建一个函数,如:

function language($language){

        $language = urldecode($language);

        switch($language){

            case "French":
                $this->session->set_userdata('lang_id', 2);
                $this->session->set_userdata('lang_name', 'french');
                redirect('/', 'refresh');

            break;

            case "Russian":
                $this->session->set_userdata('lang_id', 3);
                $this->session->set_userdata('lang_name', 'russian');
                redirect('/', 'refresh');

            break;

            default: //default is English
                $this->session->set_userdata('lang_id', 1);
                $this->session->set_userdata('lang_name', 'english');
                redirect('/', 'refresh');

            break;  

        }

    }

我会更改导航到的语言:http: //www.domain.com/controller/language/French

然后在每个控制器或每个控制器类的构造函数中,我会检查 lang_id 和 lang_name 会话。如果设置了会话,我会使用它们。否则配置中的默认语言将自动加载。例如:

$lang = $this->session->userdata('lang_name');
if(!isset($lang)){ //load default language 
                $this->lang->load('home');
                $data = array(
                    'title' => lang('page_title')
                );
//etc etc

            }else{ //load language from session
                $this->lang->load('home', $this->session->userdata('lang_name'));

                $data = array(
                    'title' => lang('page_title')
                );      
//etc etc       
            }
于 2013-02-02T17:48:07.290 回答
0

在我的欢迎控制器中

public function french()
    {
        $this->session->set_userdata('lang_id', 2);
        $this->session->set_userdata('lang_name', 'french');
         $DContent['page_details'] = array('page_title' => 'Index of onplans');
         $Dheader = array();
         $Dsidebar = array();
         $Dfooter = array();
         $Dmeta = array('meta_title'=>'Welcome to onplans','meta_descricao'=>'onplans');



         $this->template->write_view('meta', 'html/meta',  $Dmeta, true);
         $this->template->write_view('header', 'html/header', $Dheader, true);
         $this->template->write_view('content', 'onplans/frenchset', $DContent,true);
         $this->template->write_view('sidebar', 'html/sidebar');
         $this->template->write_view('footer', 'html/footer');
         $this->template->render();

    }

    public function english()
    {
        $this->session->set_userdata('lang_id', 3);
        $this->session->set_userdata('lang_name', 'english');
         $DContent['page_details'] = array('page_title' => 'Index of onplans');
         $Dheader = array();
         $Dsidebar = array();
         $Dfooter = array();
         $Dmeta = array('meta_title'=>'Welcome to onplans','meta_descricao'=>'onplans');



         $this->template->write_view('meta', 'html/meta',  $Dmeta, true);
         $this->template->write_view('header', 'html/header', $Dheader, true);
         $this->template->write_view('content', 'onplans/englishset', $DContent,true);
         $this->template->write_view('sidebar', 'html/sidebar');
         $this->template->write_view('footer', 'html/footer');
         $this->template->render();

    }

在称为用户的目标控制器上

$this->load->helper('url');

        $this->load->helper('language');


        print_r('lang_session'.$this->session->userdata('lang_name'));


        $lang = $this->session->userdata('lang_name');

        if(!isset($lang)){ //load default language 

                $this->lang->load('user');


            }else{ //load language from session
 print_r('lang :'.$this->session->userdata('lang_name'));
                $this->lang->load('user',$this->session->userdata('lang_name')); //);    
            }

现在它的工作

于 2013-02-03T13:30:08.473 回答