2

作業中の小さなテストプロジェクトにi18n機能を追加しようとしています。webapp2_extrasi18nライブラリを使用しています。babelコマンドラインを使用して作成されたコンパイル済みの翻訳.moファイルを含むロケールフォルダーがあります。アプリ自体は、1つの単純なdjangoテンプレートと1つのハンドラーを持つmain.pyです。メインでgettextメソッドを使用している場合、翻訳されたテキストは取得されますが、{%trans%}タグでラップされたテンプレート内の文字列は翻訳されません。ハンドラーは次のとおりです。

class MainHandler(webapp2.RequestHandler):
def get(self):

    locale = self.request.GET.get('locale', 'en_US')
    i18n.get_i18n().set_locale(locale)

    message = i18n.gettext('Hello, world!')

    self.response.out.write(template.render("templates/index.html"))

「メッセージ」では文字列は変換されますが、テンプレート内では{%trans%}でラップされた同じ文字列は変換されません。

ありがとう、

4

1 に答える 1

1

djangoのi18nトランスタグをGoogleAppEngineで有効にするカスタムリクエストハンドラーを使用することができます。しかし、ここで述べられているようにjinja2を使用する方がはるかに優れており、解決策は公式です。webapp2_extrasからjinja2をインポートする必要があります。そうすると、i18nが機能し、jinja2の翻訳タグはとのように{% trans %}なり{ % endtrans %}ます。

djangoを使用する必要がある場合は、djangoテンプレートを使用する必要がある場合に使用できるカスタムリクエストハンドラーを示す古いブログ投稿へのリンクがあります:http://blog.yjl.im/2009/02/using-django-i18n -in-google-app-engine.html

ただし、jinja2の使用をお勧めします。試しましたか?

于 2012-04-17T06:29:11.473 に答える