本文給大家提供一個免費的翻譯接口,有空時可以試試還是很秀的哈! 項目中必要的數(shù)據(jù)是需要寫語言包的,就像那種幾百年不變的數(shù)據(jù),但是有一類數(shù)據(jù)就是在項目的運(yùn)行的過程中就在一直變化。 對于這樣的數(shù)據(jù)我們寫成語言包顯然是不合適的,所以我們就需要借助翻譯接口來實現(xiàn)我們的需求了。 先看一張圖吧!看一下這個翻譯接口在我們的項目中如何運(yùn)用。 這個接口總共有4個參數(shù),分別為a、f、t、w。 這四個參數(shù)分別的意思為,a是固定的值就是fy。 f指的是翻譯的語種。 t指的是需要翻譯成我們需要的語種。 w指的是需要翻譯的數(shù)據(jù)。 項目需求就是把左邊的框出來的在切換語言后跟隨這語言變動。首先說明一下,在上邊的這些文字不是手動寫上去的,html文件也是不存在的。是在數(shù)據(jù)庫注釋里邊配置的。 下圖就是我們的數(shù)據(jù)庫創(chuàng)建。為什么這么創(chuàng)建,這樣創(chuàng)建有什么好處,我就不提了,每個團(tuán)隊都有自己的想法哈! 接著我們來到正題 使用的代碼也就這點,接口地址就是上邊postman里邊的地址,后邊只需要傳輸一個需要翻譯的數(shù)據(jù)即可。 本文實現(xiàn)的數(shù)據(jù)就是上圖左側(cè)的文字,也就是我們從數(shù)據(jù)庫中把注釋讀出來然后根據(jù)一定的規(guī)則把這個名字就直接作為添加或者修改時的列即可。 那么就只需要把這個注釋直接給追加到翻譯接口后邊即可。給你提供一個php發(fā)起curl請求的代碼 經(jīng)過測試后看看效果,效果是實現(xiàn)了,但是你們可以私下試試哈!翻譯一組數(shù)據(jù)時速度還行,但是翻譯幾個數(shù)據(jù)時就有點慢了。 添加頁面打開的時間大概需要3-5S,這肯定是不可以的,所以我們需要想一個辦法來解決這個問題。 在第二步中,咔咔做到最后是發(fā)現(xiàn)翻譯的速度是有點慢的,碰到字段多的更是慢的離譜。于是咔咔就想了一個辦法。 這些數(shù)據(jù)是之前是一個一個翻譯出來的,那么我們是不是也可以一次性給翻譯出來,然后我們在來自己組裝數(shù)據(jù)。 帶著這個想法我們開始實施。 這幾行代碼最終實現(xiàn)的就是把所有的字段注釋放在一起,并且用“,”隔開打印出來的數(shù)據(jù)可以看一下,out字段就是翻譯出來的數(shù)據(jù),其實想都不用想一次翻譯肯定比6次翻譯速度快。 然后拿著這組數(shù)據(jù)在轉(zhuǎn)化成數(shù)組在重新組裝到原數(shù)據(jù)里就ok了。這里有個小問題,可以一起關(guān)注一下。中文打印出來的是原始數(shù)據(jù)里邊的,英文是數(shù)據(jù)經(jīng)過處理的。 很明顯可以看到返回的英文結(jié)果跟原始數(shù)據(jù)對不上。這里的處理也是比較簡單,如果你有更好的方案評論區(qū)見 處理方式在獲取數(shù)據(jù)庫字段中文注釋之前把對應(yīng)的索引保存到$needkey 然后重新定義一個變量fanal,讓fanal的索引等于needkey的v,而對應(yīng)的值就是result[needkey的k] 這樣一個翻譯接口的使用就完成了,項目截圖就不給大家展示了哈! 把多次翻譯改為一次翻譯,提升翻譯速度,畢竟是請求別人的東西,肯定沒有我們自己重組數(shù)據(jù)快。 堅持學(xué)習(xí)、堅持寫博、堅持分享是咔咔從業(yè)以來一直所秉持的信念。希望在諾大互聯(lián)網(wǎng)中咔咔的文章能帶給你一絲絲幫助。?
前言public function translateRequest($url, $data=array()){
$ch = curl_init();//初始化
//curl_setopt();//設(shè)置
//設(shè)置
curl_setopt($ch,CURLOPT_URL,$url); //需要獲取的 URL 地址
curl_setopt($ch,CURLOPT_HEADER,0); //啟用時會將頭文件的信息作為數(shù)據(jù)流輸出, 此處禁止輸出頭信息
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); //獲取的信息以字符串返回,而不是直接輸出
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,30); //連接超時時間
curl_setopt($ch, CURLOPT_ENCODING, 'gzip');
//避免https 的ssl驗證
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_SSLVERSION, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
if($data){
curl_setopt($ch, CURLOPT_POST, 1); //post請求
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);//post參數(shù)
}
//執(zhí)行
$data = curl_exec($ch);//執(zhí)行 不輸出 內(nèi)容返回給它
//判斷是否請求成功
if(curl_errno($ch)){//錯誤碼
echo 'curl error: '.curl_error($ch);//錯誤信息
}
$response = curl_getinfo($ch);
switch($response['http_code']){
case 200:
return $data;
break;
default:
exit('程序異常');
}
curl_close($ch);//關(guān)閉
}?
當(dāng)前題目:翻譯接口的使用及其優(yōu)化
URL地址:http://weahome.cn/article/cgpjpj.html