使用django-localeurl更改子域+语言

时间:2010-08-16 06:39:12

标签: django localization

我正在使用django-localeurl根据域后面的后缀更改项目的语言(example.com/en,example.com/hu etc)。但是,我也有与后缀完全相同的国家/地区的子域名。

如何修改locale-url或为链接添加其他过滤器,以便我可以同时更改后缀和子域?

f.e。

example.com - > hu.example.com/hu - > es.example.com/es等。

这里有localeurl chlocale函数:

def chlocale(url, locale):
    """
    Changes the URL's locale prefix if the path is not locale-independent.
    Otherwise removes locale prefix.
    """
    _, path = utils.strip_script_prefix(url)
    _, path = utils.strip_path(path)
    return utils.locale_url(path, locale)

chlocale = stringfilter(chlocale)
register.filter('chlocale', chlocale) 

这是我的URL href:

<a href="{{ request.path|chlocale:"hu" }}">Hungary</a>

2 个答案:

答案 0 :(得分:0)

这个实际上只返回相对路径而不是网页的http完整地址,因此可以在{{request.path ...}}调用之前的开头附加前缀http://sitename.domain

答案 1 :(得分:0)

domain = Site.objects.get_current()。domain

  <a href="http://hu.{{ domain }}{{ request.path|chlocale:"hu" }}">Hungary</a>

有点hacky但也许你正在寻找。