Mobaxterm 全版本汉化教程,安全第一,授人以渔
本帖最后由 anysoft 于 2023-5-11 15:40 编辑Mobaxterm 全版本汉化教程,安全第一,授人以渔。
- 包含Mobaxterm、MoTTYNew.exe、MobaRTE.exe等
- 界面翻译、非标字符翻译、16进制替换翻译
1. 前言
前两年曾经跟进Mobaxterm的版本汉化,由于个人时间问题22.1后续没更新了,陆续有朋友问我能否继续更新。
在此统一告知,因个人生活工作时间原因,没有足够的精力跟进更新,(基本不再跟进更新)。
在此发布详细的汉化流程/教程/语言资源等,喜欢使用新版本的小伙伴可以自己照着去翻译,另外Mobaxterm毕竟是远程连接的工具,处于安全考虑还是建议自己去翻译比较稳妥。(当然如果你不在意安全问题可以随意~~),看到论坛有朋友讲到有些汉化版中有后门,所以安全问题还是重视点。
另外偶然发现在GitHub上也有朋友一直跟进翻译,至于安全与否自行斟酌使用,不做评价。可以搜 MobaXterm Chinese Simplified
2. 工具准备
Sisulizer 4自己搜
用作界面翻译(因为Radialix 3部分界面反编译失败,无法展示和修改)
Radialix 3自己搜
用作界面翻译和非标字符翻译
aardio https://ide.update.aardio.com/releases/aardio.7z
用作16进制替换(有兴趣可以自己改成python脚本)
已经上传python3脚本(感谢GPT同学友情提供{:17_1062:}平替aardio脚本),可以看17楼或者直接资源下载
3. 翻译流程
视频B站已发布:(建议看视频,流程清晰)
MobaxTerm 汉化翻译教程_哔哩哔哩_bilibili
- sisulizer4翻译部分界面
- Radialix 3 翻译部分界面中只读字符对象,非标字符(只读)翻译
- aardio脚本进行16进制翻译
- 翻译 MoTTYNew.exe 和MobaRTE.exe 等
- 7z 替换 CygUtils.plugin 中插件
3.1 使用 sisulizer4
创建翻译项目
选择要翻译的程序
文件格式默认不要修改
不要全选,否则会导致翻译后程序无法正常加载插件包
选中扫描继承窗口
语言选中文简体就行,和翻译文件配套
项目创建完成后,选择“文件”-->“导入”,选择对应的tmx文件对程序进行自动翻译
选择tmx
翻译完成,右击左边的菜单,选择构建会在程序目录zh文件夹下生成一个翻译后的exe
把CygUtils.plugin 复制到zh文件夹,(不然程序启动会提示缺少包文件),启动zh文件夹下MobaXterm_Personal_23.1.exe即可看到翻译效果。
到了这里大部分已经翻译完成,还有一些界面及菜单问题需要下一步翻译
3.2 Radialix 3 翻译非标字符
创建项目
选择源语言为英语(美国)
非标字符标签页勾选提取非标字符串
目标设置选项页选择为:“创建本地化文件”
目标语言选择"中文(简体)"
在使用 Radialix 3 翻译时候,需要注意两点
1. 关联完记忆库后需要在菜单栏项目-->属性-->自动翻译中去掉模糊翻译
2. RT_RCDATA -- TFORMXTERM 和 TFORMPORTFORWARDINGEDIT,需要切换只读后翻译,再切换回来(确保被翻译和翻译后的对象处于非只读状态,也就是颜色不是灰色)
3.3 16进制替换
针对菜单和一些弹出对话框消息的字符需要用16进制替换
3.4 TTY和RTE替换
MoTTY为远程连接的ssh界面
MobaRTE为远程文件对比的程序
翻译流程参考3.1 3.2 即可
4. 资源
https://wwi.lanzoup.com/b0be9oscj
密码:h6k4
所有用到资源均已上传,其他程序自行搜索下载
5. 参考
不懂得可以参考大佬的教程
【汉化教程】--第4课:Radialix 3基础知识与自动翻译 - 『脱壳破解区』 - 吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn
【汉化教程】--第5课:程序的语言包文件制作 - 『脱壳破解区』 - 吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn
6.结语
同类产品
目前远程连接工具很多,收费的,免费的,开源的都有。英文版本也不是啥门槛,刚开始习惯中文,慢慢的用久了就可以全英文版本了。没必要为了中文或则好看而忽视了安全你问题。
Xshell / Portx / Termius / windterm /tabby
建议多端使用可以用Termius 免费版,window下喜欢花哨的话可以用 mobaxterm原版或自己翻译,服务器较多且经常传输文件建议还是用xshell吧。
本帖最后由 anysoft 于 2023-5-11 15:26 编辑
xuerff 发表于 2023-5-11 14:05
aardio脚本能不能仔细说说,顺便求一下脚本代码研究一下
其实和语言没关系。
就是一些字符串是直接二进制写在exe里边的,我用16进制方式读取整个exe文件后进行16进制替换,替换完了后写出到exe文件。
代码如下:写的非常粗暴
import console;
import crypt;
import crypt.bin;
console.log("开始翻译");
var path = "D:\Development\Softwares\MobaXterm\23.2_preview\zh";
var filename = "MobaXterm_Personal_23.2_Preview1_CHS.exe";
var translatefile = "D:\Development\Softwares\MobaXterm\rdmp\translate.ini";
var data = string.load(path + "\" + filename);
data = crypt.bin.encodeHex(data)
data = string.replace(data," ","");
data = string.replace(data,'\r\n',"");
data = string.replace(data,'\r',"");
data = string.replace(data,'\n',"");
data = string.upper(data);
var file = io.open(translatefile);
var line = "";
var count = 0;
var newfile = "";
while(file.read(0)){
line = file.read("%s");
if(#line > 3){
var tab = string.split(line,"\|");
if(string.find(data,tab)){
if(#tab!=#tab){
console.log(tab)
continue;
}
count++;
//if(string.find(data,tab)){
data = string.replace(data,tab,tab);
}else {
newfile = newfile+"\r\n"+line;
}
}
}
//^.*:
//;.*$
// \r\n
string.save(path + "\a.txt", newfile)
string.save(path + "\1" +filename ,crypt.bin.decodeHex(data));
console.log("翻译完成:" + count);
console.pause(true);
至于16进制怎么来的?
用hxd或者winhex等编辑器打开exe搜素关键字,找到对应16进制,然后关键词替换为中文,复制对应的16进制就输出成了 translate.ini文件
刚刚让GPT帮忙写了个python脚本,试了下好用又快
import binascii
import os
path = "D:\\Development\\Softwares\\MobaXterm\\23.2_preview\\zh"
input_file_name = "MobaXterm_Personal_23.2_Preview1_CHS.exe"
output_file_name = "2MobaXterm_Personal_23.2_Preview1_CHS.exe"
translate_file_name = "D:\\Development\\Softwares\\MobaXterm\\rdmp\\translate.ini"
# 打开要修改的exe文件
with open(os.path.join(path,input_file_name), 'rb') as f:
data = bytearray(f.read())
# 读取translate.ini文件并进行数据替换
with open(translate_file_name, 'r') as f:
for line in f:
# 按|分隔数据对
src, dest = line.strip().split('|')
# 将16进制字符串转换成字节数组
src_bytes = binascii.unhexlify(src)
dest_bytes = binascii.unhexlify(dest)
# 在data中搜索并替换数据对
offset = 0
while True:
# 在偏移量offset处开始搜索
offset = data.find(src_bytes, offset)
if offset == -1:
# 没有找到,退出循环
break
# 找到了,将原始数据替换为目标数据
print('找到一处,替换中...')
data = dest_bytes
# 移动偏移量到替换后的位置,避免重复替换
offset += len(dest_bytes)
# 输出修改后的exe文件
with open(os.path.join(path,output_file_name), 'wb') as f:
f.write(data) 抢个沙发再说,很详尽的内容,感谢大佬分享。{:301_997:} 感谢楼主分享!!还这么详细 … 收藏! 虽然我用Xshell,还是支持下楼主{:1_918:} 感恩大佬!我之前一直用的版本太难用了。感谢~
https://pic3.pocoimg.cn/image/poco/works/54/2023/0421/07/16820323004453392_202118906.jpg 翻译汉化真的是一个体力技术活 感谢大佬分享 这汉化工具如何叫他不修改字号?{:301_974:} 冥界3大法王 发表于 2023-5-11 12:03
这汉化工具如何叫他不修改字号?
这个修改字号是啥? 感谢大佬分享,虽然用的汉化版少,但是最初用的汉化版就是大佬的