高级版的文本自动翻译机终于开发完成了,之前采用的是纯html的图形界面进行开发,但是还不够全自动,需要手动定位文件拷贝覆盖。理论像这种东西可以使用python进行开发,但本人只会前端和安卓。于是乎找到了一个折衷的办法,用nodeJS开发。
支持多种操作系统,包括Windows、Linux、Mac
使用免费(标准版)。支持术语库(高级版)。高级版一个月有200万免费字符使用权限。标准版无限使用。由于屎大棒里面尤其是FU里面有很多新造的词汇,采用术语库,可以极大降低翻译不准确的问题。
只需一个简单指令,就能自动翻译指定目录下的所有文件
可以参照之前的半自动翻译教程
进入node官网,选择你的系统对应的平台版本,以windows为例,分32位版本和64位版本,不清除的就选32位,因为64位兼容32位的程序,不过现在的系统一般都是64位的。下载完后双击安装,无脑下一步点击就行了。
node -v
需要注意的是,如果你的登录账户不是Administrator账户,这一步乃至后面的步骤可能会出现失败。那么就需要调用管理员权限的PowerShell。打开方式是,按住shift键同时右键win的徽标:
下载地址:github传送门 进入到源码根目录,最好不要有中文路径,在空白区域shift+右键,调出此处打开powershell 键入下面命令进行依赖安装。
npm install
上述图片就是成功截图。安装依赖途中可能会有杀毒软件报警,允许。另外前面说了,不是Adminstrtor账户的话,运行指令可能会失败,就只有打开管理员的powershell然后cd进源码目录进行安装。
/**
* 百度翻译api的key
* @type {string}
*/
const BD_TRANSLATE_KEY = ''
/**
* 百度翻译的api的appid
* @type {string}
*/
const BD_TRANSLATE_APP_ID = ''
/**
* 翻译的文件与文件之间的延迟,过于频繁会导致api调用失败
* @type {number} 毫秒
*/
const TRANSLATE_DELAY = 5000
/**
* 是否覆盖翻译
* @type {boolean} true--之前翻译过的会覆盖翻译 false--过滤掉之前翻译过的
*/
const TRANSLATE_COVER = false
/**
* 翻译的目标源目录
* @type {string}
*/
const TARGET_PATH='G:\\workspace\\StarBound\\FrackinUniverse-sChinese-Project\\translations\\texts\\objects\\mantizi'
相关配置如上所述,需要注意的是前两项为百度翻译的Key和Appid,TARGET_PATH这个目标源目录,windows下的文件分隔符是\,并且填入的时候,要加入转义字符,也就是两根反斜杠。
至此,项目配置就算完毕,接下来就是进行翻译指令了。
windows系统下以管理员模式双击start.bat即可开始翻译,其他系统自行进入src目录执行
node .\exe.js
以上面的TARGET_PATH的文件为例,执行这个指令后会出现
[G:\workspace\StarBound\FrackinUniverse-sChinese-Project\translations\texts\objects\mantizi\imperialbanner1\imperialbanner1.object.json
]
文件打开成功:3 准备读取:
翻译结果
当前文件已经翻译完全,跳过该文件
------------------------------------------------------------------
当前处理文件第2个文件:
[G:\workspace\StarBound\FrackinUniverse-sChinese-Project\translations\texts\objects\mantizi\imperialbanner2\imperialbanner2.object.json
]
文件打开成功:4 准备读取:
发现待翻译文本:
{
'0': 'A beautifully woven banner.',
'1': 'A bright woven banner. I wonder what the jewel in the middle means.',
'2': 'A sun? Or some kind of creature?',
'3': 'A thick woven banner depicting the imperial crest.',
'4': 'Floran usually avoid this sssymbol.',
'5': 'I enjoy the golden accents woven into the fabric.',
'6': 'Is the Empire nearby?',
'7': 'Mantizi Imperial Banner',
'8': 'Servire Imperium.',
'9': 'This banner looks like it has a beetle woven on it.'
}
请求参数合成结果:
A beautifully woven banner.
A bright woven banner. I wonder what the jewel in the middle means.
A sun? Or some kind of creature?
A thick woven banner depicting the imperial crest.
Floran usually avoid this sssymbol.
I enjoy the golden accents woven into the fabric.
Is the Empire nearby?
Mantizi Imperial Banner
Servire Imperium.
This banner looks like it has a beetle woven on it.
翻译结果
[
{ src: 'A beautifully woven banner.', dst: '编织精美的旗帜。' },
{
src: 'A bright woven banner. I wonder what the jewel in the middle means.',
dst: '鲜艳的编织横幅。我想知道中间的珠宝是什么意思。'
},
{ src: 'A sun? Or some kind of creature?', dst: '太阳?或者某种生物?' },
{
src: 'A thick woven banner depicting the imperial crest.',
dst: '描绘皇冠的粗织旗帜。'
},
{ src: 'Floran usually avoid this sssymbol.', dst: '弗洛兰通常避免使用这个符号。' },
{
src: 'I enjoy the golden accents woven into the fabric.',
dst: '我喜欢织入织物的金色口音。'
},
{ src: 'Is the Empire nearby?', dst: '帝国在附近吗?' },
{ src: 'Mantizi Imperial Banner', dst: '曼提兹帝国旗' },
{ src: 'Servire Imperium.', dst: '帝国服务。' },
{
src: 'This banner looks like it has a beetle woven on it.',
dst: '这面横幅上好像织着一只甲虫。'
}
]
------------------------------------------------------------------
重组结果
[
{
DeniedAlternatives: [],
Files: {
'objects/mantizi/imperialbanner2/imperialbanner2.object': [Array]
},
Texts: { Eng: 'A beautifully woven banner.', Chs: '编织精美的旗帜。' }
},
{
DeniedAlternatives: [],
Files: {
'objects/mantizi/imperialbanner2/imperialbanner2.object': [Array]
},
Texts: {
Eng: 'A bright woven banner. I wonder what the jewel in the middle means.',
Chs: '鲜艳的编织横幅。我想知道中间的珠宝是什么意思。'
}
},
{
DeniedAlternatives: [],
Files: {
'objects/mantizi/imperialbanner2/imperialbanner2.object': [Array]
},
Texts: { Eng: 'A sun? Or some kind of creature?', Chs: '太阳?或者某种生物?' }
},
{
DeniedAlternatives: [],
Files: {
'objects/mantizi/imperialbanner2/imperialbanner2.object': [Array]
},
Texts: {
Eng: 'A thick woven banner depicting the imperial crest.',
Chs: '描绘皇冠的粗织旗帜。'
}
},
{
DeniedAlternatives: [],
Files: {
'objects/mantizi/imperialbanner2/imperialbanner2.object': [Array]
},
Texts: {
Eng: 'Floran usually avoid this sssymbol.',
Chs: '弗洛兰通常避免使用这个符号。'
}
},
{
DeniedAlternatives: [],
Files: {
'objects/mantizi/imperialbanner2/imperialbanner2.object': [Array]
},
Texts: {
Eng: 'I enjoy the golden accents woven into the fabric.',
Chs: '我喜欢织入织物的金色口音。'
}
},
{
DeniedAlternatives: [],
Files: {
'objects/mantizi/imperialbanner2/imperialbanner2.object': [Array]
},
Texts: { Eng: 'Is the Empire nearby?', Chs: '帝国在附近吗?' }
},
{
DeniedAlternatives: [],
Files: {
'objects/mantizi/imperialbanner2/imperialbanner2.object': [Array]
},
Texts: { Chs: 'Mantizi帝国横幅', Eng: 'Mantizi Imperial Banner' }
},
{
DeniedAlternatives: [],
Files: {
'objects/mantizi/imperialbanner2/imperialbanner2.object': [Array]
},
Texts: { Chs: '服侍帝国。', Eng: 'Servire Imperium.' }
},
{
DeniedAlternatives: [],
Files: {
'objects/mantizi/imperialbanner2/imperialbanner2.object': [Array]
},
Texts: {
Eng: 'This banner looks like it has a beetle woven on it.',
Chs: '这面横幅上好像织着一只甲虫。'
}
}
]
从控制台的信息可以看见当前翻译文件的信息,当配置不覆盖翻译时,会自动跳过翻译完成的文件,增加翻译效率。 翻译成功后也会有相应提示:
当前处理文件第35个文件:
[G:\workspace\StarBound\FrackinUniverse-sChinese-Project\translations\texts\objects\mantizi\shared_imperialvaselarge\shared_imperialvas
elarge.json]
文件打开成功:4 准备读取:
发现待翻译文本:
{ '0': 'A large decorative glazed vase.' }
请求参数合成结果:
A large decorative glazed vase.
翻译结果
[ { src: 'A large decorative glazed vase.', dst: '一个装饰性的大玻璃花瓶。' } ]
------------------------------------------------------------------
重组结果
[
{
DeniedAlternatives: [],
Files: {
'objects/mantizi/imperialvaselarge1/imperialvaselarge1.object': [Array],
'objects/mantizi/imperialvaselarge2/imperialvaselarge2.object': [Array]
},
Texts: { Eng: 'A large decorative glazed vase.', Chs: '一个装饰性的大玻璃花瓶。' }
}
]
***********全部文件翻译完成**********
这一步不是必须,但是设置术语库可以增加翻译准确性,目前我搜集了一些关于矿石、液体和NPC名称的相关术语,文件在doc目录下面: 在百度翻译平台可以配置
术语库的操作会最大限度提升翻译精确度,但是机器是没有感情的,翻译完后,一定要挨个校对一下
- 1、支持单个文件翻译,只需修改project.config.js的TARGET_PATH为单个文件路径即可
- 2、优化了类似^orange;的翻译,现在会跳过这些翻译
- 控制台打印支持彩色文字显示