
Aby dołożyć nowe wersje językowe do strony opartej na Django, nie potrzebujemy żadnych dodatkowych bibliotek. Sama biblioteka Django posiada narzędzia do automatycznego wygenerowania teksów do tłumaczenia w osobnym pliku, a także do późniejszej kompilacji tłumaczenia. Po publikacji, aplikacja sama będzie wykrywać preferowany język użytkownika i pokazywać mu przetłumaczoną stronę. Jeśli tłumaczenie jest niedostępne - sięgnie do tłumaczenia w standardowym języku, który można zdefiniować w ustawieniach.
Wersje językowe - adresy
Najprostszym sposobem na zachowanie spójności przy różnych wersjach językowych, jest dołączenie do adresu podstron informacji o języku. Przykładowy adres zmienia się zatem z: "programeria.pl" na "programeria.pl/en/" lub "programeria.pl/pl/" - w zależności od preferowanej wersji. Żeby wygenerować różne adresy, dla różnych języków, można skorzystać z dekoratora "i18n_patterns" w następujący sposób:urlpatterns += i18n_patterns( url(r'^about$', views.about, name='about'), )
Tłumaczenia w szablonach
Aby przetłumaczyć fragment strony, możemy do jej szablonu dodać tagi: "trans" i "blogtrans". Musimy też załadować odpowiednie tagi z biblioteki, dodając na początku szablonu: "{% load i18n %}" Przykład szablonu poniżej:{% trans "About the project" %}
{% blocktrans %}Gender of german articles is not an easy thing to learn. This project helps in learning it, by letting you use quizes to memorize them.{% endblocktrans %}
Generowanie tłumaczeń
Aby wygenerować listę tekstów do przetłumaczenia do osobnego pliku używamy komendy:python manage.py makemessages -l plzastępując 'pl' dowolnym językiem, na który chcemy przetłumaczyć stronę. To pozwala nam na wygenerowanie pliku "django.po", który edytujemy wpisując tłumaczenie. Plik możemy też wysłać np. tłumaczom, bez konieczności edycji osób trzecich źródeł naszego projektu. Po dodaniu wszystkich informacji, możemy przejść do kompilacji tłumaczenia komendą:
python manage.py compilemessages -l plTo wygeneruje dodatkowy plik - "django.mo", który zapewnia już dostępne różne wersje językowe. Możesz podejrzeć jak działa to w mojej aplikacji na przykład: Wersja angielska i Wersja polska.
0 Komentarze