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
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file Flask-Language-0.1.0.tar.gz.
File metadata
- Download URL: Flask-Language-0.1.0.tar.gz
- Upload date:
- Size: 9.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ff843fe5ff16095bc99923ecd958005fe52e743584e1679a3af95d7ee11b3736
|
|
| MD5 |
cfce48a5bce81b5c23def63a04213157
|
|
| BLAKE2b-256 |
a608e6ebf39e488ad5bc72f8f65a069b5bc9ce3f02cbb3a8cf364d0f62c9eca7
|