Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
71 changes: 71 additions & 0 deletions src/common/channel/translate/info/MTranServerInfo.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
export default {
name: 'MTranServer翻译',
// 是否需要秘钥
isKey: true,
// 是否单秘钥
isOneAppKey: true,
// 构建时默认信息
defaultInfo: {
requestUrl: 'http://localhost:8989'
},
// 翻译语言
languageList: [
{
languageName: '中文(简体)',
languageType: 'zh'
},
{
languageName: '中文(繁体)',
languageType: 'zh'
},
{
languageName: '英语',
languageType: 'en'
},
{
languageName: '日语',
languageType: 'ja'
},
{
languageName: '韩语',
languageType: 'ko'
},
{
languageName: '法语',
languageType: 'fr'
},
{
languageName: '德语',
languageType: 'de'
},
{
languageName: '西班牙语',
languageType: 'es'
},
{
languageName: '意大利语',
languageType: 'it'
},
{
languageName: '俄语',
languageType: 'ru'
},
{
languageName: '葡萄牙语',
languageType: 'pt'
},
{
languageName: '阿拉伯语',
languageType: 'ar'
},
{
languageName: '波兰语',
languageType: 'pl'
},
{
languageName: '波斯语',
languageType: 'fa'
}
]
}

5 changes: 5 additions & 0 deletions src/common/enums/TranslateServiceEnum.ts
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,11 @@ class TranslateServiceEnum {
*/
static EC_DICT = 'EcDict'

/**
* MTranserver翻译服务
*/
static MTRAN_SERVER = 'MTranServer'

}

export default TranslateServiceEnum
60 changes: 60 additions & 0 deletions src/main/service/channel/interfaces/MTranServerRequest.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
import HttpMethodType from '../../../enums/HttpMethodTypeClassEnum'
import { AxiosPromise } from 'axios'
import request from '../../../utils/request'
import https from 'https'

// 创建一个忽略SSL证书验证的agent
const httpsAgent = new https.Agent({
rejectUnauthorized: false
});

/**
* 翻译
*
* @param info 翻译信息
*/
const apiTranslate = (info): Promise<AxiosPromise> => {
// 如果info.languageType === auto,替换为en
if (info.languageType === 'auto') {
info.languageType = 'en'
}
const body = {
from: info.languageType,
to: info.languageResultType,
text: info.translateContent
}
return request({
baseURL: info.requestUrl,
url: '/translate',
method: HttpMethodType.POST,
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${info.appKey}`
},
data: body,
httpsAgent // 使用忽略SSL证书验证的agent
})
}

/**
* 健康检查
*
* @param info 检查信息
*/
const healthCheck = (info): Promise<AxiosPromise> => {
return request({
baseURL: info.requestUrl,
url: '/health',
method: HttpMethodType.GET,
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${info.appKey}`
},
httpsAgent // 使用忽略SSL证书验证的agent
})
}

export default {
apiTranslate,
healthCheck
}
76 changes: 76 additions & 0 deletions src/main/service/channel/product/translate/MTranServerChannel.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
import MTranServerRequest from "../../interfaces/MTranServerRequest"
import log from '../../../../utils/log'
import GlobalWin from '../../../GlobalWin'
import ITranslateInterface from './ITranslateInterface'
import { isNull } from "../../../../../common/utils/validate"
import TranslateChannelFactory from "../../factory/TranslateChannelFactory"
import { commonError } from "../../../../utils/RequestUtil"
import R from "../../../../../common/class/R"
import TranslateServiceEnum from "../../../../../common/enums/TranslateServiceEnum"

class MTranServerChannel implements ITranslateInterface {
/**
* 翻译
*
* @param info 翻译信息
*/
apiTranslate(info): void {
MTranServerRequest.apiTranslate(info)
.then((res) => {
log.info('[MTranServer] - 响应报文 : ', res)
const text = res['result']
if (isNull(text)) {
GlobalWin.mainWinSend(
TranslateChannelFactory.callbackName(info.type),
R.okIT(info, '翻译出现错误')
)
return
}
GlobalWin.mainWinSend(TranslateChannelFactory.callbackName(info.type), R.okIT(info, text))
})
.catch((err) => {
commonError('MTranServer翻译事件', err)
GlobalWin.mainWinSend(
TranslateChannelFactory.callbackName(info.type),
R.okIT(info, err.message)
)
})
}

/**
* 翻译校验
*
* @param info 翻译信息
*/
apiTranslateCheck(info): void {
MTranServerRequest.apiTranslate(info).then(
(res) => {
log.info('[MTranServer翻译校验密钥事件] - 响应报文 : ', res)
const target = res['result']
if (!target[0]) {
GlobalWin.setWin.webContents.send(
'api-check-translate-callback-event',
TranslateServiceEnum.MTRAN_SERVER,
R.errorD(info.responseData)
)
return
}
GlobalWin.setWin.webContents.send(
'api-check-translate-callback-event',
TranslateServiceEnum.MTRAN_SERVER,
R.okD(info.responseData)
)
},
(err) => {
commonError('MTranServer翻译校验密钥', err)

GlobalWin.mainWinSend(
TranslateChannelFactory.callbackName(info.type),
R.okIT(info, err.message)
)
}
)
}
}

export default MTranServerChannel
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,19 @@
/>
</el-form-item>

<el-form-item
v-if='translateServiceThis.type === TranslateServiceEnum.MTRAN_SERVER'
label='请求地址'
>
<el-input
v-model='translateServiceThis.requestUrl'
type='text'
placeholder='http://localhost:8989'
spellcheck='false'
/>
<span class='form-switch-span'> 留空默认:http://localhost:8989 </span>
</el-form-item>

<div class='translate-service-set-fun'>
<div class='translate-service-use-text'>
<el-tag v-if='checkIngStatus' type='info' effect='dark'> 验证中...</el-tag>
Expand Down