diff --git a/src/common/channel/translate/info/MTranServerInfo.ts b/src/common/channel/translate/info/MTranServerInfo.ts new file mode 100644 index 0000000..c5ea8a5 --- /dev/null +++ b/src/common/channel/translate/info/MTranServerInfo.ts @@ -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' + } + ] + } + \ No newline at end of file diff --git a/src/common/enums/TranslateServiceEnum.ts b/src/common/enums/TranslateServiceEnum.ts index 283e4f2..6ca3e9b 100644 --- a/src/common/enums/TranslateServiceEnum.ts +++ b/src/common/enums/TranslateServiceEnum.ts @@ -107,6 +107,11 @@ class TranslateServiceEnum { */ static EC_DICT = 'EcDict' + /** + * MTranserver翻译服务 + */ + static MTRAN_SERVER = 'MTranServer' + } export default TranslateServiceEnum diff --git a/src/main/service/channel/interfaces/MTranServerRequest.ts b/src/main/service/channel/interfaces/MTranServerRequest.ts new file mode 100644 index 0000000..15d5b81 --- /dev/null +++ b/src/main/service/channel/interfaces/MTranServerRequest.ts @@ -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 => { + // 如果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 => { + 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 +} \ No newline at end of file diff --git a/src/main/service/channel/product/translate/MTranServerChannel.ts b/src/main/service/channel/product/translate/MTranServerChannel.ts new file mode 100644 index 0000000..165fa10 --- /dev/null +++ b/src/main/service/channel/product/translate/MTranServerChannel.ts @@ -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 \ No newline at end of file diff --git a/src/renderer/src/assets/translate/MTranServerLogo.png b/src/renderer/src/assets/translate/MTranServerLogo.png new file mode 100644 index 0000000..85a93fa Binary files /dev/null and b/src/renderer/src/assets/translate/MTranServerLogo.png differ diff --git a/src/renderer/src/set/components/fun/serviceConfig/TranslateService.vue b/src/renderer/src/set/components/fun/serviceConfig/TranslateService.vue index b875ced..f5b10bb 100644 --- a/src/renderer/src/set/components/fun/serviceConfig/TranslateService.vue +++ b/src/renderer/src/set/components/fun/serviceConfig/TranslateService.vue @@ -153,6 +153,19 @@ /> + + + 留空默认:http://localhost:8989 + +
验证中...