翻译 url 正则表达式模式以实现 django 国际化



我正在尝试建立一个多语言的django站点,我已经在我的设置文件中添加了我需要的语言,并翻译了我的django.po文件中的所有内容。我将语言环境中间件和语言块添加到我的 url 中,当我浏览它们时它们会正确显示:

/

es-mx/help --- 以西班牙语显示

/

en-us/help --- 以英语显示

现在我想翻译网址,这是我 urls.py:

from django.utils.translation import ugettext_lazy as _
urlpatterns += i18n_patterns('',
    url(_(r'^help/'), include('help.urls')),
)

我想有以下几点:

/

es-mx/ayuda -- 以西班牙语显示

/

en-us/help --- 以英语显示

但是在访问西班牙语网址时,我只得到 404。我尝试在我的 django.po 文件中添加以下内容,但没有结果:

msgid "r^help/"
msgstr "r^ayuda/"
msgid "help"
msgstr "ayuda"

我错过了什么?

我认为你的msgidmsgstr在这里是错误的:

msgid "r^help/"
msgstr "r^ayuda/"

您错误地将r包含在前面,但这实际上不是 URL 模式字符串的一部分......

请注意,在 URL 模式中,它r"^help/"...r前缀告诉 Python 这是一个原始字符串并忽略任何转义字符,这在使用正则表达式时很有用

从我对文档的阅读来看,其他一切对我来说都是正确的,所以我认为你只需要将它们更改为:

msgid "^help/"
msgstr "^ayuda/"

最新更新