superset 汉化(国际化 本地化)

简介

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

6、重启superset即可

你可能感兴趣的:(superset 汉化(国际化 本地化))