Es konnte kein Gebietsschemapfad zum Speichern von Übersetzungen für die Datei __init__.py gefunden werden

104

Ich versuche eine Django-App zu übersetzen. Ich habe einige Zeichenfolgen mit {% trans %}in meinen Vorlagen erstellt. Wenn ich jedoch den folgenden Befehl in meinem App-Ordner ausführe, wird eine Fehlermeldung angezeigt:

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

Was habe ich falsch gemacht?

Antoine M.
quelle

Antworten:

155

Es stellt sich heraus, dass Sie localezuerst einen Ordner mit erstellen müssen mkdir locale. Wenn Sie den Befehl in einem App-Ordner ausführen, benötigen Sie einen localeOrdner in diesem App-Ordner.

Antoine M.
quelle
Danke, hat mir geholfen. Führen Sie einfach den makemessagesBefehl aus diesem localeVerzeichnis aus, wenn er bereits verfügbar ist.
SaeX
4
In Django 1.9 müssen Sie definieren, LOCALE_PATHSauch wenn localeder kompilierte Text sonst nicht erkennbar ist.
Wtower
Beachten Sie, dass dieser Ordner nicht nicht jede ‚s‘ haben, und dass es in der App - Ordner sein muss (auf diese Weise Sie haben keine LOCALE_PATHSzu konfigurieren)
tobiasBora
28

Tatsächlich können Sie konfigurieren, wo sich der Gebietsschemaordner befindet. Fügen Sie in Ihrer settings.py Folgendes hinzu:

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

Erstellen Sie dann einen Ordner für jede der Sprachen, die Sie übersetzen möchten:

mkdir -p website/locale/de
David Dehghan
quelle
2
Sie müssen eigentlich nicht für jede der Sprachen einen Ordner erstellen. django-admin makemessages wird dies für Sie tun
MagicLAMP
Das ist verwirrend. Sollen wir für jede App einen Eintrag erstellen? Oder alle Gebietsschemas für alle Apps im selben Gebietsschemaordner speichern?
Vadorequest
12

Das Problem ist, dass der Befehl nicht aus dem App-Verzeichnis, sondern aus dem Projektverzeichnis ausgeführt wird. Dieser Ausschnitt aus den Dokumenten erklärt es:

Es stellt sich heraus, dass Sie localezuerst einen Ordner mit erstellen müssen mkdir locale.

./manage.py makemessages[…] Läuft über den gesamten Quellbaum des aktuellen Verzeichnisses und zieht alle zur Übersetzung markierten Zeichenfolgen heraus. Es erstellt (oder aktualisiert) eine Nachrichtendatei im Verzeichnis conf / locale (im Django-Baum) oder locale (für Projekt und Anwendung).

Sie führen den Befehl also entweder über das App-Verzeichnis aus:

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

… Oder Sie definieren ein projektweites Gebietsschemaverzeichnis mit LOCALE_PATHSund können makemessagesvon dort aus vom Hauptverzeichnis aus ausführen .

In jedem Fall sollten Sie überprüfen, ob das ./locale/Verzeichnis vorhanden ist, und es mit erstellen

$ mkdir locale

falls es nicht ist.

jnns
quelle