sftpgo汉化处理
问题描述
官方提供的sftpgo webui的默认语言为英文, 没有待中文的语言包。实际上中文语言包已经翻译完毕,本文介绍一种在不重新编译的情况下为sftpgo的webui增加中文包的方法。
准备
- (已完成安装的跳过) 安装sftpgo的官方安装包, 这里例子中使用的是: sftpgo_v2.6.6_windows_portable.zip 具体下载地址: https://github.com/drakkan/sftpgo/releases
- 下载已经汉化的中文资源,其实际上是一个json文件, 可以参考这个:https://gitee.com/chenbichao/sftpgo-ryan/blob/master/static/locales/zh/translation.json
- sftpgo服务已可以正常使用
原理
webui的前端资源都已经在sftpgo的可执行文件的同级目录下存在,分别是template文件夹下的页面展示信息 和 static文件夹下的资源。通过直接修改template中的js代码可以增加页面中的语言选项,并在用户点击是自动下载该资源。资源数据下载后存储在浏览器的localstorage中,可能存在缓存。可能需要清理localstorage中该网址下的i18next开头的项。
操作步骤
- 修改 template/common/base.html
搜索 Italiano 字样, 原始数据如下:
const lngs = {en: { nativeName: 'English' },it: { nativeName: 'Italiano' }};
将这部分修改为
const lngs = {en: { nativeName: 'English' },it: { nativeName: 'Italiano' },zh: { nativeName: '简体中文' }};
然后搜索 supportedLngs 字段, 原始数据如下:
supportedLngs: ["en", "it"],
将这部分修改为:
supportedLngs: ["en", "it", "zh"],
完成上述两处修改后保存文件
-
增加 static/locales/zh/translation.json 文件
把下载得到的translation.json文件 存放至 static/locales/zh/ 目录下(没有该目录则创建) -
清理浏览器的localstorage,并重启sftpgo服务
避免缓存影响.
结束.
补充说明
以上过程也适用于linux等环境下的sftpgo版本.
另外一种简化版思路
直接使用中文的translation.json覆盖意大利语的 static/locales/it/translation.json, 清理localstorage中的i18next_res_it-translation
项, 后续选意大利语实际上就会直接使用中文资源了.