我目前正在建立一个与代码点火器2.1.2的网站。现在,我遇到了一个问题,如何有效地建立一个多语言网站。
我已经阅读了语言类教程和助手,我已经存储了两个语言文件夹“中文”和“英语”。
我打算做的是我想要一个名为"lang“的语言会话变量。我要做以下几件事:
我对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']);
}
}发布于 2012-10-12 11:03:38
做一个语言控制器。当用户点击英文的语言链接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"]);
}
}
?>发布于 2015-09-28 13:11:28
使用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']);
}
}在这里可以找到完整的多语言教程- CodeIgniter中的多语言实现。
https://stackoverflow.com/questions/12857419
复制相似问题