Skip to main content

Muffin-Babel

Tests PyPI Version Python Versions

Muffin-Babel is an extension for the Muffin web framework that adds internationalization (i18n) support using Babel.


Requirements

  • Python >= 3.10

Installation

Install via pip:

pip install muffin-babel

Usage

Basic Setup

import muffin
import muffin_babel

app = muffin.Application("example")

# Initialize the plugin
babel = muffin_babel.Plugin()
babel.setup(app, local_folders=["src/locale"])

Inside a Route

@app.route("/")
async def index(request):
    assert babel.current_locale
    return babel.gettext("Hello World!")

Locale Selector

By default, locale is detected via the Accept-Language header. You can override it:

@babel.locale_selector
async def get_locale(request):
    return request.query.get("lang") or await muffin_babel.select_locale_by_request(request, default="en")

Direct Use

@app.route("/")
def index(request):
    return babel.gettext("Hello!")

Jinja2 Integration

If you're using the muffin-jinja2 plugin, Muffin-Babel automatically injects gettext and ngettext functions into your Jinja2 templates.


Plugin Options

Option Default Description
AUTO_DETECT_LOCALE True Middleware for automatic locale detection
CONFIGURE_JINJA2 True Enable i18n support in Jinja2 templates
DEFAULT_LOCALE "en" Default fallback locale
DOMAIN "messages" Default domain name for translation files
SOURCES_MAP — File pattern to extractor method mapping
OPTIONS_MAP — Options for extractor (e.g., encoding)
LOCAL_FOLDERS ["locales"] Folders to search for translation files

Options can be passed directly during setup:

babel.setup(app, default_locale="fr")

Or set via Muffin application config using the BABEL_ prefix:

BABEL_DEFAULT_LOCALE = "fr"

Note: Muffin config keys are case-insensitive.


Commands

The plugin adds commands to your Muffin app for message management.

Extract Messages

Extract localizable strings from your app source:

$ muffin app_package babel_extract_messages [OPTIONS] appdir

Compile Messages

Compile .po files into .mo binaries:

$ muffin app_package babel_compile_messages [OPTIONS]

Export as CSV

You can also export your .po files to CSV:

$ muffin app_package babel_export_csv

This helps with sending strings to translators or spreadsheets.


Contributing

Development happens at: https://github.com/klen/muffin-babel

Feel free to open issues or pull requests.


Bug Tracker

Found a bug? Have a suggestion? Report it here: 👉 https://github.com/klen/muffin-babel/issues


License

Licensed under the MIT license


Author

klen (Kirill Klenov)

Metadata

Release files for muffin-babel 1.7.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 muffin-babel 1.7.0
File Size Uploaded
muffin_babel-1.7.0.tar.gz 5.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for muffin-babel 1.7.0
File Interpreter ABI Platform
muffin_babel-1.7.0-py3-none-any.whl Python 3 none any Details

Total release size: 11.9 kB

Release files / muffin_babel-1.7.0.tar.gz

Download URL muffin_babel-1.7.0.tar.gz
Size 5.9 kB
Tags Source
SHA-256 checksum
How to use checksums
2c18ebff7479959c25a5d5629b9e682889a53e1bc48175a32c75c83cb7baec13
BLAKE2b-256 checksum
How to use checksums
185c2f731029da1119f6898f4ae1d9da70f353e9994339f024764df3cfba2a19
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.9.18 {"installer":{"name":"uv","version":"0.9.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / muffin_babel-1.7.0-py3-none-any.whl

Download URL muffin_babel-1.7.0-py3-none-any.whl
Size 6.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b70835d514e209fab1a4498bff5f1e86219698b5d54a7c998b6dce4667cc6b39
BLAKE2b-256 checksum
How to use checksums
0a655f0118fce60493359bcae5003d38d88f6a172dbeb79a51e33b756ae419e5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.9.18 {"installer":{"name":"uv","version":"0.9.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release history Release notifications | RSS feed

This release

1.7.0 This release

2 release files

1.6.0

2 release files

1.5.0

2 release files

1.4.3

2 release files

1.4.2

2 release files

1.4.1

2 release files

1.4.0

2 release files

1.3.6

2 release files

1.3.5

2 release files

1.3.3

2 release files

1.3.1

2 release files

1.3.0

2 release files

1.2.1

2 release files

1.2.0

2 release files

1.1.0

2 release files

1.0.5

2 release files

1.0.3

2 release files

1.0.2

2 release files

1.0.1

2 release files

0.7.12

2 release files

0.7.11

2 release files

0.7.9

2 release files

0.7.8

1 release file

0.7.7

1 release file

0.7.6

1 release file

0.7.5

1 release file

0.7.4

1 release file

0.7.3

1 release file

0.7.2

1 release file

0.7.1

1 release file

0.7.0

1 release file

0.6.0

1 release file

0.5.2

1 release file

0.4.6

2 release files

0.4.5

2 release files

0.4.3

2 release files

0.4.2

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.1

2 release files

0.1.0

2 release files

0.0.6

2 release files

0.0.5

2 release files

0.0.4

2 release files

0.0.3

2 release files

0.0.2

2 release files

0.0.1

2 release files

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