I want to change the language when the user introduce in the url the locale, something like this http://example.com/es/, http://example.com/es/article-name, http://example.com/en/.
how can I do that?
the reverse function allows to retrieve url details from url's.py file through the name value provided there. This is the major use of reverse function in Django. Syntax: Web development, programming languages, Software testing & others. from django.urls import reverse.
In Django, we use something called URLconf (URL configuration). URLconf is a set of patterns that Django will try to match the requested URL to find the correct view.
The path function is contained with the django. urls module within the Django project code base. path is used for routing URLs to the appropriate view functions within a Django application using the URL dispatcher.
Checkout django-locale-url.
It provides a middleware that does exactly what you are asking for, so you don't need to check for the language in urls.py
A number of ways to do this that come to mind. Arguably the most "standards compliant" way would be to use the HTTP Accept-Language
header, which is available to views as request.META['HTTP_ACCEPT_LANGUAGE']
to determine the language in which the user prefers to receive resources and simply return a translated HttpResponse
in the appropriate language.
Another common way, more along the lines of what you are describing, is to ask the user to select a language on their first arrival and store the selection in the session. Once the user makes a choice, redirect the browser to the appropriate language subdirectory and use relative links in your views so as not to have to worry about crossing languages. You can adjust your URLconf to pass a language keyword to your view like so:
urlpatterns = patterns('',
(r'^(?P<lang>[a-zA-Z]{2})/ ...
There is an Internationalization/Localization page on the Django documentation site about i18n that might help you get started.
Nowadays the best way is using the built-in language prefix in url patterns: https://docs.djangoproject.com/en/1.8/topics/i18n/translation/#language-prefix-in-url-patterns
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With