Od Django Dokumentacja:Korzystanie settings.LANGUAGES z poprawnie przetłumaczonych nazw korzystających gettext()
Jeśli zdefiniujemy
LANGUAGES
ustawienie niestandardowego, to OK, aby zaznaczyć języki jak ciągi tłumaczeń (jak w domyślnym wartość wyświetlona powyżej) - ale używa funkcji "dummy"gettext()
, a nie tej wdjango.utils.translation
. Nigdy nie należy importowaćdjango.utils.translation
od wewnątrz plik ustawień, ponieważ moduł sam w sobie zależy od ustawień , a to spowodowałoby okrągły import. Rozwiązaniem jest użycie funkcji "dummy"gettext()
. Oto plik ustawień przykładowych:
gettext = lambda s: s LANGUAGES = (
('de', gettext('German')),
('en', gettext('English')),
)
W tym układzie,
django-admin.py makemessages
będzie jeszcze znaleźć i zaznaczyć te ciągi do tłumaczenia, ale tłumaczenie nie będzie stało na wykonywania - - więc musisz zapamiętać , aby zawrzeć języki w rzeczywistymgettext()
w dowolnym kodzie, który używaLANGUAGES
W czasie wykonywania.
Co to właściwie oznacza owijanie języków w rzeczywistości gettext()
? Jak to powinno być wywołane w kodzie?
Ta metoda jest dość stright naprzód i zrozumiałe. Ale w takim razie, jaki jest sens używania obojętnego opakowania w ustawieniach.LANGUAGES? Ponieważ w każdym razie musisz zawijać każdą linię kodu, jaki jest sens funkcji opakowania, która jest zasugerowana w samouczku. –
Ponieważ po uruchomieniu narzędzia wiersza poleceń gettext nad drzewem źródłowym (prawdopodobnie za pośrednictwem makrumentów ./manage.py), chcesz, aby te łańcuchy były rozpoznawane jako "wymagające tłumaczenia", aby dodać je do pliku PO. –