Flask extension handling client-side language cookie
Project description
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
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.