CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/pypi-flask-babel

Adds i18n/l10n support for Flask applications.

Pending
Quality

Pending

Does it follow best practices?

Impact

Pending

No eval scenarios have been run

SecuritybySnyk

Pending

The risk profile of this skill

Overview
Eval results
Files

index.mddocs/

Flask-Babel

Flask-Babel provides internationalization (i18n) and localization (l10n) support for Flask web applications. Built on top of Python Babel and pytz libraries, it enables developers to create multi-language Flask applications with utilities for message translation, date/time formatting, number formatting, and locale-aware content rendering.

Package Information

  • Package Name: flask-babel
  • Language: Python
  • Installation: pip install flask-babel

Core Imports

from flask_babel import Babel, gettext, ngettext, format_datetime

Common pattern for Flask applications:

from flask_babel import Babel
from flask_babel import gettext as _, ngettext, lazy_gettext

Basic Usage

from flask import Flask
from flask_babel import Babel, gettext, ngettext, get_locale

app = Flask(__name__)
app.config['BABEL_DEFAULT_LOCALE'] = 'en'
app.config['BABEL_DEFAULT_TIMEZONE'] = 'UTC'

babel = Babel(app)

@babel.localeselector
def get_locale():
    return request.accept_languages.best_match(['en', 'es', 'fr'])

@app.route('/')
def index():
    # Simple translation
    message = gettext('Hello World!')
    
    # Plural translation
    count = 5
    plural_message = ngettext(
        '%(num)d item found',
        '%(num)d items found',
        count
    )
    
    # Date formatting
    from datetime import datetime
    from flask_babel import format_datetime
    now = datetime.utcnow()
    formatted_date = format_datetime(now, 'medium')
    
    return f"{message}<br>{plural_message}<br>{formatted_date}"

Architecture

Flask-Babel integrates with Flask's application context and provides:

  • Babel: Main configuration class that initializes i18n support
  • Domain: Manages translation catalogs and message domains
  • Context Integration: Automatic locale detection and timezone handling via Flask's request context
  • Lazy Evaluation: LazyString objects for translations that resolve at render time
  • Jinja2 Integration: Automatic template filters and functions for formatting

Capabilities

Application Configuration

Initialize and configure Flask-Babel for your Flask application with locale selectors, timezone handling, and translation directory management.

class Babel:
    def __init__(self, app=None, date_formats=None, configure_jinja=True, *args, **kwargs): ...
    def init_app(self, app, default_locale='en', default_domain='messages', 
                 default_translation_directories='translations', default_timezone='UTC',
                 locale_selector=None, timezone_selector=None): ...
    def list_translations(self): ...

Configuration

Translation Functions

Translate strings with support for pluralization, context, and lazy evaluation. Includes immediate and lazy translation functions for different use cases.

def gettext(string, **variables): ...
def ngettext(singular, plural, num, **variables): ...
def pgettext(context, string, **variables): ...
def lazy_gettext(string, **variables): ...
def lazy_ngettext(singular, plural, num, **variables): ...

Translation

Date, Time, and Number Formatting

Format dates, times, numbers, and currencies according to the current locale with support for custom formats and timezone conversion.

def format_datetime(datetime=None, format=None, rebase=True): ...
def format_date(date=None, format=None, rebase=True): ...
def format_time(time=None, format=None, rebase=True): ...
def format_currency(number, currency, format=None, currency_digits=True, format_type='standard'): ...
def format_number(number): ...

Formatting

docs

configuration.md

formatting.md

index.md

translation.md

tile.json