SuperSet完全汉化攻略

SuperSet是Apache的开源可视化工具,本身提供了汉化功能,但是并不完全,工程师需将config.py中的“en”改为“zh”,就可实现部分汉化,在国际化文件夹中包含了两个重要文件:messages.po/essages.json,messages.po是用于将py文件中的对应字段进行汉化,只要导入对应模块,使用_("")将字段包围即可进行翻译。而messages.json则是用来对js文件进行汉化,这里指的是jsx文件,只需要使用{t()}将字段包围即可。

1、在.py文件中需要汉化的字段,可以使用

label_columns={'user':_("User")}

的方式进行国际化连接到汉化文件,并在messages.po文件中填写

msgid "User"

msgstr "用户"

的方式进行对应汉化,之后再superset根目录下执行命令

sudo pybabel compile -d translations

会将messages.po编译为messages.mo,之后将应用重新启动即可实现对应字段的汉化。

一般来说,大部分的字段都是默认写为_开头的py文件,只需要在po文件中直接填写对应的汉化即可,但是有一些字段并没有,这时候就需要我们自己进行对应的py文件填写了,一般情况下,如果同一个页面,比如一个列表中部分字段实现了汉化,部分没有,那么很有可能是messages.po文件中没有对应字段,但是也可能是在对应的label_colums中没有田间对该字段的转化。

2、在jsx文件中需要的汉化

superset是使用python的一个框架(具体我也没有详细了解),将jsx文件(类似javascript文件)静态编译为不可修改的jsx.html文件,一般情况下,如果在jsx文件或者是jsx.html文件中的字段使用

{t('user')}

格式的字段都是可以在messages.json文件中直接添加对应字段进行汉化的,而且汉化完不需要编译,直接进行重启即可:

"User": ["用户"],

但是有时候一些特殊的字段没有被t包括,那么我们可以修改jsx文件,只需要将对应的字段用{t()}然后进行一下包括就可以了。不过这里修改完之后是没有效果的,必须使用assets目录下的js_build.sh进行静态编译,将jsx文件编译为jsx.html之后就可以生效了,但是有时候某些字段会被包含在一个列表中,没有办法使用t进行包围,那么也可以直接使用汉字的形式。

你可能感兴趣的:(SuperSet完全汉化攻略)