JavaScript と翻訳
-
03-07-2019 - |
質問
クライアント側で Javascript を広範囲に使用する PHP アプリケーションがあります。翻訳者に新しい言語を簡単に提供するためのシンプルなシステムを PHP 側に用意しています。ただし、JavaScript が言語要素 (OK ボタンやキャンセル ボタン、「読み込み中」など) をユーザーに表示する必要がある場合があります。
PHP では、サーバー側にキャッシュされたテキスト ファイルがあり、一方にはフレーズ コードが、もう一方にはその翻訳が含まれています。翻訳者は、英語を自分の言語に置き換えて、アプリケーションに統合する翻訳版を私に送信するだけで済みます。
クライアント側にも同様のものが欲しいです。変換された定数のセットである JavaScript インクルードがあることを思いつきましたが、ページをロードするたびに、潜在的に大きなファイルがダウンロードされることになりますが、そのファイルのほとんどは不要です。
これに対処しなければならなかった人はいますか?もしそうなら、あなたの解決策は何でしたか?
編集:明確にしておきますが、ここでは「その場で」翻訳について言及しているのではありません。翻訳はすでに準備されており、準備が整っています。あとは効率的な方法でクライアントに提供するだけです。
解決
phpからjavascriptをフィードする方法は?ヒービングの代わりに:
<script type='text/javascript' src='jsscript.js'></script>
する
<script type='text/javascript' src='jsscript.php'></script>
そして、phpファイルで、出力されたテキストをすべて関連する定数に置き換えます。
PHPコード内から正しいキャッシュヘッダーを出力するようにしてください。
編集
これらは私が使用するヘッダーです:
header('Content-type: text/javascript');
header('Cache-Control: public');
header('expires: '. date("r", time() + ( 7 * 24 * 60 * 60 ) ) ); // 1 week
header("Pragma: public");
他のヒント
通常、適切な言語の値をJavaScriptオブジェクトとして別のファイルにロードします。このファイルは残りのコードで参照できます。
var messages = {
"loading": "Chargement"
}
alert(messages.loading);
言語ライブラリは、最初のロード後にクライアント側でキャッシュされます。コンテキストに基づいてロードされる個別のファイルに値を分割することにより、ロード効率を改善できます。パブリックオペレーション用の小さなライブラリ、ログイン用の追加ライブラリなど。
あなたが探しているものは次のようです アヤックス (クライアントとサーバーは Javascript を使用して非同期リクエストを交換します)。
既製のものをお探しの場合は、こちらをご覧ください。 Google 翻訳 AJAX API.
個人的にこれを行う必要はありませんでしたが、最初の推測はサードパーティのライブラリを参照することです。 Google AJAX APIにはこれを行うためのツールだけが備わっている可能性があり、ライブラリはGoogleを介しているため、JavaScriptファイルはサイトからダウンロードされません。
次のサイトを少し掘り下げてみてください: http://code.google。 com / apis / ajaxlanguage / documentation /
それがあなたの役に立つかどうか教えてください。私が管理しているウェブサイトに似たようなものを実装することに興味があるかもしれません。
幸運、 C
Pim Jagerの答えが好きで、それを自分でやった。 PHPにJavaScriptを生成させたくない場合(パフォーマンス上の理由など)、JavaScriptライブラリのマスターコピーを作成し、変更されたときに翻訳プログラムを実行して各ライブラリのバージョンを生成できます。言語ごとに。次に、PHPに、現在のユーザーに適切なバージョンを、送信するスクリプトタグに入れさせます。
私は、さまざまな顧客のために重いローカリゼーションと重いブランディングの両方を必要とするシステムに取り組みました。私たちがやったことは、 [ 3027 ] (またはそのようなもの)のようなユニークなマクロを持つ画面に送られたものです。その後、各マクロコードのエントリと、各マクロの代わりに使用するテキストを含む多数のロケールとブランドファイルがありました。プログラムは、すべてのソースファイルとすべての言語をループし、置換を行います。
金額、日付、時刻など、ローカライズのためのいくつかの関数も必要であることがわかりました。すべてうまくいきました。
もう1つ重要なものが必要であることがわかりました。すべての言語ファイルを調べて、必要なコードがすべて揃っていることを確認するツールです。大幅な時間の節約。