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


105

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

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

何を間違えたのですか?

回答:


156

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


ありがとう、助けてくれました。すでに利用可能であればmakemessages、そのlocaleディレクトリからコマンドを実行してください。
SaeX 2015

4
Django 1.9では、コンパイルされたテキストが見つからない場合LOCALE_PATHSでも定義する必要がありますlocale
Wtower

このフォルダがないことに注意してくださいではない任意の「s」を持っている、そしてそれはappフォルダ(あなたが任意の必要はありませんそのようにでなければならないLOCALE_PATHSのconfigureにする)
tobiasBora

28

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

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

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

mkdir -p website/locale/de

2
実際には、言語ごとにフォルダを作成する必要はありません。django-admin makemessagesがこれを行います
MagicLAMP

これは混乱を招きます。アプリごとに1つのエントリを作成する必要がありますか?または、すべてのアプリのすべてのロケールを同じロケールフォルダーに保存しますか?
Vadorequest、

12

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

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

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

したがって、appディレクトリからコマンドを実行するか、

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

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

どちらの方法でも、./locale/ディレクトリが存在することを確認し、次を使用して作成する必要があります

$ mkdir locale

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.