Nie można znaleźć ścieżki lokalizacji do przechowywania tłumaczeń pliku __init__.py

106

Próbuję przetłumaczyć aplikację Django. Stworzyłem kilka ciągów {% trans %}w moich szablonach. Jednak gdy wykonuję następujące polecenie w folderze aplikacji, otrzymuję komunikat o błędzie:

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

Co zrobiłem źle?

Antoine M.
źródło

Odpowiedzi:

157

Okazuje się, że najpierw musisz utworzyć localefolder za pomocą mkdir locale. Jeśli uruchamiasz polecenie z folderu aplikacji, potrzebujesz localefolderu w tym folderze aplikacji.

Antoine M.
źródło
Dzięki, pomogli mi. Po prostu wykonaj makemessagespolecenie z tego localekatalogu, jeśli jest już dostępne.
SaeX
4
W Django 1.9 musisz zdefiniować, LOCALE_PATHSnawet jeśli jest localeinaczej, skompilowany tekst nie będzie wykrywalny.
Wtower
Zwróć uwagę, że ten folder nie zawiera żadnych „s” i musi znajdować się w folderze aplikacji (w ten sposób nie masz żadnego LOCALE_PATHSdo skonfigurowania)
tobiasBora
28

Właściwie możesz skonfigurować, gdzie znajduje się folder locale. W swoim settings.py dodaj:

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

Następnie utwórz folder dla każdego z języków, które chcesz przetłumaczyć:

mkdir -p website/locale/de
David Dehghan
źródło
2
w rzeczywistości nie musisz tworzyć folderu dla każdego z języków. django-admin makemessages zrobi to za Ciebie
MagicLAMP
To jest mylące, czy mamy tworzyć jeden wpis dla każdej aplikacji? Lub przechowywać wszystkie ustawienia regionalne dla wszystkich aplikacji w tym samym folderze ustawień regionalnych?
Vadorequest
12

Problem polega na tym, że polecenie nie jest uruchamiane z katalogu aplikacji, ale z katalogu projektu. Ten fragment z dokumentów wyjaśnia to:

Okazuje się, że najpierw musisz utworzyć localefolder za pomocą mkdir locale.

./manage.py makemessages[…] Przegląda całe drzewo źródłowe bieżącego katalogu i wyciąga wszystkie napisy zaznaczone do tłumaczenia. Tworzy (lub aktualizuje) plik wiadomości w katalogu conf / locale (w drzewie Django) lub locale (dla projektu i aplikacji).

Więc albo uruchom polecenie z katalogu aplikacji:

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

… Lub definiujesz katalog locale dla całego projektu używając LOCALE_PATHSi możesz makemessagesod tego momentu uruchomić z katalogu głównego.

Tak czy inaczej, powinieneś sprawdzić, czy ./locale/katalog istnieje i utworzyć go za pomocą

$ mkdir locale

na wypadek gdyby tak nie było.

jnns
źródło