or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

configuration.mdformatting.mdindex.mdtranslation.md
tile.json

tessl/pypi-flask-babel

Adds i18n/l10n support for Flask applications.

Workspace
tessl
Visibility
Public
Created
Last updated
Describes
pypipkg:pypi/flask-babel@4.0.x

To install, run

npx @tessl/cli install tessl/pypi-flask-babel@4.0.0

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