问题描述
如何在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 (将#修改为@)