Skip to main content
Join the official Python Developers Survey 2018 and win valuable prizes: Start the survey!

This Wsgi middleware, takes the language from urls similiar to '/es/documents' or from the Accept language header.

Project description

# WSGI Language Middleware

## Why?

This Wsgi middleware, takes the language from urls similiar to "/es/documents" or from the Accept language header.

## Instalation

### Prerequisites:

* Python >= 2.6
* Ludibrio (for the tests)

### Install

python setup.py install

## Test

python setup.py -q test

## Usage
### Basic
from language_middleware import LanguageMiddleware
application = my_wsgi_app()
application = LanguageMiddleware(application, default_language = 'es', valid_languages = ('en', 'es', 'fr'))

Call to the url **/fr/documents**, and my_wsgi_app will receive:

environ['HTTP_ACTIVE_LANGUAGE'] = 'fr'

Call to the url **/documents/1**, and my_wsgi_app will receive:

environ['HTTP_ACTIVE_LANGUAGE'] = 'es'

### Clean URL
The clean_url option, removes the language info from the URL.

from language_middleware import LanguageMiddleware
application = my_wsgi_app()
application = LanguageMiddleware(application, default_language = 'es', valid_languages = ('en', 'es', 'fr'), clean_url = True)

Call to the url **/fr/documents**, and my_wsgi_app will receive:

environ['PATH_INFO'] = '/documents'
environ['HTTP_ACTIVE_LANGUAGE'] = 'fr'

Call to the url **/documents/1**, and my_wsgi_app will receive:

environ['PATH_INFO'] = '/documents/1'
environ['HTTP_ACTIVE_LANGUAGE'] = 'es'

### With locale
If you have the following locale directory

/home/user/locale/es/LC_MESSAGES/hello.po
/home/user/locale/es/LC_MESSAGES/hello.mo
/home/user/locale/en/LC_MESSAGES/hello.po
/home/user/locale/en/LC_MESSAGES/hello.mo

You can set an option to active the language, check the test from more info:+

IMPORTANT: **Default language locale path must exists, if not last successfully used locale will be used (if any)**

from language_middleware import LanguageMiddleware
application = my_wsgi_app()
application = LanguageMiddleware(
application,
default_language = 'es',
valid_languages = ('en', 'es', 'fr')
clean_url = True,
locale_path = '/home/user/locale',
locale_name = 'hello'
)

### Set Script Name
Starting with wsgi-language-middleware 0.4 you can pass **set_script_name** to **LanguageMiddleware**, it will set the **SCRIPT_NAME** to a slash followed by the chosen language (e.g. **/es**)

This can help you if your application uses url-creation helpers (e.g. pylons **h.url()**), which do rely on the script name and should automatically prepend links with the given locale.

### Switching off global gettext translation installation
If you want to take care of the locale loading yourself (e.g. by inspecting environ['HTTP_ACTIVE_LANGUAGE'] later on) or do not use gettext, you can suppress the installation of the gettext translation by using **do_gettext_install=False** in **LanguageMiddleware()** .

Project details


Download files

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

Filename, size & hash SHA256 hash help File type Python version Upload date
language_middleware-0.6.tar.gz (3.1 kB) Copy SHA256 hash SHA256 Source None Feb 2, 2016

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page