web-dev-qa-db-ja.com

ファイル__init__.pyの翻訳を保存するためのロケールパスが見つかりません

Djangoアプリを翻訳しようとしています。{% trans %}私のテンプレート。ただし、アプリフォルダーで次のコマンドを実行すると、エラーメッセージが表示されます。

$ Django-admin.py makemessages -l fr 
CommandError: Unable to find a locale path to store translations for file __init__.py`

私は何を間違えましたか?

92
Antoine M.

mkdir localeを使用して最初にlocaleフォルダーを作成する必要があることがわかりました。アプリフォルダー内からコマンドを実行する場合は、そのアプリフォルダー内にlocaleフォルダーが必要です。

137
Antoine M.

実際には、ロケールフォルダーの場所を構成できます。 settings.pyに以下を追加します:

LOCALE_PATHS = (
    PROJECT_ROOT + '/website/locale', )

次に、翻訳する言語ごとにフォルダーを作成します。

mkdir -p website/locale/de
23
David Dehghan

問題は、コマンドがアプリディレクトリからではなく、プロジェクトディレクトリから実行されることです。 ドキュメントからのこのスニペット それを説明します:

mkdir localeを使用して最初にlocaleフォルダーを作成する必要があることがわかりました。

./manage.py makemessages […]現在のディレクトリのソースツリー全体を実行し、翻訳対象としてマークされたすべての文字列を引き出します。 conf/locale(Djangoツリー)内)またはlocale(プロジェクトおよびアプリケーション用)ディレクトリにメッセージファイルを作成(または更新)します。

そのため、アプリディレクトリからコマンドを実行します。

$ cd app
$ Django-admin makemessages -l <locale>

…またはLOCALE_PATHSを使用してプロジェクト全体のロケールディレクトリを定義し、そこからメインディレクトリからmakemessagesを実行できます。

いずれにしても、./locale/ディレクトリが存在することを確認し、次を使用して作成する必要があります。

$ mkdir locale

そうでない場合に備えて。

10
jnns