Skip to main content

Flask-Language

PyPI Version PyPI License PyPI Versions Build Status Coverage Status Documentation Status

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:

  1. The language cookie (if any and matching the allowed languages)

  2. The Accept-Language HTTP header (if any and matching the allowed languages)

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

Flask-Language-0.1.0.tar.gz (9.2 kB view details)

Uploaded Source

File details

Details for the file Flask-Language-0.1.0.tar.gz.

File metadata

File hashes

Hashes for Flask-Language-0.1.0.tar.gz
Algorithm Hash digest
SHA256 ff843fe5ff16095bc99923ecd958005fe52e743584e1679a3af95d7ee11b3736
MD5 cfce48a5bce81b5c23def63a04213157
BLAKE2b-256 a608e6ebf39e488ad5bc72f8f65a069b5bc9ce3f02cbb3a8cf364d0f62c9eca7

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.1.0 This release

1 file

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page