django i18n_patterns 从 url 隐藏默认 lang_code [英] django i18n_patterns hide default lang_code from url
问题描述
我正在使用 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
toFalse
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屋!