Django i18nの仕組みを理解しようとしています。すでに公式と他のチュートリアルを読んでいる。問題はDjangoが.poファイルを生成するのですが、私のモデルとPythonスクリプトからのメッセージは含まれていません。(まあ、私はスクリプトと一緒に暮らす準備ができていますが、モデルを翻訳しなければなりません。ここに私の設定です:Djangoが翻訳メッセージを検索していません
LOCALE_PATHS = [
os.path.join(BASE_DIR, 'locale'),
os.path.join(BASE_DIR, 'install', 'locale'),
]
LANGUAGES = (
('ru', _('Russian')),
('en', _('English')),
)
MIDDLEWARE = [
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.security.SecurityMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
LANGUAGE_CODE = 'en'
そして、ここではの.poファイル(「ロケール」フォルダをプロジェクトのルートに位置しています)です。ご覧のとおり
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <[email protected]>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-05-12 12:26-0400\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <[email protected]>\n"
"Language-Team: LANGUAGE <[email protected]>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
"10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%"
"100>=11 && n%100<=14)? 2 : 3);\n"
#: trackpost/settings.py:127
msgid "Russian"
msgstr ""
#: trackpost/settings.py:128
msgid "English"
msgstr ""
、それからだけの文字列が含まれています設定。モデルでは、ugettext_lazy as _
を使用します。
これで3日間は戦っています。これがなぜ起こっているのか?
UPD。私はいくつかの変数を翻訳します。そのうちの1つはv = 'string'
のようになり、次に_(v)
と表示され、もう1つはAPIを介して取得するテキスト変数です。 Djangoによって発見されるものはありませんが、最初はそうでなければなりません。
UPD。ここではプロジェクトの構造がある(マイグレーションのような重要でないファイルは逃した):あなたが翻訳されるように、モデルを保持している、あなたのアプリのlocale
ディレクトリを含めるようにLOCALE_PATHS
リストを更新する必要があります
├── account
│ ├── admin.py
│ ├── apps.py
│ ├── __init__.py
│ ├── models.py
│ ├── tests.py
│ ├── urls.py
│ └── views.py
├── binder.py
├── db.sqlite3
├── install
│ ├── admin.py
│ ├── apps.py
│ ├── __init__.py
│ ├── __init__.pyc
│ ├── locale
│ │ └── ru
│ │ └── LC_MESSAGES
│ ├── models.py
│ ├── tests.py
│ ├── urls.py
│ └── views.py
├── locale
│ └── ru
│ └── LC_MESSAGES
│ └── django.po
├── manage.py
├── nginx.conf
├── nohup.out
├── payments.py
├── trackpost
│ ├── __init__.py
│ ├── __init__.pyc
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
├── uwsgi.ini
あなたのアプリの構造を追加してください。 (manage.py、settings、appフォルダを含む) –
@Tarasが構造を追加しました。しかし、どのように役立つだろうか? –
@ RyanSnow、どの翻訳が発見されていないのですか? 'install'アプリの下にあるものは?あなたの '設定'を表示してもらえますか? –