django i18n_patterns 从 url 隐藏默认 lang_code [英] django i18n_patterns hide default lang_code from url

查看:24
本文介绍了django i18n_patterns 从 url 隐藏默认 lang_code的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用 i18n_patterns 将当前 lang_code 的前缀添加到我的 url.

I'm using the i18n_patterns to add a prefix of current lang_code to my url.

urlpatterns += i18n_patterns('',
    url(r'^', include('blaszczakphoto2.gallery.urls')),
)

它允许我获取 /en/about-us//pl/about-us/ 等网址.我的默认语言是 pl

It allowes me to get urls like /en/about-us/ , /pl/about-us/ etc.. My default language is pl

LANGUAGE_CODE = 'pl'

我想要像/about-us/这样的网址,以便客户使用波兰语浏览我的网站.有什么方法可以隐藏默认 lang_code 的 url 中的 lang_code 前缀?

I want url like /about-us/ for clients viewing my site in polish lenguage. Is there any way to hide lang_code prefix from url for default lang_code?

推荐答案

Django >=1.10 可以原生处理这个问题.i18n_patterns 函数中有一个新的 prefix_default_language 参数.

Django >=1.10 can handle this natively. There is a new prefix_default_language argument in i18n_patterns function.

prefix_default_language 设置为 False 会删除前缀默认语言 (LANGUAGE_CODE).这在添加时很有用翻译到现有网站,这样当前的 URL 就不会改变.

Setting prefix_default_language to False removes the prefix from the default language (LANGUAGE_CODE). This can be useful when adding translations to existing site so that the current URLs won’t change.

来源: https://docs.djangoproject.com/en/dev/topics/i18n/translation/#language-prefix-in-url-patterns

例子:

# Main urls.py:
urlpatterns = i18n_patterns(
    url(r'^', include('my_app.urls', namespace='my_app')), 
    prefix_default_language=False
)

# my_app.urls.py:
url(r'^contact-us/$', ...),

# settings:
LANGUAGE_CODE = 'en' # Default language without prefix

LANGUAGES = (
    ('en', _('English')),
    ('cs', _('Czech')),
)

example.com/contact-us/ 的响应为英文,example.com/cs/contact-us/ 为捷克文.

The response of example.com/contact-us/ will be in English and example.com/cs/contact-us/ in Czech.

这篇关于django i18n_patterns 从 url 隐藏默认 lang_code的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