Многоязычный 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, доступ к которому можно получить в браузере. Здесь все строки в этих блоках перевода собираются и отображаются, так что вы можете предоставить перевод в форме.

Я просто хотел описать основной рабочий процесс и не буду вдаваться в подробности. Для настройки и прочего смотрите ссылку, указанную в начале статьи.

Я понятия не имею, как это влияет на скорость.

Вернуться на верх