26

多言語の Django Web サイトを作成しています。メッセージファイルを作成し、データを入力してコンパイルしました。私は希望する言語 (ヘブライ語) でサイト (この場合は管理者) をチェックしましたが、ほとんどのフレーズはヘブライ語で表示されますが、表示されないものもあります。私はソースをチェックしましたが、これらはまだ_('Whatever')本来のように表示され、メッセージファイルで翻訳されていますcompilemessages.

翻訳がそのように表示されない一般的な原因は何ですか?

4

9 に答える 9

36

翻訳された文字列はfuzzy?としてマークされている可能性があります。

于 2010-03-04T18:23:50.830 に答える
21

たった一発で殴られた。locale/プロジェクトのルートにディレクトリがありましたが、デフォルトでは、DjangoディレクトリINSTALLED_APPSとデフォルトの翻訳で翻訳を探します。そのため、追加した翻訳が見つかりませんでした。しかし、私の文字列の一部は Django に付属するデフォルトの翻訳 (「検索」など) に含まれていたため、いくつかの文字列が翻訳され、混乱しました。

私の翻訳があったディレクトリを Django が翻訳を探す場所のリストに追加するには、LOCALE_PATHS 設定を設定する必要がありました。したがって、私の場合、locale/ディレクトリとsettings.py両方が django プロジェクトのルートにある場合、次を に配置できますsettings.py

from os import path
LOCALE_PATHS = (
    path.join(path.abspath(path.dirname(__file__)), 'locale'),
)
于 2013-11-08T17:56:18.237 に答える
9

私は今、私のプロジェクトでこの問題を抱えていました。settings.py の変数 LANGUAGES を次のように設定しました。

LANGUAGES = (
('en', _('English')),
('pt-br', _('Brazilian Portuguese')),
)

そして、locale フォルダーを含むフォルダー構造と、内部にサブフォルダー pt-br があります。私の翻訳が読み込まれていないことが判明しました。LANGUAGES 変数は pt-br パターンに従い、フォルダーは pt_BR パターンである必要があります。少なくとも、それがここで機能している唯一の方法です!

于 2015-08-08T02:35:35.803 に答える
8

こんにちは、私が過去にやらなければならなかったいくつかの修正を添付してください:

  • ウェブサーバーを再起動してください!

設定ファイルに -USE_I18N = Trueが必要です

  • ミドルウェアモジュールの中の django.middleware.locale.LocaleMiddleware (ただし、Django がローカルをまったく気にしない限り、これは確かにあなたのケースではありません)

  • TEMPLATE_CONTEXT_PROCESSORS の中の django.core.context_processors.i18n

確かに翻訳に関連する他の問題がありましたが、すべてを覚えているわけではありません...これが役に立てば幸いです!

于 2010-11-03T13:59:41.767 に答える
8

考えられる原因はLazy Translationです。

たとえば、views.py ではugettextを使用する必要があります。

from django.utils.translation import ugettext as _

ただし、models.py では、ugettext_lazyを使用する必要があります。

from django.utils.translation import ugettext_lazy as _
于 2010-03-03T17:11:10.127 に答える
0

別の原因として、ディレクトリ構造が間違っている可能性があります。

アプリの翻訳makemassages用のコマンドを実行する前に、作成するディレクトリに関する manage コマンドのエラー メッセージをよく読んでください。( ではなく、アプリ用である必要があります。)管理コマンドは、間違ったディレクトリ構造でも正常に機能することに注意してください。locale conf/locale

于 2013-07-19T09:29:40.050 に答える