https://github.com/lutinglt/superset-zh
Superset 汉化, Superset 中文版
https://github.com/lutinglt/superset-zh
apache-superset bi data-analytics superset
Last synced: 2 months ago
JSON representation
Superset 汉化, Superset 中文版
- Host: GitHub
- URL: https://github.com/lutinglt/superset-zh
- Owner: lutinglt
- License: apache-2.0
- Created: 2024-11-22T10:58:30.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-07-15T13:11:09.000Z (9 months ago)
- Last Synced: 2025-07-16T05:47:57.511Z (9 months ago)
- Topics: apache-superset, bi, data-analytics, superset
- Language: Python
- Homepage:
- Size: 405 KB
- Stars: 58
- Watchers: 3
- Forks: 16
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Superset 汉化/中文版
   
## 简介
[PR: 29476](https://github.com/apache/superset/pull/29476) 这个提交中删除了大量的中文翻译,导致 Superset 的中文翻译质量大幅下降, 在这次提交后便没有人再对中文翻译进行维护。
本项目基于 [PR: 27922](https://github.com/apache/superset/pull/27922) 的最后一次中文翻译提交,为了方便维护翻译, 用 Python 构建了翻译脚本, 改变了汉化步骤, 先生成 messages.json, 再通过 json 生成 messages.po 和 messages.mo, 此过程修复了一些翻译文件无法正常生效的问题.
## 部署
### Docker 镜像
#### 开箱即用
基于官方镜像生成, 修复了汉化问题, 仅保留中文和英文两种语言并且默认显示中文, 默认时区上海, 并添加了 PostgreSQL 和 MySQL 数据库驱动.
为了做到开箱即用, 修改了以下默认配置 (不推荐生产使用):
```python
SECRET_KEY = 'superset'
WTF_CSRF_ENABLED = False
TALISMAN_ENABLED = False
```
一键启动体验汉化版 Superset, (http://localhost:8080)
```bash
docker run -d --name superset -p 8080:8088 lutinglt/superset-zh
```
登录仍需执行以下命令 (命令创建一个管理员账户, 用户名密码均为 `admin`)
```bash
docker exec -it superset superset fab create-admin \
--username admin \
--firstname 'admin' \
--lastname 'admin' \
--email admin@superset.apache.org \
--password 'admin'
docker exec -it superset superset db upgrade
docker exec -it superset superset init
```
#### 自定义配置
参考配置 docker-compose.yml
```yml
services:
superset:
image: lutinglt/superset-zh
container_name: superset
hostname: superset
restart: always
ports:
- 8080:8088
volumes:
# sqlite 存储持久化
- ./superset:~/.superset
# 导入配置文件
- ./superset_config.py:/app/pythonpath/superset_config.py
```
参考配置 superset_config.py (PostgreSQL 数据库)
> [!NOTE]
>
> superset_config.py 会覆盖 config.py 里的配置, 优先级更高.
>
> SECRET_KEY 会用来签名 cookie 和加密 Superset 存储在数据库中的敏感数据
>
> 推荐使用 `openssl rand -base64 42` 命令生成一个足够复杂的安全密钥
```python
SECRET_KEY = 'superset'
SQLALCHEMY_DATABASE_URI = 'postgresql://username:password@postgres/database'
```
#### 手动构建
```bash
git clone https://github.com/lutinglt/superset-zh.git
cd superset-zh
docker build -t lutinglt/superset-zh .
```
> [!TIP]
>
> 4.1.1 有两个 Python 版本, 官方默认的基于 3.10, 无明显 BUG 的情况下本仓库将仅更新最新的稳定版镜像, 可以根据需要替换 Dockerfile 中 FROM 关键字后的基础镜像.
>
> 推荐使用最新的 Python 版本, 以提高性能和安全性, 但可能存在一些未知的 BUG, 请自行测试.
### 手动汉化
找到 Superset 安装目录下的 `translations` 目录, 找到 `zh/LC_MESSAGES` 目录
下载最新版本的 `messages.json` 和 `messages.mo` 文件复制到 `zh/LC_MESSAGES` 目录下
重启 Superset 查看汉化效果.
> [!IMPORTANT]
>
> config.py 里的 `LANGUAGES` 变量为空会关闭语言选择框, 默认为空, 参考配置:
>
>```python
>LANGUAGES = {
> "zh": {"flag": "cn", "name": "简体中文"},
> "en": {"flag": "us", "name": "English"},
>}
>```
> [!NOTE]
>
> superset_config.py 会覆盖 config.py 里的配置, 优先级更高.
> [!TIP]
>
> config.py 里的 `BABEL_DEFAULT_LOCALE` 变量可能会影响标题栏的汉化, 默认为 `en`, 如果标题栏没有汉化修改为 `zh` 下载最新的 `messages.po` 到 `zh/LC_MESSAGES` 目录下重新编译即可.
>
>```python
># 替换成自己的安装目录下的 translations 目录
># 编译报错请无视
>pybabel compile -d superset/translations
>```
> [!TIP]
>
> 官方镜像 Superset 2.1.0 之后安装的默认安全选项更为严格, 部署后登录不上, 或无法启动推荐添加以下配置(汉化版默认添加了这些配置):
>
> ```python
> SECRET_KEY = 'superset' # 安全密钥, 启动必须进行配置
> WTF_CSRF_ENABLED = False # 关闭 CSRF 验证
> TALISMAN_ENABLED = False # 关闭 TALISMAN 安全选项
> CONTENT_SECURITY_POLICY_WARNING = False # 关闭内容安全策略警告
> ```
## 脚本
> [!IMPORTANT]
>
> 脚本基于 Python 3.12 构建, 其中使用了一些类型注解可能会影响兼容性, 如有报错请自行删除, Python >= 3.8 理论上都可以直接运行, 安装依赖运行命令:
>
>```bash
>pip install -r requirements.txt
>```
脚本主要改变了汉化步骤, json 更有利于定位和修改翻译内容, 脚本另一个功能是筛选出没有翻译的部分, 直接补充即可, 不需要手动浏览或者使用一些翻译软件进行翻译.(例如: poedit)
### `generate_locales.py`
基于 Superset 项目下的 `superset/translations/messages.pot` 和 `superset/translations/zh/LC_MESSAGES/messages.po` 生成最新的需要翻译的内容, 然后取本项目下 `messages.json` 已翻译的部分, 覆盖需要翻译的内容, 生成全部翻译条目(包含未翻译)和筛选出未翻译的条目的 json 文件, 进行手动校验翻译过程, 方便补充新翻译和修改已翻译内容, 具体查看脚本中的文档注释内容.
### `generate_messages.py`
根据已经翻译的内容生成 Superset 前端需要的 `messages.json` 和 `messages.mo`, 具体查看脚本中的文档注释内容.
> [!NOTE]
>
> 如果只是少量的纠正和补充(可以直接定位的), 只修改 `messages.json` 文件即可
>
> 然后运行 `generate_locales.py` 和 `generate_messages.py` 生成 `messages.mo` 文件, 供自己立即查看效果
## 贡献
欢迎提交 PR, 修复汉化问题, 补充汉化内容或者优化翻译脚本.
汉化贡献仅需提交最新的 `messages.json` 文件即可.