翻译django国际化的url正则表达式模式

时间:2015-01-02 22:22:38

标签: django django-i18n

我正在尝试设置一个多语言的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"

我错过了什么?

1 个答案:

答案 0 :(得分:1)

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

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

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

注意在url模式中它是r"^help/" ... r前缀告诉Python这是一个raw string并忽略任何转义字符,这在工作时很有用用正则表达式

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

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