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?

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.


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

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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.