php語言切換
㈠ php如何實現多語言切換。用tp寫的
我是用php默認先識別包頭攜帶的語言來作為默認語言,然後根據用戶的選擇切換不同的語言包
㈡ php 多語言切換
語言切換如果考慮用戶體驗的話就相對有點麻煩,分離語言模塊保存在資料庫或者指定文件中然後用php調用指定的語言是比較常用的,但是你要知道每種語言都有差異,這樣會導致樣式不一致,所以如果想要更好的用戶體驗最好也替換一下對應的css樣式。
㈢ php網站中英文切換
多語言網站解決方案 php
前言:
多語言網站開發,重點的還是在解決語言之間的問題。
那如何解決這個問題呢?大概就分三步走:
1.頁面多語言
2.數仔鏈據庫多語言
3.用戶訪問語言統一
1.頁面多語言
需要考慮的問題:
A.用戶登陸時候,自動識別字元,調用不同的語言包?
B.用戶切換不同語言時候,調用不同的語言包?
C.增加多語言後的目錄結構?
頁面多語言也就是外觀的多語言化,這里可以採用靜態的語言包的方式。
設計時候就應該包括language的目錄,針對不同語言有獨立的子目錄。
如英文language/en ,簡體中文language/gb,繁體中文language/b5 (可以擴展其他語言)
每個目錄下就包含了對每個頁面的語言版本。選擇語言版本時候就可以調用相應版本的語言包。
具體做法:
0.利用js語言,識別瀏覽器語言,在調用不同的語言包.
1.language/en/global.ln是針對英文版的全局語言包。
2.global.ln 內容為:
$title = "English webstie";
$charset = "UTF-8";
3.index.php調用:
<?php
require_once()
?>;
<html>;
<head>;
<title>;$title<title>;
<meta http-equiv="content-type" content="text/html;charset=$charset">;
</head>;
<body>;</body>;
</html>;
這樣通過擴展就可以實現頁面的多搏飢語言化.
2.資料庫多語言
這個考慮的問題:
A.後台錄入數據的多語言化?
B.用戶在不同版本下,提交的內容,如何保存?
C.提供三種語言包,還是提供英文和簡體,簡體通過轉化提供繁體?
資料庫多語言就是達到多語言在資料庫裡面的統一。就需要採用utf-8統一編碼。
無論什麼語言的文字,都統一使用utf-8來存放到資料庫裡面。採用表欄位來表識
屬於什麼語言版本的文字。
具體:
A.對於後台添加的問題:
1.後台添加時候,就需要多語言化的錄入。先建立一個以utf-8編碼的資料庫,錄入英文/簡體,簡體在通過轉化為繁體,
再以utf-8編碼方式存於資料庫中。
2.建立以utf-8為編碼的表結構,importlanguage標識屬於什麼語言版本
但在某個版本下,就搜索屬於這個版本的文字來顯示。其他文字不顯示。
DROP TABLE IF EXISTS `zz_importer`;
CREATE TABLE IF NOT EXISTS `zz_importer` (
`importID` int(11) NOT NULL auto_increment,
`importTime` date NOT NULL default '0000-00-00',
`improtfile` varchar(100) NOT NULL default '',
`importlanguage` varchar(100) NOT NULL default ''
PRIMARY KEY (`importID`)
) ENGINE=MyISAM DEFAULT CHARSET=uft-8;
3.簡體轉化的繁體。
利用php的iconv.此過程對於linux/unix有效,對於windows無效。
iconv("GB2312","BIG5",$text);
4.因為,charset = "utf-8",數據就都是以utf-8編碼方式存在,
添加數據時候,要分別用en/gb/big5來標識語言版本.
INSERT INTO `zz_importer` VALUES (,'', '', 'en');
INSERT INTO `zz_importer` VALUES (,'', '', 'gb');
INSERT INTO `zz_importer` VALUES (,'', '', 'big5');
B.對於用戶添加的問題:
1.假設下簡體中念銀孫文下.用戶因為頁面頭為UTF-8.則用戶瀏覽器會以utf-8編碼
方式瀏覽頁面。
2.添加的資料庫本身以utf-8方式存在。
3.添加數據時候,要分別用gb來標識語言版本
INSERT INTO `zz_importer` VALUES (,'', '', 'gb');
C.對於簡體和繁體是單獨提供還是轉化問題
單獨提供 - 比較符合多語言的標准,靈活性大,對ISP沒有特別的要求。
轉化提供 - 提交速度會受影響,同時要ISP提供iconv的函數支持。
3.用戶訪問語言統一
A.假設用戶簡體中文版時候:
<meta http-equiv="content-type" content="text/html;charset=UTF-8">;
所有語言版本都是這樣。
B.調用language/gb的語言包。
C.搜索資料庫有語言欄位為gb的數據,並顯示
D.當用戶提交信息,參照上面資料庫多語言的B問題。
㈣ thinkphp3.0如何實現多語言切換
ThinkPHP內置多語言支持,如果你的應用涉及到國際化的支持,那麼可以定義相關的語言包文件。任何字元串形式的輸出,都可以定義語言常量。要啟用多語言功能,需要配置開啟多語言行為(確保你下載的是完整版本,如果不是需要單獨下載多語言檢測行為擴展),在項目的配置目錄下面的行為定義文件tags.php中,添加:
return array(
// 添加下面一行定義即可
'app_begin'=>array('CheckLang')
);
表示在app_begin標簽位置執行多語言檢測行為。
可以為項目定義不同的語言文件,框架的系統語言包目錄在系統框架的Lang目錄下面,每個語言都對應一個語言包文件,系統默認只有簡體中文語言包文件zh-cn.php ,如果要增加繁體中文 zh-tw或者英文en,只要增加相應的文件。
語言包的使用由系統自動判斷當前用戶的瀏覽器支持語言來定位,如果找不到相關的語言包文件,會使用默認的語言。如果瀏覽器支持多種語言,那麼取第一種支持語言。
ThinkPHP的多語言支持已經相當完善了,可以滿足應用的多語言需求。這里是指的是模板多語言支持,數據的多語言轉換(翻譯)不在這個范疇之內。ThinkPHP具備語言包定義、自動識別、動態定義語言參數的功能。並且可以自動識別用戶瀏覽器的語言,從而選擇相應的語言包(如果有定義)。例如:
throw_exception('新增用戶失敗!');
我們在語言包裡面增加了ADD_USER_ERROR 語言配置變數的話,在程序中的寫法就要改為:
throw_exception(L('ADD_USER_ERROR'));
也就是說,字元串信息要改成L方法和語言定義來表示。
項目語言包文件位於項目的Lang目錄下面,並且按照語言類別分子目錄存放,在執行的時候系統會自動載入,無需手動載入。
具體的語言包文件命名規范如下:
項目公共語言包
語言目錄/common.php
項目分組語言包
語言目錄/分組名.php
項目模塊語言包
不存在分組情況:語言目錄/模塊名(小寫).php
存在分組的情況:語言目錄/分組名_模塊名(小寫).php
語言子目錄採用瀏覽器的語言命名(全部小寫)定義,例如English (United States) 可以使用en-us作為目錄名。如果項目比較小,整個項目只有一個語言包文件,那可以定義common.php文件,而無需按照模塊分開定義。
語言包文件可以按照模塊來定義,每個模塊單獨定義語言包文件,文件名和模塊名稱相同,例如:
Lang/zh-cn/user.php 表示給User模塊定義簡體中文語言包文件
Lang/zh-tw/user.php 表示給User模塊定義繁體中文語言包文件
語言文件定義
ThinkPHP語言文件定義採用返回數組方式:
return array(
'lan_define'=>'歡迎使用ThinkPHP',
);
要在程序裡面設置語言定義的值,使用下面的方式:
L('define2','語言定義');
$value = L('define2');
上面的語言包是指項目的語言包,如果在提示信息的時候使用了框架底層的提示,那麼還需要定義系統的語言包,系統語言包目錄位於ThinkPHP目錄下面的Lang目錄。
通常多語言的使用是在Action控制器裡面,但是模型類的自動驗證功能裡面會用到提示信息,這個部分也可以使用多語言的特性。例如:
原來的方式是把提示信息直接寫在模型裡面定義
array('title','require','標題必須!',1),
如果使用了多語言功能的話(假設,我們在當前語言包裡面定義了' lang_var'=>'標題必須!')
還可以這樣定義模型的自動驗證
array('title','require','{%lang_var}',1),
如果要在模板中輸出語言變數不需要在Action中賦值,可以直接使用模板引擎特殊標簽來直接輸出語言定義的值:
{$Think.lang.lang_var}
可以輸出當前選擇的語言包裡面定義的 lang_var 語言定義
㈤ Thinkphp 多語言多模板 怎麼做到切換,
一般情況更換語亮攜言包就行了,我想你的英文和中文的模板相差比較多吧
比較簡單的辦法在index.php中加上如下代碼:
if(isset($_GET['l'])){
$_GET['t'源鍵禪]=$_GET['l'];
}
另外記得配置雹塵文件里需要加上如下配置
'DEFAULT_THEME'=>'default',
'TMPL_DETECT_THEME'=>true,//自動偵測模板主題
模板切換事例:
http://www.thinkphp.cn/extend/234.html
㈥ PHP做的網站怎麼實現中文和英文、繁體中文語言切換
語言配置文件的問題 先在語言配置文件中定義好,不同語言環境下要顯示的內容 (比如中文cn.php中$country= '中國',而英文en.php中$country='china') 而好緩在頁面中要顯示的內容不直接顯示,而是用變數替換 (在頁面中,如果單一中文時,你直接寫『中國』 現在雙語言了,你就寫$country) 在在頁面頭部根據用戶提交的語言,include相應的語友態模言配置文件 當然如何用戶剛打開頁面顯示什麼呢,所以要設置一個默認語言 (如 if( !$_COOKIE['lang'] ) include 'cn.php'; ) 原理就閉早這樣吧
㈦ thinkphp5.0實現網站英文切換 --- 2020-08-26
首先來看下它的配置:
// 是否開啟多語言
'豎兆lang_switch_on' => true,
//語音列表
'lang_list' => ['zh-cn','en-us'],
// 獲取當前選擇語言的方法類
GetLang.php
<?php
namespace app\index\controller;
use think\Cookie;
use think\Lang;
use think\Request;
class GetLang{
public function get_lang(){
lang = input('lang');
}
if( lang = Cookie::get('think_var');
}else{
lang = Lang::range( lang.EXT, lang);
return $lang;
}
}
?>
// 顯示效果的控制器類
Index.php
<?php
namespace app\index\controller;
use think\Controller;
class Index extends Controller
{
public function index(){
now_lang = now_lang=='zh-cn'){
尺羨 now_lang=='en-us'){
陵纖拍 this->assign('set_lang', this->fetch();
}
}
?>
// 視圖頁
index.html
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>{:lang('TITLE')}</title>
</head>
<body>
<a href="?lang={$set_lang}">{:lang('NOW_LANG')}</a>
</body>
</html>
//語言包文件
zh-cn.php
<?php
return [
'TITLE'=>'語言切換',
'NOW_LANG'=>'切換',
]
?>
en-us.php
<?php
return [
'TITLE'=>'Language switching',
'NOW_LANG'=>'Switch',
];
?>
㈧ thinkphp實現多語言切換時,資料庫數據如何也實現多語言
有兩種情況,分析如下:
1、需要中英文切換內容較少
假設我們現在正在操作的是文章表,需要根據用戶的語言環境輸出中文或英文的文章內容。
在文章表中多添加一個欄位用於存儲英文的內容,發布文章的頁面,同時上傳中英文內容即可,然後服務端通過thinkphp的多語言標識來決定讀取中文內容或者英文內容。也可以在前端模板中進行識別。
2、需要中英文切換內容較多
如果某個數據表的多個欄位或者多個數據表都需要做中英文切換,顯然在數據表裡添加多個欄位的方式就不太合適了,那將導致數據表欄位太多,不方便管理,可以採用多數據表的方式,將內容完整的分為兩份。就是把涉及到中英文切換的數據表多拷貝一份而已,裡面的數據是英文的
。管理員後台,可以同時存儲中英文內容,也可以分開存儲,你自己決定就好,讀取時同樣使用thinkphp的多語言標識判斷用戶的語言環境,來決定查詢中文表還是英文表。
另外,如果整站都需要中英文切換,也可以做分布式資料庫!
一切根據實際需求決定!