8

i18n の問題に関する 100 件以上の投稿を見てきましたが、私の問題を解決する解決策はないようです。

Django 1.3.1 で実行されているアプリがあり、開発マシンで正常に動作します。しかし、私がherokuに持ってきても何も起こりません。ファイルはまったく翻訳されていません。プロジェクトのロケール フォルダーが見つからないようです。

Locale フォルダーは私のプロジェクト レベルにあり、これが私の設定です。

BASE_PATH = os.path.dirname(os.path.abspath(__file__))

LANGUAGE_CODE = 'pt-br'

USE_I18N = True

USE_L10N = True

ugettext = lambda s: s
LANGUAGES = (
    ('en-us', ugettext('English')),
    ('pt-br', ugettext('Portuguese')),
)

LOCALE_PATHS = (
       os.path.join(BASE_PATH, "locale"),
)

ロケール フォルダーは次の構造に従います。

locale
    pt_BR
        LC_MESAGES
            django.mo
            django.po
4

7 に答える 7

6

プラットフォームが異なれば、異なる言語のフォルダー名が好まれることがわかりました。'/pt-br/LC_MESSAGES/' が機能しないため、開発システム (Mac OS X) で髪を引っ張っていました。言語の名前を「/pt_br/LC_MESSAGES/」に変更すると、ようやく動き出しました(アンダースコアに注意してください)。

同じプロジェクトを本番環境 (Ubuntu) に移行すると、再び動作しなくなりました。Sun の下ですべてを試してみましたが、フォルダー名は私の開発環境で動作するため、既に正しいはずです。機械。最後に、必死になって国コンポーネントを「/pt_BR/LC_MESSAGES/」のように大文字にしようとしましたが、ブーム、再び機能し始めました。

私の Python と Django、そして私のさまざまな Python/Django ライブラリとアプリのすべてが (設計上) 同一のバージョンであったとしても、各システムの下に異なるバージョン/ビルドの gettext があり、それが原因である可能性が高いと思われます。

于 2013-04-12T22:58:54.893 に答える
4

デフォルトでは、コンパイルされた翻訳ファイル ( *.mo) は git によって無視されます。この例外が.gitignoreファイルから削除されていることを確認してください。

その場合は、この例外を削除し、これらのファイルを git に追加し、コミットして Heroku にプッシュし、Heroku のアプリで利用できるようにします。

于 2014-05-12T18:12:00.023 に答える
3

上記のサンプルでは、 ​​(ダブルSに注意してください)のLC_MESAGES代わりに 書いていますが 、これはあなたの問題である可能性が非常に高いと思います。LC_MESSAGES

そうでない場合は、読んでください!

私は最近この問題を抱えていました(再び!)、そして答えはdjangoドキュメントのこの部分で見つかりました

「admin」アプリは翻訳されたが、独自の(プロジェクト)アプリは翻訳されていないため、同じ問題が発生していると思われます。

Djangoは次のような翻訳を探しているようです:

  1. LOCALE_PATHSにリストされているディレクトリーの優先順位が最も高く、最初に表示されるディレクトリーの優先順位が、後で表示されるディレクトリーよりも高くなります。
  2. 次に、INSTALLED_APPSにリストされているインストール済みアプリのそれぞれにロケールディレクトリが存在するかどうかを検索して使用します。最初に表示されるものは、後で表示されるものよりも優先されます。
  3. 最後に、django / conf/localeでDjangoが提供する基本翻訳がフォールバックとして使用されます。

上記で説明した設定では、ツリーが次のようになっていることを確認する必要があります(最も重要なのはsettings.pyが「locale」ディレクトリの上のディレクトリにあることです)。

+-project_top/
  |
  +-project_app/
  | |
  | +-locale/
  | | |
  | | +-pt_BR/
  | |   |
  | |   +-LC_MESSAGES/
  | |     |
  | |     +-django.po
  | |  
  | +-settings.py
  |
  +-manage.py
于 2013-02-17T23:02:20.903 に答える
0

まず、言語設定が間違っています。

次のようになります。

LANGUAGES = (
    ('zh', 'China'),
    ('en', 'English'),
    ('ja', 'Japanese'),
)

次に、Cookie 設定のドメインが正しいかどうかを確認します。

私は同じ問題を抱えていて、Heroku の仮想環境は決して i18n をサポートしないと思っていましたが、最終的に、セッション Cookie の「django-language」の値がローカルのテスト サーバー「0.0.0.0:5000」に属していることがわかりました。

設定を変更した後、ローカル サーバーで行った翻訳はすぐに機能しました。

于 2013-10-12T08:43:33.960 に答える