9

私はDjangoを初めて使用し、i18nを使用したプロジェクトに取り組んでい .manage.py makemessages / compilemessages ます。テンプレートファイルを使用していくつかの変数を翻訳しましたが、使用するとすべての言語で {% trans "my string" %} 同じ結果になりました。"my string"

私は何を間違っていますか?views.pyidioma.htmlのコードは次のとおりです。


ビュー.py:

#ここにいくつかのコード...

def idioma(request):
    output = _("Mensaje en espanol")
    return render_to_response( 'idioma/idioma.html', { 'idioma' : output }, context_instance = RequestContext(request) )


idioma.html

{% load i18n %}

< form action="/i18n/setlang/" method="post">

        {% csrf_token %}

        < input name="next" type="hidden" value="{{ redirect_to }}" />

        < select name="language" >

        {% get_language_info_list for LANGUAGES as languages %}

        {% for language in languages %}

            < option value="{{ language.code }}">
                {{ language.name_local }} ({{ language.code }})
            < /option>
        {% endfor %}

        </select>

        < input type="submit" value="Go" />

    < /form>

    La cadena es: {% trans idioma  %}

    {% trans "carro" %}


アプリケーションは、locale/path/to/language/ の .po および .mo ファイルから idioma 変数を変換します。

ただし、{% trans "carro" %} 文字列は翻訳されません。

どうしたの?

ご協力いただきありがとうございます!!!!

4

5 に答える 5

19

.po の文字列を手動で翻訳しましたか?

makemessages「carro」を.poに追加するだけで、.poファイルに次のようなものが生成されます

#: idioma.html:45
msgid "carro"
msgstr ""

次に、.poを手動で編集して、その文字列の翻訳を次のように追加する必要があります。

#: idioma.html:45
msgid "carro"
msgstr "car"

次に、すべての .po 文字列の翻訳が完了したら、次のコマンドを実行compilemessagesします。翻訳がコンパイルされます。

注:,fuzzy常に翻訳を探すことを忘れないでください。.po にこのようなものがあれば

#: idioma.html:45
#, fuzzy
msgid "carro"
msgstr "car"

これは、何らかの理由で、django が文字列を単独で翻訳しようとしたことを意味します(通常は、もう使用していないコードでその文字列を既に使用している場合に発生します)

翻訳を確認して、次の行を削除する必要があります。 で#, fuzzyタグ付け#, fuzzyされた翻訳はページで翻訳されません。

于 2012-08-31T22:51:52.803 に答える
13

同様の問題に遭遇しLOCALE_PATHS、設定ファイルで設定することで解決できました。LOCALE_PATHSdjango が .mo および .po ファイルを探すディレクトリ パスのタプルです。次に例を示します。

# settings.py
LOCALE_PATHS = (
    '/path/to/your/project/locale',
)

詳細については、 django の公式ドキュメントをLOCALE_PATHS参照してください。

于 2013-06-05T18:39:00.933 に答える
1

場合によって{% trans "your string " %}は動作しません。

blocktrans文字列には trans の代わりに使用することをお勧めします。

ブロックトランスの使い方:

{% blocktrans %} your string {% endblocktrans %}
于 2012-08-24T06:12:01.077 に答える