首頁  >  文章  >  後端開發  >  php 中英文語言轉換類別詳解

php 中英文語言轉換類別詳解

怪我咯
怪我咯原創
2017-07-14 10:37:573801瀏覽

多語言網站開發,重點的還是在解決語言之間的問題。
那要如何解決這個問題呢?大概就分三步驟:

1.頁面多語言
2.資料庫多語言
3.使用者存取語言統一

#1.頁面多語言
需要考慮的問題:
A.用戶登陸時候,自動識別字符,呼叫不同的語言包?
B.用戶切換不同語言時候,呼叫不同的語言包?
C.增加多語言後的目錄結構

頁面多語言也就是外觀的多語言化,這裡可以採用靜態的語言包的方式。
設計時候就應該要包含language的目錄,針對不同語言有獨立的子目錄。
如英文language/en ,簡體中文language/gb,繁體中文language/b5 (可以擴充其他語言)
每個目錄下就包含了每個頁面的語言版本。選擇語言版本時候就可以呼叫對應版本的語言包。

下面是實例程式碼

class language 
{ 
static $lanObject; 
public $type; // unit , dashboard , menu ,other 
public $lan; // language 
private $special; // The common in the file 
private function construct() 
{ 
if( isset($_GET['hl']) || isset($_POST['hl']) ) 
{ 
switch( isset($_GET['hl'])?$_GET['hl']:$_POST['hl'] ) 
{ 
case 'en': 
$this->lan = 'en'; 
case 'zh': 
$this->lan = 'zh'; 
case 'all': 
$this->lan = 'all'; 
default: 
$this->error(); 
} 
} 
else 
$this->lan = isset($_COOKIE['hl']) ? $_COOKIE['hl']:'zh'; 
} 
public static function getObject() 
{ 
if( !(self::$lanObject instanceof self) ) 
self::$lanObject = new language(); 
return self::$lanObject; 
} 
public function lto($key) //$key is English 
{ 
if( $this->lan !== 'zh' ) 
return $key; 
if( empty($this->special) ) // if the $special is null 
{ 
if( isset($this->type) ) 
$this->special = file_get_contents($this->type.'.txt'); 
else 
return $key; 
} 
echo $this->search($key); 
} 
private function search($searchTozh) // PHP String 
{ 
$key_start = strpos($this->special,$searchTozh); 
$key_end = strpos($this->special,' ',$key_start); 
$len_str = strlen($searchTozh); 
$for_sub = $key_start + $len_str + 1; 
return substr($this->special, $for_sub, $key_end - $for_sub); 
} 
}

strpos(); 是找到字串第一次出現的位置例如'wo' 在'hello world' 中,傳回值為6
substr();是截取字串的一部份
接下來是調試時加上的程式碼 

$la = language::getObject(); 
$la->type = 'unit'; 
$la->lto('min'); 
echo &#39;<br/>&#39;; 
$la->lto(&#39;hello&#39;);

lto(這裡面要翻譯的英文);
unit.txt 檔案的內容格式是
hello-你好min-小minute-分鐘minutes-分鐘
 
$special設計為全局也是想到不只一次會呼叫lto() ,如果反复加載文件太浪費效能了。
$type設計為公有是考慮到載入的檔案的效率問題,有的時候並不需要顯示幾天前這些,所以不如把這些按使用類型分開,例如有專門負責選單翻譯的menu.txt ,也有專門為操作,例如刪除,收藏翻譯的txt文字。這樣可以自由設定要載入的文字
語言也可以自由設定。

以上是php 中英文語言轉換類別詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn