Babel localisation support for aiohttp,适用maxwin团队的开发框架
Project description
rst file editor mw_aiohttp_babel =================== 修改aiohttp_babel源码,使它能适应 maxwin团队的开发框架
aiohttp_babel adds i18n and l10n support to aiohttp.
变更:
1,增加类似flask_babel的Babel类 2,_() 直接调用 babel.support.Translations.translation,原来的_()改为了lazy_gettext()
Babel使用样例:
import aiohttp_jinja2
from mw_aiohttp.web import Application
from mw_aiohttp_babel import Babel,_
babel = Babel(directory='/path/to/locales', domain='messages',default_locale='en_US')
# you can use your own locale detection method, if necessary.
# aiohttp_babel checks cookie parameter `locale` or `Accept-Language`
# header by default.
# def detector(request):
# if request.url.host == 'es.example.com':
# return 'es'
# elif request.url.host == 'zh.example.com':
# return 'zh'
# else:
# return 'en'
# set_locale_detector(detector)
jinja_loader = jinja2.FileSystemLoader('./templates')
app = Application()
babel.init_app(app)
aiohttp_jinja2.setup(app, loader=jinja_loader)
jinja_env = aiohttp_jinja2.get_env(app)
jinja_env.globals['_'] = _
保留aiohttp_babel的样例:
import aiohttp_jinja2
from mw_aiohttp.web import Application
from mw_aiohttp_babel.locale import (load_gettext_translations,
set_default_locale,
set_locale_detector)
from mw_aiohttp_babel.middlewares import babel_middleware, lazy_gettext as _
set_default_locale('en_GB') # set default locale, if necessary
# load compiled locales
load_gettext_translations('/path/to/locales', 'domain')
# you can use your own locale detection method, if necessary.
# aiohttp_babel checks cookie parameter `locale` or `Accept-Language`
# header by default.
def detector(request):
if request.url.host == 'es.example.com':
return 'es'
elif request.url.host == 'zh.example.com':
return 'zh'
else:
return 'en'
set_locale_detector(detector)
jinja_loader = jinja2.FileSystemLoader('./templates')
app = Application(middlewares=[babel_middleware])
aiohttp_jinja2.setup(app, loader=jinja_loader)
jinja_env = aiohttp_jinja2.get_env(app)
jinja_env.globals['_'] = _
创建多语言文件 :
创建pot模板
$ pybabel extract -F babel.cfg -o messages.pot app
创建多语言的po文件
> 简体中文
$ pybabel init -i messages.pot -d app/translations -l zh_CN
> 繁体中文
$ pybabel init -i messages.pot -d app/translations -l zh_TW
> 英文
$ pybabel init -i messages.pot -d app/translations -l en
更新多语言的po文件
$ pybabel update -i messages.pot -d app/translations
产生mo文件
$ pybabel compile -d app/translations
How to extract & compile locales:
Code from:
tornado-babel: https://github.com/openlabs/tornado-babel
django-babel: https://github.com/python-babel/django-babel
Changes
0.1.7 (2018-10-25)
fix gbk error
0.1.4 (2018-10-25)
修改readme.rst的错误
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.