12

BABELを使用して Google App Engine webapp アプリケーションを国際化するにはどうすればよいでしょうか? 私はここですべての段階を探しています:

  1. 翻訳する文字列をマークします。
  2. それらを抽出します。
  3. 翻訳中
  4. ブラウザーが要求する適切な言語を読み込むようにアプリを構成する
4

1 に答える 1

11

1) コードとテンプレートで _() (または gettext()) を使用します。モジュールのグローバルまたはクラス定義に設定された翻訳された文字列は、何らかの形式の遅延 gettext() を使用する必要があります。これは、モジュールがインポートされたときに i18n が使用できないためです。

2) pybabel を使用してすべての翻訳を抽出します。ここでは、スキャンする 2 つのディレクトリを渡します: templates dir と app dir。これにより、/locale ディレクトリにこれらのディレクトリにあるすべての文字列を含む messages.pot ファイルが作成されます。babel.cfg は、使用するテンプレート エンジンによって異なる抽出構成です。

$ pybabel extract -F ./babel.cfg -o ./locale/messages.pot ./templates/ ./app/

3) 各言語のディレクトリを初期化します。これは一度だけ行われます。ここでは、en_US、es_ES、および pt_BR の 3 つの翻訳を初期化し、ステップ 2 で作成した messages.pot ファイルを使用します。

$ pybabel init -l en_US -d ./locale -i ./locale/messages.pot 
$ pybabel init -l es_ES -d ./locale -i ./locale/messages.pot 
$ pybabel init -l pt_BR -d ./locale -i ./locale/messages.pot

メッセージを翻訳します。それらは、各翻訳ディレクトリの .mo ファイルになります。すべてのロケールが翻訳されたら、コンパイルします。

$ pybabel compile -f -d ./locale

後で新しい翻訳が追加された場合は、ステップ 2 を繰り返し、新しい .pot ファイルを使用してそれらを更新します。

$ pybabel update -l pt_BR -d ./locale/ -i ./locale/messages.pot

次に、新しい文字列を翻訳し、翻訳を再度コンパイルします。

4) ここでの戦略は異なる場合があります。リクエストごとに、使用する正しい翻訳を設定する必要があります。おそらく、ロードされた翻訳をキャッシュして、後続のリクエストで再利用する必要があります。

于 2010-09-30T06:25:17.333 に答える