我们必须创建多区域和多语言的网站。例如:
对于multiligual, django-cms 和 i18n_patterns 处理得非常好。但是当我尝试使用django站点框架来添加多区域支持时,它并没有按预期工作:(。我添加了子域名的网站:mysite.com/au,mysite.com/vn,mysite.com/us。在django -cms管理页面我已经向网站添加了内容。但是现在我不知道如何配置网址来匹配网站。
我希望http://mysite.com/<region>/<language>/
但是 i18n_patterns 似乎强制像http://mysite.com/<language>/<region>/
这样的网址。如何更改此
请帮忙
答案 0 :(得分:3)
我不确定您的网址方案有多灵活,但是如何:
使用标准的django CMS i18n URL规则(最终使用yoursite.com/ja/和yoursite.com/en /)。
接下来创建两个页面:'au'和'jp'。将主页重定向到两个页面中的一个(或者为此编写一些更智能的逻辑,例如在中间件中)。现在将您的区域内容保存在这两个子树中。
如果您不想,请不要将'au'子树中的页面翻译成日语。
答案 1 :(得分:1)
您可以通过编写自己的i18n_patterns
。
所以根据定义:
网址格式中的语言前缀
i18n_patterns(*urls, prefix_default_language=True)[source]
此函数可以在根URLconf中使用,Django也可以使用 自动将当前活动语言代码添加到所有URL i18n_patterns()中定义的模式。
这里是一个在模板内部进行的示例,但在实现中需要相同的变量/对象。
转换模板
如果本地化的网址在模板中被反转,他们总是使用 目前的语言。要链接到另一种语言的URL,请使用 语言模板标签。它支持封闭的给定语言 模板部分:
{% load i18n %} {% get_available_languages as languages %} {% trans "View this category in:" %} {% for lang_code, lang_name in languages %} {% language lang_code %} <a href="{% url 'category' slug=category.slug %}">{{ lang_name }}</a> {% endlanguage %} {% endfor %}
语言标记期望语言代码是唯一的参数。