Перевести шаблон регулярного выражения URL для интернационализации django

Я пытаюсь настроить многоязычный сайт django, я добавил нужные мне языки в файл настроек и перевел все в файле django.po. Я добавил промежуточное программное обеспечение локали и языковые блоки к своим URL-адресам, и они правильно отображаются, когда я перемещаюсь по ним:

/es-mx/help --- отображается на испанском языке

/en-us/help --- отображается на английском языке

Теперь я хочу перевести URL-адреса, это мой 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 при переходе на испанский URL. Я попытался добавить следующее в свой файл django.po безрезультатно:

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

msgid "help"
msgstr "ayuda"

Что мне не хватает?


person Ruben Quinones    schedule 02.01.2015    source источник


Ответы (1)


Я думаю, что ваши msgid и msgstr здесь неверны:

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

вы по ошибке включили r впереди, но на самом деле это не часть строки шаблона URL...

обратите внимание, что в шаблоне URL это r"^help/" ... префикс r сообщает Python, что это raw string и игнорировать управляющие символы, что полезно при работе с регулярными выражениями.

Все остальное выглядит правильно для меня, из моего чтения документов, поэтому я думаю, что вам просто нужно изменить их на:

msgid "^help/"
msgstr "^ayuda/"
person Anentropic    schedule 03.01.2015