Django posiada wiele funkcji pomocnych przy tłumaczeniu aplikacji. Jedną z nich jest funkcja gettext oraz jej „leniwy” odpowiednik w postaci gettext_lazy.
gettext używamy w:
- Widokach
- Funkcjach które są uruchamiane podczas obsługi request’a
gettext_lazy używamy w:
- Formularzach
- Modelach
- W plikach konfiguracyjnych aplikacji (apps.py)
Dlaczego to tak ważne?
Ponieważ Django jest uruchamiane raz, przez co, jeśli użyjemy gettext w modelu – np. Jako nazwy/etykiety pola, to ta wartość zostanie załadowana na starcie i nigdy się nie zmieni.
Dlaczego tak się dzieje?
Wersja „leniwa” zwróci treść (przetłumaczony stringa), w momencie w którym będzie on wyświetlany, natomiast „podstawowa wersja”, zwraca wartość przetłumaczoną natychmiast. Dlatego jeśli użyjemy funkcji niewłaściwie, zawsze dostaniemy wartość w domyślnej wersji językowej.
Istnieją starsze wersje tych funkcji, mianowicie ugettext i ugettext_lazy, natomiast od Django w wersji 3.0 są one oznaczone jako przestarzałe. Przedrostek „u” oznaczał odniesienie do wersji unicode.
Photo by Pankaj Patel on Unsplash
