Многоязычный Django
Я хочу, чтобы мой Django-сайт был доступен как на английском, так и на азербайджанском языках. Именно так я и написал коды для этого. Однако я не знаю, что из этого верно. Есть ли альтернатива? Влияет ли этот метод на скорость работы сайта?
на мой взгляд :
def change_Lang(request):
referer = request.META.get('HTTP_REFERER')
lang = request.GET.get("pylang", "en")
pylang = request.session.get("pylang", None)
if lang != "az" and lang != "en": lang = "en"
if pylang == None: request.session["pylang"] = lang
if pylang != lang: request.session["pylang"] = lang
if referer: return HttpResponseRedirect(referer)
return redirect("home")
в моем templatetag:
@register.simple_tag
def pylang(value, en, az):
if value == "en": return en
elif value == "az": return az
else: return en
в моем шаблоне :
{% load pylang %}
{% pylang request.session.pylang "About - PyTerminator.com" "Haqqımızda - PyTerminator.com" %}
Я хочу знать, оказывает ли этот метод негативное влияние на скорость работы сайта? Какова альтернатива? Предложите лучшие варианты. Заранее спасибо)
По умолчанию для этого используется встроенная локализация i18n
.
См. документацию . Он сводится к написанию
{% load i18n %} <!-- only once at the top -->
{% translate 'About' %}
<!-- or -->
{% blocktrans %}
Longer stuff
or even multiline
{% endblocktrans %}
в шаблонах, и вам не понадобится никакой другой код в бекенде. Вы также можете передавать переменные в переводах.
Если вам нужно (или вы хотите) делать переводы внутри кода на python, вам придется from django.utils.translation import gettext
и вызывать его с каждой строкой, которую вы хотите перевести, например,
my_str = gettext("Hello")
my_str теперь переводится в зависимости от языка.
Затем вы вызываете python manage.py makemessages --all
для сбора строк для перевода.
Сам перевод осуществляется через rosetta
, доступ к которому можно получить в браузере.
Здесь все строки в этих блоках перевода собираются и отображаются, так что вы можете предоставить перевод в форме.
Я просто хотел описать основной рабочий процесс и не буду вдаваться в подробности. Для настройки и прочего смотрите ссылку, указанную в начале статьи.
Я понятия не имею, как это влияет на скорость.