superset国际化

最近由于工作需要研究开源可视化项目superset,由于其国际化做不怎么好,故而记录下国际化的过程,本篇本着『授人以鱼不如授人以渔』的原则,只叙述国际化的过程及方法,不提供直接的国际化文件。

为了方便讲解,我们假定superset安装目录为PYHTON_LIB=/usr/local/lib/python3.5/site-packages


1、修改PYHTON_LIB/superset-0.17.1-py3.5.egg/superset/config.py文件

注:如不是root用户,需要修改config.py的文件权限后,再进行修改。

修改点如下:

# ---------------------------------------------------
# Babel config for translations
# ---------------------------------------------------
# Setup default language
BABEL_DEFAULT_LOCALE = 'zh'
# Your application default translation path
BABEL_DEFAULT_FOLDER = 'babel/translations'
# The allowed translation for you app
LANGUAGES = {
    # 'en': {'flag': 'us', 'name': 'English'},
    # 'fr': {'flag': 'fr', 'name': 'French'},
    # 'es':{'flag': 'es', 'name': 'Spain'},
    # 'it':{'flag': 'it', 'name': 'Italy'},
    'zh': {'flag': 'cn', 'name': 'Chinese'},
}

说明:BABEL_DEFAULT_LOCALE设置默认的本地化环境

LANGUAGES:国际化的语言种类,你可以把注释全放开,这样就可以根据不同的语言环进行本地化,若要只提供一种语言,那么就可以放开你要使用的语言,而把其它的语言注释掉。

2、修改messages.po文件

路径:PYHTON_LIB/superset-0.17.1-py3.5.egg/superset/translations/zh/LC_MESSAGES

根据views.py视图中

from flask_babel import gettext as __
from flask_babel import lazy_gettext as _
可以判断出,只有"__"和"_"开头的才可以进行国际化,如
__("Import Dashboards")
_("Column")
然后到messages.po文件中找相应字符串,看是否已经国际化过,若没有,则在文件的尾部添加
msgid "Column"
msgstr "列"
msgid就是要国际化的字符串,而msgstr则是要翻译成的语言

3、编译messages.po文件为messages.mo
在终端中将目录切换到PYHTON_LIB/superset-0.17.1-py3.5.egg/superset/目录下,执行如下命令
pybabel compile -d translations
注意:要对translations目录及其子目录有写入权限

4、重启superset即可。

ps:以上只是superset的国际化,但类似下面panel之类的汉化,必须要修改appbuilder的汉化目录才能生效,目录在PYHTON_LIB/flask_appbuilder/translations/zh。

<think>好的,我现在需要帮助用户在Apache Superset中配置中文显示。根据用户提供的引用资料,特别是引用[2],用户提到系统原本是英文,但领导要求改成中文,虽然截图是中文,但有些翻译可能生硬。用户现在想知道如何正确配置中文显示。 首先,我应该回忆Superset国际化支持。Superset使用Flask-AppBuilder框架,支持多语言,包括中文。通常,配置语言需要在配置文件中设置,或者通过环境变量。 查看引用[1]的官网文档,可能涉及到修改`superset_config.py`文件,添加或修改`BABEL_DEFAULT_LOCALE`为'zh'。引用[2]中提到用户已经使用中文界面,但翻译可能有问题,说明可能需要更新翻译文件或者检查现有配置。 此外,引用[3]是关于在Amazon ECS上部署Superset的,可能涉及容器环境中的配置,但用户的问题更偏向配置而非部署,所以重点可能在配置文件。 可能的步骤包括: 1. 确认Superset版本,不同版本可能配置方式不同。 2. 修改`superset_config.py`,设置默认语言为中文。 3. 确保存在中文语言包,可能需要安装或更新。 4. 重启服务使配置生效。 5. 如果翻译不全,可能需要手动补充或等待版本更新。 需要检查用户是否已经正确配置了语言设置,或者是否缺少语言包。另外,可能存在缓存问题,导致界面没有立即切换,所以建议清除浏览器缓存。 现在,根据这些思路整理回答,确保步骤清晰,并引用提供的参考资料。</think>在Apache Superset中配置中文显示可通过以下步骤实现: ### 1. 修改配置文件 在`superset_config.py`中添加语言配置: ```python # 设置默认语言为中文 BABEL_DEFAULT_LOCALE = "zh" # 指定支持的语言列表 LANGUAGES = { "en": {"flag": "us", "name": "English"}, "zh": {"flag": "cn", "name": "Chinese"} } ``` 该配置通过Flask-AppBuilder的国际化功能实现界面语言切换[^2]。 ### 2. 验证语言包 确保已安装中文语言包: - 官方版本自v1.0起包含中文翻译 - 可通过检查`superset/translations/zh/LC_MESSAGES`目录确认 - 若缺失,需从源码库手动下载`.mo`翻译文件[^1] ### 3. 容器部署注意事项 若使用Docker或Amazon ECS Fargate部署(如引用[3]方案): ```dockerfile # 在构建镜像时设置环境变量 ENV LANG=zh_CN.UTF-8 \ BABEL_DEFAULT_LOCALE=zh ``` ### 4. 清除缓存 重启服务后,强制刷新浏览器缓存: ```bash # 开发环境重启 superset init superset run -p 8088 --with-threads --reload --debugger ``` ### 5. 已知限制 - 部分新功能可能缺少中文翻译 - 图表字段名称等元数据仍需手动汉化 - 仪表板URL中的中文需确保编码正确
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值