天天看點

Thinkphp3.2.3多語言翻譯以及使用百度翻譯

一、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      

這樣就翻譯成功了。