为 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"
我错过了什么?
我认为你的 msgid
和 msgstr
在这里是错误的:
msgid "r^help/"
msgstr "r^ayuda/"
您错误地将 r
包含在前面,但这实际上不是 url 模式字符串的一部分...
注意在 url 模式中它是 r"^help/"
... r
前缀告诉 Python 这是一个 raw string 并忽略任何转义字符,这在使用正则表达式时很有用
根据我对文档的阅读,其他一切对我来说都是正确的,所以我认为您只需要将它们更改为:
msgid "^help/"
msgstr "^ayuda/"
我正在尝试建立一个多语言 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"
我错过了什么?
我认为你的 msgid
和 msgstr
在这里是错误的:
msgid "r^help/"
msgstr "r^ayuda/"
您错误地将 r
包含在前面,但这实际上不是 url 模式字符串的一部分...
注意在 url 模式中它是 r"^help/"
... r
前缀告诉 Python 这是一个 raw string 并忽略任何转义字符,这在使用正则表达式时很有用
根据我对文档的阅读,其他一切对我来说都是正确的,所以我认为您只需要将它们更改为:
msgid "^help/"
msgstr "^ayuda/"