php 中英文語言轉換類

來源:互聯網
上載者:User

起初想到製成XML文檔形式,這樣操作也起來很容易。只是看到說XML效率不怎樣
再者就是不同的模板,可這樣也有個小問題,有些詞彙比如時間提示是不確定,與可能是minute ,day。也有可能複數加 s
那好吧,做成數組,可數組就得做成在php檔案的變數,很難做些擴充(我所知道所認為的是這樣)
最後做成txt文字檔的形式,同樣也為這樣的效率擔心,開啟檔案,搜尋字串,截取字串這些,所幸最後運行了一下,一般機子大概0.0004秒,這讓我很驚奇原以為會很慢,畢竟要調用多次。
好吧,上代碼 複製代碼 代碼如下: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 '<br/>';
$la->lto('hello');

lto(這裡面要翻譯的英文); 
unit.txt 檔案的內容格式是
hello-你好 min-小 minute-分鐘 minutes-分鐘
 
$special設計為全域也是想到不止一次會調用lto() ,如果反覆負載檔案太浪費效能了。
$type設計為公有是考慮到載入的檔案的效率問題,有的時候並不需要顯示幾天前這些,所以不如把這些按使用類型分開,比如有專門負責菜單翻譯的menu.txt ,也有專門為操作,比如刪除,收藏 翻譯的txt文本。這樣可以自由設定要載入的文本
語言也可以自由設定。
好吧,程式還可以改進,我沒有按http請求中的用戶端語言來設定$lan,

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.