0

現在、codeigniter 2.1.2 で Web サイトを構築しています。現在、多言語 Web サイトを効率的に構築する際に問題が発生しています。

言語クラスのチュートリアルとヘルパーを読み、「中国語」と「英語」の 2 つの言語フォルダーを保存しました。

私がやろうとしているのは、「lang」という言語セッション変数が欲しいということです。そして、私は次のものが欲しいです:

  1. セッション変数「lang」が存在しない場合は、作成して「english」を指すようにします
  2. セッション変数がすでに設定されていて、ユーザーが言語の変更をクリックした場合、セッション変数は「中国語」から「英語」または「英語」から「中国語」に変更されます。

私はPHPとCodeigniterにまったく慣れていません。今考えられるのは、次のようなものだけです。ユーザーが自分のサイトで言語を効率的に変更できるようにする方法について、誰かが光を当てることができますか?

ユーザーのクリックイベントでセッション変数を変更する方法がわかりません。

// Load Language Files 
if(!$this->session->userdata('lang')) {
    $this->session->set_userdata('lang','english');
    $lang = 'english';
} else {
    $lang = 'chinese';
}
$this->lang->load('pages/header',$lang);

言語コントローラーを作成し、セッション変数を設定してから、ページを前のページにリダイレクトします。それは良い方法ですか?

  <?php

Class language Extends CI_Controller {

    function index() {
        if(!$this->session->userdata('lang')) {
            $this->session->set_userdata('lang','english');
        } else {
            $lang = $this->session->userdata('lang');
            if ($lang =="chinese") {
                $this->session->set_userdata('lang','english');
            } elseif ($lang == "english") {
                $this->session->set_userdata('lang','chinese');
            } else {
                $this->session->set_userdata('lang','english');
            }
        }
        header('Location: ' . $_SERVER['HTTP_REFERER']);
    }
}
4

2 に答える 2

7

言語コントローラーを作成します。ユーザーが英語の場合は言語リンクhttp://www.yoursite.com/language/englishをクリックし、中国語の場合は同様の方法をクリックすると、関連する方法にユーザー を誘導します。セッション変数の代わりにCookieを使用しました。

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

class Language extends CI_Controller{
    function __construct(){
        parent::__construct();
    }

    public function index(){
        $this->english();
    }

    public function english(){
        $this->lang->load('labels', 'english');
        //$this->session->set_userdata("LANGUAGE","english");
        $cookie = array(
                    'name'   => 'LANGUAGE',
                    'value'  => 'english',
                    'expire' => 604800
                );
        $this->input->set_cookie($cookie);
        header("location: ".$_GET["ref"]);
    }

    public function chinese(){
        $this->lang->load('labels', 'chinese');
        //$this->session->set_userdata("LANGUAGE","chinese");
        $cookie = array(
                    'name'   => 'LANGUAGE',
                    'value'  => 'chinese',
                    'expire' => 604800
                );
        $this->input->set_cookie($cookie);
        header("location: ".$_GET["ref"]);
    }

}



?>
于 2012-10-12T11:03:38.620 に答える