我希望我的 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" %}
我想知道这种方法对网站速度是否有负面影响? 还有什么选择呢? 建议更好的选择。预先感谢)
默认的方法是使用内置本地化
i18n
。
请参阅文档。归根结底就是写作
{% translate 'About' %}
或
{% blocktrans %}
Longer stuff
or even multiline
{% endblocktrans %}
在模板中,您不需要在后端添加其他代码。您还可以在翻译中传递变量。
然后您调用
python manage.py makemessages --all
来收集要翻译的字符串。
然后翻译本身通过 rosetta
完成,可以在浏览器中访问。
这里收集并显示这些翻译块中的所有字符串,以便您可以以表单形式提供翻译。
我只是想描述一下基本的工作流程,不会详细说明。对于设置和后者,请参阅开头给出的链接。
我不知道速度如何受到影响。