Django CMS多区域多语言子网站

Django CMS多区域多语言子网站,django,multilingual,django-cms,django-sites,Django,Multilingual,Django Cms,Django Sites,我们必须创建多地区和多语言的网站。例如: 日本英语 日本的日语 澳大利亚英语 对于多种语言,django cms和i18n_模式处理得非常好。但当我尝试使用django sites框架添加多区域支持时,它并没有像预期的那样起作用:(.我添加了子域为mysite.com/au、mysite.com/vn、mysite.com/us的站点。在django cms管理页面中,我已经向站点添加了内容。但现在我不知道如何配置url以匹配该站点 我想要http://mysite.com///但是i18n

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

  • 日本英语
  • 日本的日语
  • 澳大利亚英语
对于多种语言,django cmsi18n_模式处理得非常好。但当我尝试使用django sites框架添加多区域支持时,它并没有像预期的那样起作用:(.我添加了子域为mysite.com/au、mysite.com/vn、mysite.com/us的站点。在django cms管理页面中,我已经向站点添加了内容。但现在我不知道如何配置url以匹配该站点

我想要
http://mysite.com///
但是i18n\u模式似乎像
http://mysite.com///
。如何更改此设置


请提供帮助

我不确定您的URL方案有多灵活,但这个如何:

使用标准的django CMS i18n URL规则(这样您就可以得到yoursite.com/ja/和yoursite.com/en/)

接下来创建两个页面:“au”和“jp”。将主页重定向到这两个页面之一(或者为此编写一些更智能的逻辑,例如在中间件中)。现在将您的区域内容保留在这两个子树中


如果您不想,请不要将“au”子树中的页面翻译成日语。

您可以通过编写自己的
i18n_模式副本来实现

因此,根据定义:

URL模式中的语言前缀

i18n_patterns(*urls, prefix_default_language=True)[source]
此函数可在根URLconf中使用,Django将 自动将当前活动语言代码前置到所有URL i18n_patterns()中定义的模式

这里是一个在模板内部制作的示例,但在实现中需要相同的变量/对象

在模板中反转

i18n_patterns(*urls, prefix_default_language=True)[source]
如果本地化URL在模板中被反转,它们总是使用 当前语言。要链接到另一种语言的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 %}
{%loadi18n%}
{%get_可用语言为语言%}
{%trans“在:%”中查看此类别
{语言代码为%,语言名称为%}
{%language_code%}
{%endlanguage%}
{%endfor%}
language标记期望语言代码作为唯一的参数


参考:

您的解决方案似乎更容易实施,但我们必须将url更改为/并且这与他们的要求不符。感谢您的解决方案。因此,更改该要求不是一个选项?这两个地区有何区别?这是客户的要求:(我想我必须编写一个中间件来处理这个问题。无论如何,谢谢你不要忘记中间件是不够的。你还需要像i18n_模式这样的东西来实现反向工作。祝你好运!是的,中间件和自定义i18n_模式也一样:(