Muffin框架的本地化支持
项目描述
松饼-Babel – 是Muffin的扩展,通过Babel添加本地化支持。
要求
python >= 3.9
安装
松饼-Babel应使用pip安装
pip install muffin-babel
用法
初始化和设置插件
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!')
设置一个区域选择函数(默认情况下,插件解析accept-language头)
@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
在您的代码中使用babel.gettext,babel.pgettext可调用函数
@app.route('/')
def index(request):
return babel.gettext('Hello!')
Jinja2
Muffin-Babel与Muffin-Jinja2集成,因此如果您启用了muffin_jinja2插件,则插件在Jinja2模板的上下文中提供gettext和ngettext函数。
选项
名称 |
默认值 |
描述 |
---|---|---|
AUTO_DETECT_LOCALE |
True |
安装一个中间件以自动检测用户的区域设置 |
CONFIGURE_JINJA2 |
True |
通过muffin-jinja为jinja2模板安装国际化支持 |
DEFAULT_LOCALE |
"en" |
默认区域设置 |
DOMAIN |
"messages" |
默认本地化域 |
SOURCES_MAP |
Babel源映射 |
|
OPTIONS_MAP |
babel配置选项映射 |
在初始化插件时,您可以提供这些选项
babel.setup(app, default_locale='fr')
或者,在Muffin.Application配置中使用BABEL_前缀来设置它
BABEL_DEFAULT_LOCALE = 'fr'
Muffin.Application的配置选项不区分大小写
命令
此插件为您的Muffin应用增加了两个命令。
提取消息
从您的应用程序中提取字符串到本地化
$ muffin app_package babel_extract_messages [OPTIONS] appdir
翻译.po文件并编译翻译
$ muffin app_package babel_compile_messages [OPTIONS]
错误跟踪器
如果您有任何建议、错误报告或不满,请向https://github.com/klen/muffin-babel/issues的问题跟踪器报告
贡献
Muffin-Babel的开发发生在:https://github.com/klen/muffin-babel
贡献者
klen (Kirill Klenov)
许可协议
许可协议为MIT许可证。
项目详情
下载文件
下载适合您平台的文件。如果您不确定该选择哪个,请了解更多关于安装软件包的信息。