软件版本:5.8.1 r33241 11eaf62
系统版本:Windows 11 25H2
网络环境:直接连接外网
问题描述:使用“翻译来源 Weblate(最新翻译)”更新语言文件出现“ 跳过。此组件/语言未在 Weblate 上找到。”问题如何解决?操作界面如下图所示:
报错内容:
Traceback (most recent call last):
File "C:\ProgramData\slicer.org\Slicer 5.8.1\bin\Python\slicer\util.py", line 3303, in tryWithErrorDisplay
yield
File "C:/ProgramData/slicer.org/Slicer 5.8.1/slicer.org/Extensions-33241/LanguagePacks/lib/Slicer-5.8/qt-scripted-modules/LanguageTools.py", line 415, in onUpdateButton
self.logic.convertTsFilesToQmFiles()
File "C:/ProgramData/slicer.org/Slicer 5.8.1/slicer.org/Extensions-33241/LanguagePacks/lib/Slicer-5.8/qt-scripted-modules/LanguageTools.py", line 654, in convertTsFilesToQmFiles
slicer.util.logProcessOutput(lreleaseProcess)
File "C:\ProgramData\slicer.org\Slicer 5.8.1\bin\Python\slicer\util.py", line 3862, in logProcessOutput
raise CalledProcessError(retcode, proc.args, output=proc.stdout, stderr=proc.stderr)
subprocess.CalledProcessError: Command '['C:/ProgramData/slicer.org/Slicer 5.8.1/bin/../bin\\lrelease.EXE', 'C:/Users/Administrator/AppData/Local/Temp/Slicer/__SlicerTemp__2025-11-06_09+24+38.061\\Slicer_zh-Hans.ts']' returned non-zero exit status 1.
Caoyufu
(曹玉福)
2
这是 Slicer 这两天刚刚暴露出来的一个“官方级别”问题,不是你本机配置的问题。
你现在遇到的是 Weblate 源下载的中文 .ts 文件被 HTML 页面污染,导致 lrelease 转换失败,所以 Language Tools 报了:
lrelease.EXE ... returned non-zero exit status 1
而上面那些
跳过。此组件/语言未在 Weblate 上找到。
只是说明这些扩展目前没有 zh-Hans 词条,本身并不会让更新失败。(GitHub)
更关键的是:现在 Weblate 开了一个防机器人验证页面(“Making sure you’re not a bot!”),Slicer 去拉 .ts 时被重定向到这个页面,结果下载到的是一整个 HTML,而不是 XML 格式的 .ts 文件,lrelease 一解析就崩了。这个情况已经有人在 LanguagePacks 的 GitHub issues 里复现并说明了原因。(GitHub)
推荐解决办法:改用 “GitHub(每日更新)” 作为翻译来源
这是目前最简单、最干净的办法。
-
在 Slicer 中打开 Language Tools(你截图里的这个模块)。
-
在上方 “翻译来源(Input translations from)” 里:
- 把原来的 Weblate(最新翻译) 改成 GitHub(每日更新)。
-
点右边的 “刷新” 按钮。
-
在下面语言列表中勾选:
Chinese (Simplified Han script) (zh-Hans)。
-
点 “更新翻译文件”。
-
上面 “应用语言(Application language)” 选择 Chinese (China)。
-
点 “重启应用程序”。
GitHub 上存的是已经由开发者生成好的翻译文件(对应仓库 SlicerLanguageTranslations),是干净的 .ts/.qm 文件,不会被 Weblate 的验证码页面污染,因此不会再触发 lrelease.EXE 的错误。(GitHub)
如果你想确认一下自己的问题是不是这个
可以按错误提示里的路径去看一下下载的 .ts 文件:
-
根据报错中的路径,比如:
C:\Users\Administrator\AppData\Local\Temp\Slicer\__SlicerTemp__2025-11-06_09+24+38.061\Slicer_zh-Hans.ts
-
用记事本打开 Slicer_zh-Hans.ts。
-
如果文件一开头是类似:
<!doctype html><html lang="en"><head><title>Making sure you're not a bot!</title> ...
那就说明 你确实下载到了 Weblate 的“反机器人”HTML 页面,而不是正常的 TS 文件,这和 GitHub 上的 issue 描述一模一样。(GitHub)
这类文件不管用什么方式跑 lrelease 都会失败。
如果你一定要坚持用 “Weblate(最新翻译)”
暂时只能走稍微“折腾”的手工路线,比如:
-
直接去 GitHub 仓库 SlicerLanguageTranslations 下载干净的
Slicer_zh-Hans.ts、CTK_zh-Hans.ts 等中文 TS 文件;(GitHub)
-
覆盖掉本地临时目录 / 缓存里同名的损坏 TS;
-
然后在 Language Tools 里 不要再从 Weblate 下载,只让它执行“从 .ts 生成 .qm”的那一步。
但只要你再点一次 Weblate 下载,照样有可能又被验证码页面“污染”,所以不太推荐。
小结
您好,曹老师:
非常感谢您,您对大家的每个疑问既有来龙去脉的分析,又有条分缕析的解决办法指导,给大家很大的帮助。
我摸索出另一个办法,能即时把最新的翻译文件应用上:
- 从ht—tps://hosted.weblate.org/download/3d-slicer/3d-slicer/zh_Hans/下载单一简体中文的包含所有组件的语言包zip文件,到本地电脑;
- 解压缩zip,提取里面所有的
_zh-CN.ts结尾的语言文件到一个文件夹里;
- 语言工具选择“
本地文件夹(离线使用)”;
- 点击更新翻译文件;
对于这个帖子Slicer/Slicer/issues/8812,我有2个疑问:
- 代码编写者
lassoan说他没遇到这个问题,防机器人验证页面应该对所有人起作用,不知道他为什么没遇到。
- 这个软件有太多issue没有处理,可能已经没有足够精力了,所以这个问题可能几年内也不会有人去修改代码了。
Caoyufu
(曹玉福)
4
这个 bug 不是逻辑上必然 100% 触发,而是“只在被风控的部分 IP/请求特征上触发”。
数据中心 IP、云服务器 IP、某些国家/地区段,更容易被判定为“可疑流量”。urlquery.net+1
某些欧洲运营商段经常是“白名单气质”,几乎看不到验证页面。
现在借助Claude或ChatGPT可以自己动手修改并发布。