asgi-babel 0.10.0

Creator: railscoder56

Last updated:

Add to Cart

Description:

asgibabel 0.10.0

asgi-babel – Adds internationalization (i18n) support to ASGI applications (Asyncio / Trio / Curio)




Contents

Requirements
Installation
Usage

Usage with Curio async library


Options
How to extract & compile locales:
Bug tracker
Contributing
License



Requirements

python >= 3.9



Installation
asgi-babel should be installed using pip:
pip install asgi-babel


Usage
Common ASGI applications:
from asgi_babel import BabelMiddleware, current_locale, gettext

async def my_app(scope, receive, send):
"""Get a current locale."""
locale = current_locale.get().language.encode()
hello_world = gettext('Hello World!').encode()

await send({"type": "http.response.start", "status": 200})
await send({"type": "http.response.body", "body": b"Current locale is %s\n" % locale})
await send({"type": "http.response.body", "body": hello_world})

app = BabelMiddleware(my_app, locales_dirs=['tests/locales'])

# http GET /
#
# Current_locale is en
# Hello World!

# http GET / "accept-language: ft-CH, fr;q-0.9"
#
# Current_locale is fr
# Bonjour le monde!
As ASGI-Tools Internal middleware
from asgi_tools import App
from asgi_babel import BabelMiddleware, gettext

app = App()
app.middleware(BabelMiddleware.setup(locales_dirs=['tests/locales']))

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

@app.route('/locale')
async def locale(request):
return current_locale.get().language

Usage with Curio async library
The asgi-babel uses context variable to set current locale. To enable the
context variables with curio you have to run Curio with contextvars
support:
from curio.task import ContextTask

curio.run(main, taskcls=ContextTask)



Options
The middleware’s options with default values:
from asgi_babel import BabelMiddleware

app = BabelMiddleware(

# Your ASGI application
app,

# Default locale
default_locale='en',

# A path to find translations
locales_dirs=['locales']

# A function with type: typing.Callable[[asgi_tools.Request], t.Awaitable[t.Optional[str]]]
# which takes a request and default locale and return current locale
locale_selector=asgi_babel.select_locale_by_request,

)


How to extract & compile locales:
http://babel.pocoo.org/en/latest/messages.html
http://babel.pocoo.org/en/latest/cmdline.html


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


Contributing
Development of the project happens at: https://github.com/klen/asgi-babel


License
Licensed under a MIT license.

License

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Customer Reviews

There are no reviews.