Django-CMS多区域和多语言子网站

时间:2013-05-21 09:52:47

标签: django multilingual django-cms django-sites

我们必须创建多区域和多语言的网站。例如:

对于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>/这样的网址。如何更改此

请帮忙

2 个答案:

答案 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 %}
     

语言标记期望语言代码是唯一的参数。

参考: Django docs - i18n/translation