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

首頁(yè) > 開(kāi)發(fā) > PHP > 正文

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

2024-05-04 23:16:58
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
起初想到制成XML文檔形式,這樣操作也起來(lái)很容易。只是看到說(shuō)XML效率不怎樣
再者就是不同的模板,可這樣也有個(gè)小問(wèn)題,有些詞匯比如時(shí)間提示是不確定,與可能是minute ,day。也有可能復(fù)數(shù)加 s
那好吧,做成數(shù)組,可數(shù)組就得做成在php文件的變量,很難做些擴(kuò)展(我所知道所認(rèn)為的是這樣)
最后做成txt文本文件的形式,同樣也為這樣的效率擔(dān)心,打開(kāi)文件,搜索字符串,截取字符串這些,所幸最后運(yùn)行了一下,一般機(jī)子大概0.0004秒,這讓我很驚奇原以為會(huì)很慢,畢竟要調(diào)用多次。
好吧,上代碼

復(fù)制代碼 代碼如下:


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í)加上的代碼

復(fù)制代碼 代碼如下:


$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),比如有專門負(fù)責(zé)菜單翻譯的menu.txt ,也有專門為操作,比如刪除,收藏 翻譯的txt文本。這樣可以自由設(shè)定要加載的文本
語(yǔ)言也可以自由設(shè)定。
好吧,程序還可以改進(jìn),我沒(méi)有按http請(qǐng)求中的客戶端語(yǔ)言來(lái)設(shè)置$lan,
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 石楼县| 枣强县| 肥东县| 丰宁| 麻江县| 灵寿县| 织金县| 蓝田县| 营山县| 呼和浩特市| 密山市| 丰原市| 松滋市| 和平区| 沛县| 团风县| 陆良县| 云林县| 都安| 阿克| 行唐县| 攀枝花市| 扎兰屯市| 卢湾区| 淄博市| 安平县| 昂仁县| 彭山县| 滨海县| 深州市| 柳江县| 孟州市| 方山县| 京山县| 那曲县| 闵行区| 阿拉善盟| 龙井市| 长葛市| 台安县| 新营市|