Superset页面默认展示的是英文,汉化需要修改config.py文件中的BABEL_DEFAULT_LOCALE变量为'zh'(默认是'en'),之后重启应用才会生效
代码片段如下:
# ---------------------------------------------------
# Babel config for translations
# ---------------------------------------------------
# Setup default language
BABEL_DEFAULT_LOCALE = "en"
# Your application default translation path
BABEL_DEFAULT_FOLDER = "superset/translations"
# The allowed translation for you app
LANGUAGES = {
"en": {"flag": "us", "name": "English"},
"es": {"flag": "es", "name": "Spanish"},
"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"},
"pt": {"flag": "pt", "name": "Portuguese"},
"pt_BR": {"flag": "br", "name": "Brazilian Portuguese"},
"ru": {"flag": "ru", "name": "Russian"},
"ko": {"flag": "kr", "name": "Korean"},
}
BABEL_DEFAULT_LOCALE定义了默认使用的语言
BABEL_DEFAULT_FOLDER定义了语言包所在位置
LANGUAGES定义了现有支持的语言
中文语言的文件位于 translations/zh/LC_MESSAGES/目录下,在开发时可以根据需要自定义值
1.前端使用:在superset-ui/core/lib/translation/TranslatorSingleton.d.ts 中定义了 t 方法引用定义的国际化资源值
2.后端使用: 调用了flask_babel,其中 gettext 和 lazy_gettext的区别在于后者的文字被使用时才会被翻译
使用示例如下:
from flask_babel import gettext as __, lazy_gettext as _
value = __("key")
汉化后的效果如下: