2011-06-30 3 views
0

私は標準的なローカライズプロジェクトを設定しました。私はsettings.pyにいくつかの言語を定義しています。私はLocaleMiddlewareを使用しています。テンプレートファイルに{%blocktrans%}の文字列があり、これが私のdjango.poファイルに格納されています。 django-admin.py compilemessagesを実行し、.moファイルが作成されていることを確認しました。Djangoのローカライズされたテンプレート文字列が失敗するのはなぜですか?

  • .poには「曖昧な」エントリはありません。私はsettings.py
  • LANGUAGE_CODELANGUAGESを設定している ENABLE_I18N = TrueUSE_L10N = True
  • を有する私は[開発]サーバ
  • を再起動した{% get_current_language as LANGUAGE_CODE %}{{LANGUAGE_CODE}}(この場合、zh-cn)正しい言語を与えるテンプレートに

ビューをレンダリングするとき、ビューを使用するビューコード(request.session.get('django_language', settings.LANGUAGE_CODE))が正しいコードを取得するため、正しいロケールが選択されていることがわかりました。しかし、テンプレート内の文字列の翻訳は表示されません。

これを解決するにはどうすればよいですか?

答えて

1

私は、同時に明白で明白ではなかった何かを見逃していました。職場には2つの異なる基準があります。

LANGUAGES = (
    ('en', "English"), 
    ('zh-CN', "中文") 
) 

をしかし、私のロケールディレクトリはlocale/zh_CNです:今、私はそれを固定している、私の設定ファイルがあります。私は愚かにも、Djangoのローカリゼーションで同じロケール標準が使用されると想定していました。私は間違っていた。

さらに読書:ハイフンのタイプが使用されている

ファイル:アンダースコアが使用されているhttps://code.djangoproject.com/browser/django/trunk/django/conf/global_settings.py

ドキュメント。このページの末尾の最後の段落:https://docs.djangoproject.com/en/dev/topics/i18n/deployment/

0

これは嫌いですが、USE_I18N = Truesettings.pyに設定しましたか?

また、あなたはそれがすべてのことを考えると{% blocktrans %}

+0

ありがとうございますが、悲しいことに、入力に間違いがあります。 – Joe

0

する必要があり、一方、残りの唯一のものは、1)実際の変換コードが)何らかの理由で(すべてで呼び出されていないが、あなたの質問に{%blocktranslate%}を書きましたか、 2)仕事が終わる前に救済されている。

printさんが何かの勇気を込めているので、私はDjangoの個人用コピーを保管しています(システムコピーではない)。 printdjango/templatetags/i18n.pyに入れて、実際に正しい場所に到着しているかどうか確認してください。

+0

ありがとう、私はそれを行ってあげるよ。 – Joe

+0

そのコードは本当に難しいです。そこにpdbをぶつけたのは悲しいことにはあまり役に立たなかった。 – Joe

+0

@Joe:Django 1.3.0でそのファイルのソースを見ると、 'BlockTranslateNode'クラスは98行目に' .render() 'メソッドを持っています.2つの呼び出し、' translation.ungettext() 'at line 110と 'translation.ugettext()'は113で始まり、それが私が調査を開始する場所です。まったくそこに着くことができない場合、またはパラメータが間違っている場合、問題はそこから上流(実行中の早い段階)です。そうでなければ下流です。がんばろう。 –

関連する問題