为 Django 国际化翻译 url 正则表达式模式

Translate url regex pattern for django internationalization

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

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

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

现在我想翻译 urls,这是我的 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 --- 以英文显示

但是我去西班牙时只得到 404s url。我尝试在我的 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 这是一个 raw string 并忽略任何转义字符,这在使用正则表达式时很有用

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

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