一、Thinkphp多語言翻譯
首先在Common/conf/config.php檔案中寫入如下内容:
<?php
return array(
//'配置項'=>'配置值'
//語言包配置
'LANG_SWITCH_ON' => true, // 開啟語言包功能
'LANG_AUTO_DETECT' => true, // 自動偵測語言 開啟多語言功能後有效
'LANG_LIST' => 'zh-cn,en-us,zh-tw', //必須寫可允許的語言清單
'VAR_LANGUAGE' => 'l', // 預設語言切換變量
);
?>
然後在Common/conf檔案夾下建立一個tags.php檔案,寫入内容:
<?php
/**
* 語言包配置檔案
*/
return array(
// 添加下面一行定義即可
'app_begin' => array('Behavior\CheckLangBehavior'),
);
?>
當然還要寫入自己的語言封包件,在Think/Lang/下面有四個語言封包件,你可以在這四個或建立語言封包都可以,或者你在子產品下面建立一個Lang檔案夾,比如Home/Lang,在下面新增zh-cn.php,en-us.php等等語言封包件。簡體中文語言包可以這樣寫如下:
<?php
/**
* 簡體中文語言包
*/
return array(
'_Login' => "登入",
);
英文語言包可以這樣寫如下:
<?php
/**
* 英文語言包
*/
return array(
'_Login' => "Login",
);
然後随便在一個頁面,寫入如下内容:
{$Think.lang._Login}
最後在浏覽器通路該頁面,即可看到,比如在位址欄輸入如下URL:
http://localhost/index.php?l=zh-cn
http://localhost/index.php?l=en-us
這樣就可以看到中英文切換了,大家可以自己試一試。
二、使用百度翻譯
我這裡說的百度翻譯并不是在http://fanyi.baidu.com/這個網址中輸入内容點選翻譯這樣的,這裡我是以代碼的形式利用CURL進行翻譯的。
翻譯檔案放在/Home/Common/function.php中,内容如下:
<?php
class Translate {
/**
* 支援的語種
* @var ArrayAccess
*/
static $Lang = Array (
'auto' => '自動檢測',
'en' => '英語',
'zh' => '中文',
'cht' => '中文繁體',
);
/**
* 擷取支援的語種
* @return array 傳回支援的語種
*/
static function getLang() {
return self::$Lang;
}
/**
* 執行文本翻譯
* @param string $text 要翻譯的文本
* @param string $from 原語言語種 預設:中文
* @param string $to 目智語種 預設:英文
* @return boolean string 翻譯失敗:false 翻譯成功:翻譯結果
*/
static function exec($text, $from = 'zh', $to = 'en') {
$url = "http://fanyi.baidu.com/v2transapi";
$data = array (
'from' => $from,
'to' => $to,
'query' => $text
);
$data = http_build_query ( $data );
$ch = curl_init ();
curl_setopt ( $ch, CURLOPT_URL, $url );
curl_setopt ( $ch, CURLOPT_REFERER, "http://fanyi.baidu.com" );
curl_setopt ( $ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; rv:37.0) Gecko/20100101 Firefox/37.0' );
curl_setopt ( $ch, CURLOPT_HEADER, 0 );
curl_setopt ( $ch, CURLOPT_POST, 1 );
curl_setopt ( $ch, CURLOPT_POSTFIELDS, $data );
curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt ( $ch, CURLOPT_TIMEOUT, 5 );
$result = curl_exec ( $ch );
curl_close ( $ch );
$result = json_decode ( $result, true );
// 出錯狀态碼 999
if ($result ['error']) {
return false;
}
return $result ['trans_result'] ['data'] ['0'] ['dst'];
}
}
?>
大家可以根據自己的需求對其進行修改。
echo Translate::exec ( "大家好","zh",“en”); //這裡輸出是:Hello everyone
這樣就翻譯成功了。