Socket
Book a DemoInstallSign in
Socket

muffin-babel

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

muffin-babel

Localization support for the Muffin Framework

1.6.0
pipPyPI
Maintainers
1

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

OptionDefaultDescription
AUTO_DETECT_LOCALETrueMiddleware for automatic locale detection
CONFIGURE_JINJA2TrueEnable i18n support in Jinja2 templates
DEFAULT_LOCALE"en"Default fallback locale
DOMAIN"messages"Default domain name for translation files
SOURCES_MAPFile pattern to extractor method mapping
OPTIONS_MAPOptions 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)

Keywords

localization

FAQs

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

About

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.

  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc

U.S. Patent No. 12,346,443 & 12,314,394. Other pending.