アプリケーションのローカライズNode.js。 パート1

翻訳者から:これは、 Personaプロジェクトに関係する、Mozilla IdentityチームによるNode.jsシリーズの 9番目の記事です。





画像

Mozilla製品とサービスが90言語にローカライズされていることをご存知ですか? ローカライズには以下が含まれます:


ローカライズに関する3つの記事のこのシリーズでは、多言語Node.jsを作成する技術的な側面について説明します。

一般的に受け入れられている「国際化」(i18n)と「ローカリゼーション」(l10n)という用語を使用します。 国際化は、後続のローカライズ、つまり特定の言語の実際の翻訳と適応を可能にする一連の技術です。

Mozilla Personaは、多くのロケールにローカライズされたNode.js Webサービスです。 私たちのチームには非常に具体的なリクエストがあったため、既存のライブラリをローカライズに使用しませんでした。

私たちの目標


次の目標を達成するために、いくつかのモジュールを作成しました。


作成したモジュールは次のとおりです。


i18n-abideは、アプリケーションに翻訳を含めるために使用されるメインモジュールです。 最初にそれを理解しましょう。 例では、上記のアプリケーションがExpressおよびEJSテンプレートを使用していると想定しています。

インストールと準備


npm経由のi18n-abideインストール:

npm install i18n-abide 

次の行をアプリケーションコードに含める必要があります。

 var i18n = require('i18n-abide'); app.use(i18n.abide({ supported_languages: ['en-US', 'de', 'es', 'zh-TW'], default_lang: 'en-US', translation_directory: 'static/i18n' })); 

ローカライズシリーズの3番目の記事でモジュール構成パラメーターを検討します。 i18n-abideは、翻訳に必要ないくつかの機能を提供します。 これらは、要求処理中およびテンプレートでreqオブジェクトで使用できます。

次のステップは、アプリケーションコードを調べて、ユーザーにテキストが表示されるすべての場所を見つけることです。 その後、テンプレートは次のようになります。

 <title></title> 

追加する主な機能はgettext()です。 さらに、変数langおよびlang_dirます。


文字列について話すとき、JavaScript文字列ではなくgettext文字列を意味することに注意してください。 これらはテキストの断片であり、ラベル、段落、インターフェース要素がユーザーに表示されます。 コードの一部の行がユーザーの目を意図していない場合、 gettextの観点からは存在しません。 つまり、 gettext文字列は、翻訳が必要な文字列です。

JavaScriptファイルでgettextを使用する例を次に示します。

 app.get('/', function(req, res) { res.render('homepage.ejs', { title: req.gettext('Hello, World!') }); }); 

ローカライズのためにアプリケーションを準備するには、 gettext呼び出しですべての行をラップする必要があります。

言語定義


ユーザーがどの言語を好むかをどのように知るのですか? その定義は、実行時にミドルウェアによって処理されます。

i18n-abideモジュールは、HTTP要求のAccept-languageフィールドを調べます。 ユーザーが理解できる言語を優先順にリストします。

abideは、この値をサポートされている言語のリストと比較し、最適なものを選択して、クライアントにページのローカライズバージョンを提供します。 適切な翻訳が見つからない場合、フレーズはコードおよびテンプレートのgettext呼び出しから直接置き換えられます。

おわりに


2番目の記事では、文字列がどのように抽出、処理、および翻訳されるかを正確に見ていきます。

3番目では、技術的な詳細と設定パラメーターをより詳細に扱い、ローカライズ結果をテストします。



Source: https://habr.com/ru/post/J197566/


All Articles