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

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)

Source distribution for Flask-Language 0.1.0
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

Release history Release notifications | RSS feed

This release

0.1.0 This release

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page