2009-08-25 5 views
5

を使用して:あなたはカスタムLANGUAGES 設定を定義する場合は、Djangoのドキュメントからのgettextを使用して、適切に翻訳した名前のsettings.LANGUAGES()

、それは デフォルトのように(言語に翻訳文字列として をマークするためにOKです値は ではなくdjango.utils.translationの "ダミー" gettext()関数を使用します。 自体でその モジュールは の設定に依存するため、あなたは、あなたの設定ファイル 内から django.utils.translationをインポートすることはありません、それは 円形輸入を引き起こします。解決方法は に "ダミー" gettext()関数を使用することです。 は、ここでのサンプル設定ファイルです:これにより

gettext = lambda s: s LANGUAGES = ( ('de', gettext('German')), ('en', gettext('English')), )

django-admin.py makemessagesまだ見つけて、翻訳が 実行時に発生しません翻訳のため これらの文字列を、しかし マークします - - 実際には gettext()の言語をラップするには を覚えておいてください。 LANGUAGES実行時に

実際に言語をラップするとはどういう意味ですか?gettext()?コード内でどのように呼び出されるべきですか?あなたが実際にそれらを使用するか、またはユーザーにそれらを表示する場合、言語名に)(gettextの呼び出し::

from django.utils.translation import ugettext 

for lang_code, lang_name in settings.LANGUAGES: 
    translated_name = ugettext(lang_name) 
    ... 

を(あなたは、一般的に内のすべてのテキスト以来、かなりのgettextよりもugettext使用する必要があり、それが言うまさに

答えて

3

Djangoはユニコードである)

テンプレートの等価を行うには、単にちょうど背後ugettext呼び出し{%blocktrans%}タグを使用します。これは再ある

{% for lang in LANGUAGES %} 
    {% blocktrans %}{{ lang.1 }}{% endblocktrans %} 
{% endfor %} 
+0

この方法は、前方と理解できるかなりstrightです。しかし、この場合、ダミーのラッパーを設定に使用する点は何でしょうか.LANGUAGES?とにかくコード内のすべての行を折り返さなければならないので、チュートリアルで提案されているラッパー関数のポイントは何ですか? –

+2

ソースツリー(おそらく./manage.py makemessages経由)上でgettextコマンドラインツールを実行すると、それらの文字列を「必要な翻訳」として認識してPOファイルに追加できるようにする必要があります。 –

0

を私の翻訳がうまくいかず、読んだり読んだり、何時間もオンラインで検索したりして、この投稿を読んだ後にはこれに気づきました:

動作しないでしょう

LANGUAGES = (
    ('en', 'English'), 
    ('nl', 'Dutch'), 
    ) 

が、その後、読んだ後、これはすべての作品を作った

ugettext = lambda s: s 
LANGUAGES = (
    ('en', ugettext('English')), 
    ('nl', ugettext('Dutch')), 
    ) 

を試してみました...と私は、この検索し、それは、docの時である:

私はもともと持っていましたhttps://docs.djangoproject.com/en/1.4/topics/i18n/translation/#how-django-discovers-language-preference、ボトム側このセクションのm ...

0

テンプレートで、あなたは次の操作を行うだけでできます。

{% for lang in LANGUAGES %} 
     {% trans lang.1 %} 
{% endfor %} 
2

latest docsあなたは円形の輸入を引き起こすことなく設定でugettext_lazyを使用することができますによると:

from django.utils.translation import ugettext_lazy as _ 

LANGUAGES = [ 
    ('de', _('German')), 
    ('en', _('English')), 
] 
関連する問題