2012-10-12 1 views
0

현재 codeigniter 2.1.2가있는 웹 사이트를 구축 중입니다. 이제 다중 언어 웹 사이트를 효율적으로 구축하는 데 문제가 있습니다.PHP Codeigniter 다국어 사이트에서 세션 변수를 사용하여 언어 키 저장

언어 수업 자습서와 도우미를 읽었으며 두 언어 폴더 "중국어"와 "영어"를 저장했습니다.

내가하려는 의도는 "lang"이라는 언어 세션 변수를 원한다는 것입니다. 그리고 난 다음 원하는 : 어떤 세션 변수 "LANG"가 존재하지 않는 경우

  1. , 내가 하나를 만들고 가리 킵니다 그것에 "영어"세션 변수가 이미 설정 및 사용자 언어의 변화를 클릭
  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']); 
    } 
} 

답변

7

언어 컨트롤러를 만듭니다. 사용자가 언어 링크를 클릭하면 관련 방법으로 사용자를 안내합니다. http://www.yoursite.com/language/english 영어와 중국어는 비슷합니다. 세션 변수 대신 쿠키를 사용했습니다.

<?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"]); 
    } 

} 



?> 
0

언어 클래스, 후크 및 컨트롤러를 사용 CodeIgniter를 가진 다중 언어 웹 사이트를 구축하기위한 가장 좋은 방법.

유일한 컨트롤러를 사용하려면 언어 전환기 컨트롤러 (LanguageSwitcher)를 만들고 다음 코드를 작성하십시오.

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

class LanguageSwitcher extends CI_Controller 
{ 
    public function __construct() { 
     parent::__construct(); 
     $this->load->helper('language'); 
     $siteLang = $this->session->userdata('site_lang'); 
     if ($siteLang) { 
      $this->lang->load('message',$siteLang); 
     } else { 
      $this->lang->load('message','english'); 
     } 
    } 

    function switchLang($language = "") { 

     $language = ($language != "") ? $language : "english"; 
     $this->session->set_userdata('site_lang', $language); 

     redirect($_SERVER['HTTP_REFERER']); 

    } 
} 

완벽한 다중 언어 튜토리얼은 여기에서 찾을 수 있습니다 - Multi-Language implementation in CodeIgniter

관련 문제