Django 多语言

问题描述 投票:0回答:1

我希望我的 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")

在我的模板标签中:

@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" %} 

我想知道这种方法对网站速度是否有负面影响? 还有什么选择呢? 建议更好的选择。预先感谢)

python django django-views django-templates
1个回答
0
投票

默认的方法是使用内置本地化

i18n
。 请参阅文档。归根结底就是写作

{% translate 'About' %}

{% blocktrans %}
Longer stuff
or even multiline
{% endblocktrans %}

在模板中,您不需要在后端添加其他代码。您还可以在翻译中传递变量。

然后您调用

python manage.py makemessages --all
来收集要翻译的字符串。 然后翻译本身通过
rosetta
完成,可以在浏览器中访问。 这里收集并显示这些翻译块中的所有字符串,以便您可以以表单形式提供翻译。

我只是想描述一下基本的工作流程,不会详细说明。对于设置和后者,请参阅开头给出的链接。

我不知道速度如何受到影响。

© www.soinside.com 2019 - 2024. All rights reserved.