搜尋
首頁php框架ThinkPHPThinkphp翻譯介面的使用及其最佳化

本文提供大家一個免費的翻譯接口,有空時可以試試還是很秀的哈!

前言

專案中必要的資料是需要寫語言包的,就像那種幾百年不變的數據,但是有一類數據就是在專案的運作的過程中就一直在變化。

對於這樣的資料我們寫成語言包顯然是不合適的,所以我們就需要藉助翻譯介面來實現我們的需求了。

一、翻譯介面簡單介紹

#先看一張圖吧!看一下這個翻譯介面在我們的專案中如何運用。

Thinkphp翻譯介面的使用及其最佳化
在這裡插入圖片描述

這個介面總共有4個參數,分別為a、f、t、w。

這四個參數分別的意思為,a是固定的值就是fy。

f指的是翻譯的語種。

t指的是需要翻譯成我們需要的語種。

w指的是需要翻譯的資料。

二、專案實戰

#專案需求就是把左邊的框出來的在切換語言後跟隨這語言變動。 先說明一下,在上邊的這些文字不是手動寫上去的,html檔案也是不存在的。是在資料庫註解裡邊配置的。

下圖就是我們的資料庫建立。 為什麼這麼創建,這樣創建有什麼好處,我就不提了,每個團隊都有自己的想法哈!

接著我們來到正題

使用的程式碼也就這點,介面位址就是上邊postman裡邊的位址,後邊只需要傳送一個需要翻譯的資料即可。

本文實現的資料就是上圖左側的文字,也就是我們從資料庫中把註解讀出來然後根據一定的規則把這個名字就直接作為添加或修改時的列即可。

那麼就只需要把這個註解直接給追加到翻譯介面後邊即可。 提供一個php發起curl請求的程式碼

