/SimpleTranslator

一个简单的galgame翻译器。A simple galgame translator.

Primary LanguageJavaScript

简单翻译器-简介

这个翻译器可以读取剪贴板、或者使用内置的textractor提取游戏文本。它支持百度翻译和腾讯翻译,需要用户自己填写api账号和秘钥。

其实大部分功能其他翻译器都有,我做这个工具主要是为了有如下功能:

  1. 实时保存翻译结果并且可修改:这意味着你翻译过的文本再遇到时将瞬间调用本地结果。可以提高翻译速度、节省API额度。
  2. 自定义原文处理函数并无限叠加:正则替换、消除重复、限制字数等方法可以随意组合,用户也可以通过编辑目录下的js脚本来创建自己的处理函数。对于某些提取文本中带有额外杂乱信息、或高频刷新不需翻译的文本的情况,多个正则叠加有时是必要的。
  3. 通过替换原文中的数字并在翻译后替换回来,使得战斗文本等仅数字不同且易重复的文本也可以调用本地翻译。进一步提升了保存翻译功能的实用性。
  4. 界面简单,一个翻译窗口,一个设置窗口,无子窗口。

使用说明

打开工具后,会弹出一个透明的翻译窗口和不透明的设置窗口。

一、设置窗口

设置窗口

  1. API配置:左侧填写API账号,点击测试按钮会弹窗展示能否正常使用API。
  2. 游戏配置:右侧填写针对每个游戏的翻译配置,会以你填的名称为文件名保存至game文件夹内,推荐填游戏名。
  3. 每次修改游戏配置后都需要点击下方的“应用修改并保存”才能改变实际配置。
  4. 加载游戏配置:点击“选择文件”加载你之前保存过的游戏配置json文件。

二、翻译窗口

翻译窗口

  1. 拖动窗口:游戏名称、翻译状态以及最下方的白色区域处可拖动窗口。
  2. 开始翻译:点击后,若游戏配置完整则开始,否则会弹窗提示。
  3. 保存翻译:每次翻译都将自动保存至本地,保存翻译按钮只是用于在手动修改译文之后进行保存。
  4. 重新翻译:将当前展示的文本重新进行API翻译,如果没有配置上的变化,重翻一般是不会产生区别的。
  5. 打开设置:打开设置窗口。
  6. 关闭工具:完全关闭工具,关闭时会自动将缓存中的翻译数据存到文件(gameData文件夹内)中。你按altF4也可以。
  7. 按F12可打开后台,报错的时候后台会有error信息

三、剪贴板翻译

  1. 工具默认读取剪贴板的文字进行翻译,挂载程序后变为hook翻译。
  2. 右侧下方的两个大文本框展示了从剪贴板读取的原文,以及经过“原文处理”中层层函数处理的结果。

四、HOOK翻译

  1. 该功能使用Textracor读取游戏文本。
  2. 在设置窗口“选择程序”一栏中选择你要读取的游戏窗口(窗口标题),会弹窗提示挂载成功。
  3. 选择后,在游戏内刷新一些文本,设置窗口会出现读取到的文字栏,点击你要翻译的文字栏,该栏会变红,目前只支持同时选一个。
  4. 选择后,点击“应用修改并保存”,就可以应用你的配置,下次在打开游戏后加载该游戏配置,将会自动挂载。

五、术语功能

  1. 在翻译开启时,选中翻译窗口的原文中的内容,按ctrl+D,可弹出术语输入栏并自动聚焦。
  2. 输入自定义翻译并回车可以保存该术语及自定义翻译,不输入并按回车则将术语原文作为自定义翻译。
  3. 按ESC可取消术语设置。按删除可以删掉已经保存过的术语。
  4. 术语系统的说明:
    1. 找到术语后将其替换为"ACK-术语编号-AKC",翻译API会照搬这个意义不明的词,然后工具再从译文中替换为玩家给的术语翻译。
    2. 会一定程度影响翻译质量,因此尽量只在翻译难以接受的人名地名时用该功能。
    3. 也许会出现翻译API改变了该替换词的情况,如果出现请报告给我。

六、译文保存功能

  1. 该功能如无意外是全自动的,不需要管。
  2. 工具会把翻译过程中的所有文本-译文的对照,按照游戏名称分类记录下来,在之后遇到同一个句子就直接调用本地结果。
  3. 该功能主要针对RPG等游戏容易大量出现的重复文本(如战斗描述、道具描述),可以节省一部分宝贵的API翻译额度。
  4. 数字过滤的说明
    1. 工具会将文本中所有数字统一替换为“284503”,在译文中再替换回来。
    2. 这样是为了让(火球造成5点伤害)和(火球造成3点伤害)等文本可以适用同一本地结果,而不是多次调用API翻译。
    3. 目前还未发现这种数字替换会影响翻译质量,如果有请报告给我。

七、其他说明

  1. HOOK翻译使用Textracor,面对大部分引擎都可以成功读取文字,但效果未必理想。一般会出现以下问题:
    1. 语句部分重复:当文本逐字出现时会有该问题,尽可能调整到瞬间出现。
    2. 在句首掺杂其他信息如金币数量:一般不可避免,但可以通过“原文处理”中的正则或自定义函数来过滤。
    3. RM等引擎中大量刷新杂乱信息如双方HPMP等,同上,直接将这些内容匹配替换为空字符串即可不翻译。
  2. 不会正则?-我也不会,每次我都得看着教程写)总之如果有比较通用的正则我尽量直接写好。
  3. 原文过滤添加时的输入框是啥 -是textHandler.js中对应函数的参数,该脚本文件中有说明。 -正则替换第一个参数是正则表达式,第二个参数是替换结果。 -单字重复的参数是重复次数 -字数限制的参数是最大字数
  4. 目前win7无法使用,因为easywin这个包不兼容性win7,之后可能会想办法解决。

引用项目

easywin

clipboard-event

node-fetch

tencentcloud-sdk-nodejs

Textractor