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.
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 |