<span style="display: block; background: url(https://my-wechat.mdnice.com/point.png); height: 30px; width: 100%; background-size: 40px; background-repeat: no-repeat; background-color: #272822; margin-bottom: -7px; border-radius: 5px; background-position: 10px 10px;"></span><code class="hljs" style="overflow-x: auto; padding: 16px; color: #ddd; display: -webkit-box; font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; font-size: 12px; -webkit-overflow-scrolling: touch; letter-spacing: 0px; padding-top: 15px; background: #272822; border-radius: 5px;"><span class="hljs-keyword" style="color: #f92672; font-weight: bold; line-height: 26px;">public</span> <span class="hljs-function" style="line-height: 26px;"><span class="hljs-keyword" style="color: #f92672; font-weight: bold; line-height: 26px;">function</span> <span class="hljs-title" style="color: #a6e22e; font-weight: bold; line-height: 26px;">translateRequest</span><span class="hljs-params" style="line-height: 26px;">($url, $data=array<span class="hljs-params" style="line-height: 26px;">()</span>)</span></span>{<br/><br/>        $ch = curl_init();<span class="hljs-comment" style="color: #75715e; line-height: 26px;">//初始化</span><br/>        <span class="hljs-comment" style="color: #75715e; line-height: 26px;">//curl_setopt();//设置</span><br/>        <span class="hljs-comment" style="color: #75715e; line-height: 26px;">//设置</span><br/>        curl_setopt($ch,CURLOPT_URL,$url);   <span class="hljs-comment" style="color: #75715e; line-height: 26px;">//需要获取的 URL 地址</span><br/>        curl_setopt($ch,CURLOPT_HEADER,<span class="hljs-number" style="line-height: 26px;">0</span>);          <span class="hljs-comment" style="color: #75715e; line-height: 26px;">//启用时会将头文件的信息作为数据流输出, 此处禁止输出头信息</span><br/>        curl_setopt($ch,CURLOPT_RETURNTRANSFER,<span class="hljs-number" style="line-height: 26px;">1</span>);  <span class="hljs-comment" style="color: #75715e; line-height: 26px;">//获取的信息以字符串返回,而不是直接输出</span><br/>        curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,<span class="hljs-number" style="line-height: 26px;">30</span>); <span class="hljs-comment" style="color: #75715e; line-height: 26px;">//连接超时时间</span><br/>        curl_setopt($ch, CURLOPT_ENCODING, <span class="hljs-string" style="color: #a6e22e; line-height: 26px;">&#39;gzip&#39;</span>);<br/><br/>        <span class="hljs-comment" style="color: #75715e; line-height: 26px;">//避免https 的ssl验证</span><br/>        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, <span class="hljs-keyword" style="color: #f92672; font-weight: bold; line-height: 26px;">false</span>);<br/>        curl_setopt($ch, CURLOPT_SSLVERSION, <span class="hljs-keyword" style="color: #f92672; font-weight: bold; line-height: 26px;">false</span>);<br/>        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, <span class="hljs-keyword" style="color: #f92672; font-weight: bold; line-height: 26px;">false</span>);<br/><br/>        <span class="hljs-keyword" style="color: #f92672; font-weight: bold; line-height: 26px;">if</span>($data){<br/>            curl_setopt($ch, CURLOPT_POST, <span class="hljs-number" style="line-height: 26px;">1</span>);          <span class="hljs-comment" style="color: #75715e; line-height: 26px;">//post请求</span><br/>            curl_setopt($ch, CURLOPT_POSTFIELDS, $data);<span class="hljs-comment" style="color: #75715e; line-height: 26px;">//post参数</span><br/>        }<br/><br/>        <span class="hljs-comment" style="color: #75715e; line-height: 26px;">//执行</span><br/>        $data = curl_exec($ch);<span class="hljs-comment" style="color: #75715e; line-height: 26px;">//执行   不输出  内容返回给它</span><br/>        <span class="hljs-comment" style="color: #75715e; line-height: 26px;">//判断是否请求成功</span><br/><br/>        <span class="hljs-keyword" style="color: #f92672; font-weight: bold; line-height: 26px;">if</span>(curl_errno($ch)){<span class="hljs-comment" style="color: #75715e; line-height: 26px;">//错误码</span><br/>            <span class="hljs-keyword" style="color: #f92672; font-weight: bold; line-height: 26px;">echo</span> <span class="hljs-string" style="color: #a6e22e; line-height: 26px;">&#39;curl error: &#39;</span>.curl_error($ch);<span class="hljs-comment" style="color: #75715e; line-height: 26px;">//错误信息</span><br/>        }<br/><br/>        $response = curl_getinfo($ch);<br/><br/>        <span class="hljs-keyword" style="color: #f92672; font-weight: bold; line-height: 26px;">switch</span>($response[<span class="hljs-string" style="color: #a6e22e; line-height: 26px;">&#39;http_code&#39;</span>]){<br/>            <span class="hljs-keyword" style="color: #f92672; font-weight: bold; line-height: 26px;">case</span> <span class="hljs-number" style="line-height: 26px;">200</span>:<br/>                <span class="hljs-keyword" style="color: #f92672; font-weight: bold; line-height: 26px;">return</span> $data;<br/>                <span class="hljs-keyword" style="color: #f92672; font-weight: bold; line-height: 26px;">break</span>;<br/>            <span class="hljs-keyword" style="color: #f92672; font-weight: bold; line-height: 26px;">default</span>:<br/>                <span class="hljs-keyword" style="color: #f92672; font-weight: bold; line-height: 26px;">exit</span>(<span class="hljs-string" style="color: #a6e22e; line-height: 26px;">&#39;程序异常&#39;</span>);<br/>        }<br/><br/>        curl_close($ch);<span class="hljs-comment" style="color: #75715e; line-height: 26px;">//关闭</span><br/>    }<br/></code>

經過測試後看看效果,效果是實現了,但是你們可以私下試試哈!翻譯一組資料時速度還行,但是翻譯幾個資料時就有點慢了。

新增頁面開啟的時間大概需要3-5S,這肯定是不行的,所以我們需要想一個辦法來解決這個問題。 Thinkphp翻譯介面的使用及其最佳化

三、最佳化翻譯速度

#在第二步中,咔喀做到最後是發現翻譯的速度是有點慢的,碰到字段多的更是慢的離譜。於是咔咔就想了一個辦法。

這些資料是之前是一個一個翻譯出來的,那我們是不是也可以一次給翻譯出來,然後我們在來自己組裝資料。 Thinkphp翻譯介面的使用及其最佳化

帶著這個想法我們開始實作。

這幾行程式碼最終實現的就是把所有的字段註解放在一起,並且用“,”隔開Thinkphp翻譯介面的使用及其最佳化打印出來的數據可以看一下,out字段就是翻譯出來的數據,其實想都不用想一次翻譯肯定比6次翻譯速度快。

然後拿著這組資料在轉換成數組在重新組裝到原始資料裡就ok了。 Thinkphp翻譯介面的使用及其最佳化這裡有個小問題,可以一起關註一下。中文印出來的是原始資料裡邊的,英文是資料經過處理的。

很明顯可以看到回傳的英文結果跟原始資料對不上。 Thinkphp翻譯介面的使用及其最佳化這裡的處理也是比較簡單,如果你有更好的方案評論區見

處理方式在取得資料庫欄位中文註解之前把對應的索引儲存到$needkey

然後重新定義一個變數fanal,讓fanal的索引等於needkey的v,而對應的值就是result[needkey的k]

四、總結

這樣一個翻譯介面的使用就完成了,專案截圖就不給大家展示了哈!

把多次翻譯改為一次翻譯,提升翻譯速度,畢竟是請求別人的東西,肯定沒有我們自己重組資料快。

堅持學習、堅持寫博、堅持分享是咔咔從業以來一直所秉持的信念。希望在諾大互聯網中咔咔的文章能帶給你一絲絲幫助。

#

以上是Thinkphp翻譯介面的使用及其最佳化的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
ThinkPHP內置測試框架的關鍵功能是什麼?ThinkPHP內置測試框架的關鍵功能是什麼?Mar 18, 2025 pm 05:01 PM

本文討論了ThinkPHP的內置測試框架,突出了其關鍵功能(例如單元和集成測試),以及它如何通過早期的錯誤檢測和改進的代碼質量來增強應用程序可靠性。

如何使用ThinkPHP來構建實時股票市場數據源?如何使用ThinkPHP來構建實時股票市場數據源?Mar 18, 2025 pm 04:57 PM

文章討論了使用ThinkPHP進行實時股票市場數據提要,重點是設置,數據準確性,優化和安全措施。

在無服務器體系結構中使用ThinkPHP的關鍵注意事項是什麼?在無服務器體系結構中使用ThinkPHP的關鍵注意事項是什麼?Mar 18, 2025 pm 04:54 PM

本文討論了在無服務器體系結構中使用ThinkPHP的關鍵注意事項,專注於性能優化,無狀態設計和安全性。它突出了諸如成本效率和可擴展性之類的收益,但也應對挑戰

如何在ThinkPHP微服務中實現服務發現和負載平衡?如何在ThinkPHP微服務中實現服務發現和負載平衡?Mar 18, 2025 pm 04:51 PM

本文討論了在ThinkPHP微服務中實施服務發現和負載平衡,重點是設置,最佳實踐,集成方法和推薦工具。[159個字符]

ThinkPHP依賴性注入容器的高級功能是什麼?ThinkPHP依賴性注入容器的高級功能是什麼?Mar 18, 2025 pm 04:50 PM

ThinkPHP的IOC容器提供了高級功能,例如懶惰加載,上下文綁定和方法注入PHP App中有效依賴性管理的方法。Character計數:159

如何使用ThinkPHP來構建實時協作工具?如何使用ThinkPHP來構建實時協作工具?Mar 18, 2025 pm 04:49 PM

本文討論了使用ThinkPHP來構建實時協作工具,重點關注設置,Websocket集成和安全性最佳實踐。

使用ThinkPHP來構建SaaS應用程序的主要好處是什麼?使用ThinkPHP來構建SaaS應用程序的主要好處是什麼?Mar 18, 2025 pm 04:46 PM

ThinkPHP具有輕巧的設計,MVC架構和可擴展性。它通過各種功能提高可擴展性,加快開發並提高安全性。

如何使用ThinkPHP和RabbitMQ構建分佈式任務隊列系統?如何使用ThinkPHP和RabbitMQ構建分佈式任務隊列系統?Mar 18, 2025 pm 04:45 PM

本文概述了使用ThinkPhp和RabbitMQ構建分佈式任務隊列系統,重點是安裝,配置,任務管理和可擴展性。關鍵問題包括確保高可用性,避免常見的陷阱,例如不當

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能