Heim  >  Artikel  >  PHP-Framework  >  Die Verwendung und Optimierung der Thinkphp-Übersetzungsschnittstelle

Die Verwendung und Optimierung der Thinkphp-Übersetzungsschnittstelle

咔咔
咔咔Original
2020-08-19 16:53:442687Durchsuche

Dieser Artikel bietet Ihnen eine kostenlose Übersetzungsoberfläche. Sie können ihn ausprobieren, wenn Sie Zeit haben.

Vorwort

Das Projekt ist erforderlich. Diejenigen, die Sprachpakete schreiben, sind wie Daten, die sich seit Hunderten von Jahren nicht geändert haben, aber es gibt eine Art von Daten, die sich während der Ausführung des Projekts ständig ändern.

Es ist für uns offensichtlich unangemessen, solche Daten als Sprachpaket zu schreiben, daher müssen wir die Übersetzungsschnittstelle verwenden, um unsere Anforderungen zu erfüllen.

1. Eine kurze Einführung in die Übersetzungsoberfläche

Schauen wir uns zuerst ein Bild an! Werfen wir einen Blick darauf, wie diese Übersetzungsschnittstelle in unserem Projekt verwendet wird.

Die Verwendung und Optimierung der Thinkphp-Übersetzungsschnittstelle
Hier Bildbeschreibung einfügen

Diese Schnittstelle hat insgesamt 4 Parameter, nämlich a, f, t, w.

Die Bedeutung dieser vier Parameter besteht darin, dass a ein fester Wert ist, nämlich fy.

f bezieht sich auf die Sprache der Übersetzung.

t bedeutet, dass es in die Sprache übersetzt werden muss, die wir brauchen.

w bezieht sich auf die Daten, die übersetzt werden müssen.

2. Projekt tatsächlicher Kampf

Die Projektanforderung besteht darin, die Sprachänderung nach dem Umschalten der Sprache im Feld links zu verfolgen. Lassen Sie mich zunächst erklären, dass der obige Text nicht manuell geschrieben wurde und die HTML-Datei nicht existiert. Es wird in der Datenbankanmerkung konfiguriert.

Das Bild unten zeigt unsere Datenbankerstellung. Warum es auf diese Weise erstellt wird und welche Vorteile es hat, es auf diese Weise zu erstellen, werde ich nicht erwähnen. Jedes Team hat seine eigenen Ideen!

Dann kommen wir zum Hauptthema

Die Schnittstellenadresse ist die Adresse im Postman oben. Wir müssen nur noch ein Datenelement übermitteln, das übersetzt werden muss.

Die in diesem Artikel implementierten Daten sind der Text auf der linken Seite des Bildes oben. Das heißt, wir lesen die Kommentare aus der Datenbank und verwenden den Namen dann direkt als Spalte, wenn wir bestimmte Regeln hinzufügen oder ändern.

Dann müssen Sie diesen Kommentar nur noch direkt an der Rückseite der Übersetzungsoberfläche anhängen. Stellen Sie Ihnen einen Code für PHP zur Verfügung, um eine Curl-Anfrage zu initiieren

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

Sehen Sie sich nach dem Testen den Effekt an. Der Effekt ist erzielt, aber Sie können es privat ausprobieren! Bei der Übersetzung einer Gruppe von Daten ist die Geschwindigkeit in Ordnung, bei der Übersetzung mehrerer Daten jedoch etwas langsam.

Das Öffnen der hinzugefügten Seite dauert etwa 3-5 Sekunden, was definitiv nicht möglich ist, daher müssen wir uns eine Möglichkeit überlegen, dieses Problem zu lösen. Die Verwendung und Optimierung der Thinkphp-Übersetzungsschnittstelle

3. Übersetzungsgeschwindigkeit optimieren

Im zweiten Schritt stellte Kaka schließlich fest, dass die Übersetzungsgeschwindigkeit etwas langsam war, und bei vielen Feldern war sie noch lächerlich langsamer. Also überlegte sich Kaka einen Weg.

Diese Daten wurden zuvor einzeln übersetzt. Können wir sie also alle auf einmal übersetzen und die Daten dann selbst zusammenstellen? Die Verwendung und Optimierung der Thinkphp-Übersetzungsschnittstelle

Mit dieser Idee im Hinterkopf begannen wir mit der Umsetzung.

Was diese Codezeilen letztendlich erreichen, ist, alle Feldanmerkungen zusammenzufügen und durch „“ zu trennen. Das Ausgabefeld ist tatsächlich nicht die übersetzte Daten Ich muss darüber nachdenken, alles auf einmal zu übersetzen. Auf jeden Fall geht es schneller als sechs Übersetzungen. Die Verwendung und Optimierung der Thinkphp-Übersetzungsschnittstelle

Dann nehmen Sie diesen Datensatz, konvertieren ihn in ein Array und setzen ihn wieder zu den Originaldaten zusammen.

Hier gibt es eine kleine Frage, ihr könnt ihr gemeinsam Aufmerksamkeit schenken. Was auf Chinesisch gedruckt wird, sind die Originaldaten, und was auf Englisch gedruckt wird, sind die verarbeiteten Daten. Die Verwendung und Optimierung der Thinkphp-Übersetzungsschnittstelle

Es ist offensichtlich, dass die zurückgegebenen englischen Ergebnisse nicht mit den Originaldaten übereinstimmen.

Die Verarbeitung ist auch hier relativ einfach. Sehen Sie sich diese bitte im Kommentarbereich an. Die Verwendung und Optimierung der Thinkphp-Übersetzungsschnittstelle

Die Verarbeitungsmethode besteht darin, den entsprechenden Index in $needkey zu speichern, bevor Sie die chinesischen Kommentare des Datenbankfelds abrufen Definieren Sie dann eine Variable fanal neu, damit der Index von fanal gleich v von needkey ist und der entsprechende Wert result[k of needkey] ist Eine Übersetzungsoberfläche ist fertiggestellt und die Projekt-Screenshots werden Ihnen nicht angezeigt, ha!

Verwandeln Sie mehrere Übersetzungen in eine Übersetzung, um die Übersetzungsgeschwindigkeit zu verbessern. Schließlich wird etwas von anderen angefordert, und es ist definitiv nicht so schnell wie die Neuorganisation der Daten selbst.

Beharrlichkeit beim Lernen, Beharrlichkeit beim Bloggen und Beharrlichkeit beim Teilen sind die Überzeugungen, die Kaka seit seiner Karriere immer vertreten hat. Ich hoffe, dass Kakas Artikel auf Nuoda Internet Ihnen ein wenig helfen können.

Das obige ist der detaillierte Inhalt vonDie Verwendung und Optimierung der Thinkphp-Übersetzungsschnittstelle. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn