Following Translating URL patterns, I can make my urls being prefixed with the active language, but I can't get them translated. 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 shell >>> 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 How can I make reverse('list') display '/es/ejercicios/' ? Continue reading...