Django如何自定义URL语言前缀 将ja/ko对应修改为jp/kr
解决方案
你之前仅修改了请求路径的解析逻辑,没有同步调整Django反向生成URL时的语言前缀映射规则,所以才会出现内部链接仍用旧前缀的问题。可以通过Django官方支持的自定义语言编码方式解决,无需额外开发复杂的中间件逻辑:
- 注册自定义语言编码,复用日语、韩语的原有翻译配置
在settings.py开头添加如下代码,告诉Djangojp对应日语的全部配置、kr对应韩语的全部配置:
from django.conf.locale import LANG_INFO # 复用原有语言的翻译、格式化等配置 LANG_INFO['jp'] = LANG_INFO['ja'] LANG_INFO['kr'] = LANG_INFO['ko']
- 修改
LANGUAGES配置,将语言键替换为你需要的URL前缀
LANGUAGES = [ ('en', _('English (US)')), ('de', _('Deutsch')), ('fr',_('Français')), ('jp',_('日本語')), ('kr',_('한국어')), ]
- 保留原有
i18n_patterns路由配置即可,不需要做任何修改
urlpatterns = i18n_patterns( path('', include('main.urls')), prefix_default_language=False )
配置完成后,Django会自动将jp、kr作为对应语言的URL前缀,反向生成的内部链接也会自动使用新前缀,同时原有日语、韩语的翻译功能完全不受影响。
内容的提问来源于stack exchange,提问作者Fausto Sanchez
相关产品推荐
相关产品推荐

