Übersetzungen kompilieren (ohne venv-Bibliotheken)¶
Standardmäßig kompiliert python manage.py compilemessages alle gefundenen .po-Dateien, einschließlich derer von installierten Bibliotheken im venv. Das ist normalerweise nicht nötig und kann Zeit sparen.
Lösung: Nur Projekt-Übersetzungen kompilieren¶
Methode 1: Makefile verwenden (Empfohlen)¶
Dies kompiliert nur die Übersetzungen für de und en aus dem Projekt-Verzeichnis (locale/).
Methode 2: Script verwenden¶
Oder für eine bestimmte Sprache:
Methode 3: Direkt mit manage.py (nur bestimmte Sprachen)¶
Dies kompiliert nur die angegebenen Sprachen und ignoriert automatisch die venv-Bibliotheken, da LOCALE_PATHS in settings.py nur auf BASE_DIR / 'locale' verweist.
Methode 4: Custom Management Command¶
Dieses Command kompiliert nur Übersetzungen aus LOCALE_PATHS und schließt explizit venv-Verzeichnisse aus.
Warum funktioniert das?¶
In config/settings.py ist LOCALE_PATHS bereits korrekt konfiguriert:
Wenn Sie compilemessages mit --locale verwenden, werden nur die Übersetzungen aus LOCALE_PATHS für die angegebenen Sprachen kompiliert.
Standard-Verhalten ändern¶
Falls Sie möchten, dass compilemessages standardmäßig nur Projekt-Übersetzungen kompiliert, können Sie:
-
Alias erstellen (in
~/.bashrcoder~/.zshrc): -
Makefile verwenden (bereits eingerichtet):
Alle Übersetzungen kompilieren (inkl. venv)¶
Falls Sie doch alle Übersetzungen kompilieren möchten (z.B. für Debugging):
Verifizierung¶
Prüfen Sie, welche .mo-Dateien erstellt wurden:
# Nur Projekt-Übersetzungen
find locale/ -name "*.mo"
# Alle Übersetzungen (inkl. venv)
find . -name "*.mo" -not -path "*/venv/*" -not -path "*/__pycache__/*"
Die erste Suche sollte nur Dateien in locale/ finden, wenn Sie --locale verwendet haben.