如何在Django Translation I18n的语言代码之前添加路径的一部分

问题描述

如何在django i18n_patterns的语言代码之前添加部分路径?

示例:

我的项目位于: http://domain.site/sub/admin/

更改语言时,会自动重定向http://domain.site/`en`/sub/admin/ ,但我需要这样做http://domain.site/sub/`en`/admin/

谢谢!


urls.py代码

urlpatterns = i18n_patterns (
     ...
     path ('admin /',admin.site.urls),...
     prefix_default_language = False,)

settings.py代码

LANGUAGES = [
     ('en',_ ('English')),('ru',_ ('Russian')),]

i18n_switcher.py:

from django import template
from django.template.defaultfilters import stringfilter
from django.conf import settings

register = template.Library()


def switch_lang_code(path,language):
    lang_codes = [c for (c,name) in settings.LANGUAGES]

    if path == '':
        raise Exception('URL path for language switch is empty')
    elif path[0] != '/':
        raise Exception('URL path for language switch does not start with "/"')
    elif language not in lang_codes:
        raise Exception('%s is not a supported language code' % language)

    parts = path.split('/')

    if parts[1] in lang_codes:
        parts[1] = language
    else:
        parts[0] = "/" + language

    return '/'.join(parts)

@register.filter
def switch_i18n(request,language):
    """takes in a request object and gets the path from it"""
    return switch_lang_code(request.get_full_path(),language)

用于更改语言的html链接

    <a href="{{ request|switch_i18n:'en' }}">
        <img class="i18n_flag" src="{% static 'images/lang-en.svg' %}"/>
    </a> /
    <a href="{{ request|switch_i18n:'ru' }}">
        <img class="i18n_flag" src="{% static 'images/lang-ru.svg' %}"/>
    </a> /

谢谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)