URL-адреса Django не переводятся

Следуя переводу шаблонов URL, я могу сделать мои URL-адреса имеют префикс активного языка, но я не могу их перевести.

urls.py

from django.conf.urls import include, url
from django.conf.urls.i18n import i18n_patterns
from django.utils.translation import ugettext_lazy as _

from django.contrib import admin
from django.conf.urls.static import static
from django.conf import settings

from exercises.views import ExerciseListView

urlpatterns = [
    url(r'^admin/', include(admin.site.urls)),
]

urlpatterns += i18n_patterns(
   ...
   url(_(r'^exercises/$'), ExerciseListView.as_view(), name='list'),
) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

locale/es/LC_MESSAGES/django.po

#: myproject/urls.py:54
msgid "^exercises/$"
msgstr "^ejercicios/$"

оболочка manage.py

>>> from django.core.urlresolvers import reverse
>>> from django.utils.translation import activate
>>> activate('en')
>>> reverse('list')
'/en/exercises/'
>>> activate('es')
>>> reverse('list')
'/es/exercises/'          <---- should be /es/ejercicios as translated in .po

Как заставить reverse('list') отображать '/es/ejercicios/' ?


person marcanuy    schedule 06.12.2015    source источник
comment
Вы собрали свои переводы?   -  person GwynBleidD    schedule 06.12.2015
comment
Да, но это было не нужно AFAIK, я уже нашел ошибку, спасибо   -  person marcanuy    schedule 06.12.2015


Ответы (1)


Проблема заключалась не только в URL-адресах, но и в том, что не переводились все строки перевода из файла сообщения.

Имея следующую структуру каталогов:

-Project  #base directory
  -apps
  -templates
  -project
     -settings.py
  -locale
     -es
       -LC_MESSAGES
          -django.po

Просто добавьте конфигурацию LOCALE_PATHS в settings .py исправить проблему

LOCALE_PATHS = (
    'locale',
)

Django будет искать в каждом из этих путей каталоги /LC_MESSAGES, содержащие фактические файлы перевода.

*Протестировано в Джанго 1.8.

person marcanuy    schedule 06.12.2015
comment
Для всех, кто читает это и думает, что нет, этого не может быть, я вижу некоторые переведенные строки в своих шаблонах, так что, очевидно, все настроено? ... нет. Вам действительно нужно добавить это. Даже несмотря на то, что ЧАСТИ ваших переводов будут отображаться. Жаль, что я не проигнорировал этот ответ два часа назад. Джанго 3.1, кстати. - person maligree; 22.03.2021