简介
Superset的国际化是通过Flask-Babel中的lazy_gettext()和gettext()来实现的。有关的详细的介绍可以参考国际化和本地化,本文将不再赘述。在superset中,lazy_gettext()和gettext()分别用和_来替代,如下图所示
from flask_babelimport gettextas __
from flask_babelimport lazy_gettextas _
import pandasas pd
import sqlalchemyas sqla
from sqlalchemyimport create_engine
from sqlalchemy.engine.urlimport make_url
from unidecodeimport unidecode
from werkzeug.routingimport BaseConverter
from werkzeug.utilsimport secure_filename
1、修改配置文件实现支持中文
$SUPERSET_HOME/config.py #笔者练习时所用SUPERT_HOME=~/pythonProjects/incubator-superset/superset
LANGUAGES = {
'en': {'flag':'us', 'name':'English'},
'it': {'flag':'it', 'name':'Italian'},
'fr': {'flag':'fr', 'name':'French'},
'zh': {'flag':'cn', 'name':'Chinese'},
'ja': {'flag':'jp', 'name':'Japanese'},
'de': {'flag':'de', 'name':'German'},
}
2、提取待翻译文本到messages.pot,并使用message.pot跟新messages.po
cd $SUPERSET_HOME
pybabel extract -F ./translations/babel.cfg -k _ -k __ -k t -k tn -k tct -o ./translations/messages.pot .
pybabel update -i ./translation/messages.pot -d ./translations/ -l zh
# 第一次生成messages.po时使用如下命令
#pybabel update -i ./translation/messages.pot -d ./translations/ -l zh
在之前的版本中babel.cfg存在的路径是$SUPERSET_HOME/babel
3、翻译新提取出的待翻译文本
如下,新生成的po或po中因为更新添加的新词条的msgstr,即翻译文本是空白,需添加翻译文本
msgid "Add Druid Cluster"
msgstr ""
msgid "Add Druid Datasource"
msgstr ""
msgid "Edit Druid Datasource"
msgstr ""
msgid "Show Druid Datasource"
msgstr ""
如下所示方式,添加需要汉化的文本
msgid "Add Druid Cluster"
msgstr "新增Druid集群"
msgid "Add Druid Datasource"
msgstr ""
msgid "Edit Druid Datasource"
msgstr ""
msgid "Show Druid Datasource"
msgstr ""
4、编译messages.po文件为messages.mo
$SUPERSET_HOME目录下,执行如下命令
pybabel compile -d translations
注意:要对translations目录及其子目录有写入权限
5、转messages.po文件为messages.json
npm install po2json -g
po2json -d superset -f jed1.x superset/translations/zh/LC_MESSAGES/messages.po superset/translations/zh/LC_MESSAGES/messages.json
网友评论