Skip to main content

Localization support for the Muffin Framework

Project description

Muffin-Babel – an extension to Muffin that adds localization support with help of Babel.

Tests Status PYPI Version Python Versions

Requirements

  • python >= 3.7

Installation

Muffin-Babel should be installed using pip:

pip install muffin-babel

Usage

Initialize and setup the plugin:

import muffin
import muffin_babel

# Create Muffin Application
app = muffin.Application('example')

# Initialize the plugin
# As alternative: babel = muffin_babel.Plugin(app, **options)
babel = muffin_babel.Plugin()
babel.setup(app, template_folders=['src/templates'])

# Use it inside your handlers
@app.route('/')
async def index(request):
    # Get current locale
    assert babel.current_locale
    # Translate a text
    return babel.gettext('Hello World!')

Setup a locale selector function (by default the plugin is parsing accept-language header):

@babel.locale_selector
async def get_locale(request):
    """ Return locale either from request.query or from request headers. """
    locale = request.query.get('lang')
    if not locale:
        return await muffin_babel.select_locale_by_request(request, default)
    return locale

Use babel.gettext, babel.pgettext callables in your code:

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

Jinja2

The Muffin-Babel has integration with Muffin-Jinja2, so if you have muffin_jinja2 plugin enabled, the plugin provides gettext and ngettext function inside the Jinja2 templates’ context.

Options

Name

Default Value

Description

AUTO_DETECT_LOCALE

True

Installs a middleware to automatically detect users locales

CONFIGURE_JINJA2

True

Installs i18n support for jinja2 templates (through muffin-jinja)

DEFAULT_LOCALE

"en"

Default locale

DOMAIN

"messages"

Default localization domain

SOURCES_MAP

Babel sources map

OPTIONS_MAP

Babel options map

You are able to provide the options when you are initiliazing the plugin:

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

Or setup it inside Muffin.Application config using the BABEL_ prefix:

BABEL_DEFAULT_LOCALE = 'fr'

Muffin.Application configuration options are case insensitive

Commands

The plugin adds two commands to your Muffin application.

Extract messages

Extract strings from your application to locales:

$ muffin app_package babel_extract_messages [OPTIONS] appdir

Translate .po files and compile translations:

$ muffin app_package babel_compile_messages [OPTIONS]

Bug tracker

If you have any suggestions, bug reports or annoyances please report them to the issue tracker at https://github.com/klen/muffin-babel/issues

Contributing

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

Contributors

  • klen (Kirill Klenov)

License

Licensed under a MIT license.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

muffin-babel-1.0.1.tar.gz (7.3 kB view details)

Uploaded Source

Built Distribution

muffin_babel-1.0.1-py3-none-any.whl (6.6 kB view details)

Uploaded Python 3

File details

Details for the file muffin-babel-1.0.1.tar.gz.

File metadata

  • Download URL: muffin-babel-1.0.1.tar.gz
  • Upload date:
  • Size: 7.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.5.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.1 CPython/3.9.5

File hashes

Hashes for muffin-babel-1.0.1.tar.gz
Algorithm Hash digest
SHA256 da8bd8387ccf3ad765c97c79b6df2bed06805cdc7be83813e3a0fc350ba670b8
MD5 2614b1eea8e63608f69fd1a5c91a9ccd
BLAKE2b-256 f46ee23b3323ce88a41f411fe925c1eb6a9dcbcdba0393cce57409326f715dd3

See more details on using hashes here.

File details

Details for the file muffin_babel-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: muffin_babel-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 6.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.5.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.1 CPython/3.9.5

File hashes

Hashes for muffin_babel-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 11567dab320efe198b789c05c8560c4428ff75b2baa6710fcf66aacdb9d77ddf
MD5 391347a24fdc76799b2304af7c4db312
BLAKE2b-256 fe50b89df8760f5ba5afdf20e695798f64cd03c0c5e227fc30b990367d102839

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page