国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > PHP > 正文

php 中英文語(yǔ)言轉(zhuǎn)換類詳解

2020-03-22 18:52:52
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
多語(yǔ)言網(wǎng)站開(kāi)發(fā),重點(diǎn)的還是在解決語(yǔ)言之間的問(wèn)題。
那如何解決這個(gè)問(wèn)題呢?大概就分三步走:

1.頁(yè)面多語(yǔ)言
2.數(shù)據(jù)庫(kù)多語(yǔ)言
3.用戶訪問(wèn)語(yǔ)言統(tǒng)一

1.頁(yè)面多語(yǔ)言
需要考慮的問(wèn)題:
A.用戶登陸時(shí)候,自動(dòng)識(shí)別字符,調(diào)用不同的語(yǔ)言包?
B.用戶切換不同語(yǔ)言時(shí)候,調(diào)用不同的語(yǔ)言包?
C.增加多語(yǔ)言后的目錄結(jié)構(gòu)?

頁(yè)面多語(yǔ)言也就是外觀的多語(yǔ)言化,這里可以采用靜態(tài)的語(yǔ)言包的方式。
設(shè)計(jì)時(shí)候就應(yīng)該包括language的目錄,針對(duì)不同語(yǔ)言有獨(dú)立的子目錄。
如英文language/en ,簡(jiǎn)體中文language/gb,繁體中文language/b5 (可以擴(kuò)展其他語(yǔ)言)
每個(gè)目錄下就包含了對(duì)每個(gè)頁(yè)面的語(yǔ)言版本。選擇語(yǔ)言版本時(shí)候就可以調(diào)用相應(yīng)版本的語(yǔ)言包。

下面是實(shí)例代碼

html' target='_blank'>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(); 是找到字符串第一次出現(xiàn)的位置 比如 ‘wo' 在 ‘hello world' 中,返回值為 6
substr();是截取字符串的一部分  
接下來(lái)是調(diào)試時(shí)加上的代碼

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

lto(這里面要翻譯的英文); 
unit.txt 文件的內(nèi)容格式是
hello-你好 min-小 minute-分鐘 minutes-分鐘
 
$special設(shè)計(jì)為全局也是想到不止一次會(huì)調(diào)用lto() ,如果反復(fù)加載文件太浪費(fèi)性能了。
$type設(shè)計(jì)為公有是考慮到加載的文件的效率問(wèn)題,有的時(shí)候并不需要顯示幾天前這些,所以不如把這些按使用類型分開(kāi),比如有專門(mén)負(fù)責(zé)菜單翻譯的menu.txt ,也有專門(mén)為操作,比如刪除,收藏 翻譯的txt文本。這樣可以自由設(shè)定要加載的文本
語(yǔ)言也可以自由設(shè)定。

以上就是php 中英文語(yǔ)言轉(zhuǎn)換類詳解的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注 其它相關(guān)文章!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 兴文县| 聂拉木县| 资源县| 吉林省| 东乌| 余庆县| 济宁市| 毕节市| 永泰县| 修水县| 长治市| 舟山市| 延安市| 南靖县| 通渭县| 余江县| 大化| 潼关县| 迭部县| 青铜峡市| 萨嘎县| 淄博市| 白水县| 壶关县| 乌海市| 广丰县| 邛崃市| 清水河县| 新龙县| 五大连池市| 逊克县| 太原市| 锡林浩特市| 读书| 长海县| 大同县| 平乐县| 涞水县| 历史| 赞皇县| 清水河县|