Flask-Language
Flask-Language is a Flask extension providing a simple mechanism to handle a client-side language cookie.
It is somewhat loosely based on this snippet: http://flask.pocoo.org/snippets/128
Installation
Install the extension with with pipenv (recommended):
$ pipenv install flask-language
Or with pip:
$ pip install flask-language
Usage
Initialize the Flask-Language extension (also compatible with the Application Factories pattern):
from flask import Flask, jsonify from flask_language import Language, current_language app = Flask(__name__) lang = Language(app)
Define the language hooks:
@lang.allowed_languages
def get_allowed_languages():
return ['en', 'fr']
@lang.default_language
def get_default_language():
return 'en'
Define the desired end-points to retrieve and manipulate the current language:
@app.route('/api/language')
def get_language():
return jsonify({
'language': str(current_language),
})
@app.route('/api/language', methods=['POST'])
def set_language():
req = request.get_json()
language = req.get('language', None)
lang.change_language(language)
return jsonify({
'language': str(current_language),
})
Before each request, Flask-Language will automatically determine the current language in the following order:
The language cookie (if any and matching the allowed languages)
The Accept-Language HTTP header (if any and matching the allowed languages)
The provided default language
During each request context, the current language can be accessed using current_language.
After each request, the current language will be stored in the language cookie.
Configuration
Flask-Language is configurable via the following configuration variables:
LANGUAGE_COOKIE_NAME: name for the cookie language (default: 'lang')
LANGUAGE_COOKIE_TIMEOUT: validity duration of the cookie language (default: datetime.timedelta(days=365))
LANGUAGE_COOKIE_DOMAIN: domain for the cookie language (default: None)
LANGUAGE_COOKIE_SECURE: set secure option for the cookie language (default: False)
LANGUAGE_COOKIE_HTTPONLY: set HTTP-only for the cookie language (default: False)
Documentation
The Sphinx-compiled documentation is available on ReadTheDocs.
License
The MIT License (MIT)
Copyright (c) 2018 Romain Clement
Release History
0.1.0 (2018-03-07)
Initial release of Flask-Language
Metadata
Release files for Flask-Language 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| Flask-Language-0.1.0.tar.gz | 9.2 kB | Details |
Release files / Flask-Language-0.1.0.tar.gz
| Download URL | Flask-Language-0.1.0.tar.gz |
|---|---|
| Size | 9.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ff843fe5ff16095bc99923ecd958005fe52e743584e1679a3af95d7ee11b3736
|
|
BLAKE2b-256 checksum How to use checksums |
a608e6ebf39e488ad5bc72f8f65a069b5bc9ce3f02cbb3a8cf364d0f62c9eca7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |