Adds i18n/l10n support for Flask applications.
npx @tessl/cli install tessl/pypi-flask-babel@4.0.0Flask-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.
pip install flask-babelfrom flask_babel import Babel, gettext, ngettext, format_datetimeCommon pattern for Flask applications:
from flask_babel import Babel
from flask_babel import gettext as _, ngettext, lazy_gettextfrom 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}"Flask-Babel integrates with Flask's application context and provides:
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): ...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): ...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): ...