Skip to main content

Translate URL patterns and prefix URLs with language-code.

Project description

This Django app makes it possible to prefix URL patterns with the active language and to make URL patterns translatable by using gettext. As well this package contains a patch for the LocaleMiddleware so it is able to activate the right language (based on the language-prefix in the requested URL).

Translating URL patterns

After installing this package, URL patterns can also be marked translatable using the ugettext_lazy() function. Example:

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

urlpatterns = patterns(''
    url(r'^sitemap\.xml$', 'sitemap.view', name='sitemap_xml'),
)

news_patterns = patterns(''
    url(r'^$', 'news.views.index', name='index'),
    url(_(r'^category/(?P<slug>[\w-]+)/$'), 'news.views.category', name='category'),
    url(r'^(?P<slug>[\w-]+)/$', 'news.views.details', name='detail'),
)

urlpatterns += i18n_patterns('',
    url(_(r'^about/$'), 'about.view', name='about'),
    url(_(r'^news/$'), include(news_patterns, namespace='news')),
)

After you’ve created the translations, the reverse() function will return the URL in the active language. Example:

from django.core.urlresolvers import reverse
from django.utils.translation import activate

>>> activate('en')
>>> reverse('news:category', kwargs={'slug': 'recent'})
'/en/news/category/recent/'

>>> activate('nl')
>>> reverse('news:category', kwargs={'slug': 'recent'})
'/nl/nieuws/categorie/recent/'

Installation

  • Install the django-i18nurls package (eg: pip install django-i18nurls).

  • Add i18nurls to your settings.INSTALLED_APPS.

  • Add django.middleware.locale.LocaleMiddleware to your settings.MIDDLEWARE_CLASSES (if it is not already there, make sure it comes before the CommonMiddleware).

Changelog

v0.6

  • API changed so it will match with i18n_patterns in upcoming Django 1.4 release.

v0.5.2

  • Some README errors corrected.

v0.5.1

  • Some code cleanup.

v0.5

  • Initial release.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django-i18nurls-0.6.tar.gz (7.2 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page