anysoft 发表于 2023-5-11 11:19

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 14:09

本帖最后由 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)

shandian281 发表于 2023-5-11 11:29

抢个沙发再说,很详尽的内容,感谢大佬分享。{:301_997:}

27149 发表于 2023-5-11 11:30

感谢楼主分享!!还这么详细 …   收藏!

不知道改成啥 发表于 2023-5-11 11:38

虽然我用Xshell,还是支持下楼主{:1_918:}

独行剑侠 发表于 2023-5-11 11:45

感恩大佬!我之前一直用的版本太难用了。感谢~
https://pic3.pocoimg.cn/image/poco/works/54/2023/0421/07/16820323004453392_202118906.jpg

ghosttang 发表于 2023-5-11 11:55

翻译汉化真的是一个体力技术活

WX2886 发表于 2023-5-11 12:01

感谢大佬分享

冥界3大法王 发表于 2023-5-11 12:03

这汉化工具如何叫他不修改字号?{:301_974:}

anysoft 发表于 2023-5-11 12:21

冥界3大法王 发表于 2023-5-11 12:03
这汉化工具如何叫他不修改字号?

这个修改字号是啥?

koogg 发表于 2023-5-11 13:19

感谢大佬分享,虽然用的汉化版少,但是最初用的汉化版就是大佬的
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: Mobaxterm 全版本汉化教程,安全第一,授人以渔