1

codeigniter 2.1.3 多言語ウェブサイトの使い方

私は /language/english と /language/french を持っています

このフランス語 $lang['user_login'] = 'Connecté';

この英語 $lang['user_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');

問題は、Web サイトが user_lang.php にアクセスして login という単語を取得していることです。

ただし、英語のファイルにのみ移動します

 $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 に答える