From 3b52d28f5bf33e40df24ce4bd47ec242ce675e69 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=81=8D=E5=85=AE=E6=83=9A=E5=85=AE?= <101191390+HIllya51@users.noreply.github.com> Date: Thu, 3 Oct 2024 18:05:52 +0800 Subject: [PATCH] ... --- .../LunaTranslator/gui/inputdialog.py | 32 +++ .../LunaTranslator/gui/selecthook.py | 9 + .../LunaTranslator/myutils/commonbase.py | 16 +- LunaTranslator/LunaTranslator/myutils/hwnd.py | 11 +- .../LunaTranslator/myutils/ocrutil.py | 7 - .../LunaTranslator/ocrengines/baiduocr_X.py | 164 ++++++++++++-- .../LunaTranslator/ocrengines/baiduocr_ts.py | 78 ------- .../LunaTranslator/ocrengines/docsumo.py | 5 +- .../LunaTranslator/ocrengines/ocrspace.py | 1 - .../LunaTranslator/ocrengines/txocr.py | 168 ++++++++++++-- .../LunaTranslator/ocrengines/txocrtrans.py | 131 ----------- .../LunaTranslator/ocrengines/youdaocr.py | 155 ++++++++++++- .../ocrengines/youdaocrtrans.py | 164 -------------- .../LunaTranslator/textsource/texthook.py | 2 + .../LunaTranslator/translator/baiduapi.py | 79 ++++--- .../LunaTranslator/translator/caiyunapi.py | 6 +- .../translator/deeplapi-free.py | 5 +- .../LunaTranslator/translator/huoshanapi.py | 5 +- .../LunaTranslator/translator/tencentapi.py | 1 - .../LunaTranslator/translator/xiaoniu.py | 2 - .../LunaTranslator/translator/youdaoapi.py | 3 - .../LunaTranslator/winsharedutils.py | 5 +- .../files/defaultconfig/config.json | 50 ++--- .../files/defaultconfig/ocrsetting.json | 211 ++++++------------ .../files/defaultconfig/static_data.json | 2 +- .../defaultconfig/translatorsetting.json | 169 ++++---------- LunaTranslator/files/lang/ar.json | 35 +-- LunaTranslator/files/lang/cht.json | 35 +-- LunaTranslator/files/lang/cs.json | 35 +-- LunaTranslator/files/lang/de.json | 35 +-- LunaTranslator/files/lang/en.json | 35 +-- LunaTranslator/files/lang/es.json | 35 +-- LunaTranslator/files/lang/fr.json | 35 +-- LunaTranslator/files/lang/it.json | 35 +-- LunaTranslator/files/lang/ja.json | 35 +-- LunaTranslator/files/lang/ko.json | 35 +-- LunaTranslator/files/lang/nl.json | 35 +-- LunaTranslator/files/lang/pl.json | 35 +-- LunaTranslator/files/lang/pt.json | 35 +-- LunaTranslator/files/lang/ru.json | 35 +-- LunaTranslator/files/lang/sv.json | 35 +-- LunaTranslator/files/lang/th.json | 35 +-- LunaTranslator/files/lang/tr.json | 35 +-- LunaTranslator/files/lang/uk.json | 35 +-- LunaTranslator/files/lang/vi.json | 35 +-- LunaTranslator/files/lang/zh.json | 35 +-- otherlang.md | 2 +- plugins/CMakeLists.txt | 4 +- plugins/winsharedutils/screenshot.cpp | 34 +-- 49 files changed, 931 insertions(+), 1290 deletions(-) delete mode 100644 LunaTranslator/LunaTranslator/ocrengines/baiduocr_ts.py delete mode 100644 LunaTranslator/LunaTranslator/ocrengines/txocrtrans.py delete mode 100644 LunaTranslator/LunaTranslator/ocrengines/youdaocrtrans.py diff --git a/LunaTranslator/LunaTranslator/gui/inputdialog.py b/LunaTranslator/LunaTranslator/gui/inputdialog.py index 46ab3881..91dd4b5d 100644 --- a/LunaTranslator/LunaTranslator/gui/inputdialog.py +++ b/LunaTranslator/LunaTranslator/gui/inputdialog.py @@ -518,6 +518,8 @@ class autoinitdialog__(LDialog): continue oklines.append(line) lines = oklines + cachecombo = {} + cachehasref = {} for line in lines: if "k" in line: key = line["k"] @@ -548,6 +550,7 @@ class autoinitdialog__(LDialog): lineW.addItems(items) lineW.setCurrentIndex(dd.get(key, 0)) regist[key] = lineW.currentIndex + cachecombo[key] = lineW elif line["type"] == "lineedit_or_combo": line1 = QLineEdit() lineW = QHBoxLayout() @@ -649,6 +652,12 @@ class autoinitdialog__(LDialog): lineW = SplitLine() formLayout.addRow(lineW) continue + refcombo = line.get("refcombo") + if refcombo: + if refcombo not in cachehasref: + cachehasref[refcombo] = [] + cachehasref[refcombo].append((lineW, line)) + refswitch = line.get("refswitch", None) if refswitch: hbox = QHBoxLayout() @@ -667,6 +676,29 @@ class autoinitdialog__(LDialog): formLayout.addRow(line["name"], lineW) else: formLayout.addRow(lineW) + + for comboname, refitems in cachehasref.items(): + + def refcombofunction(refitems, _i): + for w, linwinfo in refitems: + vis = True + if linwinfo.get("refcombo_i") is not None: + vis = linwinfo.get("refcombo_i") == _i + elif linwinfo.get("refcombo_i_r") is not None: + vis = linwinfo.get("refcombo_i_r") != _i + elif linwinfo.get("refcombo_l") is not None: + vis = _i in linwinfo.get("refcombo_l") + w.setVisible(vis) + formLayout.itemAt(formLayout.indexOf(w) - 1).widget().setVisible( + vis + ) + + cachecombo[comboname].currentIndexChanged.connect( + functools.partial(refcombofunction, refitems) + ) + cachecombo[comboname].currentIndexChanged.emit( + cachecombo[comboname].currentIndex() + ) self.show() diff --git a/LunaTranslator/LunaTranslator/gui/selecthook.py b/LunaTranslator/LunaTranslator/gui/selecthook.py index 9f9b74eb..70dfe08c 100644 --- a/LunaTranslator/LunaTranslator/gui/selecthook.py +++ b/LunaTranslator/LunaTranslator/gui/selecthook.py @@ -391,6 +391,7 @@ class hookselect(closeashidewindow): removehooksignal = pyqtSignal(tuple) getfoundhooksignal = pyqtSignal(dict) update_item_new_line = pyqtSignal(tuple, str) + warning = pyqtSignal(str) def __init__(self, parent): super(hookselect, self).__init__(parent, globalconfig["selecthookgeo"]) @@ -403,9 +404,17 @@ class hookselect(closeashidewindow): self.sysmessagesignal.connect(self.sysmessage) self.update_item_new_line.connect(self.update_item_new_line_function) self.getfoundhooksignal.connect(self.getfoundhook) + self.warning.connect(self.warningf) self.setWindowTitle("选择文本") self.changeprocessclear() + def warningf(self, text): + getQMessageBox( + self, + "警告", + text, + ) + def update_item_new_line_function(self, hook, output): if hook not in self.save: return diff --git a/LunaTranslator/LunaTranslator/myutils/commonbase.py b/LunaTranslator/LunaTranslator/myutils/commonbase.py index 0d3edc24..542264aa 100644 --- a/LunaTranslator/LunaTranslator/myutils/commonbase.py +++ b/LunaTranslator/LunaTranslator/myutils/commonbase.py @@ -56,20 +56,8 @@ class commonbase: return {} def countnum(self, query=None): - if "次数统计" in self._setting_dict[self.typename]["args"]: - try: - self._setting_dict[self.typename]["args"]["次数统计"] = str( - int(self.config["次数统计"]) + 1 - ) - except: - self._setting_dict[self.typename]["args"]["次数统计"] = "1" - if ("字数统计" in self._setting_dict[self.typename]["args"]) and query: - try: - self._setting_dict[self.typename]["args"]["字数统计"] = str( - int(self.config["字数统计"]) + len(query) - ) - except: - self._setting_dict[self.typename]["args"]["字数统计"] = str(len(query)) + # 防报错兼容性留置 + pass def checkempty(self, items): emptys = [] diff --git a/LunaTranslator/LunaTranslator/myutils/hwnd.py b/LunaTranslator/LunaTranslator/myutils/hwnd.py index 9270c73a..4f3ec44b 100644 --- a/LunaTranslator/LunaTranslator/myutils/hwnd.py +++ b/LunaTranslator/LunaTranslator/myutils/hwnd.py @@ -24,7 +24,8 @@ def clipboard_set_image(p: QImage): @threader def grabwindow(app="PNG", callback_origin=None, tocliponly=False): if tocliponly: - pass + fname = "" + uid = None elif callback_origin or tocliponly: fname = gobject.gettempdir(time.strftime("%Y-%m-%d-%H-%M-%S", time.localtime())) uid = None @@ -80,7 +81,7 @@ def grabwindow(app="PNG", callback_origin=None, tocliponly=False): callback(p, fname + "_gdi." + app) isshit = (not callback_origin) and (not tocliponly) - if (not p.isNull()) or isshit: + if p.isNull() or isshit: @threader def _(): @@ -194,10 +195,8 @@ def getExeIcon(name, icon=True, cache=False): succ = False if cache and os.path.exists(fn): try: - with open(fn, "rb") as ff: - data = ff.read() pixmap = QPixmap() - pixmap.loadFromData(data) + pixmap.load(fn) succ = True except: pass @@ -264,8 +263,6 @@ def safepixmap(bs): pixmap.loadFromData(bs) if pixmap.isNull(): return QPixmap() - if pixmap.toImage().allGray(): - return QPixmap() return pixmap diff --git a/LunaTranslator/LunaTranslator/myutils/ocrutil.py b/LunaTranslator/LunaTranslator/myutils/ocrutil.py index 1d3577ad..cc9da9c4 100644 --- a/LunaTranslator/LunaTranslator/myutils/ocrutil.py +++ b/LunaTranslator/LunaTranslator/myutils/ocrutil.py @@ -9,13 +9,6 @@ from traceback import print_exc import threading, gobject - -def binary2qimage(binary): - image = QImage() - image.loadFromData(binary) - return image - - def imageCut(hwnd, x1, y1, x2, y2) -> QImage: for _ in range(2): diff --git a/LunaTranslator/LunaTranslator/ocrengines/baiduocr_X.py b/LunaTranslator/LunaTranslator/ocrengines/baiduocr_X.py index 104c2315..ec17b583 100644 --- a/LunaTranslator/LunaTranslator/ocrengines/baiduocr_X.py +++ b/LunaTranslator/LunaTranslator/ocrengines/baiduocr_X.py @@ -1,9 +1,136 @@ import base64 from myutils.config import globalconfig from ocrengines.baseocrclass import baseocr +import random +from hashlib import md5 class OCR(baseocr): + + def ocr_ts1(self, imagebinary): + + accstoken = self.getaccess() + + params = { + "access_token": accstoken, + "from": self.srclangx, + "to": self.tgtlangx, + "v": "3", + "paste": "1", + } # '', + image = {"image": ("shit.png", imagebinary, "multipart/form-data")} + response = self.proxysession.post( + "https://aip.baidubce.com/file/2.0/mt/pictrans/v1", + params=params, + files=image, + ) + + try: + js = response.json() + text = [_["dst"] for _ in js["data"]["content"]] + box = [ + ( + l["points"][0]["x"], + l["points"][0]["y"], + l["points"][1]["x"], + l["points"][1]["y"], + l["points"][2]["x"], + l["points"][2]["y"], + l["points"][3]["x"], + l["points"][3]["y"], + ) + for l in js["data"]["content"] + ] + return {"box": box, "text": text, "isocrtranslate": True} + except: + raise Exception(response.text) + + def ocr_ts2(self, imagebinary): + self.checkempty(["app_id", "app_key"]) + endpoint = "http://api.fanyi.baidu.com" + path = "/api/trans/sdk/picture" + url = endpoint + path + + from_lang = self.srclangx + to_lang = self.tgtlangx + + # Set your own appid/appkey. + app_id = self.config["app_id"] + app_key = self.config["app_key"] + + # cuid & mac + cuid = "APICUID" + mac = "mac" + + # Generate salt and sign + def get_md5(string, encoding="utf-8"): + return md5(string.encode(encoding)).hexdigest() + + salt = random.randint(32768, 65536) + sign = get_md5( + app_id + md5(imagebinary).hexdigest() + str(salt) + cuid + mac + app_key + ) + + # Build request + payload = { + "from": from_lang, + "to": to_lang, + "appid": app_id, + "salt": salt, + "sign": sign, + "cuid": cuid, + "mac": mac, + } + + files = {"image": ("image.png", imagebinary, "multipart/form-data")} + response = self.proxysession.post(url, params=payload, files=files) + + try: + js = response.json() + text = [_["src"] for _ in js["data"]["content"]] + box = [ + ( + l["points"][0]["x"], + l["points"][0]["y"], + l["points"][1]["x"], + l["points"][1]["y"], + l["points"][2]["x"], + l["points"][2]["y"], + l["points"][3]["x"], + l["points"][3]["y"], + ) + for l in js["data"]["content"] + ] + return {"box": box, "text": text, "isocrtranslate": True} + except: + raise Exception(response.text) + + @property + def srclangx(self): + return { + "es": "spa", + "ko": "kor", + "fr": "fra", + "ja": "jp", + "cht": "cht", + "vi": "vie", + "uk": "ukr", + "ar": "ara", + }.get(self.srclang_1, self.srclang_1) + + @property + def tgtlangx(self): + return { + "es": "spa", + "ko": "kor", + "fr": "fra", + "ja": "jp", + "cht": "cht", + "vi": "vie", + "uk": "ukr", + "ar": "ara", + }.get(self.tgtlang_1, self.tgtlang_1) + def langmap(self): return { "zh": "CHN_ENG", @@ -16,30 +143,34 @@ class OCR(baseocr): } def initocr(self): - self.appid, self.secretKey, self.accstoken = None, None, None - self.checkchange() + self.keys = {} + if self.config["接口"] != 5: + self.getaccess() - def checkchange(self): + def getaccess(self): self.checkempty(["API Key", "Secret Key"]) - if (self.config["API Key"], self.config["Secret Key"]) != ( - self.appid, - self.secretKey, - ): - self.appid, self.secretKey = ( - self.config["API Key"], - self.config["Secret Key"], - ) - self.accstoken = self.proxysession.get( + pair = (self.config["API Key"], self.config["Secret Key"]) + if pair not in self.keys: + accstoken = self.proxysession.get( "https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=" + self.appid + "&client_secret=" + self.secretKey ).json()["access_token"] + self.keys[pair] = accstoken + return self.keys[pair] def ocr(self, imagebinary): - self.checkchange() - if self.accstoken == "": - return "" + if self.config["接口"] in [0, 1, 2, 3]: + return self.ocr_x(imagebinary) + elif self.config["接口"] == 4: + return self.ocr_ts1(imagebinary) + elif self.config["接口"] == 5: + return self.ocr_ts2(imagebinary) + raise Exception("unknown") + + def ocr_x(self, imagebinary): + accstoken = self.getaccess() headers = { "authority": "aip.baidubce.com", "accept": "*/*", @@ -56,7 +187,7 @@ class OCR(baseocr): "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36 Edg/105.0.1343.53", } - params = {"access_token": self.accstoken} # '', + params = {"access_token": accstoken} # '', b64 = base64.b64encode(imagebinary) @@ -78,7 +209,6 @@ class OCR(baseocr): ) try: - self.countnum() if interfacetype in [0, 2]: return {"text": [x["words"] for x in response.json()["words_result"]]} else: diff --git a/LunaTranslator/LunaTranslator/ocrengines/baiduocr_ts.py b/LunaTranslator/LunaTranslator/ocrengines/baiduocr_ts.py deleted file mode 100644 index 6b3a6259..00000000 --- a/LunaTranslator/LunaTranslator/ocrengines/baiduocr_ts.py +++ /dev/null @@ -1,78 +0,0 @@ -import random -from hashlib import md5 -from ocrengines.baseocrclass import baseocr - - -class OCR(baseocr): - - def langmap(self): - return { - "es": "spa", - "ko": "kor", - "fr": "fra", - "ja": "jp", - "cht": "cht", - "vi": "vie", - "uk": "ukr", - "ar": "ara", - } - - def ocr(self, imagebinary): - self.checkempty(["app_id", "app_key"]) - endpoint = "http://api.fanyi.baidu.com" - path = "/api/trans/sdk/picture" - url = endpoint + path - - from_lang = self.srclang - to_lang = self.tgtlang - - # Set your own appid/appkey. - app_id = self.config["app_id"] - app_key = self.config["app_key"] - - # cuid & mac - cuid = "APICUID" - mac = "mac" - - # Generate salt and sign - def get_md5(string, encoding="utf-8"): - return md5(string.encode(encoding)).hexdigest() - - salt = random.randint(32768, 65536) - sign = get_md5( - app_id + md5(imagebinary).hexdigest() + str(salt) + cuid + mac + app_key - ) - - # Build request - payload = { - "from": from_lang, - "to": to_lang, - "appid": app_id, - "salt": salt, - "sign": sign, - "cuid": cuid, - "mac": mac, - } - - files = {"image": ("image.png", imagebinary, "multipart/form-data")} - response = self.proxysession.post(url, params=payload, files=files) - - try: - js = response.json() - text = [_["src"] for _ in js["data"]["content"]] - box = [ - ( - l["points"][0]["x"], - l["points"][0]["y"], - l["points"][1]["x"], - l["points"][1]["y"], - l["points"][2]["x"], - l["points"][2]["y"], - l["points"][3]["x"], - l["points"][3]["y"], - ) - for l in js["data"]["content"] - ] - return {"box": box, "text": text, "isocrtranslate": True} - except: - raise Exception(response.text) diff --git a/LunaTranslator/LunaTranslator/ocrengines/docsumo.py b/LunaTranslator/LunaTranslator/ocrengines/docsumo.py index 4cef5b4a..ddff6ad2 100644 --- a/LunaTranslator/LunaTranslator/ocrengines/docsumo.py +++ b/LunaTranslator/LunaTranslator/ocrengines/docsumo.py @@ -32,9 +32,6 @@ class OCR(baseocr): ) # print(response.json()) try: - - _ = response.json()["data"] - self.countnum() - return _ + return response.json()["data"] except: raise Exception(response.text) diff --git a/LunaTranslator/LunaTranslator/ocrengines/ocrspace.py b/LunaTranslator/LunaTranslator/ocrengines/ocrspace.py index 392ce49c..6d1a4089 100644 --- a/LunaTranslator/LunaTranslator/ocrengines/ocrspace.py +++ b/LunaTranslator/LunaTranslator/ocrengines/ocrspace.py @@ -69,7 +69,6 @@ class OCR(baseocr): _["LineText"] for _ in response.json()["ParsedResults"][0]["TextOverlay"]["Lines"] ] - self.countnum() return {"box": boxs, "text": texts} except: raise Exception(response.text) diff --git a/LunaTranslator/LunaTranslator/ocrengines/txocr.py b/LunaTranslator/LunaTranslator/ocrengines/txocr.py index b50cb895..2157a843 100644 --- a/LunaTranslator/LunaTranslator/ocrengines/txocr.py +++ b/LunaTranslator/LunaTranslator/ocrengines/txocr.py @@ -1,9 +1,151 @@ from hashlib import sha1 -import time, random, hmac, base64 +import time, random, hmac, base64, uuid, hashlib, json from ocrengines.baseocrclass import baseocr class OCR(baseocr): + @property + def region(self): + try: + return [ + "ap-beijing", + "ap-guangzhou", + "ap-hongkong", + "ap-seoul", + "ap-shanghai", + "ap-singapore", + ][self.config["Region"]] + except: + return "ap-beijing" + + @property + def langocr(self): + s = self.srclang_1 + return { + "zh": "zh", + "cht": "zh", + "ja": "jap", + "ko": "kor", + "es": "spa", + "fr": "fre", + "de": "ger", + "pt": "por", + "vi": "vie", + "ru": "rus", + "it": "ita", + "it": "hol", + "sv": "swe", + "hu": "hun", + "th": "tha", + "ar": "ara", + }.get(s, "auto") + + def langmap(self): + # https://cloud.tencent.com/document/product/551/17232 + return {"cht": "zh-TW"} + + def ocr_fy(self, imagebinary): + self.checkempty(["SecretId", "SecretKey"]) + + encodestr = str(base64.b64encode(imagebinary), "utf-8") + req_para = { + "Source": self.srclang, + "Target": self.tgtlang, + "ProjectId": int(self.config["ProjectId"]), + "Data": encodestr, + "SessionUuid": str(uuid.uuid4()), + "Scene": "doc", + } + + def sha256(message, secret=""): + return hmac.new(secret, message, hashlib.sha256).digest() + + def getHash(message): + return hashlib.sha256(message).hexdigest() + + version = "2018-03-21" + action = "ImageTranslate" + endpoint = "tmt.tencentcloudapi.com" + httpRequestMethod = "POST" + canonicalUri = "/" + canonicalQueryString = "" + canonicalHeaders = "content-type:application/json\n" + "host:" + endpoint + "\n" + signedHeaders = "content-type;host" + payload = json.dumps(req_para) + hashedRequestPayload = getHash(payload.encode()) + canonicalRequest = ( + httpRequestMethod + + "\n" + + canonicalUri + + "\n" + + canonicalQueryString + + "\n" + + canonicalHeaders + + "\n" + + signedHeaders + + "\n" + + hashedRequestPayload + ) + algorithm = "TC3-HMAC-SHA256" + hashedCanonicalRequest = getHash(canonicalRequest.encode()) + date = time.strftime("%Y-%m-%d") + timestamp = str(int(time.time())) + service = "tmt" + credentialScope = date + "/" + service + "/" + "tc3_request" + stringToSign = ( + algorithm + + "\n" + + timestamp + + "\n" + + credentialScope + + "\n" + + hashedCanonicalRequest + ) + kDate = sha256(date.encode(), ("TC3" + self.config["SecretKey"]).encode()) + kService = sha256(service.encode(), kDate) + kSigning = sha256("tc3_request".encode(), kService) + signature = sha256(stringToSign.encode(), kSigning).hex() + authorization = ( + algorithm + + " " + + "Credential=" + + self.config["SecretId"] + + "/" + + credentialScope + + ", " + + "SignedHeaders=" + + signedHeaders + + ", " + + "Signature=" + + signature + ) + + r = self.proxysession.post( + url="https://tmt.tencentcloudapi.com", + headers={ + "Authorization": authorization, + "content-type": "application/json", + "Host": endpoint, + "X-TC-Action": action, + "X-TC-Timestamp": timestamp, + "X-TC-Version": version, + "X-TC-Region": self.region, + }, + data=payload, + ) + + try: + boxs = [ + (_["X"], _["Y"], _["X"] + _["W"], _["Y"] + _["H"]) + for _ in r.json()["Response"]["ImageRecord"]["Value"] + ] + texts = [ + _["TargetText"] for _ in r.json()["Response"]["ImageRecord"]["Value"] + ] + return {"box": boxs, "text": texts, "isocrtranslate": True} + except: + raise Exception(r.json()) + def langmap(self): # https://cloud.tencent.com/document/product/866/33526 return { @@ -19,26 +161,16 @@ class OCR(baseocr): "th": "tha", } - def ocr(self, imagebinary): + def ocr_ocr(self, imagebinary): self.checkempty(["SecretId", "SecretKey"]) encodestr = str(base64.b64encode(imagebinary), "utf-8") req_para = { - "LanguageType": self.srclang, + "LanguageType": self.langocr, "Action": "GeneralBasicOCR", "ImageBase64": encodestr, "Version": "2018-11-19", - "Region": [ - "ap-beijing", - "ap-guangzhou", - "ap-hongkong", - "ap-seoul", - "ap-shanghai", - "ap-singapore", - "na-toronto", - ][ - self.config["Region"] - ], # https://cloud.tencent.com/document/product/866/33526 + "Region": self.region, # https://cloud.tencent.com/document/product/866/33526 "Timestamp": int(time.time()), "Nonce": random.randint(1, 100000), "SecretId": self.config["SecretId"], @@ -78,3 +210,11 @@ class OCR(baseocr): return {"box": boxs, "text": texts} except: raise Exception(r.text) + + def ocr(self, imagebinary): + interfacetype = self.config["interface"] + if interfacetype == 0: + return self.ocr_ocr(imagebinary) + elif interfacetype == 1: + return self.ocr_fy(imagebinary) + raise Exception("unknown") diff --git a/LunaTranslator/LunaTranslator/ocrengines/txocrtrans.py b/LunaTranslator/LunaTranslator/ocrengines/txocrtrans.py deleted file mode 100644 index e6516422..00000000 --- a/LunaTranslator/LunaTranslator/ocrengines/txocrtrans.py +++ /dev/null @@ -1,131 +0,0 @@ -import hashlib -import time, hmac, base64, uuid, json -from ocrengines.baseocrclass import baseocr - - -class OCR(baseocr): - - def langmap(self): - # https://cloud.tencent.com/document/product/551/17232 - return {"cht": "zh-TW"} - - def ocr(self, imagebinary): - self.checkempty(["SecretId", "SecretKey"]) - - encodestr = str(base64.b64encode(imagebinary), "utf-8") - req_para = { - "Source": self.srclang, - "Target": self.tgtlang, - "ProjectId": int(self.config["ProjectId"]), - "Data": encodestr, - "SessionUuid": str(uuid.uuid4()), - "Scene": "doc", - } - - def sha256(message, secret=""): - return hmac.new(secret, message, hashlib.sha256).digest() - - def getHash(message): - return hashlib.sha256(message).hexdigest() - - region = [ - "ap-beijing", - "ap-shanghai", - "ap-chengdu", - "ap-chongqing", - "ap-guangzhou", - "ap-hongkong", - "ap-mumbai", - "ap-seoul", - "ap-shanghai-fsi", - "ap-shenzhen-fsi", - "ap-singapore", - "ap-tokyo", - "ap-bangkok", - "eu-frankfurt", - "na-ashburn", - "na-siliconvalley", - "na-toronto", - ][self.config["Region"]] - version = "2018-03-21" - action = "ImageTranslate" - endpoint = "tmt.tencentcloudapi.com" - httpRequestMethod = "POST" - canonicalUri = "/" - canonicalQueryString = "" - canonicalHeaders = "content-type:application/json\n" + "host:" + endpoint + "\n" - signedHeaders = "content-type;host" - payload = json.dumps(req_para) - hashedRequestPayload = getHash(payload.encode()) - canonicalRequest = ( - httpRequestMethod - + "\n" - + canonicalUri - + "\n" - + canonicalQueryString - + "\n" - + canonicalHeaders - + "\n" - + signedHeaders - + "\n" - + hashedRequestPayload - ) - algorithm = "TC3-HMAC-SHA256" - hashedCanonicalRequest = getHash(canonicalRequest.encode()) - date = time.strftime("%Y-%m-%d") - timestamp = str(int(time.time())) - service = "tmt" - credentialScope = date + "/" + service + "/" + "tc3_request" - stringToSign = ( - algorithm - + "\n" - + timestamp - + "\n" - + credentialScope - + "\n" - + hashedCanonicalRequest - ) - kDate = sha256(date.encode(), ("TC3" + self.config["SecretKey"]).encode()) - kService = sha256(service.encode(), kDate) - kSigning = sha256("tc3_request".encode(), kService) - signature = sha256(stringToSign.encode(), kSigning).hex() - authorization = ( - algorithm - + " " - + "Credential=" - + self.config["SecretId"] - + "/" - + credentialScope - + ", " - + "SignedHeaders=" - + signedHeaders - + ", " - + "Signature=" - + signature - ) - - r = self.proxysession.post( - url="https://tmt.tencentcloudapi.com", - headers={ - "Authorization": authorization, - "content-type": "application/json", - "Host": endpoint, - "X-TC-Action": action, - "X-TC-Timestamp": timestamp, - "X-TC-Version": version, - "X-TC-Region": region, - }, - data=payload, - ) - - try: - boxs = [ - (_["X"], _["Y"], _["X"] + _["W"], _["Y"] + _["H"]) - for _ in r.json()["Response"]["ImageRecord"]["Value"] - ] - texts = [ - _["TargetText"] for _ in r.json()["Response"]["ImageRecord"]["Value"] - ] - return {"box": boxs, "text": texts, "isocrtranslate": True} - except: - raise Exception(r.json()) diff --git a/LunaTranslator/LunaTranslator/ocrengines/youdaocr.py b/LunaTranslator/LunaTranslator/ocrengines/youdaocr.py index 5220b901..ccb76bc3 100644 --- a/LunaTranslator/LunaTranslator/ocrengines/youdaocr.py +++ b/LunaTranslator/LunaTranslator/ocrengines/youdaocr.py @@ -84,7 +84,6 @@ class OCR(baseocr): headers = {"Content-Type": "application/x-www-form-urlencoded"} response = self.proxysession.post(YOUDAO_URL, data=data, headers=headers) - self.countnum() try: _ = [] for l in response.json()["Result"]["regions"]: @@ -96,10 +95,158 @@ class OCR(baseocr): except: raise Exception(response.text) + def freetest_ts(self, imagebinary): + + headers = { + "authority": "aidemo.youdao.com", + "accept": "*/*", + "accept-language": "zh-CN,zh;q=0.9", + "content-type": "application/x-www-form-urlencoded; charset=UTF-8", + "origin": "https://ai.youdao.com", + "referer": "https://ai.youdao.com/", + "sec-ch-ua": '"Chromium";v="106", "Google Chrome";v="106", "Not;A=Brand";v="99"', + "sec-ch-ua-mobile": "?0", + "sec-ch-ua-platform": '"Windows"', + "sec-fetch-dest": "empty", + "sec-fetch-mode": "cors", + "sec-fetch-site": "same-site", + "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36", + } + b64 = base64.b64encode(imagebinary) + data = { + "imgBase": "data:image/jpeg;base64," + str(b64, encoding="utf8"), + "lang": "", + "company": "", + } + + response = self.proxysession.post( + "https://aidemo.youdao.com/ocrtransapi1", headers=headers, data=data + ) + + try: + return { + "text": [l["tranContent"] for l in response.json()["lines"]], + "isocrtranslate": True, + } + except: + raise Exception(response.text) + + def ocrapi_ts(self, imagebinary): + + self.checkempty(["APP_KEY", "APP_SECRET"]) + APP_KEY, APP_SECRET = self.config["APP_KEY"], self.config["APP_SECRET"] + + """ + 添加鉴权相关参数 - + appKey : 应用ID + salt : 随机值 + curtime : 当前时间戳(秒) + signType : 签名版本 + sign : 请求签名 + + @param appKey 您的应用ID + @param appSecret 您的应用密钥 + @param paramsMap 请求参数表 + """ + + def addAuthParams(appKey, appSecret, params): + q = params.get("q") + if q is None: + q = params.get("img") + salt = str(uuid.uuid1()) + curtime = str(int(time.time())) + sign = calculateSign(appKey, appSecret, q, salt, curtime) + params["appKey"] = appKey + params["salt"] = salt + params["curtime"] = curtime + params["signType"] = "v3" + params["sign"] = sign + + """ + 计算鉴权签名 - + 计算方式 : sign = sha256(appKey + input(q) + salt + curtime + appSecret) + @param appKey 您的应用ID + @param appSecret 您的应用密钥 + @param q 请求内容 + @param salt 随机值 + @param curtime 当前时间戳(秒) + @return 鉴权签名sign + """ + + def calculateSign(appKey, appSecret, q, salt, curtime): + strSrc = appKey + getInput(q) + salt + curtime + appSecret + return encrypt(strSrc) + + def encrypt(strSrc): + hash_algorithm = hashlib.sha256() + hash_algorithm.update(strSrc.encode("utf-8")) + return hash_algorithm.hexdigest() + + def getInput(input): + if input is None: + return input + inputLen = len(input) + return ( + input + if inputLen <= 20 + else input[0:10] + str(inputLen) + input[inputLen - 10 : inputLen] + ) + + def createRequest(): + """ + note: 将下列变量替换为需要请求的参数 + 取值参考文档: https://ai.youdao.com/DOCSIRMA/html/%E8%87%AA%E7%84%B6%E8%AF%AD%E8%A8%80%E7%BF%BB%E8%AF%91/API%E6%96%87%E6%A1%A3/%E5%9B%BE%E7%89%87%E7%BF%BB%E8%AF%91%E6%9C%8D%E5%8A%A1/%E5%9B%BE%E7%89%87%E7%BF%BB%E8%AF%91%E6%9C%8D%E5%8A%A1-API%E6%96%87%E6%A1%A3.html + """ + lang_from = self.srclang + lang_to = self.tgtlang + render = "0" #'是否需要服务端返回渲染的图片' + type = "1" + + # 数据的base64编码 + q = readFileAsBase64(imagebinary) + data = { + "q": q, + "from": lang_from, + "to": lang_to, + "render": render, + "type": type, + } + + addAuthParams(APP_KEY, APP_SECRET, data) + + header = {"Content-Type": "application/x-www-form-urlencoded"} + res = doCall("https://openapi.youdao.com/ocrtransapi", header, data, "post") + return res + + def doCall(url, header, params, method): + if "get" == method: + return self.proxysession.get(url, params) + elif "post" == method: + return self.proxysession.post(url, params, header) + + def readFileAsBase64(imagebinary): + return str(base64.b64encode(imagebinary), "utf-8") + + response = createRequest() + try: + + text = [_["tranContent"] for _ in response.json()["resRegions"]] + box = [ + [int(_) for _ in l["boundingBox"].split(",")] + for l in response.json()["resRegions"] + ] + return {"box": box, "text": text, "isocrtranslate": True} + except: + raise Exception(response.text) + def ocr(self, imagebinary): - interfacetype = self.config["接口"] - if interfacetype == 0: + interfacetype = self.config["interface"] + if interfacetype == 1: return self.freetest(imagebinary) - elif interfacetype == 1: + elif interfacetype == 0: return self.ocrapi(imagebinary) + elif interfacetype == 2: + return self.ocrapi_ts(imagebinary) + elif interfacetype == 3: + return self.freetest_ts(imagebinary) raise Exception("unknown") diff --git a/LunaTranslator/LunaTranslator/ocrengines/youdaocrtrans.py b/LunaTranslator/LunaTranslator/ocrengines/youdaocrtrans.py deleted file mode 100644 index b56774b4..00000000 --- a/LunaTranslator/LunaTranslator/ocrengines/youdaocrtrans.py +++ /dev/null @@ -1,164 +0,0 @@ -import base64 -import uuid -import time -import hashlib -from ocrengines.baseocrclass import baseocr - - -class OCR(baseocr): - def langmap(self): - return {"zh": "zh-CHS", "cht": "zh-CHT"} - - def freetest(self, imagebinary): - - headers = { - "authority": "aidemo.youdao.com", - "accept": "*/*", - "accept-language": "zh-CN,zh;q=0.9", - "content-type": "application/x-www-form-urlencoded; charset=UTF-8", - "origin": "https://ai.youdao.com", - "referer": "https://ai.youdao.com/", - "sec-ch-ua": '"Chromium";v="106", "Google Chrome";v="106", "Not;A=Brand";v="99"', - "sec-ch-ua-mobile": "?0", - "sec-ch-ua-platform": '"Windows"', - "sec-fetch-dest": "empty", - "sec-fetch-mode": "cors", - "sec-fetch-site": "same-site", - "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36", - } - b64 = base64.b64encode(imagebinary) - data = { - "imgBase": "data:image/jpeg;base64," + str(b64, encoding="utf8"), - "lang": "", - "company": "", - } - - response = self.proxysession.post( - "https://aidemo.youdao.com/ocrtransapi1", headers=headers, data=data - ) - - try: - return { - "text": [l["tranContent"] for l in response.json()["lines"]], - "isocrtranslate": True, - } - except: - raise Exception(response.text) - - def ocrapi(self, imagebinary): - - self.checkempty(["APP_KEY", "APP_SECRET"]) - APP_KEY, APP_SECRET = self.config["APP_KEY"], self.config["APP_SECRET"] - - """ - 添加鉴权相关参数 - - appKey : 应用ID - salt : 随机值 - curtime : 当前时间戳(秒) - signType : 签名版本 - sign : 请求签名 - - @param appKey 您的应用ID - @param appSecret 您的应用密钥 - @param paramsMap 请求参数表 - """ - - def addAuthParams(appKey, appSecret, params): - q = params.get("q") - if q is None: - q = params.get("img") - salt = str(uuid.uuid1()) - curtime = str(int(time.time())) - sign = calculateSign(appKey, appSecret, q, salt, curtime) - params["appKey"] = appKey - params["salt"] = salt - params["curtime"] = curtime - params["signType"] = "v3" - params["sign"] = sign - - """ - 计算鉴权签名 - - 计算方式 : sign = sha256(appKey + input(q) + salt + curtime + appSecret) - @param appKey 您的应用ID - @param appSecret 您的应用密钥 - @param q 请求内容 - @param salt 随机值 - @param curtime 当前时间戳(秒) - @return 鉴权签名sign - """ - - def calculateSign(appKey, appSecret, q, salt, curtime): - strSrc = appKey + getInput(q) + salt + curtime + appSecret - return encrypt(strSrc) - - def encrypt(strSrc): - hash_algorithm = hashlib.sha256() - hash_algorithm.update(strSrc.encode("utf-8")) - return hash_algorithm.hexdigest() - - def getInput(input): - if input is None: - return input - inputLen = len(input) - return ( - input - if inputLen <= 20 - else input[0:10] + str(inputLen) + input[inputLen - 10 : inputLen] - ) - - def createRequest(): - """ - note: 将下列变量替换为需要请求的参数 - 取值参考文档: https://ai.youdao.com/DOCSIRMA/html/%E8%87%AA%E7%84%B6%E8%AF%AD%E8%A8%80%E7%BF%BB%E8%AF%91/API%E6%96%87%E6%A1%A3/%E5%9B%BE%E7%89%87%E7%BF%BB%E8%AF%91%E6%9C%8D%E5%8A%A1/%E5%9B%BE%E7%89%87%E7%BF%BB%E8%AF%91%E6%9C%8D%E5%8A%A1-API%E6%96%87%E6%A1%A3.html - """ - lang_from = self.srclang - lang_to = self.tgtlang - render = "0" #'是否需要服务端返回渲染的图片' - type = "1" - - # 数据的base64编码 - q = readFileAsBase64(imagebinary) - data = { - "q": q, - "from": lang_from, - "to": lang_to, - "render": render, - "type": type, - } - - addAuthParams(APP_KEY, APP_SECRET, data) - - header = {"Content-Type": "application/x-www-form-urlencoded"} - res = doCall("https://openapi.youdao.com/ocrtransapi", header, data, "post") - return res - - def doCall(url, header, params, method): - if "get" == method: - return self.proxysession.get(url, params) - elif "post" == method: - return self.proxysession.post(url, params, header) - - def readFileAsBase64(imagebinary): - return str(base64.b64encode(imagebinary), "utf-8") - - self.countnum() - - response = createRequest() - try: - - text = [_["tranContent"] for _ in response.json()["resRegions"]] - box = [ - [int(_) for _ in l["boundingBox"].split(",")] - for l in response.json()["resRegions"] - ] - return {"box": box, "text": text, "isocrtranslate": True} - except: - raise Exception(response.text) - - def ocr(self, imagebinary): - interfacetype = self.config["接口"] - if interfacetype == 0: - return self.freetest(imagebinary) - elif interfacetype == 1: - return self.ocrapi(imagebinary) - raise Exception("unknown") diff --git a/LunaTranslator/LunaTranslator/textsource/texthook.py b/LunaTranslator/LunaTranslator/textsource/texthook.py index 10e850aa..d5f45651 100644 --- a/LunaTranslator/LunaTranslator/textsource/texthook.py +++ b/LunaTranslator/LunaTranslator/textsource/texthook.py @@ -186,6 +186,7 @@ class texthook(basetext): c_void_p, c_void_p, c_void_p, + c_void_p, ) self.Luna_Inject = LunaHost.Luna_Inject self.Luna_Inject.argtypes = DWORD, LPCWSTR @@ -235,6 +236,7 @@ class texthook(basetext): ConsoleHandler(gobject.baseobject.hookselectdialog.sysmessagesignal.emit), HookInsertHandler(self.newhookinsert), EmbedCallback(self.getembedtext), + ConsoleHandler(gobject.baseobject.hookselectdialog.warning.emit), ] self.keepref += procs ptrs = [cast(_, c_void_p).value for _ in procs] diff --git a/LunaTranslator/LunaTranslator/translator/baiduapi.py b/LunaTranslator/LunaTranslator/translator/baiduapi.py index e2d093e3..272123ca 100644 --- a/LunaTranslator/LunaTranslator/translator/baiduapi.py +++ b/LunaTranslator/LunaTranslator/translator/baiduapi.py @@ -5,6 +5,11 @@ import random class TS(basetrans): + def inittranslator(self): + self.keys = {} + if self.config["interface"] == 1: + self.getaccess() + def langmap(self): return { "es": "spa", @@ -20,40 +25,64 @@ class TS(basetrans): } def translate(self, query): + if self.config["interface"] == 0: + return self.translate_fy(query) + elif self.config["interface"] == 1: + return self.translate_bce(query) + raise Exception("unknown") + def getaccess(self): + self.checkempty(["API Key", "Secret Key"]) + pair = ( + self.multiapikeycurrent["API Key"], + self.multiapikeycurrent["Secret Key"], + ) + if pair not in self.keys: + accstoken = self.proxysession.get( + "https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=" + + self.appid + + "&client_secret=" + + self.secretKey + ).json()["access_token"] + self.keys[pair] = accstoken + return self.keys[pair] + + def translate_bce(self, q): + accstoken = self.getaccess() + url = "https://aip.baidubce.com/rpc/2.0/mt/texttrans/v1" + para = { + "access_token": accstoken, + "q": q, + "from": self.srclang, + "to": self.tgtlang, + } + r = self.proxysession.post(url, params=para) + try: + return "\n".join([_["dst"] for _ in r.json()["result"]["trans_result"]]) + except: + raise Exception(r.text) + + def translate_fy(self, q): self.checkempty(["APP ID", "密钥"]) - appid = self.multiapikeycurrent["APP ID"] secretKey = self.multiapikeycurrent["密钥"] - myurl = "/api/trans/vip/translate" - - fromLang = self.srclang # 原文语种 - toLang = self.tgtlang # 译文语种 salt = random.randint(32768, 65536) - q = query sign = appid + q + str(salt) + secretKey sign = hashlib.md5(sign.encode()).hexdigest() - myurl = ( - myurl - + "?appid=" - + appid - + "&q=" - + urllib.parse.quote(q) - + "&from=" - + fromLang - + "&to=" - + toLang - + "&salt=" - + str(salt) - + "&sign=" - + sign + para = { + "appid": appid, + "q": q, + "from": self.srclang, + "to": self.tgtlang, + "salt": salt, + "sign": sign, + } + + res = self.proxysession.get( + "https://api.fanyi.baidu.com/api/trans/vip/translate", params=para ) - - res = self.proxysession.get("https://api.fanyi.baidu.com" + myurl) try: - _ = "\n".join([_["dst"] for _ in res.json()["trans_result"]]) + return "\n".join([_["dst"] for _ in res.json()["trans_result"]]) - self.countnum(query) - return _ except: raise Exception(res.text) diff --git a/LunaTranslator/LunaTranslator/translator/caiyunapi.py b/LunaTranslator/LunaTranslator/translator/caiyunapi.py index 82042298..11ca6294 100644 --- a/LunaTranslator/LunaTranslator/translator/caiyunapi.py +++ b/LunaTranslator/LunaTranslator/translator/caiyunapi.py @@ -26,10 +26,6 @@ class TS(basetrans): "POST", url, data=json.dumps(payload), headers=headers ) try: - res = json.loads(response.text)["target"] - - self.countnum(query) - # print(res['trans_result'][0]['dst']) - return res + return json.loads(response.text)["target"] except: raise Exception(response.text) diff --git a/LunaTranslator/LunaTranslator/translator/deeplapi-free.py b/LunaTranslator/LunaTranslator/translator/deeplapi-free.py index bd0f85b1..178c36ba 100644 --- a/LunaTranslator/LunaTranslator/translator/deeplapi-free.py +++ b/LunaTranslator/LunaTranslator/translator/deeplapi-free.py @@ -46,9 +46,6 @@ class TS(basetrans): ) try: - _ = response.json()["translations"][0]["text"] - - self.countnum(query) - return _ + return response.json()["translations"][0]["text"] except: raise Exception(response.text) diff --git a/LunaTranslator/LunaTranslator/translator/huoshanapi.py b/LunaTranslator/LunaTranslator/translator/huoshanapi.py index fa884e90..517870f8 100644 --- a/LunaTranslator/LunaTranslator/translator/huoshanapi.py +++ b/LunaTranslator/LunaTranslator/translator/huoshanapi.py @@ -419,11 +419,8 @@ class TS(basetrans): res = trans(query, keyid, acckey, self.srclang, self.tgtlang, self.proxy) try: - res = "\n".join( + return "\n".join( [_["Translation"] for _ in json.loads(res)["TranslationList"]] ) - self.countnum(query) - # print(res['trans_result'][0]['dst']) - return res except: raise Exception(res) diff --git a/LunaTranslator/LunaTranslator/translator/tencentapi.py b/LunaTranslator/LunaTranslator/translator/tencentapi.py index 7dceedad..974bf44b 100644 --- a/LunaTranslator/LunaTranslator/translator/tencentapi.py +++ b/LunaTranslator/LunaTranslator/translator/tencentapi.py @@ -73,7 +73,6 @@ class TS(basetrans): ret = self.trans_tencent(query, appid, secretKey, self.srclang, self.tgtlang) try: - self.countnum(query) return ret.json()["Response"]["TargetText"] except: raise Exception(ret.text) diff --git a/LunaTranslator/LunaTranslator/translator/xiaoniu.py b/LunaTranslator/LunaTranslator/translator/xiaoniu.py index 89b221d7..b532e4c3 100644 --- a/LunaTranslator/LunaTranslator/translator/xiaoniu.py +++ b/LunaTranslator/LunaTranslator/translator/xiaoniu.py @@ -36,8 +36,6 @@ class TS(basetrans): ) try: - self.countnum(query) - # print(res['trans_result'][0]['dst']) return response.json()["tgt_text"] except: raise Exception(response.text) diff --git a/LunaTranslator/LunaTranslator/translator/youdaoapi.py b/LunaTranslator/LunaTranslator/translator/youdaoapi.py index e2dd4c60..eeb38d6c 100644 --- a/LunaTranslator/LunaTranslator/translator/youdaoapi.py +++ b/LunaTranslator/LunaTranslator/translator/youdaoapi.py @@ -43,9 +43,6 @@ class TS(basetrans): } r = self.proxysession.get(youdao_url, params=data) # 获取返回的json()内容 try: - - self.countnum(content) - return r.json()["translation"][0] except: raise Exception(r.text) diff --git a/LunaTranslator/LunaTranslator/winsharedutils.py b/LunaTranslator/LunaTranslator/winsharedutils.py index 55556730..9b2fed5d 100644 --- a/LunaTranslator/LunaTranslator/winsharedutils.py +++ b/LunaTranslator/LunaTranslator/winsharedutils.py @@ -286,7 +286,6 @@ isDark.restype = c_bool _gdi_screenshot = utilsdll.gdi_screenshot _gdi_screenshot.argtypes = HWND, RECT, c_void_p -_gdi_screenshot.restype = c_bool def gdi_screenshot(x1, y1, x2, y2, hwnd=None): @@ -300,8 +299,8 @@ def gdi_screenshot(x1, y1, x2, y2, hwnd=None): def cb(ptr, size): ret.append(cast(ptr, POINTER(c_char))[:size]) - bf = _gdi_screenshot(hwnd, rect, CFUNCTYPE(None, c_void_p, c_size_t)(cb)) - if not bf: + _gdi_screenshot(hwnd, rect, CFUNCTYPE(None, c_void_p, c_size_t)(cb)) + if len(ret) == 0: return None return ret[0] diff --git a/LunaTranslator/files/defaultconfig/config.json b/LunaTranslator/files/defaultconfig/config.json index fc2ab612..dd78f53f 100644 --- a/LunaTranslator/files/defaultconfig/config.json +++ b/LunaTranslator/files/defaultconfig/config.json @@ -1482,23 +1482,15 @@ }, "baiduocr_X": { "use": false, - "name": "百度OCR" - }, - "baiduocr_ts": { - "use": false, - "name": "百度图片翻译" + "name": "百度" }, "txocr": { "use": false, - "name": "腾讯OCR" - }, - "txocrtrans": { - "use": false, - "name": "腾讯图片翻译" + "name": "腾讯" }, "feishu": { "use": false, - "name": "飞书OCR" + "name": "飞书" }, "ocrspace": { "use": false, @@ -1518,15 +1510,11 @@ }, "xunfei": { "use": false, - "name": "讯飞OCR" + "name": "讯飞" }, "youdaocr": { "use": false, - "name": "有道OCR" - }, - "youdaocrtrans": { - "use": false, - "name": "有道图片翻译" + "name": "有道" }, "youdaodictocr": { "use": false, @@ -1534,7 +1522,7 @@ }, "volcengine": { "use": false, - "name": "火山OCR" + "name": "火山" }, "mangaocr": { "use": false, @@ -1548,7 +1536,7 @@ }, "geminiocr": { "use": false, - "name": "GeminiOCR" + "name": "Gemini" }, "chatgptlike": { "use": false, @@ -1608,7 +1596,7 @@ "type": "api", "use": false, "color": "#ff0000", - "name": "google_api" + "name": "谷歌" }, "ali": { "use": false, @@ -1762,7 +1750,7 @@ "type": "api", "use": false, "color": "blue", - "name": "gemini", + "name": "Gemini", "is_gpt_like": true }, "jb7": { @@ -1845,25 +1833,25 @@ "type": "api", "use": false, "color": "blue", - "name": "百度api" + "name": "百度" }, "aliyunapi": { "type": "api", "use": false, "color": "blue", - "name": "阿里api" + "name": "阿里" }, "tencentapi": { "type": "api", "use": false, "color": "blue", - "name": "腾讯api" + "name": "腾讯" }, "yandexapi": { "type": "api", "use": false, "color": "blue", - "name": "yandex api" + "name": "yandex" }, "yandex": { "use": false, @@ -1879,7 +1867,7 @@ "type": "api", "use": false, "color": "blue", - "name": "小牛api" + "name": "小牛" }, "huoshan": { "use": false, @@ -1890,13 +1878,13 @@ "type": "api", "use": false, "color": "blue", - "name": "彩云api" + "name": "彩云" }, "huoshanapi": { "type": "api", "use": false, "color": "blue", - "name": "火山api" + "name": "火山" }, "feishu": { "type": "api", @@ -1925,13 +1913,13 @@ "type": "api", "use": false, "color": "blue", - "name": "DeepL api" + "name": "DeepL" }, "youdaoapi": { "type": "api", "use": false, "color": "blue", - "name": "有道api" + "name": "有道" }, "hwcloud": { "type": "api", @@ -1970,7 +1958,7 @@ "use": false, "type": "api", "color": "blue", - "name": "ibm api", + "name": "IBM", "useproxy": true }, "sakura": { diff --git a/LunaTranslator/files/defaultconfig/ocrsetting.json b/LunaTranslator/files/defaultconfig/ocrsetting.json index d28ec51a..3dcd92d7 100644 --- a/LunaTranslator/files/defaultconfig/ocrsetting.json +++ b/LunaTranslator/files/defaultconfig/ocrsetting.json @@ -40,81 +40,60 @@ }, "baiduocr_X": { "args": { - "注册网址": "https://console.bce.baidu.com/ai/?fromai=1#/ai/ocr/app/list", "API Key": "", "Secret Key": "", - "接口": 0, - "次数统计": "0" + "app_id": "", + "app_key": "", + "接口": 0 }, "argstype": { - "注册网址": { - "type": "label", - "islink": true + "API Key": { + "refcombo": "接口", + "refcombo_i_r": 5 + }, + "Secret Key": { + "refcombo": "接口", + "refcombo_i_r": 5 + }, + "app_key": { + "name": "密钥", + "refcombo": "接口", + "refcombo_i": 5 + }, + "app_id": { + "name": "APP ID", + "refcombo": "接口", + "refcombo_i": 5 }, "接口": { + "rank": 0, "type": "combo", "list": [ - "通用文字识别(标准版)", - "通用文字识别(标准含位置版)", - "通用文字识别(高精度版)", - "通用文字识别(高精度含位置版)" + "百度智能云_OCR_通用文字识别(标准版)", + "百度智能云_OCR_通用文字识别(标准含位置版)", + "百度智能云_OCR_通用文字识别(高精度版)", + "百度智能云_OCR_通用文字识别(高精度含位置版)", + "百度智能云_图片翻译", + "百度翻译开放平台_图片翻译" ] } } }, - "baiduocr_ts": { - "args": { - "注册网址": "https://fanyi-api.baidu.com/product/223", - "app_id": "", - "app_key": "" - }, - "argstype": { - "注册网址": { - "type": "label", - "islink": true - } - } - }, "txocr": { "args": { - "注册网址": "https://cloud.tencent.com/document/product/866/33526", - "SecretId": "", - "SecretKey": "", - "Region": 0 - }, - "argstype": { - "注册网址": { - "type": "label", - "islink": true - }, - "Region": { - "type": "combo", - "list": [ - "ap-beijing", - "ap-guangzhou", - "ap-hongkong", - "ap-seoul", - "ap-shanghai", - "ap-singapore", - "na-toronto" - ] - } - } - }, - "txocrtrans": { - "args": { - "注册网址": "https://cloud.tencent.com/document/product/551/17232", "SecretId": "", "SecretKey": "", "ProjectId": "0", - "Region": 0 + "Region": 0, + "interface": 0 }, "argstype": { - "注册网址": { - "type": "label", - "islink": true + "ProjectId": { + "refcombo": "interface", + "refcombo_i": 1 }, "Region": { + "rank": 1, "type": "combo", "list": [ "ap-beijing", @@ -122,95 +101,73 @@ "ap-hongkong", "ap-seoul", "ap-shanghai", - "ap-singapore", - "na-toronto" + "ap-singapore" + ] + }, + "interface": { + "rank": 0, + "name": "接口", + "type": "combo", + "list": [ + "OCR_通用印刷体识别", + "图片翻译" ] } } }, "feishu": { "args": { - "注册网址": "https://open.feishu.cn/document/ukTMukTMukTM/ukDNz4SO0MjL5QzM/auth-v3/auth/tenant_access_token_internal", "app_id": "", "app_secret": "" - }, - "argstype": { - "注册网址": { - "type": "label", - "islink": true - } } }, "docsumo": { "args": { - "注册网址": "https://docsumo.com/", - "token": "", - "次数统计": "0" - }, - "argstype": { - "注册网址": { - "type": "label", - "islink": true - } + "token": "" } }, "youdaocr": { "args": { - "注册网址": "https://ai.youdao.com/product-ocr-print.s", - "接口": 0, + "interface": 0, "APP_KEY": "", - "APP_SECRET": "", - "次数统计": "0" + "APP_SECRET": "" }, "argstype": { - "注册网址": { - "type": "label", - "islink": true - }, - "接口": { - "type": "combo", - "list": [ - "免费试用", - "通用文字识别 API" + "APP_SECRET": { + "refcombo": "interface", + "refcombo_l": [ + 0, + 2 ] - } - } - }, - "youdaocrtrans": { - "args": { - "注册网址": "https://ai.youdao.com/product-fanyi-picture.s", - "接口": 0, - "APP_KEY": "", - "APP_SECRET": "", - "次数统计": "0" - }, - "argstype": { - "注册网址": { - "type": "label", - "islink": true }, - "接口": { + "APP_KEY": { + "refcombo": "interface", + "refcombo_l": [ + 0, + 2 + ] + }, + "interface": { + "rank": 0, + "name": "接口", "type": "combo", "list": [ - "免费试用", - "图片翻译 API" + "OCR_通用文字识别", + "OCR_通用文字识别_试用", + "图片翻译", + "图片翻译_试用" ] } } }, "ocrspace": { "args": { - "注册网址": "https://ocr.space/", "apikey": "", - "次数统计": "0", "interface": 0 }, "argstype": { - "注册网址": { - "type": "label", - "islink": true - }, "interface": { + "rank": 0, "type": "combo", "list": [ "pro", @@ -221,29 +178,17 @@ }, "volcengine": { "args": { - "密钥获取": "https://console.volcengine.com/iam/keymanage/", "Access Key ID": "", "Secret Access Key": "" - }, - "argstype": { - "密钥获取": { - "type": "label", - "islink": true - } } }, "tesseract5": { "args": { - "下载": "https://github.com/UB-Mannheim/tesseract/wiki", "路径": "", "语言": 0, "附加参数": "--psm 6" }, "argstype": { - "下载": { - "type": "label", - "islink": true - }, "路径": { "type": "file", "dir": false, @@ -365,40 +310,16 @@ }, "xunfei": { "args": { - "link": "https://www.xfyun.cn/doc/words/multi_print_recognition/API.html", "APPId": "", "APISecret": "", "APIKey": "" - }, - "argstype": { - "link": { - "type": "label", - "islink": true - } } }, "mangaocr": { "args": { - "项目仓库": "https://github.com/kha-white/manga-ocr", - "整合包_CPU_1": "{main_server}/Resource/IntegrationPack/manga_ocr/cpu", - "整合包_GPU_1": "{main_server}/Resource/IntegrationPack/manga_ocr/gpu", "Port": 5665 }, "argstype": { - "项目仓库": { - "type": "label", - "islink": true - }, - "整合包_CPU_1": { - "type": "label", - "islink": true, - "name": "整合包_CPU" - }, - "整合包_GPU_1": { - "type": "label", - "islink": true, - "name": "整合包_GPU" - }, "Port": { "type": "intspin", "min": 1, diff --git a/LunaTranslator/files/defaultconfig/static_data.json b/LunaTranslator/files/defaultconfig/static_data.json index 5c986851..98477687 100644 --- a/LunaTranslator/files/defaultconfig/static_data.json +++ b/LunaTranslator/files/defaultconfig/static_data.json @@ -1009,7 +1009,7 @@ ] }, { - "name": "mangaocr", + "name": "manga-ocr", "type": "group", "links": [ { diff --git a/LunaTranslator/files/defaultconfig/translatorsetting.json b/LunaTranslator/files/defaultconfig/translatorsetting.json index 74ef7a18..37879c31 100644 --- a/LunaTranslator/files/defaultconfig/translatorsetting.json +++ b/LunaTranslator/files/defaultconfig/translatorsetting.json @@ -14,10 +14,14 @@ "github": { "name": "DeepLX Github", "type": "label", - "islink": true + "islink": true, + "refcombo": "usewhich", + "refcombo_i": 1 }, "api": { - "name": "DeepLX api" + "name": "DeepLX api", + "refcombo": "usewhich", + "refcombo_i": 1 }, "usewhich": { "rank": 0, @@ -32,60 +36,58 @@ }, "baiduapi": { "args": { - "注册网址": "https://fanyi-api.baidu.com/api/trans/product/desktop", + "API Key": "", + "Secret Key": "", "APP ID": "", "密钥": "", - "字数统计": "0", - "次数统计": "0" + "interface": 0 }, "argstype": { - "注册网址": { - "type": "label", - "islink": true + "密钥": { + "refcombo": "interface", + "refcombo_i": 0 + }, + "APP ID": { + "refcombo": "interface", + "refcombo_i": 0 + }, + "API Key": { + "refcombo": "interface", + "refcombo_i": 1 + }, + "Secret Key": { + "refcombo": "interface", + "refcombo_i": 1 + }, + "interface": { + "rank": 0, + "name": "接口", + "type": "combo", + "list": [ + "百度翻译开放平台", + "百度智能云" + ] } } }, "feishu": { "args": { - "注册网址": "https://open.feishu.cn/document/ukTMukTMukTM/ukDNz4SO0MjL5QzM/auth-v3/auth/tenant_access_token_internal", "app_id": "", "app_secret": "" - }, - "argstype": { - "注册网址": { - "type": "label", - "islink": true - } } }, "caiyunapi": { "args": { - "注册网址": "https://fanyi.caiyunapp.com/#/", - "Token": "", - "字数统计": "0", - "次数统计": "0" - }, - "argstype": { - "注册网址": { - "type": "label", - "islink": true - } + "Token": "" } }, "deeplapi-free": { "args": { - "注册网址": "https://www.deepl.com/translator", "usewhich": 0, "DeepL-Auth-Key": "", - "DeepL-Auth-Key-2": "", - "字数统计": "0" + "DeepL-Auth-Key-2": "" }, "argstype": { - "注册网址": { - "rank": -1, - "type": "label", - "islink": true - }, "DeepL-Auth-Key": { "rank": 1, "name": "DeepL-Auth-Key Free" @@ -129,33 +131,17 @@ }, "huoshanapi": { "args": { - "注册网址": "https://www.volcengine.com/docs/4640/130872", "Access Key ID": "", - "Secret Access Key": "", - "字数统计": "0", - "次数统计": "0" - }, - "argstype": { - "注册网址": { - "type": "label", - "islink": true - } + "Secret Access Key": "" } }, "tencentapi": { "args": { - "注册网址": "https://console.cloud.tencent.com/cam/capi", "SecretId": "", "SecretKey": "", - "Region": 0, - "字数统计": "0", - "次数统计": "0" + "Region": 0 }, "argstype": { - "注册网址": { - "type": "label", - "islink": true - }, "Region": { "type": "combo", "list": [ @@ -182,47 +168,22 @@ }, "xiaoniu": { "args": { - "注册网址": "https://niutrans.com/text_trans", - "apikey": "", - "字数统计": "0", - "次数统计": "0" - }, - "argstype": { - "注册网址": { - "type": "label", - "islink": true - } + "apikey": "" } }, "youdaoapi": { "args": { - "注册网址": "https://ai.youdao.com/product-fanyi-text.s", "APP_KEY": "", - "APP_SECRET": "", - "字数统计": "0", - "次数统计": "0" - }, - "argstype": { - "注册网址": { - "type": "label", - "islink": true - } + "APP_SECRET": "" } }, "hwcloud": { "args": { - "注册网址": "https://www.huaweicloud.com/product/nlpmt.html", "ak": "", "sk": "", - "endpoint": "cn-north-4", - "字数统计": "0", - "次数统计": "0" + "endpoint": "cn-north-4" }, "argstype": { - "注册网址": { - "type": "label", - "islink": true - }, "ak": { "name": "Access Key Id" }, @@ -635,7 +596,7 @@ "other_args": "{}", "use_other_args": false, "s": "", - "s2":"", + "s2": "", "prefill": "", "prefill_use": false }, @@ -804,40 +765,19 @@ "azure": { "args": { "key1": "", - "Location": "", - "注册网址": "https://learn.microsoft.com/zh-cn/azure/cognitive-services/Translator/quickstart-translator?tabs=python" - }, - "argstype": { - "注册网址": { - "type": "label", - "islink": true - } + "Location": "" } }, "ibm": { "args": { "apiurl": "", - "apikey": "", - "注册网址": "https://cloud.ibm.com/apidocs/language-translator" - }, - "argstype": { - "注册网址": { - "type": "label", - "islink": true - } + "apikey": "" } }, "aliyunapi": { "args": { "Access_Key": "", - "SECRET_KEY": "", - "注册网址": "https://cn.aliyun.com/product/ai/alimt" - }, - "argstype": { - "注册网址": { - "type": "label", - "islink": true - } + "SECRET_KEY": "" } }, "dev_chatgpt": { @@ -1026,7 +966,6 @@ }, "gemini": { "args": { - "注册网址_x": "https://aistudio.google.com/app/apikey", "SECRET_KEY": "", "Temperature": 0.3, "model": "gemini-1.5-flash", @@ -1039,7 +978,7 @@ "other_args": "{}", "use_other_args": false, "s": "", - "s2":"", + "s2": "", "usingstream": true, "prefill": "", "prefill_use": false @@ -1102,12 +1041,6 @@ "modellistcache": { "type": "list_cache" }, - "注册网址_x": { - "name": "注册网址", - "type": "label", - "islink": true, - "rank": 0 - }, "Temperature": { "type": "spin", "min": 0, @@ -1172,8 +1105,6 @@ }, "sakura": { "args": { - "Sakura部署教程": "https://github.com/SakuraLLM/Sakura-13B-Galgame/wiki", - "Github仓库": "https://github.com/SakuraLLM/Sakura-13B-Galgame", "API接口地址": "http://127.0.0.1:8080/", "use_context": false, "append_context_num": 3, @@ -1210,16 +1141,6 @@ "type": "switch", "rank": 1 }, - "Sakura部署教程": { - "type": "label", - "islink": true, - "rank": -2 - }, - "Github仓库": { - "type": "label", - "islink": true, - "rank": -1 - }, "append_context_num": { "type": "intspin", "min": 1, diff --git a/LunaTranslator/files/lang/ar.json b/LunaTranslator/files/lang/ar.json index c4771eb1..dbb8728c 100644 --- a/LunaTranslator/files/lang/ar.json +++ b/LunaTranslator/files/lang/ar.json @@ -11,7 +11,6 @@ "首选翻译": "يفضل الترجمة", "游戏信息": "معلومات اللعبة", "辞书": "القواميس", - "小牛api": "العجل API", "用户词典2": "قاموس المستخدم", "转区": "تحويل المنطقة", "端口号": "رقم المنفذ", @@ -28,7 +27,6 @@ "彩云": "سحابة ملونة", "非管理员": "غير مسؤول", "用户词典": "قاموس المستخدم", - "字数统计": "كلمة إحصائيات", "添加游戏": "إضافة لعبة", "连接进程": "عملية الاتصال", "越南语(CP1258)": "الفيتنامية ( cp1258 ) .", @@ -58,7 +56,6 @@ "土耳其语": "اللغة التركية", "透明度": "الشفافية", "中文": "الصينية .", - "注册网址2": "رابط التسجيل", "绘制光标": "رسم المؤشر", "記号": "علامة", "问题反馈": "مشكلة التغذية المرتدة", @@ -80,7 +77,6 @@ "泰语": "التايلاندية", "特殊码": "رمز خاص", "语法加亮": "تسليط الضوء على بناء الجملة", - "火山api": "بركان API", "用户词典2(可选)": "قاموس المستخدم 2 ( اختياري )", "東北イタコ": "شرقية ココ", "最新版本": "أحدث إصدار", @@ -88,14 +84,12 @@ "繁体中文": "الصينية التقليدية", "結月ゆかり/结月缘": "عقدة القمر / عقدة القمر", "仅使用激活的翻译": "تفعيل الترجمة فقط", - "腾讯api": "تينسنت API", "文本搜索": "نص البحث", "如果没看见想要附加的进程,可以尝试点击下方按钮后点击游戏窗口,或者尝试使用管理员权限运行本软件": "إذا كنت لا ترى العملية التي تريد إضافتها ، يمكنك محاولة النقر على زر أدناه ثم انقر فوق نافذة اللعبة ، أو محاولة استخدام امتيازات المسؤول لتشغيل البرنامج", "删除游戏": "حذف اللعبة", "北欧(CP1257)": "شمال أوروبا ( CP1257 )", "打开设置": "فتح إعدادات", "语言设置": "إعدادات اللغة", - "阿里api": "علي ابي", "编辑": "تحرير .", "附带上下文个数": "مع عدد من السياقات", "过滤纯英文": "تصفية اللغة الإنجليزية البحتة", @@ -109,7 +103,6 @@ "用户词典3": "قاموس المستخدم", "选择文件夹": "اختيار مجلد", "选择文本输入源": "حدد مصدر إدخال النص", - "注册网址": "موقع التسجيل", "设置Token": "تعيين رمز", "所选文件格式错误!": "اختيار شكل الملف خطأ !", "高级": "كبار", @@ -224,7 +217,6 @@ "手动设置代理(ip:port)": "تعيين الوكيل يدويا ( الملكية الفكرية : ميناء )", "搜索特殊码": "البحث عن رمز خاص", "文本源": "النص الأصلي", - "百度api": "بايدو API", "希伯来语(CP1255)": "العبرية ( CP1255 )", "确定": "أكّد", "添加编码": "إضافة رمز", @@ -280,7 +272,6 @@ "发现": "اكتشف", "连接超时": "اتصال مهلة", "搜索匹配的特征(hex)": "البحث عن مطابقة ميزة ( هيكس )", - "彩云api": "لون سحابة API", "开始搜索": "بدء البحث", "选择进程": "عملية الاختيار", "如果你感觉该软件对你有帮助,欢迎微信扫码赞助,谢谢~": "إذا كنت تشعر أن هذا البرنامج هو مفيد لك ، مرحبا بكم في رسالة صغيرة اكتساح رمز الراعي ، شكرا لك ~", @@ -334,7 +325,6 @@ "过滤其他乱码": "تصفية أخرى مشوهة", "捕获模式": "طريقة التقاط", "捕获标题栏": "التقاط شريط العنوان", - "有道api": "تاو API", "游戏设置": "إعدادات اللعبة", "剪贴板": "الحافظة", "辞书设置": "وضع القاموس", @@ -367,7 +357,6 @@ "过滤乱码文本": "تصفية النص مشوه", "補助記号": "بدل مارك", "插入特殊码": "إدراج رمز خاص", - "次数统计": "إحصائيات", "过滤非shiftjis": "تصفية غير Shiftjis", "小学馆辞书": "قاموس المدرسة الابتدائية", "失败": "هزم", @@ -385,7 +374,6 @@ "当前MD5": "MD5 الحالي", "通用": "عام .", "目标语言": "اللغة المستهدفة", - "火山OCR": "بركان التعرف الضوئي على الحروف", "秒": "ثانية .", "时间周期执行": "فترة التنفيذ", "录制翻译文件": "تسجيل ملف الترجمة", @@ -451,11 +439,7 @@ "刷新": "منعش", "读取剪贴板": "قراءة الحافظة", "进行一次OCR": "التعرف الضوئي على الحروف", - "有道OCR": "التعرف الضوئي على الحروف", "免费试用": "محاكمة مجانية", - "通用文字识别 API": "المعهد العالمي التعرف على الحروف", - "有道图片翻译": "ترجمة الصور", - "图片翻译 API": "ترجمة الصور API", "内嵌翻译": "جزءا لا يتجزأ من الترجمة", "隐藏不存在的游戏": "إخفاء لعبة غير موجودة", "宽度": "عرض", @@ -490,8 +474,6 @@ "日语注音方案": "نظام صوتي ياباني", "Sakura大模型": "ساكورا غراند موديل", "Magpie路径": "ماغبي تريل", - "Sakura部署教程": "ساكورا نشر البرنامج التعليمي", - "Github仓库": "مستودع جيتوب", "利用上文信息翻译(通常会有一定的效果提升,但会导致变慢)": "استخدام المعلومات الواردة أعلاه في الترجمة ( عادة ما يكون هناك بعض التحسن ، ولكن يمكن أن يؤدي إلى إبطاء )", "使用YAPI注入": "استخدام حقن YAPI", "窗口缩放": "نافذة التكبير", @@ -552,7 +534,7 @@ "存在": "موجود", "添加": "إضافة .", "使用原型查询": "باستخدام نموذج الاستعلام", - "时": "وقت", + "时": "ساعة .", "启动": "بدء", "批量添加": "إضافة دفعة", "左移": "تحول اليسار", @@ -564,8 +546,6 @@ "名称": "الإسم", "网址": "عنوان الموقع", "百度OCR": "بايدو التعرف الضوئي على الحروف", - "飞书OCR": "كتاب الطيران التعرف الضوئي على الحروف", - "讯飞OCR": "التعرف الضوئي على الحروف", "最大缓冲区长度": "أقصى طول المخزن المؤقت", "最大缓存文本长度": "أقصى طول النص مخبأ", "半径": "نصف قطر", @@ -605,11 +585,9 @@ "不显示时间": "لا وقت العرض", "过滤历史重复": "تصفية التاريخ تكرار", "缓存条数": "عدد شرائط التخزين المؤقت", - "腾讯OCR": "تينسنت التعرف الضوئي على الحروف", "删除列表": "حذف قائمة", "上移": "رفع", "下移": "نزولا", - "腾讯图片翻译": "تينسنت ترجمة الصور", "百度图片翻译": "بايدو ترجمة الصور", "大": "كبير .", "权限不足,请以管理员权限运行!": "امتيازات غير كافية ، يرجى تشغيل مع امتيازات المسؤول !", @@ -826,5 +804,14 @@ "按行数过滤或截断": "تصفية أو اقتطاع حسب عدد الصفوف", "超过最大字数时截断而非过滤": "اقتطاع عند تجاوز الحد الأقصى لعدد الكلمات بدلا من تصفية", "超过最大行数时截断而非过滤": "البتر عند تجاوز الحد الأقصى لعدد الصفوف بدلا من الترشيح", - "复制图片": "نسخ الصور" + "复制图片": "نسخ الصور", + "试用": "محاكمة", + "图片翻译": "ترجمة الصور", + "通用文字识别": "العام التعرف على الحروف", + "腾讯": "تينسنت", + "通用印刷体识别": "العام التعرف على الطباعة", + "小牛": "مافريكس", + "讯飞": "شون فاي", + "百度翻译开放平台": "بايدو ترجمة منصة مفتوحة", + "百度智能云": "بايدو سحابة ذكية" } \ No newline at end of file diff --git a/LunaTranslator/files/lang/cht.json b/LunaTranslator/files/lang/cht.json index 0d55b289..607d0796 100644 --- a/LunaTranslator/files/lang/cht.json +++ b/LunaTranslator/files/lang/cht.json @@ -34,12 +34,6 @@ "快译通": "快譯通", "有道4": "有道 4", "有道5": "有道 5", - "百度api": "百度 API", - "腾讯api": "騰訊 API", - "小牛api": "小牛 API", - "彩云api": "彩雲 API", - "火山api": "火山 API", - "有道api": "有道 API", "导出sqlite文件为json文件": "匯出 SQLite 檔案為 JSON 檔案", "中文": "中文", "翻译设置": "翻譯設定", @@ -127,7 +121,6 @@ "图标": "圖示", "指示詞": "指示詞", "動詞": "動詞", - "注册网址": "註冊網址", "显示帧率": "顯示幀率", "游戏": "遊戲", "剪裁UWP窗口的标题栏": "裁剪 UWP 視窗的標題列", @@ -158,7 +151,6 @@ "开始游戏": "開始遊戲", "最邻近": "最鄰近", "感動詞": "感動詞", - "字数统计": "字數統計", "形容詞": "形容詞", "json文件": "JSON 檔案", "透明度": "透明度", @@ -167,7 +159,6 @@ "选择文件夹": "選擇資料夾", "简体中文": "簡體中文", "原文内容": "原文內容", - "次数统计": "次數統計", "代名詞": "代名詞", "判定詞": "判定詞", "去除重复行": "去除重複的列", @@ -291,7 +282,6 @@ "中东欧": "中東歐", "北欧": "北歐", "西里尔": "西里爾", - "火山OCR": "火山 OCR", "翻译及OCR语言": "翻譯及 OCR 語言", "特殊码": "特殊碼", "删除": "刪除", @@ -337,7 +327,6 @@ "波兰语": "波蘭語", "窗口置顶": "視窗置頂", "仅": "僅", - "注册网址2": "註冊網址 2", "任务栏中显示": "工作列中顯示", "移除": "移除", "复制特殊码": "複製特殊碼", @@ -355,7 +344,6 @@ "结束地址(hex)": "結束位址(hex)", "搜索文本过短!": "搜尋文字過短!", "不能为空": "不能為空", - "阿里api": "阿里 API", "找不到重要组件:": "找不到重要元件:", "请重新下载并关闭杀毒软件后重试": "請重新下載並關閉防毒軟體後重試", "系统未安装": "系統未安裝", @@ -451,11 +439,7 @@ "刷新": "重新整理", "读取剪贴板": "讀取剪貼簿", "进行一次OCR": "進行一次 OCR", - "有道OCR": "有道 OCR", "免费试用": "免費試用", - "通用文字识别 API": "一般文字識別 API", - "有道图片翻译": "有道圖片翻譯", - "图片翻译 API": "圖片翻譯 API", "内嵌翻译": "內嵌翻譯", "隐藏不存在的游戏": "隱藏不存在的遊戲", "宽度": "寬度", @@ -490,8 +474,6 @@ "日语注音方案": "日語注音方案", "Sakura大模型": "Sakura 大模型", "Magpie路径": "Magpie 路徑", - "Sakura部署教程": "Sakura 部署教學", - "Github仓库": "GitHub 儲存庫", "利用上文信息翻译(通常会有一定的效果提升,但会导致变慢)": "利用上文資訊翻譯(通常會有一定的效果提升,但會導致變慢)", "使用YAPI注入": "使用 YAPI 注入", "窗口缩放": "視窗縮放", @@ -552,7 +534,7 @@ "存在": "存在", "添加": "新增", "使用原型查询": "使用原型査詢", - "时": "時", + "时": "小時", "启动": "啟動", "批量添加": "批次新增", "左移": "左移", @@ -564,8 +546,6 @@ "名称": "名稱", "网址": "網址", "百度OCR": "百度 OCR", - "飞书OCR": "飛書 OCR", - "讯飞OCR": "訊飛 OCR", "最大缓冲区长度": "最大緩衝區長度", "最大缓存文本长度": "最大快取文字長度", "半径": "半徑", @@ -605,11 +585,9 @@ "不显示时间": "不顯示時間", "过滤历史重复": "過濾歷史重複", "缓存条数": "快取個數", - "腾讯OCR": "騰訊 OCR", "删除列表": "刪除清單", "上移": "上移", "下移": "下移", - "腾讯图片翻译": "騰訊圖片翻譯", "百度图片翻译": "百度圖片翻譯", "大": "大", "权限不足,请以管理员权限运行!": "權限不足,請以管理員身分執行!", @@ -826,5 +804,14 @@ "按行数过滤或截断": "按行數過濾或截斷", "超过最大字数时截断而非过滤": "超過最大字數時截斷而非過濾", "超过最大行数时截断而非过滤": "超過最大行數時截斷而非過濾", - "复制图片": "複製圖片" + "复制图片": "複製圖片", + "试用": "試用", + "图片翻译": "圖片翻譯", + "通用文字识别": "通用文字識別", + "腾讯": "騰訊", + "通用印刷体识别": "通用印刷體識別", + "小牛": "小牛", + "讯飞": "訊飛", + "百度翻译开放平台": "百度翻譯開放平臺", + "百度智能云": "百度智慧雲" } \ No newline at end of file diff --git a/LunaTranslator/files/lang/cs.json b/LunaTranslator/files/lang/cs.json index 8b3eb405..7c0ea4a4 100644 --- a/LunaTranslator/files/lang/cs.json +++ b/LunaTranslator/files/lang/cs.json @@ -39,7 +39,6 @@ "在线翻译": "on-line překlad", "开始游戏": "Spustit hru", "動詞": "Slovesa", - "次数统计": "Statistika frekvence", "指示詞": "Ukazatelná slova", "备注": "poznámky", "東北きりたん": "Severovýchodní", @@ -56,7 +55,6 @@ "端口冲突": "Konflikt přístavu", "连接进程": "Proces připojení", "发现": "najít", - "火山OCR": "OCR sopky", "有道4": "Youdao 4.", "全字符(UTF-8)": "Plný znak (UTF-8)", "取消": "zrušit", @@ -165,7 +163,6 @@ "显示/隐藏范围框": "Zobrazit/skrýt rámeček rozsahu", "选取OCR范围后显示范围框": "Zobrazit okno rozsahu po výběru rozsahu OCR", "代理设置": "Nastavení proxy", - "阿里api": "API Alibaba", "自动": "automatické", "重复次数": "Četnost opakování", "仅使用激活的翻译": "Použít pouze aktivované překlady", @@ -212,13 +209,10 @@ "形状詞": "Tvarovací slova", "文本源": "Zdroj textu", "北欧(CP1257)": "Severní Evropa (CP1257)", - "注册网址2": "Registrační URL 2", "文本预处理": "Předzpracování textu", "调整执行顺序": "Upravit pořadí provedení", - "腾讯api": "Tencent API", "资源下载": "Stahování zdrojů", "每个字后插入空格": "Vložit mezeru za každé slovo", - "火山api": "Volcano API", "結月ゆかり/结月缘": "Jieyue Yuri/Jieyue Osud", "窗口置顶": "Horní okno", "颜色": "barva", @@ -269,7 +263,6 @@ "默认设置": "výchozí nastavení", "意大利语": "Italština", "已保存游戏": "Uložená hra", - "有道api": "Youdao API", "显示显示原文按钮": "Zobrazit tlačítko původního textu", "去除花括号{}": "Odstraňte kudrnaté rovnátka.", "保留原文": "Zachovat původní text", @@ -334,12 +327,10 @@ "设置Token": "Nastavit žeton", "备忘录": "memorandum", "自定义python处理": "Přizpůsobit zpracování Pythonu", - "小牛api": "Little Cow API", "東北ずん子/东北俊子": "Dongbei Kunzi/Dongbei Junzi", "波兰语": "Polský jazyk", "接口": "Rozhraní", "翻译结果修正按钮": "Tlačítko pro opravu výsledků překladu", - "注册网址": "Registrační stránky", "警告": "varování", "俄语": "ruština", "文字更新分析": "Analýza aktualizace textu", @@ -386,7 +377,6 @@ "当前版本": "aktuální verze", "搜索持续时间(s)": "Doba vyhledávání (s)", "添加行": "přidat řádky", - "百度api": "Baidu API", "京町セイカ": "KyomachikaName", "仅": "pouze", "透明度": "transparentnost", @@ -394,7 +384,6 @@ "朗读翻译": "Čtěte nahlas a přeložte", "火山TTS": "sopka TTS", "获取失败": "Získání selhalo", - "字数统计": "počet slov", "快捷键冲突": "Konflikt klíčových zkratek", "用户词典": "Uživatelský slovník", "执行周期(s)": "Prováděcí cyklus (s)", @@ -436,7 +425,6 @@ "接続詞": "Přijímání slov", "显示游戏静音按钮": "Zobrazit tlačítko ztlumení hry", "拉丁(CP1252)": "Latin (CP1252)", - "彩云api": "Rozhraní Color Cloud", "東北ずん子": "Severovýchodní Kunzi", "编辑专有名词": "Upravit vlastní termíny", "目标语言": "cílový jazyk", @@ -452,11 +440,7 @@ "过滤包含乱码的文本行": "Filtrovat textové řádky obsahující zkreslené znaky", "进行一次OCR": "Provést OCR jednou", "选取OCR范围——立即": "Vybrat rozsah OCR a okamžitě", - "有道OCR": "OCR Youdao", "免费试用": "Zkušební verze zdarma", - "通用文字识别 API": "Univerzální rozpoznávání textu API", - "有道图片翻译": "Překlad obrázků Youdao", - "图片翻译 API": "API pro překlad obrázků", "内嵌翻译": "Vložený překlad", "隐藏不存在的游戏": "Skrýt neexistující hry", "宽度": "šířka", @@ -497,8 +481,6 @@ "日语注音方案": "Schéma japonských fonetických abeced", "Sakura大模型": "Velký model Sakura", "Magpie路径": "Stříbrná cesta", - "Sakura部署教程": "Návod k nasazení Sakury", - "Github仓库": "Úložiště Github", "利用上文信息翻译(通常会有一定的效果提升,但会导致变慢)": "Přeložit pomocí informací uvedených v předchozím textu (obvykle s určitým zlepšením, ale může vést k pomalejšímu překladu)", "历史翻译": "Historický překlad", "使用YAPI注入": "Injekce pomocí YAPI", @@ -561,7 +543,7 @@ "存在": "existence", "添加": "přidat do", "使用原型查询": "Použít prototypový dotaz", - "时": "Když", + "时": "hodinu", "启动": "spuštění", "批量添加": "Přidat dávku", "左移": "Levý posun", @@ -574,8 +556,6 @@ "网址": "internetové stránky", "可选取的": "Volitelné možnosti", "百度OCR": "Baidu OCR", - "飞书OCR": "Feishu OCR", - "讯飞OCR": "IFlytek OCR", "最大缓冲区长度": "Maximální délka vyrovnávací paměti", "最大缓存文本长度": "Maximální délka textu uloženého do mezipaměti", "半径": "poloměr", @@ -614,12 +594,10 @@ "不显示时间": "Nezobrazovat čas", "过滤历史重复": "Filtrovat duplicitní historii", "缓存条数": "Počet položek mezipaměti", - "腾讯OCR": "Desetiletá OCR", "创建列表": "Vytvořit seznam", "删除列表": "Smazat seznam", "上移": "Pohyb nahoru", "下移": "Přesunout dolů", - "腾讯图片翻译": "Překlad deseti obrázků", "百度图片翻译": "Překlad obrázků Baidu", "大": "velký", "权限不足,请以管理员权限运行!": "Nedostatečná oprávnění, prosím spusťte s oprávněním správce!", @@ -826,5 +804,14 @@ "按行数过滤或截断": "Filtrovat nebo zkrátit podle počtu řádků", "超过最大字数时截断而非过滤": "Při překročení maximálního počtu slov zkrátit místo filtrování", "超过最大行数时截断而非过滤": "Při překročení maximálního počtu řádků zkrátit namísto filtrování", - "复制图片": "Kopírovat obrázek" + "复制图片": "Kopírovat obrázek", + "试用": "před soudem", + "图片翻译": "Překlad obrázků", + "通用文字识别": "Univerzální rozpoznávání textu", + "腾讯": "deset let", + "通用印刷体识别": "Univerzální identifikace tisku", + "小牛": "tele", + "讯飞": "IFlytek", + "百度翻译开放平台": "Baidu Translation Open Platform", + "百度智能云": "Cloud AI Baidu" } \ No newline at end of file diff --git a/LunaTranslator/files/lang/de.json b/LunaTranslator/files/lang/de.json index d6610293..bbc1333f 100644 --- a/LunaTranslator/files/lang/de.json +++ b/LunaTranslator/files/lang/de.json @@ -39,7 +39,6 @@ "在线翻译": "Online-Übersetzung", "开始游戏": "Spiel starten", "動詞": "Verben", - "次数统计": "Häufigkeitsstatistiken", "指示詞": "Indikatorwörter", "备注": "Bemerkungen", "東北きりたん": "Nordosten", @@ -56,7 +55,6 @@ "端口冲突": "Hafenkonflikt", "连接进程": "Verbindungsprozess", "发现": "finden", - "火山OCR": "Vulkan OCR", "有道4": "Youdao 4.", "全字符(UTF-8)": "Vollzeichen (UTF-8)", "取消": "Abbrechen", @@ -165,7 +163,6 @@ "显示/隐藏范围框": "Bereichsrahmen ein-/ausblenden", "选取OCR范围后显示范围框": "Bereichsfeld nach Auswahl des OCR-Bereichs anzeigen", "代理设置": "Proxy-Einstellungen", - "阿里api": "Alibaba API", "自动": "automatisch", "重复次数": "Wiederholungshäufigkeit", "仅使用激活的翻译": "Nur aktivierte Übersetzungen verwenden", @@ -212,13 +209,10 @@ "形状詞": "Wörter formen", "文本源": "Textquelle", "北欧(CP1257)": "Nordeuropa (CP1257)", - "注册网址2": "Registrierungs-URL 2", "文本预处理": "Textvorverarbeitung", "调整执行顺序": "Passen Sie die Ausführungsreihenfolge an", - "腾讯api": "Tencent API", "资源下载": "Ressourcen herunterladen", "每个字后插入空格": "Leerzeichen nach jedem Wort einfügen", - "火山api": "Volcano API", "結月ゆかり/结月缘": "Jieyue Yuri/Jieyue Schicksal", "窗口置顶": "Fenster oben", "颜色": "Farbe", @@ -269,7 +263,6 @@ "默认设置": "Standardeinstellung", "意大利语": "Italienisch", "已保存游戏": "Gespeichertes Spiel", - "有道api": "Youdao API", "显示显示原文按钮": "Schaltfläche Originaltext anzeigen", "去除花括号{}": "Lockige Klammern entfernen {}", "保留原文": "Den Originaltext beibehalten", @@ -334,12 +327,10 @@ "设置Token": "Token setzen", "备忘录": "Memorandum", "自定义python处理": "Python-Verarbeitung anpassen", - "小牛api": "Little Cow API", "東北ずん子/东北俊子": "Dongbei Kunzi/Dongbei Junzi", "波兰语": "Polnische Sprache", "接口": "Schnittstelle", "翻译结果修正按钮": "Schaltfläche zur Korrektur von Übersetzungsergebnissen", - "注册网址": "Website zur Registrierung", "警告": "Warnung", "俄语": "Russisch", "文字更新分析": "Analyse der Textaktualisierung", @@ -386,7 +377,6 @@ "当前版本": "aktuelle Version", "搜索持续时间(s)": "Suchdauer (s)", "添加行": "Zeilen hinzufügen", - "百度api": "Baidu API", "京町セイカ": "KyomachikaName", "仅": "nur", "透明度": "Transparenz", @@ -394,7 +384,6 @@ "朗读翻译": "Vorlesen und übersetzen", "火山TTS": "Vulkan TTS", "获取失败": "Übernahme fehlgeschlagen", - "字数统计": "Wortanzahl", "快捷键冲突": "Tastenkonflikt", "用户词典": "Benutzerwörterbuch", "执行周期(s)": "Ausführungszyklus(en)", @@ -436,7 +425,6 @@ "接続詞": "Wörter empfangen", "显示游戏静音按钮": "Spielstummschaltfläche anzeigen", "拉丁(CP1252)": "Latein (CP1252)", - "彩云api": "Color Cloud API", "東北ずん子": "Nordost Kunzi", "编辑专有名词": "Eigene Begriffe bearbeiten", "目标语言": "Zielsprache", @@ -452,11 +440,7 @@ "过滤包含乱码的文本行": "Textzeilen mit verzerrten Zeichen filtern", "进行一次OCR": "OCR einmal ausführen", "选取OCR范围——立即": "OCR-Bereich sofort auswählen", - "有道OCR": "Youdao OCR", "免费试用": "Kostenlose Testversion", - "通用文字识别 API": "Universal Text Recognition API", - "有道图片翻译": "Youdao Bildübersetzung", - "图片翻译 API": "Bildübersetzungs-API", "内嵌翻译": "Eingebettete Übersetzung", "隐藏不存在的游戏": "Nicht vorhandene Spiele ausblenden", "宽度": "Breite", @@ -497,8 +481,6 @@ "日语注音方案": "Japanisches Phonetisches Alphabet Schema", "Sakura大模型": "Sakura Großes Modell", "Magpie路径": "Magpie Path", - "Sakura部署教程": "Sakura Deployment Tutorial", - "Github仓库": "Github-Repository", "利用上文信息翻译(通常会有一定的效果提升,但会导致变慢)": "Übersetzen Sie mit den Informationen im vorherigen Text (normalerweise mit etwas Verbesserung, kann aber zu einer langsameren Übersetzung führen)", "历史翻译": "Historische Übersetzung", "使用YAPI注入": "Injizieren mit YAPI", @@ -561,7 +543,7 @@ "存在": "Existenz", "添加": "hinzufügen zu", "使用原型查询": "Prototyp-Abfrage verwenden", - "时": "Wann", + "时": "Stunde", "启动": "Inbetriebnahme", "批量添加": "Batch hinzufügen", "左移": "Linksverschiebung", @@ -574,8 +556,6 @@ "网址": "Website", "可选取的": "Auswählbare Optionen", "百度OCR": "Baidu OCR", - "飞书OCR": "Feishu OCR", - "讯飞OCR": "IFlytek OCR", "最大缓冲区长度": "Maximale Pufferlänge", "最大缓存文本长度": "Maximale Textlänge im Cache", "半径": "Radius", @@ -614,12 +594,10 @@ "不显示时间": "Zeit nicht anzeigen", "过滤历史重复": "Duplizierter Verlauf herausfiltern", "缓存条数": "Anzahl der Cache-Einträge", - "腾讯OCR": "Zehntel OCR", "创建列表": "Liste erstellen", "删除列表": "Liste löschen", "上移": "Nach oben", "下移": "Nach unten bewegen", - "腾讯图片翻译": "Zehntel Bildübersetzung", "百度图片翻译": "Baidu Bildübersetzung", "大": "groß", "权限不足,请以管理员权限运行!": "Unzureichende Berechtigungen, bitte mit Administratorrechten ausführen!", @@ -826,5 +804,14 @@ "按行数过滤或截断": "Nach Zeilenanzahl filtern oder kürzen", "超过最大字数时截断而非过滤": "Kürzen statt Filtern, wenn die maximale Wortanzahl überschritten wird", "超过最大行数时截断而非过滤": "Kürzen statt Filtern, wenn die maximale Anzahl von Zeilen überschritten wird", - "复制图片": "Bild kopieren" + "复制图片": "Bild kopieren", + "试用": "im Prozess", + "图片翻译": "Bildübersetzung", + "通用文字识别": "Universelle Texterkennung", + "腾讯": "zehn Prozent", + "通用印刷体识别": "Universal Print Identification", + "小牛": "Kalb", + "讯飞": "IFlytek", + "百度翻译开放平台": "Baidu Translation Open Platform", + "百度智能云": "Baidu AI Cloud" } \ No newline at end of file diff --git a/LunaTranslator/files/lang/en.json b/LunaTranslator/files/lang/en.json index 6e3dc783..ecb46282 100644 --- a/LunaTranslator/files/lang/en.json +++ b/LunaTranslator/files/lang/en.json @@ -14,7 +14,6 @@ "有道2": "Youdao 2", "显示原文": "Show Original Text", "居中显示": "Center Display", - "百度api": "Baidu API", "预翻译": "Pre-translation", "密钥": "Secret Key", "设置": "Settings", @@ -23,7 +22,6 @@ "去除花括号{}": "Filter Curly Braces {}", "选择文件": "Select File", "剪贴板": "Clipboard", - "腾讯api": "Tencent API", "本地OCR": "Local OCR", "阿里": "Alibaba", "自动朗读": "Automatically Read Aloud", @@ -35,7 +33,6 @@ "搜索": "Search", "显示游戏静音按钮": "Show Mute Game Button", "動詞": "Verbs", - "注册网址": "Registration URL", "显示帧率": "Display FPS", "自动翻译": "Auto Translate", "锁定工具栏": "Lock Toolbar", @@ -48,7 +45,6 @@ "有道": "Youdao", "打开设置": "Open Settings", "注册在线翻译": "Online Translation (Requires API Key)", - "彩云api": "Caiyun API", "录制翻译文件": "Record Translation File", "显示显示原文按钮": "Show Original Text Button", "接尾辞": "Suffixes", @@ -107,7 +103,6 @@ "翻译结果繁简体显示": "Show Traditional and Simplified Chinese translations", "显示设置": "Display Settings", "显示/隐藏原文": "Show/Hide Original Text", - "小牛api": "Niutrans API", "HOOK设置": "HOOK Settings", "源语言": "Source Language", "选择游戏": "Select Game", @@ -115,7 +110,6 @@ "过滤换行符": "Filter Line Breaks", "金山快译": "Kingsoft FastAIT", "感動詞": "Interjections", - "字数统计": "Character count", "描边字体": "Stroke Font", "不透明度": " Opacity", "形容詞": "Adjectives", @@ -129,12 +123,10 @@ "选择文件夹": "Select Folder", "显示分词结果": "Show Word Segmentation Result", "复制到剪贴板": "Copy to Clipboard", - "火山api": "Volcano API", "在线翻译": "Online Translation (No API Key)", "小学馆辞书": "Shogakukan Dictionary", "简体中文": "Simplified Chinese", "原文内容": "Original Content", - "次数统计": "Count Statistics", "代名詞": "Pronouns", "必应": "Bing", "判定詞": "Copulas", @@ -148,7 +140,6 @@ "程序名": "Program Name", "重复次数": "Repeat Count", "最小化到托盘": "Minimize to Tray", - "有道api": "Youdao API", "日语(CP932,SHIFT-JIS)": "Japanese (CP932, SHIFT-JIS)", "简体中文(CP936,GBK)": "Simplified Chinese (CP936, GBK)", "繁体中文(CP950,BIG5)": "Traditional Chinese (CP950, BIG5)", @@ -291,7 +282,6 @@ "中东欧": "Central and Eastern Europe", "北欧": "Nordic", "西里尔": "Cyrillic", - "火山OCR": "Volcano OCR", "翻译及OCR语言": "Translation and OCR language", "特殊码": "Hook Code", "删除": "Delete", @@ -337,7 +327,6 @@ "波兰语": "Polish", "窗口置顶": "Window Always On Top", "仅": "Only", - "注册网址2": "Registration URL 2", "任务栏中显示": "Show In Taskbar", "移除": "Remove", "复制特殊码": "Copy Hook Code", @@ -355,7 +344,6 @@ "结束地址(hex)": "End Address (hex)", "搜索文本过短!": "Search Text too Short!", "不能为空": "Cannot be empty", - "阿里api": "Ali API", "找不到重要组件:": "Important Component Not Found:", "请重新下载并关闭杀毒软件后重试": "Please re-download and try again with antivirus disabled", "系统未安装": "System Not Installed", @@ -451,11 +439,7 @@ "刷新": "Refresh", "读取剪贴板": "Read Clipboard", "进行一次OCR": "Perform OCR", - "有道OCR": "Youdao OCR", "免费试用": "Free Trial", - "通用文字识别 API": "General OCR API", - "有道图片翻译": "Youdao Image Translation", - "图片翻译 API": "Image Translation API", "内嵌翻译": "Embedded Translation", "隐藏不存在的游戏": "Hide Non-existent Games", "宽度": "Width", @@ -489,8 +473,6 @@ "日语注音方案": "Phonetic Guide (Furigana)", "Sakura大模型": "Sakura Large Model", "Magpie路径": "Magpie Path", - "Sakura部署教程": "Sakura Deployment Tutorial", - "Github仓库": "Github Repository", "利用上文信息翻译(通常会有一定的效果提升,但会导致变慢)": "Enable Context-Aware Translation (Improves quality by using previous text for translation context, but may be slower)", "使用YAPI注入": "Use YAPI Injection", "窗口缩放": "Window Scaling", @@ -551,7 +533,7 @@ "存在": "Exist", "添加": "Add", "使用原型查询": "Use Prototype Query", - "时": "Time", + "时": "hour", "启动": "Start", "批量添加": "Batch Add", "左移": "Move Left", @@ -563,8 +545,6 @@ "名称": "Name", "网址": "URL", "百度OCR": "Baidu OCR", - "飞书OCR": "Feishu OCR", - "讯飞OCR": "iFlytek OCR", "最大缓冲区长度": "Maximum Buffer Length", "最大缓存文本长度": "Maximum Cached Text Length", "半径": "Radius", @@ -604,11 +584,9 @@ "不显示时间": "Don't Display Time", "过滤历史重复": "Filter Historical Duplicates", "缓存条数": "Number of Cached Items", - "腾讯OCR": "Tencent OCR", "删除列表": "Delete List", "上移": "Move Up", "下移": "Move Down", - "腾讯图片翻译": "Tencent Image Translation", "百度图片翻译": "Baidu Image Translation", "大": "Large", "权限不足,请以管理员权限运行!": "Insufficient Permissions, Please Run as Administrator!", @@ -826,5 +804,14 @@ "按行数过滤或截断": "Filter or truncate by row count", "超过最大字数时截断而非过滤": "Truncate instead of filtering when exceeding the maximum word count", "超过最大行数时截断而非过滤": "Truncate instead of filtering when the maximum number of rows is exceeded", - "复制图片": "Copy image" + "复制图片": "Copy image", + "试用": "on trial", + "图片翻译": "Image translation", + "通用文字识别": "Universal Text Recognition", + "腾讯": "tencent", + "通用印刷体识别": "Universal Print Identification", + "小牛": "Calf", + "讯飞": "IFlytek", + "百度翻译开放平台": "Baidu Translation Open Platform", + "百度智能云": "Baidu AI Cloud" } \ No newline at end of file diff --git a/LunaTranslator/files/lang/es.json b/LunaTranslator/files/lang/es.json index 239db08d..aee54c23 100644 --- a/LunaTranslator/files/lang/es.json +++ b/LunaTranslator/files/lang/es.json @@ -34,12 +34,6 @@ "快译通": "Traducción rápida", "有道4": "Youdao 4", "有道5": "Youdao 5", - "百度api": "Baidu API", - "腾讯api": "Tencent API", - "小牛api": "Ternera API", - "彩云api": "Caiyun API", - "火山api": "Apis volcánicas", - "有道api": "Hay una API", "导出sqlite文件为json文件": "Exportar el archivo qlite como archivo json", "中文": "Chino", "翻译设置": "Configuración de la traducción", @@ -127,7 +121,6 @@ "图标": "Iconos", "指示詞": "Instrucción", "動詞": "Verbos", - "注册网址": "Sitio web de registro", "显示帧率": "Muestra la tasa de fotogramas", "游戏": "Juego", "剪裁UWP窗口的标题栏": "Recortar la barra de título de la ventana uwp", @@ -158,7 +151,6 @@ "开始游戏": "Comienza el juego", "最邻近": "El más cercano", "感動詞": "Palabras conmovedoras", - "字数统计": "Estadísticas del número de palabras", "形容詞": "Adjetivo", "json文件": "Archivo json", "透明度": "Transparencia", @@ -167,7 +159,6 @@ "选择文件夹": "Seleccionar carpetas", "简体中文": "Chino simplificado", "原文内容": "Contenido original", - "次数统计": "Estadísticas del número de veces", "代名詞": "Sinónimo", "判定詞": "Palabra de juicio", "去除重复行": "Eliminar filas repetidas", @@ -291,7 +282,6 @@ "中东欧": "Europa central y oriental", "北欧": "Norte de Europa", "西里尔": "Cyril", - "火山OCR": "Volcán OCR", "翻译及OCR语言": "Idiomas de traducción y OCR", "特殊码": "Código especial", "删除": "Eliminar", @@ -337,7 +327,6 @@ "波兰语": "Polaco", "窗口置顶": "La ventana está en la parte superior", "仅": "Solo", - "注册网址2": "Sitio web de registro 2", "任务栏中显示": "Se muestra en la barra de tareas", "移除": "Eliminar", "复制特殊码": "Copiar código especial", @@ -355,7 +344,6 @@ "结束地址(hex)": "Dirección final (hex)", "搜索文本过短!": "¡El texto de búsqueda es demasiado corto!", "不能为空": "No puede estar vacío", - "阿里api": "Ali API", "找不到重要组件:": "No se pueden encontrar componentes importantes:", "请重新下载并关闭杀毒软件后重试": "Por favor, vuelva a descargar y cierre el software antivirus y vuelva a intentarlo.", "系统未安装": "El sistema no está instalado", @@ -451,11 +439,7 @@ "刷新": "Refrescar", "读取剪贴板": "Leer el portapapeles", "进行一次OCR": "Realizar un OCR", - "有道OCR": "Youdao OCR", "免费试用": "Prueba gratuita", - "通用文字识别 API": "API universal de reconocimiento de texto", - "有道图片翻译": "Traducción de imágenes de youdao", - "图片翻译 API": "API de traducción de imágenes", "内嵌翻译": "Traducción incorporada", "隐藏不存在的游戏": "Ocultar juegos que no existen", "宽度": "Ancho", @@ -490,8 +474,6 @@ "日语注音方案": "Programa de fonética japonesa", "Sakura大模型": "Gran modelo Sakura", "Magpie路径": "Ruta magpie", - "Sakura部署教程": "Guía de despliegue Sakura", - "Github仓库": "Almacén github", "利用上文信息翻译(通常会有一定的效果提升,但会导致变慢)": "Traducción utilizando la información anterior (generalmente tiene un cierto efecto de mejora, pero puede causar lentitud)", "使用YAPI注入": "Inyección con Yapi", "窗口缩放": "Ampliación de la ventana", @@ -552,7 +534,7 @@ "存在": "Existencia", "添加": "Añadir", "使用原型查询": "Consulta con prototipo", - "时": "Hora", + "时": "Horas", "启动": "Inicio", "批量添加": "Añadir por lotes", "左移": "Desplazamiento a la izquierda", @@ -564,8 +546,6 @@ "名称": "Nombre", "网址": "Sitio web", "百度OCR": "Baidu OCR", - "飞书OCR": "Flying Book OCR", - "讯飞OCR": "IFLYTEK OCR", "最大缓冲区长度": "Longitud máxima de la zona de amortiguación", "最大缓存文本长度": "Longitud máxima del texto en caché", "半径": "Radio", @@ -605,11 +585,9 @@ "不显示时间": "No muestra el tiempo", "过滤历史重复": "Filtrar repetición histórica", "缓存条数": "Número de barras de caché", - "腾讯OCR": "Tencent OCR", "删除列表": "Eliminar lista", "上移": "Subir", "下移": "Bajar", - "腾讯图片翻译": "Traducción de imágenes de Tencent", "百度图片翻译": "Traducción de imágenes de baidu", "大": "Grande", "权限不足,请以管理员权限运行!": "¡Permisos insuficientes, ¡ por favor, ejecute con permisos de administrador!", @@ -826,5 +804,14 @@ "按行数过滤或截断": "Filtrar o truncar por número de líneas", "超过最大字数时截断而非过滤": "Cortar en lugar de filtrar cuando se supera el número máximo de palabras", "超过最大行数时截断而非过滤": "Cortar en lugar de filtrar cuando se supera el número máximo de líneas", - "复制图片": "Copiar imagen" + "复制图片": "Copiar imagen", + "试用": "Prueba", + "图片翻译": "Traducción de imágenes", + "通用文字识别": "Reconocimiento de texto universal", + "腾讯": "Tencent", + "通用印刷体识别": "Reconocimiento universal de impresión", + "小牛": "Ternera", + "讯飞": "Xunfei", + "百度翻译开放平台": "Baidu Translation Open Platform", + "百度智能云": "Baidu SMART Cloud" } \ No newline at end of file diff --git a/LunaTranslator/files/lang/fr.json b/LunaTranslator/files/lang/fr.json index 44b86509..11a6458e 100644 --- a/LunaTranslator/files/lang/fr.json +++ b/LunaTranslator/files/lang/fr.json @@ -34,12 +34,6 @@ "快译通": "Traduction rapide", "有道4": "YouDao 4", "有道5": "YouDao 5", - "百度api": "API Baidu", - "腾讯api": "API Tencent", - "小牛api": "API Maverick", - "彩云api": "API Cloud", - "火山api": "API volcanique", - "有道api": "API Channel", "导出sqlite文件为json文件": "Exporter le fichier SQLite en tant que fichier json", "中文": "En chinois", "翻译设置": "Paramètres de traduction", @@ -127,7 +121,6 @@ "图标": "Icônes", "指示詞": "Mot indicateur", "動詞": "Verbes", - "注册网址": "Site Web d'inscription", "显示帧率": "Afficher le taux de trame", "游戏": "Le jeu", "剪裁UWP窗口的标题栏": "Couper la barre de titre de la fenêtre uwp", @@ -158,7 +151,6 @@ "开始游戏": "Commencez le jeu.", "最邻近": "Le plus proche", "感動詞": "Mots émouvants", - "字数统计": "Nombre de mots", "形容詞": "Adjectifs", "json文件": "Fichier json", "透明度": "Transparence", @@ -167,7 +159,6 @@ "选择文件夹": "Sélectionner un dossier", "简体中文": "Chinois simplifié", "原文内容": "Contenu du texte original", - "次数统计": "Nombre de statistiques", "代名詞": "Pronom", "判定詞": "Mot de décision", "去除重复行": "Supprimer les lignes dupliquées", @@ -291,7 +282,6 @@ "中东欧": "Europe centrale et orientale", "北欧": "Europe du Nord", "西里尔": "Cyril", - "火山OCR": "OCR volcanique", "翻译及OCR语言": "Traduction et langage ocr", "特殊码": "Code spécial", "删除": "Supprimer", @@ -337,7 +327,6 @@ "波兰语": "Polonais", "窗口置顶": "Haut de la fenêtre", "仅": "Uniquement", - "注册网址2": "Adresse Web d'inscription 2", "任务栏中显示": "Affichage dans la barre des tâches", "移除": "Supprimer", "复制特殊码": "Copier le code spécial", @@ -355,7 +344,6 @@ "结束地址(hex)": "Adresse de fin (Hex)", "搜索文本过短!": "Le texte de recherche est trop court!", "不能为空": "Ne peut pas être vide", - "阿里api": "Ali API", "找不到重要组件:": "Aucun composant important trouvé:", "请重新下载并关闭杀毒软件后重试": "Veuillez réessayer après le téléchargement et la fermeture du logiciel antivirus", "系统未安装": "Le système n'est pas installé", @@ -451,11 +439,7 @@ "刷新": "Rafraîchir", "读取剪贴板": "Lire le presse - papiers", "进行一次OCR": "Faites une ocr", - "有道OCR": "OCR avec piste", "免费试用": "Essai gratuit", - "通用文字识别 API": "API de reconnaissance de texte universelle", - "有道图片翻译": "Traduction d'images", - "图片翻译 API": "API de traduction d'images", "内嵌翻译": "Traduction intégrée", "隐藏不存在的游戏": "Cacher les jeux qui n'existent pas", "宽度": "Largeur", @@ -490,8 +474,6 @@ "日语注音方案": "Programme d'accent japonais", "Sakura大模型": "Sakura Grand Modèle", "Magpie路径": "Le chemin Magpie", - "Sakura部署教程": "Tutoriel de déploiement Sakura", - "Github仓库": "Entrepôt github", "利用上文信息翻译(通常会有一定的效果提升,但会导致变慢)": "Utilisez les informations ci - dessus pour traduire (il y a généralement une certaine augmentation de l'effet, mais cela entraîne un ralentissement)", "使用YAPI注入": "Injection avec Yapi", "窗口缩放": "Zoom de la fenêtre", @@ -552,7 +534,7 @@ "存在": "Présence", "添加": "Ajouter", "使用原型查询": "Utiliser une requête prototype", - "时": "Lorsque", + "时": "Heures", "启动": "Démarrage", "批量添加": "Ajouter par lot", "左移": "Déplacement à gauche", @@ -564,8 +546,6 @@ "名称": "Le nom", "网址": "Adresse Web", "百度OCR": "Baidu ocr", - "飞书OCR": "Livre volant ocr", - "讯飞OCR": "OCR volant", "最大缓冲区长度": "Longueur maximale du tampon", "最大缓存文本长度": "Longueur maximale du texte mis en cache", "半径": "Rayon", @@ -605,11 +585,9 @@ "不显示时间": "Ne pas afficher l'heure", "过滤历史重复": "Filtrer historique répétition", "缓存条数": "Nombre de barres de cache", - "腾讯OCR": "OCR Tencent", "删除列表": "Supprimer une liste", "上移": "Déplacement vers le Haut", "下移": "Descendre", - "腾讯图片翻译": "Traduction d'images par Tencent", "百度图片翻译": "Baidu traduction d'images", "大": "Grand", "权限不足,请以管理员权限运行!": "Autorisations insuffisantes, exécutez avec des privilèges d'administrateur!", @@ -826,5 +804,14 @@ "按行数过滤或截断": "Filtrer ou tronquer par nombre de lignes", "超过最大字数时截断而非过滤": "Tronquer au lieu de filtrer lorsque le nombre maximal de mots est dépassé", "超过最大行数时截断而非过滤": "Tronquer au lieu de filtrer lorsque le nombre maximal de lignes est dépassé", - "复制图片": "Copier l'image" + "复制图片": "Copier l'image", + "试用": "Essai", + "图片翻译": "Traduction d'images", + "通用文字识别": "Reconnaissance littérale universelle", + "腾讯": "Tencent", + "通用印刷体识别": "Identification universelle du corps imprimé", + "小牛": "Le veau", + "讯飞": "Signal volant", + "百度翻译开放平台": "Baidu traduction plateforme ouverte", + "百度智能云": "Baidu intelligent Cloud" } \ No newline at end of file diff --git a/LunaTranslator/files/lang/it.json b/LunaTranslator/files/lang/it.json index 842caa14..37920069 100644 --- a/LunaTranslator/files/lang/it.json +++ b/LunaTranslator/files/lang/it.json @@ -34,12 +34,6 @@ "快译通": "Kuaiyitong", "有道4": "Youdao 4", "有道5": "Youdao 5", - "百度api": "API Baidu", - "腾讯api": "API Tencent", - "小牛api": "API Mavericks", - "彩云api": "API Caiyun", - "火山api": "API Vulcano", - "有道api": "API Youdao", "导出sqlite文件为json文件": "Esporta file sqlite come file JSON", "中文": "Cinese", "翻译设置": "Impostazioni di traduzione", @@ -124,7 +118,6 @@ "图标": "icona", "指示詞": "Parole dimostrative", "動詞": "Verbi", - "注册网址": "Sito web di registrazione", "显示帧率": "Mostra frame rate", "游戏": "gioco", "剪裁UWP窗口的标题栏": "Taglia la barra del titolo della finestra UWP", @@ -155,7 +148,6 @@ "开始游戏": "Avvia il gioco", "最邻近": "Il vicino più vicino", "感動詞": "Parole commoventi", - "字数统计": "conteggio di parole", "形容詞": "Adesivo", "json文件": "File JSON", "透明度": "trasparenza", @@ -164,7 +156,6 @@ "选择文件夹": "Seleziona cartella", "简体中文": "Cinese semplificato", "原文内容": "Contenuto originale", - "次数统计": "Statistiche di frequenza", "代名詞": "Pronuncio", "判定詞": "Parola determinante", "去除重复行": "Rimuovi righe duplicate", @@ -285,7 +276,6 @@ "中东欧": "Europa centrale e orientale", "北欧": "Nord Europa", "西里尔": "Cyril", - "火山OCR": "OCR del vulcano", "翻译及OCR语言": "Traduzione e linguaggio OCR", "特殊码": "codice specifico", "删除": "elimina", @@ -337,7 +327,6 @@ "备忘录按钮": "Pulsante Memo", "绑定窗口按钮": "Pulsante finestra di associazione", "仅": "Solo", - "注册网址2": "Sito web di registrazione 2", "任务栏中显示": "Mostra nella barra delle applicazioni", "移除": "rimuovere", "复制特殊码": "Copia codice speciale", @@ -355,7 +344,6 @@ "结束地址(hex)": "Indirizzo finale (esadecimale)", "搜索文本过短!": "Il testo di ricerca è troppo breve!", "不能为空": "Impossibile essere vuoto", - "阿里api": "API Alibaba", "找不到重要组件:": "Componente importante non trovato:", "请重新下载并关闭杀毒软件后重试": "Si prega di scaricare e chiudere nuovamente il software antivirus e riprovare", "系统未安装": "Sistema non installato", @@ -451,11 +439,7 @@ "刷新": "Aggiorna", "读取剪贴板": "Leggi gli appunti", "进行一次OCR": "Condurre un OCR", - "有道OCR": "OCR Youdao", "免费试用": "Prova gratuita", - "通用文字识别 API": "API universale per il riconoscimento del testo", - "有道图片翻译": "Traduzione di Youdao Pictures", - "图片翻译 API": "API di traduzione immagine", "内嵌翻译": "Traduzione integrata", "隐藏不存在的游戏": "Nascondi giochi che non esistono", "宽度": "larghezza", @@ -490,8 +474,6 @@ "日语注音方案": "Schema fonetico giapponese", "Sakura大模型": "Modello Sakura Large", "Magpie路径": "Percorso magpie", - "Sakura部署教程": "Tutorial sull'implementazione di Sakura", - "Github仓库": "Magazzino Github", "利用上文信息翻译(通常会有一定的效果提升,但会导致变慢)": "Tradurre utilizzando le informazioni fornite nel testo precedente (di solito con qualche miglioramento in efficacia, ma può portare a una traduzione più lenta)", "使用YAPI注入": "Uso dell'iniezione di YAPI", "窗口缩放": "Zoom finestra", @@ -552,7 +534,7 @@ "存在": "esistenza", "添加": "Aggiungi", "使用原型查询": "Utilizzo di query prototipali", - "时": "Tempo", + "时": "ora", "启动": "avviamento", "批量添加": "Aggiungi batch", "左移": "Spostamento sinistro", @@ -564,8 +546,6 @@ "名称": "nome", "网址": "Sito web", "百度OCR": "OCR Baidu", - "飞书OCR": "OCR Feishu", - "讯飞OCR": "OCR IFlytek", "最大缓冲区长度": "Lunghezza massima del buffer", "最大缓存文本长度": "Lunghezza massima del testo memorizzato nella cache", "半径": "raggio", @@ -605,11 +585,9 @@ "不显示时间": "Non visualizzare l'ora", "过滤历史重复": "Filtra duplicati storici", "缓存条数": "Numero di voci della cache", - "腾讯OCR": "Tencent OCR", "删除列表": "Elimina elenco", "上移": "Sposta su", "下移": "Sposta giù", - "腾讯图片翻译": "Traduzione di immagini tencenti", "百度图片翻译": "Traduzione immagine Baidu", "大": "grande", "权限不足,请以管理员权限运行!": "Permessi insufficienti, si prega di eseguire con privilegi di amministratore!", @@ -826,5 +804,14 @@ "按行数过滤或截断": "Filtra o tronca per numero di righe", "超过最大字数时截断而非过滤": "Truncare invece di filtrare quando si supera il numero massimo di parole", "超过最大行数时截断而非过滤": "Truncare invece di filtrare quando viene superato il numero massimo di righe", - "复制图片": "Copia immagine" + "复制图片": "Copia immagine", + "试用": "in giudizio", + "图片翻译": "Traduzione immagine", + "通用文字识别": "Riconoscimento universale del testo", + "腾讯": "tencent", + "通用印刷体识别": "Identificazione universale di stampa", + "小牛": "Vitello", + "讯飞": "IFlytek", + "百度翻译开放平台": "Piattaforma aperta di traduzione Baidu", + "百度智能云": "Baidu AI Cloud" } \ No newline at end of file diff --git a/LunaTranslator/files/lang/ja.json b/LunaTranslator/files/lang/ja.json index ca234931..487bc476 100644 --- a/LunaTranslator/files/lang/ja.json +++ b/LunaTranslator/files/lang/ja.json @@ -34,12 +34,6 @@ "快译通": "高速翻訳", "有道4": "有道4", "有道5": "有道5", - "百度api": "Baidu api", - "腾讯api": "テンセントapi", - "小牛api": "子牛api", - "彩云api": "彩雲api", - "火山api": "火山アピ", - "有道api": "道があるapi", "导出sqlite文件为json文件": "sqliteファイルをjsonファイルとしてエクスポート", "中文": "中国語", "翻译设置": "翻訳設定", @@ -127,7 +121,6 @@ "图标": "アイコン", "指示詞": "指示語", "動詞": "動詞", - "注册网址": "登録サイト", "显示帧率": "フレームレートを表示", "游戏": "ゲーム", "剪裁UWP窗口的标题栏": "UWPウィンドウのタイトルバーをクリップする", @@ -158,7 +151,6 @@ "开始游戏": "ゲームを始める", "最邻近": "最近接", "感動詞": "感動詞", - "字数统计": "ワード統計", "形容詞": "形容詞", "json文件": "jsonファイル", "透明度": "とうめいど", @@ -167,7 +159,6 @@ "选择文件夹": "フォルダの選択", "简体中文": "簡体字中国語", "原文内容": "テキストの内容", - "次数统计": "回数の統計", "代名詞": "代名詞", "判定詞": "けっていご", "去除重复行": "重複行の削除", @@ -291,7 +282,6 @@ "中东欧": "中東欧.", "北欧": "北欧", "西里尔": "キリル", - "火山OCR": "火山OCR", "翻译及OCR语言": "翻訳とOCR言語", "特殊码": "とくしゅコード", "删除": "削除#サクジョ#", @@ -337,7 +327,6 @@ "波兰语": "ポーランド語", "窗口置顶": "ウィンドウの最上部", "仅": "のみ", - "注册网址2": "登録サイト2", "任务栏中显示": "タスクバーに表示", "移除": "除去じょきょ", "复制特殊码": "特殊コードのコピー", @@ -355,7 +344,6 @@ "结束地址(hex)": "終了アドレス(hex)", "搜索文本过短!": "検索テキストが短すぎます!", "不能为空": "空にすることはできません", - "阿里api": "アリアピ", "找不到重要组件:": "重要なコンポーネントが見つかりませんでした:", "请重新下载并关闭杀毒软件后重试": "ウイルス対策ソフトウェアを再ダウンロードして閉じてから再試行してください", "系统未安装": "システムがインストールされていません", @@ -451,11 +439,7 @@ "刷新": "リフレッシュ", "读取剪贴板": "クリップボードを読み込む", "进行一次OCR": "OCRを1回実行する", - "有道OCR": "チャネルOCR", "免费试用": "無料トライアル", - "通用文字识别 API": "共通文字認識API", - "有道图片翻译": "有道画像翻訳", - "图片翻译 API": "画像翻訳API", "内嵌翻译": "インライン翻訳", "隐藏不存在的游戏": "起こらないゲームを隠す", "宽度": "幅", @@ -490,8 +474,6 @@ "日语注音方案": "日本語の表記方法", "Sakura大模型": "Sakuraビッグモデル", "Magpie路径": "Magpieパス", - "Sakura部署教程": "Sakura導入チュートリアル", - "Github仓库": "Github倉庫", "利用上文信息翻译(通常会有一定的效果提升,但会导致变慢)": "上記の情報翻訳を利用する(通常は一定の効果が上がるが、遅くなる)", "使用YAPI注入": "YAPI注入を使用する", "窗口缩放": "ウィンドウのズーム", @@ -552,7 +534,7 @@ "存在": "存在する", "添加": "追加", "使用原型查询": "プロトタイプクエリーの使用", - "时": "時", + "时": "時間", "启动": "スタートアップ", "批量添加": "一括追加", "左移": "左へ移動", @@ -564,8 +546,6 @@ "名称": "の名前をあげる", "网址": "Webサイト", "百度OCR": "百度OCR", - "飞书OCR": "フライブックOCR", - "讯飞OCR": "アイフライテックOCR", "最大缓冲区长度": "最大バッファ長", "最大缓存文本长度": "最大キャッシュテキスト長", "半径": "半径はんけい", @@ -605,11 +585,9 @@ "不显示时间": "時間を表示しない", "过滤历史重复": "フィルタ履歴の繰り返し", "缓存条数": "キャッシュ・エントリ数", - "腾讯OCR": "テンセントOCR", "删除列表": "リストの削除", "上移": "上へ移動", "下移": "下へ移動", - "腾讯图片翻译": "テンセント写真翻訳", "百度图片翻译": "百度の画像翻訳", "大": "大きい", "权限不足,请以管理员权限运行!": "権限が不足しています。管理者権限で実行してください。", @@ -826,5 +804,14 @@ "按行数过滤或截断": "行数によるフィルタまたは切り捨て", "超过最大字数时截断而非过滤": "最大文字数を超えるとフィルタではなく切り捨て", "超过最大行数时截断而非过滤": "最大行数を超えるとフィルタではなくトランケートされます", - "复制图片": "画像をコピー" + "复制图片": "画像をコピー", + "试用": "試用", + "图片翻译": "画像翻訳", + "通用文字识别": "共通文字認識", + "腾讯": "テンセント", + "通用印刷体识别": "汎用印刷物の識別", + "小牛": "子牛", + "讯飞": "フライ", + "百度翻译开放平台": "百度翻訳オープンプラットフォーム", + "百度智能云": "百度知能クラウド" } \ No newline at end of file diff --git a/LunaTranslator/files/lang/ko.json b/LunaTranslator/files/lang/ko.json index 7c74a27f..15a6d413 100644 --- a/LunaTranslator/files/lang/ko.json +++ b/LunaTranslator/files/lang/ko.json @@ -34,12 +34,6 @@ "快译通": "빠른 번역통", "有道4": "유도 4", "有道5": "유도 5", - "百度api": "바이두api", - "腾讯api": "텐센트 api", - "小牛api": "송아지api", - "彩云api": "채운api", - "火山api": "화산api", - "有道api": "유도api", "导出sqlite文件为json文件": "sqlite 파일을 json 파일로 내보내기", "中文": "중국어", "翻译设置": "번역 설정", @@ -127,7 +121,6 @@ "图标": "아이콘", "指示詞": "지시어", "動詞": "동사", - "注册网址": "웹 주소 등록", "显示帧率": "프레임 속도 표시", "游戏": "게임", "剪裁UWP窗口的标题栏": "UWP 창의 제목 표시줄 자르기", @@ -158,7 +151,6 @@ "开始游戏": "게임 시작", "最邻近": "가장 가까운 곳", "感動詞": "감동사", - "字数统计": "글자수 통계", "形容詞": "형용사", "json文件": "json 파일", "透明度": "투명도", @@ -167,7 +159,6 @@ "选择文件夹": "폴더 선택", "简体中文": "중국어 간체", "原文内容": "원문 내용", - "次数统计": "횟수 통계", "代名詞": "대명사", "判定詞": "판정사", "去除重复行": "반복 행 제거", @@ -291,7 +282,6 @@ "中东欧": "중동부 유럽", "北欧": "북유럽", "西里尔": "키릴", - "火山OCR": "화산 OCR", "翻译及OCR语言": "번역 및 OCR 언어", "特殊码": "특수 코드", "删除": "삭제", @@ -337,7 +327,6 @@ "波兰语": "폴란드어", "窗口置顶": "창 상단", "仅": "전용", - "注册网址2": "등록 웹 주소 2", "任务栏中显示": "작업 표시줄에 표시", "移除": "제거", "复制特殊码": "특수 코드 복사", @@ -355,7 +344,6 @@ "结束地址(hex)": "종료 주소(hex)", "搜索文本过短!": "검색 텍스트가 너무 짧습니다!", "不能为空": "비워둘 수 없음", - "阿里api": "알리 api", "找不到重要组件:": "중요한 구성 요소를 찾을 수 없음:", "请重新下载并关闭杀毒软件后重试": "백신 프로그램을 다시 다운로드하고 닫은 후 다시 시도하십시오.", "系统未安装": "시스템이 설치되지 않았습니다.", @@ -451,11 +439,7 @@ "刷新": "새로 고침", "读取剪贴板": "클립보드 읽기", "进行一次OCR": "OCR을 한번 진행해보도록 하겠습니다.", - "有道OCR": "유도 OCR", "免费试用": "무료 평가판", - "通用文字识别 API": "일반 문자 인식 API", - "有道图片翻译": "그래픽 번역", - "图片翻译 API": "사진 번역 API", "内嵌翻译": "인라인 번역", "隐藏不存在的游戏": "일어나지 않는 게임 숨기기", "宽度": "너비", @@ -490,8 +474,6 @@ "日语注音方案": "일본어 주음 방안", "Sakura大模型": "Sakura 대형 모델", "Magpie路径": "Magpie 경로", - "Sakura部署教程": "Sakura 배포 자습서", - "Github仓库": "Github 창고", "利用上文信息翻译(通常会有一定的效果提升,但会导致变慢)": "위의 정보를 사용하여 번역 (일반적으로 효과가 향상되지만 느려질 수 있음)", "使用YAPI注入": "YAPI 주입 사용", "窗口缩放": "창 크기 조절", @@ -552,7 +534,7 @@ "存在": "존재", "添加": "추가", "使用原型查询": "원형 조회 사용", - "时": "시", + "时": "시간", "启动": "시작", "批量添加": "대량 추가", "左移": "왼쪽 이동", @@ -564,8 +546,6 @@ "名称": "이름", "网址": "웹 주소", "百度OCR": "바이두 OCR", - "飞书OCR": "페이서 OCR", - "讯飞OCR": "아이플라이테크 OCR", "最大缓冲区长度": "최대 버퍼 길이", "最大缓存文本长度": "최대 캐시 텍스트 길이", "半径": "반지름", @@ -605,11 +585,9 @@ "不显示时间": "시간 표시 안 함", "过滤历史重复": "반복된 기록 필터링", "缓存条数": "캐시 바 수", - "腾讯OCR": "텐센트 OCR", "删除列表": "목록 삭제", "上移": "위로 이동", "下移": "아래로 이동", - "腾讯图片翻译": "텐센트 사진 번역", "百度图片翻译": "바이두 사진 번역", "大": "큰", "权限不足,请以管理员权限运行!": "권한이 부족합니다. 관리자 권한으로 실행하십시오!", @@ -826,5 +804,14 @@ "按行数过滤或截断": "행 수로 필터링 또는 자르기", "超过最大字数时截断而非过滤": "최대 단어 수 초과 시 필터링 대신 절단", "超过最大行数时截断而非过滤": "최대 행 수를 초과할 경우 필터링 대신 잘림", - "复制图片": "사진 복사" + "复制图片": "사진 복사", + "试用": "시험 사용", + "图片翻译": "사진 번역", + "通用文字识别": "일반 문자 인식", + "腾讯": "텐센트", + "通用印刷体识别": "범용 인쇄체 식별", + "小牛": "송아지", + "讯飞": "아이플라이테크", + "百度翻译开放平台": "바이두 번역 오픈 플랫폼", + "百度智能云": "바이두 스마트 클라우드" } \ No newline at end of file diff --git a/LunaTranslator/files/lang/nl.json b/LunaTranslator/files/lang/nl.json index 8cbf098b..d0fc7fc6 100644 --- a/LunaTranslator/files/lang/nl.json +++ b/LunaTranslator/files/lang/nl.json @@ -39,7 +39,6 @@ "在线翻译": "online vertaling", "开始游戏": "Start het spel", "動詞": "Woorden", - "次数统计": "Frequentiestatistiek", "指示詞": "Indicatorwoorden", "备注": "opmerkingen", "東北きりたん": "Noordoost", @@ -56,7 +55,6 @@ "端口冲突": "Port conflict", "连接进程": "Verbindingsproces", "发现": "vinden", - "火山OCR": "Vulkaan OCR", "有道4": "Youdao 4", "全字符(UTF-8)": "Volledig teken (UTF-8)", "取消": "annuleren", @@ -165,7 +163,6 @@ "显示/隐藏范围框": "Bereik tonen/verbergen", "选取OCR范围后显示范围框": "Bereikbalk weergeven na het selecteren van OCR-bereik", "代理设置": "Proxy-instellingen", - "阿里api": "Alibaba API", "自动": "automatisch", "重复次数": "Herhalingsfrequentie", "仅使用激活的翻译": "Alleen geactiveerde vertalingen gebruiken", @@ -212,13 +209,10 @@ "形状詞": "Vormwoorden", "文本源": "Tekstbron", "北欧(CP1257)": "Noord-Europa (CP1257)", - "注册网址2": "Registratie URL 2", "文本预处理": "Tekstvoorbewerking", "调整执行顺序": "Pas de uitvoeringsvolgorde aan", - "腾讯api": "Tencent API", "资源下载": "Bron downloaden", "每个字后插入空格": "Een spatie invoegen na elk woord", - "火山api": "Volcano API", "結月ゆかり/结月缘": "Jieyue Yuri/Jieyue Fate", "窗口置顶": "Vensterbovenkant", "颜色": "kleur", @@ -269,7 +263,6 @@ "默认设置": "standaardinstelling", "意大利语": "Italiaans", "已保存游戏": "Opgeslagen spel", - "有道api": "Youdao API", "显示显示原文按钮": "Originele tekstknop weergeven", "去除花括号{}": "Krullende beugels verwijderen.", "保留原文": "De oorspronkelijke tekst behouden", @@ -334,12 +327,10 @@ "设置Token": "Token instellen", "备忘录": "memorandum", "自定义python处理": "Python-verwerking aanpassen", - "小牛api": "Little Cow API", "東北ずん子/东北俊子": "Dongbei Kunzi/Dongbei Junzi", "波兰语": "Poolse taal", "接口": "Interface", "翻译结果修正按钮": "Knop voor correctie van vertaalresultaten", - "注册网址": "Registratie website", "警告": "waarschuwing", "俄语": "Russisch", "文字更新分析": "Analyse van tekstupdates", @@ -386,7 +377,6 @@ "当前版本": "huidige versie", "搜索持续时间(s)": "Zoekduur (s)", "添加行": "rijen toevoegen", - "百度api": "Baidu API", "京町セイカ": "KyomachikaName", "仅": "alleen", "透明度": "transparantie", @@ -394,7 +384,6 @@ "朗读翻译": "Voorlezen en vertalen", "火山TTS": "Vulkaan TTS", "获取失败": "Verwerving mislukt", - "字数统计": "woordentelling", "快捷键冲突": "Sneltoets conflict", "用户词典": "Gebruikerswoordenboek", "执行周期(s)": "Uitvoeringscyclus(en)", @@ -436,7 +425,6 @@ "接続詞": "Woorden ontvangen", "显示游戏静音按钮": "Spelmute knop tonen", "拉丁(CP1252)": "Latijn (CP1252)", - "彩云api": "Color Cloud API", "東北ずん子": "Noordoost Kunzi", "编辑专有名词": "Eigen termen bewerken", "目标语言": "doeltaal", @@ -452,11 +440,7 @@ "过滤包含乱码的文本行": "Tekstregels met vervormde tekens filteren", "进行一次OCR": "Eenmaal OCR uitvoeren", "选取OCR范围——立即": "OCR-bereik direct selecteren", - "有道OCR": "Youdao OCR", "免费试用": "Gratis proefperiode", - "通用文字识别 API": "Universele tekstherkennings-API", - "有道图片翻译": "Vertaling van Youdao-afbeeldingen", - "图片翻译 API": "API voor beeldvertaling", "内嵌翻译": "Ingesloten vertaling", "隐藏不存在的游戏": "Niet-bestaande games verbergen", "宽度": "breedte", @@ -497,8 +481,6 @@ "日语注音方案": "Japans fonetisch alfabet", "Sakura大模型": "Groot model Sakura", "Magpie路径": "Magpiepad", - "Sakura部署教程": "Sakura Deployment Tutorial", - "Github仓库": "Github repository", "利用上文信息翻译(通常会有一定的效果提升,但会导致变慢)": "Vertalen met behulp van de informatie in de vorige tekst (meestal met enige verbetering, maar kan resulteren in tragere vertaling)", "历史翻译": "Historische vertaling", "使用YAPI注入": "Injecteren met YAPI", @@ -561,7 +543,7 @@ "存在": "bestaan", "添加": "toevoegen aan", "使用原型查询": "Prototype-query gebruiken", - "时": "Wanneer", + "时": "uur", "启动": "opstart", "批量添加": "Batch toevoegen", "左移": "Links verschuiven", @@ -574,8 +556,6 @@ "网址": "website", "可选取的": "Selecteerbare opties", "百度OCR": "Baidu OCR", - "飞书OCR": "Feishu OCR", - "讯飞OCR": "IFlytek OCR", "最大缓冲区长度": "Maximale bufferlengte", "最大缓存文本长度": "Maximale tekstlengte in cache", "半径": "straal", @@ -614,12 +594,10 @@ "不显示时间": "Tijd niet weergeven", "过滤历史重复": "Dubbele geschiedenis filteren", "缓存条数": "Aantal cache-items", - "腾讯OCR": "Tencent OCR", "创建列表": "Lijst aanmaken", "删除列表": "Lijst verwijderen", "上移": "Naar boven gaan", "下移": "Naar beneden gaan", - "腾讯图片翻译": "Vertaling van tien afbeeldingen", "百度图片翻译": "Vertaling van afbeeldingen in Baidu", "大": "groot", "权限不足,请以管理员权限运行!": "Onvoldoende machtigingen, gelieve te draaien met beheerdersrechten!", @@ -826,5 +804,14 @@ "按行数过滤或截断": "Filteren of inkorten op rijaantal", "超过最大字数时截断而非过滤": "Afsnijden in plaats van filteren bij overschrijding van het maximale aantal woorden", "超过最大行数时截断而非过滤": "Afsnijden in plaats van filteren wanneer het maximale aantal rijen wordt overschreden", - "复制图片": "Afbeelding kopiëren" + "复制图片": "Afbeelding kopiëren", + "试用": "ter terechtzitting", + "图片翻译": "Vertaling van afbeeldingen", + "通用文字识别": "Universele tekstherkenning", + "腾讯": "tien cent", + "通用印刷体识别": "Universele afdrukidentificatie", + "小牛": "Kalf", + "讯飞": "IFlytek", + "百度翻译开放平台": "Baidu Translation Open Platform", + "百度智能云": "Baidu AI Cloud" } \ No newline at end of file diff --git a/LunaTranslator/files/lang/pl.json b/LunaTranslator/files/lang/pl.json index 3372d5b3..1949d4c3 100644 --- a/LunaTranslator/files/lang/pl.json +++ b/LunaTranslator/files/lang/pl.json @@ -34,12 +34,6 @@ "快译通": "Kuaiyitong.", "有道4": "Youdao 4.", "有道5": "Youdao 5.", - "百度api": "API Baidu", - "腾讯api": "Tencent API", - "小牛api": "API Mavericks", - "彩云api": "API Caiyun", - "火山api": "Volcano API", - "有道api": "API Youdao", "导出sqlite文件为json文件": "Eksportuj plik sqlite jako plik JSON", "中文": "Chiński", "翻译设置": "Ustawienia tłumaczenia", @@ -127,7 +121,6 @@ "图标": "Ikona", "指示詞": "Słowa demonstracyjne", "動詞": "Czasowniki", - "注册网址": "Strona internetowa rejestracyjna", "显示帧率": "Wyświetlanie częstotliwości klatek", "游戏": "gra", "剪裁UWP窗口的标题栏": "Przycinanie paska tytułu okna UWP", @@ -158,7 +151,6 @@ "开始游戏": "Rozpocznij grę", "最邻近": "Najbliższy sąsiad", "感動詞": "Poruszające słowa", - "字数统计": "Liczba słów", "形容詞": "Przylegający", "json文件": "Plik JSON", "透明度": "przejrzystość", @@ -167,7 +159,6 @@ "选择文件夹": "Wybierz folder", "简体中文": "Chiński uproszczony", "原文内容": "Zawartość oryginalna", - "次数统计": "Statystyki częstotliwości", "代名詞": "Zaimek", "判定詞": "Słowo determinujące", "去除重复行": "Usuń zduplikowane wiersze", @@ -291,7 +282,6 @@ "中东欧": "Europa Środkowo-Wschodnia", "北欧": "Europa Północna", "西里尔": "Cyril", - "火山OCR": "OCR wulkanu", "翻译及OCR语言": "Tłumaczenia i język OCR", "特殊码": "kod szczegółowy", "删除": "usunąć", @@ -337,7 +327,6 @@ "波兰语": "Polski", "窗口置顶": "Góra okna", "仅": "Tylko", - "注册网址2": "Strona internetowa rejestracyjna 2", "任务栏中显示": "Pokaż na pasku zadań", "移除": "usuń", "复制特殊码": "Kopiuj kod specjalny", @@ -355,7 +344,6 @@ "结束地址(hex)": "Adres końcowy (hex)", "搜索文本过短!": "Tekst wyszukiwania jest zbyt krótki!", "不能为空": "Nie może być pusty", - "阿里api": "API Alibaba", "找不到重要组件:": "Nie znaleziono ważnego komponentu:", "请重新下载并关闭杀毒软件后重试": "Pobierz i zamknij oprogramowanie antywirusowe ponownie i spróbuj ponownie", "系统未安装": "System nie zainstalowany", @@ -451,11 +439,7 @@ "刷新": "Odśwież", "读取剪贴板": "Odczytaj schowek", "进行一次OCR": "Przeprowadzenie OCR", - "有道OCR": "OCR Youdao", "免费试用": "Bezpłatny próbny", - "通用文字识别 API": "Uniwersalne rozpoznawanie tekstu API", - "有道图片翻译": "Tłumaczenie zdjęć Youdao", - "图片翻译 API": "API tłumaczenia obrazów", "内嵌翻译": "Tłumaczenie wbudowane", "隐藏不存在的游戏": "Ukryj gry, które nie istnieją", "宽度": "szerokość", @@ -490,8 +474,6 @@ "日语注音方案": "Japoński schemat fonetyczny", "Sakura大模型": "Duży model Sakura", "Magpie路径": "Ścieżka dla Sraków", - "Sakura部署教程": "Samouczek wdrażania Sakury", - "Github仓库": "Magazyn Github", "利用上文信息翻译(通常会有一定的效果提升,但会导致变慢)": "Przetłumacz za pomocą informacji podanych w poprzednim tekście (zwykle z pewną poprawą skuteczności, ale może to prowadzić do wolniejszego tłumaczenia)", "使用YAPI注入": "Zastosowanie wstrzykiwań YAPI", "窗口缩放": "Powiększenie okna", @@ -552,7 +534,7 @@ "存在": "istnienie", "添加": "Dodaj", "使用原型查询": "Korzystanie z prototypowych zapytań", - "时": "Czas", + "时": "godzina", "启动": "uruchomienie", "批量添加": "Dodaj partię", "左移": "Przesunięcie w lewo", @@ -564,8 +546,6 @@ "名称": "nazwa", "网址": "Strona internetowa", "百度OCR": "OCR Baidu", - "飞书OCR": "OCR Feishu", - "讯飞OCR": "OCR IFlytek", "最大缓冲区长度": "Maksymalna długość bufora", "最大缓存文本长度": "Maksymalna długość buforowanego tekstu", "半径": "promień", @@ -605,11 +585,9 @@ "不显示时间": "Nie wyświetlaj czasu", "过滤历史重复": "Filtruj duplikaty historyczne", "缓存条数": "Liczba wpisów pamięci podręcznej", - "腾讯OCR": "Dziesięć OCR", "删除列表": "Usuń listę", "上移": "Przesuń się w górę", "下移": "Przesuń w dół", - "腾讯图片翻译": "Tłumaczenie dziesięciu obrazów", "百度图片翻译": "Tłumaczenie obrazów Baidu", "大": "duże", "权限不足,请以管理员权限运行!": "Niewystarczające uprawnienia, proszę uruchomić z uprawnieniami administratora!", @@ -826,5 +804,14 @@ "按行数过滤或截断": "Filtruj lub skróć według liczby wierszy", "超过最大字数时截断而非过滤": "Przycięcie zamiast filtrowania przy przekroczeniu maksymalnej liczby słów", "超过最大行数时截断而非过滤": "Przycięcie zamiast filtrowania przy przekroczeniu maksymalnej liczby wierszy", - "复制图片": "Kopiuj obrazek" + "复制图片": "Kopiuj obrazek", + "试用": "w trakcie procesu", + "图片翻译": "Tłumaczenie obrazu", + "通用文字识别": "Uniwersalne rozpoznawanie tekstu", + "腾讯": "dziesięć", + "通用印刷体识别": "Uniwersalna identyfikacja druku", + "小牛": "Cielęce", + "讯飞": "IFlytek", + "百度翻译开放平台": "Otwarta platforma tłumaczeń Baidu", + "百度智能云": "Chmura AI Baidu" } \ No newline at end of file diff --git a/LunaTranslator/files/lang/pt.json b/LunaTranslator/files/lang/pt.json index 8ed32e03..f5dbfc54 100644 --- a/LunaTranslator/files/lang/pt.json +++ b/LunaTranslator/files/lang/pt.json @@ -39,7 +39,6 @@ "在线翻译": "tradução online", "开始游戏": "Iniciar o jogo", "動詞": "Verbos", - "次数统计": "Estatísticas de frequência", "指示詞": "Palavras indicadoras", "备注": "observações", "東北きりたん": "Nordeste きりたȚ", @@ -56,7 +55,6 @@ "端口冲突": "Conflito portuário", "连接进程": "Processo de ligação", "发现": "encontrar", - "火山OCR": "Vulcão OCR", "有道4": "Youdao 4", "全字符(UTF-8)": "Caracteres Completos (UTF- 8)", "取消": "cancelar", @@ -165,7 +163,6 @@ "显示/隐藏范围框": "Mostrar/ Esconder a Caixa do Intervalo", "选取OCR范围后显示范围框": "Exibir a caixa de intervalo após selecionar o intervalo OCR", "代理设置": "Configuração do proxy", - "阿里api": "API Alibaba", "自动": "automático", "重复次数": "Frequência de repetição", "仅使用激活的翻译": "Usar apenas traduções activadas", @@ -212,13 +209,10 @@ "形状詞": "Formar palavras", "文本源": "Fonte do texto", "北欧(CP1257)": "Europa do Norte (CP1257)", - "注册网址2": "URL de registo 2", "文本预处理": "Pré-processamento de texto", "调整执行顺序": "Ajustar a ordem de execução", - "腾讯api": "API Tencent", "资源下载": "Transferência do Recurso", "每个字后插入空格": "Inserir um espaço após cada palavra", - "火山api": "API do Vulcano", "結月ゆかり/结月缘": "Jieyue Yuri/Jieyue Destino", "窗口置顶": "Parte superior da janela", "颜色": "cor", @@ -269,7 +263,6 @@ "默认设置": "configuração predefinida", "意大利语": "Italiano", "已保存游戏": "Jogo gravado", - "有道api": "API Youdao", "显示显示原文按钮": "Mostrar o botão do texto original", "去除花括号{}": "Remover as chaves encaracoladas {}", "保留原文": "Manter o texto original", @@ -334,12 +327,10 @@ "设置Token": "Definir o Ficheiro", "备忘录": "memorando", "自定义python处理": "Personalizar o Processamento Python", - "小牛api": "API Little Cow", "東北ずん子/东北俊子": "Dongbei Kunzi/Dongbei Junzi", "波兰语": "Língua polaca", "接口": "Interface", "翻译结果修正按钮": "Botão de correcção do resultado da tradução", - "注册网址": "Sítio Web do registo", "警告": "aviso", "俄语": "Russo", "文字更新分析": "Análise de actualização de texto", @@ -386,7 +377,6 @@ "当前版本": "versão actual", "搜索持续时间(s)": "Duração (s) da pesquisa", "添加行": "adicionar linhas", - "百度api": "API Baidu", "京町セイカ": "Kyomachika", "仅": "Unicamente", "透明度": "transparência", @@ -394,7 +384,6 @@ "朗读翻译": "Leia em voz alta e traduza", "火山TTS": "Vulcão TTS", "获取失败": "A aquisição falhou", - "字数统计": "contagem de palavras", "快捷键冲突": "Conflito de teclas de atalho", "用户词典": "Dicionário do Utilizador", "执行周期(s)": "Ciclo(s) de execução", @@ -436,7 +425,6 @@ "接続詞": "A receber palavras", "显示游戏静音按钮": "Mostrar o botão de mudo do jogo", "拉丁(CP1252)": "Latim (CP1252)", - "彩云api": "API Color Cloud", "東北ずん子": "Northeast Kunzi", "编辑专有名词": "Editar termos proprietários", "目标语言": "língua de destino", @@ -452,11 +440,7 @@ "过滤包含乱码的文本行": "Filtrar linhas de texto contendo caracteres distorcidos", "进行一次OCR": "Executar OCR uma vez", "选取OCR范围——立即": "Seleccionar o intervalo OCR - Imediatamente", - "有道OCR": "OCR Youdao", "免费试用": "Avaliação gratuita", - "通用文字识别 API": "API Universal de Reconhecimento de Texto", - "有道图片翻译": "Tradução de Imagens Youdao", - "图片翻译 API": "API de Tradução de Imagens", "内嵌翻译": "Tradução incorporada", "隐藏不存在的游戏": "Esconder jogos inexistentes", "宽度": "largura", @@ -497,8 +481,6 @@ "日语注音方案": "Esquema do Alfabeto Fonético Japonês", "Sakura大模型": "Modelo Grande Sakura", "Magpie路径": "Caminho do Magpie", - "Sakura部署教程": "Tutorial de Implantação do Sakura", - "Github仓库": "Repositório Github", "利用上文信息翻译(通常会有一定的效果提升,但会导致变慢)": "Traduzir usando as informações fornecidas no texto anterior (geralmente com alguma melhoria, mas pode resultar em tradução mais lenta)", "历史翻译": "Tradução histórica", "使用YAPI注入": "Injectar utilizando YAPI", @@ -561,7 +543,7 @@ "存在": "existência", "添加": "adicionar a", "使用原型查询": "Usar a consulta do protótipo", - "时": "Quando", + "时": "hora", "启动": "arranque", "批量添加": "Adicionar Lote", "左移": "Deslocamento para a esquerda", @@ -574,8 +556,6 @@ "网址": "website", "可选取的": "Opções selecionáveis", "百度OCR": "OCR Baidu", - "飞书OCR": "OCR Feishu", - "讯飞OCR": "IFlytek OCR", "最大缓冲区长度": "Comprimento máximo do tampão", "最大缓存文本长度": "Comprimento máximo do texto armazenado em cache", "半径": "raio", @@ -614,12 +594,10 @@ "不显示时间": "Não mostrar a hora", "过滤历史重复": "Filtrar o histórico duplicado", "缓存条数": "Número de entradas na 'cache'", - "腾讯OCR": "OCR Tencent", "创建列表": "Criar uma Lista", "删除列表": "Apagar a Lista", "上移": "Subir", "下移": "Mover para baixo", - "腾讯图片翻译": "Tradução de Imagens Tencent", "百度图片翻译": "Tradução de Imagens Baidu", "大": "grande", "权限不足,请以管理员权限运行!": "Permissões insuficientes, execute com privilégios de administrador!", @@ -826,5 +804,14 @@ "按行数过滤或截断": "Filtrar ou truncar por contagem de linhas", "超过最大字数时截断而非过滤": "Truncar em vez de filtrar quando exceder a contagem máxima de palavras", "超过最大行数时截断而非过滤": "Truncar em vez de filtrar quando o número máximo de linhas for excedido", - "复制图片": "Copiar a imagem" + "复制图片": "Copiar a imagem", + "试用": "em julgamento", + "图片翻译": "Tradução da imagem", + "通用文字识别": "Reconhecimento Universal de Texto", + "腾讯": "tencent", + "通用印刷体识别": "Identificação Universal de Impressão", + "小牛": "Bezerro", + "讯飞": "IFlytek", + "百度翻译开放平台": "Plataforma Aberta de Tradução Baidu", + "百度智能云": "Nuvem AI Baidu" } \ No newline at end of file diff --git a/LunaTranslator/files/lang/ru.json b/LunaTranslator/files/lang/ru.json index f23fdde2..4f3a6cfa 100644 --- a/LunaTranslator/files/lang/ru.json +++ b/LunaTranslator/files/lang/ru.json @@ -34,12 +34,6 @@ "快译通": "Быстрый DR.eye", "有道4": "Youdao 4", "有道5": "Youdao 5", - "百度api": "Baidu API", - "腾讯api": "Tencent API", - "小牛api": "Cow API", - "彩云api": "Caiyun API", - "火山api": "Volcengine API", - "有道api": "Youdao API", "导出sqlite文件为json文件": "Sqlite в json", "中文": "Китайский язык", "翻译设置": "Настройки перевода", @@ -127,7 +121,6 @@ "图标": "Значки", "指示詞": "указательное слово", "動詞": "глагол", - "注册网址": "сайт регистрации", "显示帧率": "Частота кадров", "游戏": "Игра", "剪裁UWP窗口的标题栏": "вырезать заголовок окна UWP", @@ -158,7 +151,6 @@ "开始游戏": "начать игру", "最邻近": "ближайший", "感動詞": "трогательное слово", - "字数统计": "Статистика слов", "形容詞": "имя прилагательное", "json文件": "файл json", "透明度": "прозрачность", @@ -167,7 +159,6 @@ "选择文件夹": "Выбор папки", "简体中文": "упрощенный китайский язык", "原文内容": "Подлинный текст", - "次数统计": "периодическая статистика", "代名詞": "местоимение", "判定詞": "решающий слово", "去除重复行": "Удалить повторяющиеся строки", @@ -291,7 +282,6 @@ "中东欧": "Центральная и ВосточнаяЕвропа", "北欧": "СевернаяЕвропа", "西里尔": "Сирил.", - "火山OCR": "Вулкан OCR", "翻译及OCR语言": "Перевод и язык OCR", "特殊码": "Специальный код", "删除": "Удалить", @@ -337,7 +327,6 @@ "波兰语": "Польский язык", "窗口置顶": "Верхнее окно", "仅": "Только", - "注册网址2": "Сайт регистрации 2", "任务栏中显示": "Показать панель задач", "移除": "Удалить", "复制特殊码": "Копировать специальный код", @@ -355,7 +344,6 @@ "结束地址(hex)": "Конечный адрес (hex)", "搜索文本过短!": "Текст поиска слишком короткий!", "不能为空": "Нельзя быть пустым", - "阿里api": "Ариапи", "找不到重要组件:": "Не удалось найти важные компоненты:", "请重新下载并关闭杀毒软件后重试": "Пожалуйста, перезагрузите и выключите антивирусное программное обеспечение и попробуйте снова.", "系统未安装": "Система не установлена", @@ -451,11 +439,7 @@ "刷新": "Обновить", "读取剪贴板": "Прочитать буфер обмена", "进行一次OCR": "Выполнить OCR", - "有道OCR": "Путь OCR", "免费试用": "Бесплатная пробная версия", - "通用文字识别 API": "Универсальное распознавание текста API", - "有道图片翻译": "Перевод фотографий.", - "图片翻译 API": "Перевод изображений API", "内嵌翻译": "Встроенный перевод", "隐藏不存在的游戏": "Скрыть несуществующую игру", "宽度": "Ширина", @@ -490,8 +474,6 @@ "日语注音方案": "Японская фонетическая программа", "Sakura大模型": "Большая модель Sakura", "Magpie路径": "Путь Magpie", - "Sakura部署教程": "Курс развертывания Sakura", - "Github仓库": "Склад Github", "利用上文信息翻译(通常会有一定的效果提升,但会导致变慢)": "Использование вышеприведенного перевода информации (обычно имеет определенный эффект улучшения, но приводит к замедлению)", "使用YAPI注入": "Использовать инъекцию YAPI", "窗口缩放": "Масштаб окна", @@ -552,7 +534,7 @@ "存在": "Наличие", "添加": "Добавить", "使用原型查询": "Использовать запрос прототипа", - "时": "Время", + "时": "Часы", "启动": "Запуск", "批量添加": "Добавление пакетов", "左移": "Переместить налево", @@ -564,8 +546,6 @@ "名称": "Имя", "网址": "Веб - сайт", "百度OCR": "Сотня OCR", - "飞书OCR": "Летающая книга OCR", - "讯飞OCR": "Сигнал OCR", "最大缓冲区长度": "Максимальная длина буфера", "最大缓存文本长度": "Максимальная длина текста кэша", "半径": "Радиус", @@ -605,11 +585,9 @@ "不显示时间": "Не показывать время", "过滤历史重复": "Фильтровать повторение истории", "缓存条数": "Количество кэшированных записей", - "腾讯OCR": "Скачать OCR", "删除列表": "Удалить список", "上移": "Переместить вверх", "下移": "Переместить вниз", - "腾讯图片翻译": "Перевод фотографий", "百度图片翻译": "100 Перевод фотографий.", "大": "Большой", "权限不足,请以管理员权限运行!": "Недостаточные права, пожалуйста, запустите с правами администратора!", @@ -826,5 +804,14 @@ "按行数过滤或截断": "Фильтрация или отсечение по числу строк", "超过最大字数时截断而非过滤": "Преодоление максимального количества слов вместо фильтрации", "超过最大行数时截断而非过滤": "Преодоление максимального числа строк вместо фильтрации", - "复制图片": "Копировать изображение" + "复制图片": "Копировать изображение", + "试用": "Испытание", + "图片翻译": "Фотоперевод", + "通用文字识别": "Универсальное распознавание текста", + "腾讯": "Ваше послание", + "通用印刷体识别": "Универсальное распознавание печати", + "小牛": "Телёнок.", + "讯飞": "Сигнальный полёт", + "百度翻译开放平台": "Открытая платформа для перевода.", + "百度智能云": "Сто умных облаков" } \ No newline at end of file diff --git a/LunaTranslator/files/lang/sv.json b/LunaTranslator/files/lang/sv.json index 36f7fee5..c4a0d5e7 100644 --- a/LunaTranslator/files/lang/sv.json +++ b/LunaTranslator/files/lang/sv.json @@ -39,7 +39,6 @@ "在线翻译": "onlineöversättning", "开始游戏": "Starta spelet", "動詞": "Verb", - "次数统计": "Frekvensstatistik", "指示詞": "Indikator", "备注": "anmärkningar", "東北きりたん": "Nordost きた", @@ -56,7 +55,6 @@ "端口冲突": "Hamnkonflikt", "连接进程": "Anslutningsprocess", "发现": "hitta", - "火山OCR": "OCR för vulkaner", "有道4": "Youdao 4", "全字符(UTF-8)": "Fullständigt tecken (UTF- 8)", "取消": "avbryt", @@ -165,7 +163,6 @@ "显示/隐藏范围框": "Visa/dölj intervallruta", "选取OCR范围后显示范围框": "Visa intervallruta efter markerat OCR-område", "代理设置": "Proxyinställningar", - "阿里api": "Alibaba API", "自动": "automatisk", "重复次数": "Repetitionsfrekvens", "仅使用激活的翻译": "Använd endast aktiverade översättningar", @@ -212,13 +209,10 @@ "形状詞": "Formord", "文本源": "Textkälla", "北欧(CP1257)": "Norra Europa (CP1257)", - "注册网址2": "Registreringswebbadress 2", "文本预处理": "Förbehandling av text", "调整执行顺序": "Justera exekutionsordern", - "腾讯api": "Tencent API", "资源下载": "Resursnedladdning", "每个字后插入空格": "Infoga ett mellanslag efter varje ord", - "火山api": "Vulkan API", "結月ゆかり/结月缘": "Jieyue Yuri/Jieyue Fate", "窗口置顶": "Fönstertopp", "颜色": "färg", @@ -269,7 +263,6 @@ "默认设置": "förvald inställning", "意大利语": "Italienska", "已保存游戏": "Sparat spel", - "有道api": "Youdao API", "显示显示原文按钮": "Visa originaltextknapp", "去除花括号{}": "Ta bort lockiga hängslen", "保留原文": "Behåll originaltexten", @@ -334,12 +327,10 @@ "设置Token": "Ange tecken", "备忘录": "memorandum", "自定义python处理": "Anpassa Python- behandling", - "小牛api": "Little Cow API", "東北ずん子/东北俊子": "Dongbei Kunzi/Dongbei Junzi", "波兰语": "Polska språket", "接口": "Gränssnitt", "翻译结果修正按钮": "Korrigeringsknapp för översättningsresultat", - "注册网址": "Registreringswebbplats", "警告": "varning", "俄语": "Ryska", "文字更新分析": "Analys av textuppdatering", @@ -386,7 +377,6 @@ "当前版本": "nuvarande version", "搜索持续时间(s)": "Söktid (s)", "添加行": "lägg till rader", - "百度api": "BaiduAPI", "京町セイカ": "Kyomachika", "仅": "Endast", "透明度": "Öppenhet", @@ -394,7 +384,6 @@ "朗读翻译": "Läs högt och översätta", "火山TTS": "Vulkan TTS", "获取失败": "Förvärvet misslyckades", - "字数统计": "ordräkning", "快捷键冲突": "Konflikt med genvägstangenter", "用户词典": "Användarordlista", "执行周期(s)": "Körcykel(er)", @@ -436,7 +425,6 @@ "接続詞": "Mottagande ord", "显示游戏静音按钮": "Visa spelavstängningsknapp", "拉丁(CP1252)": "Latin (CP1252)", - "彩云api": "Färgmolnets API", "東北ずん子": "Nordöstra Kunzi", "编辑专有名词": "Redigera egenutvecklade termer", "目标语言": "Målspråk", @@ -452,11 +440,7 @@ "过滤包含乱码的文本行": "Filtrera textrader som innehåller förvrängda tecken", "进行一次OCR": "Utför OCR en gång", "选取OCR范围——立即": "Välj OCR-område - omedelbart", - "有道OCR": "Youdao OCR", "免费试用": "Gratis provperiod", - "通用文字识别 API": "API för universell textigenkänning", - "有道图片翻译": "Youdao bildöversättning", - "图片翻译 API": "API för bildöversättning", "内嵌翻译": "Inbäddad översättning", "隐藏不存在的游戏": "Dölj icke existerande spel", "宽度": "bredd", @@ -497,8 +481,6 @@ "日语注音方案": "Japanskt fonetiskt alfabetssystem", "Sakura大模型": "Sakura Large Model", "Magpie路径": "Magpiebana", - "Sakura部署教程": "Sakura installationshandledning", - "Github仓库": "Github- arkiv", "利用上文信息翻译(通常会有一定的效果提升,但会导致变慢)": "Översätt med hjälp av informationen i föregående text (vanligtvis med viss förbättring, men kan resultera i långsammare översättning)", "历史翻译": "Historisk översättning", "使用YAPI注入": "Injicera med YAPI", @@ -561,7 +543,7 @@ "存在": "existens", "添加": "Lägg till", "使用原型查询": "Använd prototypfråga", - "时": "När", + "时": "timme", "启动": "start", "批量添加": "Lägg till sats", "左移": "Vänsterskift", @@ -574,8 +556,6 @@ "网址": "webbplats", "可选取的": "Valbara alternativ", "百度OCR": "Baidu OCR", - "飞书OCR": "Feishu OCR", - "讯飞OCR": "IFlytek OCR", "最大缓冲区长度": "Maximal buffertlängd", "最大缓存文本长度": "Maximal cachelagrerad textlängd", "半径": "radie", @@ -614,12 +594,10 @@ "不显示时间": "Visa inte tid", "过滤历史重复": "Filtrera bort dubbletthistorik", "缓存条数": "Antal cache-poster", - "腾讯OCR": "Tencent OCR", "创建列表": "Skapa lista", "删除列表": "Ta bort lista", "上移": "Flytta uppåt", "下移": "Flytta ner", - "腾讯图片翻译": "Tencent bildöversättning", "百度图片翻译": "Baidubildöversättning", "大": "stor", "权限不足,请以管理员权限运行!": "Otillräckliga behörigheter, kör med administratörsbehörighet!", @@ -826,5 +804,14 @@ "按行数过滤或截断": "Filtrera eller förkorta efter radantal", "超过最大字数时截断而非过滤": "Trunkera istället för filtrering när det maximala ordantalet överskrids", "超过最大行数时截断而非过滤": "Trunkera istället för filtrering när det maximala antalet rader överskrids", - "复制图片": "Kopiera bild" + "复制图片": "Kopiera bild", + "试用": "på rättegång", + "图片翻译": "Bildöversättning", + "通用文字识别": "Universell textigenkänning", + "腾讯": "tencent", + "通用印刷体识别": "Universal Print Identification", + "小牛": "Kalv", + "讯飞": "IFlytek", + "百度翻译开放平台": "Öppen plattform för översättning av Baidu", + "百度智能云": "Baidu AI- molnName" } \ No newline at end of file diff --git a/LunaTranslator/files/lang/th.json b/LunaTranslator/files/lang/th.json index 4e5a5439..d9ce3bb2 100644 --- a/LunaTranslator/files/lang/th.json +++ b/LunaTranslator/files/lang/th.json @@ -38,7 +38,6 @@ "在线翻译": "แปลออนไลน์", "开始游戏": "เริ่มเกม", "動詞": "คำกริยา", - "次数统计": "สถิติจำนวนครั้ง", "指示詞": "คำบ่งชี้", "备注": "หมายเหตุ", "東北きりたん": "โทโฮคุ", @@ -55,7 +54,6 @@ "端口冲突": "ความขัดแย้งของพอร์ต", "连接进程": "กระบวนการเชื่อมต่อ", "发现": "ค้นพบ", - "火山OCR": "ภูเขาไฟ OCR", "有道4": "เส้นทาง 4", "全字符(UTF-8)": "ตัวอักษรเต็ม (UTF-8)", "取消": "การยกเลิก", @@ -164,7 +162,6 @@ "記号": "เครื่องหมาย", "显示/隐藏范围框": "แสดง/ซ่อนกล่องช่วง", "代理设置": "การตั้งค่าพร็อกซี่", - "阿里api": "อารี", "自动": "อัตโนมัติ", "重复次数": "จำนวนการทำซ้ำ", "仅使用激活的翻译": "ใช้การแปลที่เปิดใช้งานเท่านั้น", @@ -209,13 +206,10 @@ "形状詞": "คำรูปร่าง", "文本源": "แหล่งที่มาของข้อความ", "北欧(CP1257)": "นอร์ดิก (CP1257)", - "注册网址2": "ลงทะเบียนที่อยู่เว็บไซต์ 2", "文本预处理": "การปรับสภาพข้อความ", "调整执行顺序": "ปรับลำดับการดำเนินการ", - "腾讯api": "เทนเซ็นต์ api", "资源下载": "ดาวน์โหลดทรัพยากร", "每个字后插入空格": "แทรกช่องว่างหลังจากแต่ละคำ", - "火山api": "ภูเขาไฟ api", "結月ゆかり/结月缘": "เนะจันทร์ คะริ / เนะจันทร์", "窗口置顶": "หน้าต่างอยู่ด้านบน", "默认搜索": "ค้นหาปริยาย", @@ -268,7 +262,6 @@ "默认设置": "ตั้งค่าปริยาย", "意大利语": "อิตาลี", "已保存游戏": "บันทึกเกม", - "有道api": "มี Dao-api", "显示显示原文按钮": "แสดงปุ่มแสดงข้อความต้นฉบับ", "去除花括号{}": "ลบวงเล็บดอกไม้ {}", "保留原文": "เก็บต้นฉบับไว้", @@ -333,12 +326,10 @@ "设置Token": "ตั้งค่า Token", "备忘录": "บันทึกช่วยจำ", "自定义python处理": "การประมวลผล Python แบบกำหนดเอง", - "小牛api": "ลูกวัว api", "東北ずん子/东北俊子": "โทโฮคุ ず家 / Tohoku Toshiko", "波兰语": "โปแลนด์", "接口": "อินเตอร์เฟซ", "翻译结果修正按钮": "ปุ่มแก้ไขผลการแปล", - "注册网址": "ลงทะเบียนที่อยู่เว็บไซต์", "警告": "คำเตือน", "俄语": "ภาษารัสเซีย", "文字更新分析": "การวิเคราะห์การอัปเดตคำ", @@ -385,7 +376,6 @@ "当前版本": "รุ่นปัจจุบัน", "搜索持续时间(s)": "ระยะเวลาการค้นหา", "添加行": "เพิ่มบรรทัด", - "百度api": "ไป่ตู้ api", "京町セイカ": "เกียวมาจิ (Kyomachi)", "仅": "เท่านั้น", "透明度": "ความโปร่งใส", @@ -393,7 +383,6 @@ "朗读翻译": "อ่านออกเสียงแปล", "火山TTS": "ภูเขาไฟ TTS", "获取失败": "รับล้มเหลว", - "字数统计": "สถิติจำนวนคำ", "快捷键冲突": "การปะทะกันของปุ่มลัด", "用户词典": "พจนานุกรมผู้ใช้", "执行周期(s)": "รอบการดำเนินการ (s)", @@ -435,7 +424,6 @@ "接続詞": "続คำ", "显示游戏静音按钮": "แสดงปุ่มปิดเสียงเกม", "拉丁(CP1252)": "ละติน (CP1252)", - "彩云api": "เมฆสี api", "東北ずん子": "โทโฮคุ", "编辑专有名词": "แก้ไขคำนามที่เป็นกรรมสิทธิ์", "目标语言": "ภาษาเป้าหมาย", @@ -451,11 +439,7 @@ "过滤包含乱码的文本行": "กรองบรรทัดข้อความที่มีรหัสยุ่งเหยิง", "进行一次OCR": "ทำ OCR หนึ่งครั้ง", "选取OCR范围——立即": "เลือกช่วง OCR - ตอนนี้", - "有道OCR": "เส้นทาง OCR", "免费试用": "ทดลองใช้ฟรี", - "通用文字识别 API": "API การจดจำคำทั่วไป", - "有道图片翻译": "การแปลภาพวิถี", - "图片翻译 API": "แปลภาพ API", "内嵌翻译": "แปลแบบอินไลน์", "隐藏不存在的游戏": "ซ่อนเกมที่ไม่มีอยู่จริง", "宽度": "ความกว้าง", @@ -490,8 +474,6 @@ "日语注音方案": "โปรแกรมบันทึกเสียงภาษาญี่ปุ่น", "Sakura大模型": "Sakura ใหญ่ แบบ", "Magpie路径": "เส้นทาง Magpie", - "Sakura部署教程": "Sakura Deployment กวดวิชา", - "Github仓库": "คลังสินค้า Github", "利用上文信息翻译(通常会有一定的效果提升,但会导致变慢)": "ใช้ประโยชน์จากการแปลข้อมูลข้างต้น (มักจะมีผลบางอย่างเพิ่มขึ้น แต่ทำให้ช้าลง)", "使用YAPI注入": "ใช้ YAPI ฉีด", "窗口缩放": "หน้าต่างซูม", @@ -552,7 +534,7 @@ "存在": "การปรากฏตัว", "添加": "เพิ่ม", "使用原型查询": "การใช้แบบสอบถามต้นแบบ", - "时": "เวลา", + "时": "ชั่วโมง", "启动": "เริ่ม", "批量添加": "เพิ่มจำนวนมาก", "左移": "เลื่อนซ้าย", @@ -564,8 +546,6 @@ "名称": "ชื่อ", "网址": "ที่อยู่เว็บไซต์", "百度OCR": "ไป่ตู้ OCR", - "飞书OCR": "หนังสือบิน OCR", - "讯飞OCR": "โปรแกรม iFlytek OCR", "最大缓冲区长度": "ความยาวบัฟเฟอร์สูงสุด", "最大缓存文本长度": "ความยาวสูงสุดของข้อความแคช", "半径": "รัศมี", @@ -605,11 +585,9 @@ "不显示时间": "ไม่แสดงเวลา", "过滤历史重复": "ประวัติการกรอง ทำซ้ำ", "缓存条数": "จำนวนแถบแคช", - "腾讯OCR": "Tencent โอซีอาร์", "删除列表": "ลบรายการ", "上移": "เลื่อนขึ้น", "下移": "เลื่อนลง", - "腾讯图片翻译": "Tencent แปลภาพ", "百度图片翻译": "การแปลภาพ Baidu", "大": "ใหญ่", "权限不足,请以管理员权限运行!": "สิทธิ์ไม่เพียงพอโปรดเรียกใช้ด้วยสิทธิ์ของผู้ดูแลระบบ!", @@ -826,5 +804,14 @@ "按行数过滤或截断": "กรองหรือตัดตามจำนวนแถว", "超过最大字数时截断而非过滤": "ตัดแทนการกรองเมื่อเกินจำนวนคำสูงสุด", "超过最大行数时截断而非过滤": "ตัดแทนการกรองเมื่อเกินจำนวนแถวสูงสุด", - "复制图片": "คัดลอกรูปภาพ" + "复制图片": "คัดลอกรูปภาพ", + "试用": "ทดลองใช้", + "图片翻译": "การแปลภาพ", + "通用文字识别": "การจดจำคำทั่วไป", + "腾讯": "เทนเซ็นต์", + "通用印刷体识别": "การจดจำร่างกายการพิมพ์ทั่วไป", + "小牛": "ลูกวัว", + "讯飞": "โดย iFlytek", + "百度翻译开放平台": "แพลตฟอร์มเปิด Baidu Translation", + "百度智能云": "Baidu สมาร์ทคลาวด์" } \ No newline at end of file diff --git a/LunaTranslator/files/lang/tr.json b/LunaTranslator/files/lang/tr.json index 17ec0407..414ad998 100644 --- a/LunaTranslator/files/lang/tr.json +++ b/LunaTranslator/files/lang/tr.json @@ -34,12 +34,6 @@ "快译通": "Hızlı Çevirmen", "有道4": "Youdao 4", "有道5": "Youdao 5", - "百度api": "Baidu api", - "腾讯api": "Tencent api", - "小牛api": "Calf api", - "彩云api": "Renk bulutu api", - "火山api": "Volcano api", - "有道api": "Youdao api", "导出sqlite文件为json文件": "Sqlite dosyasını json dosyasına aktar", "中文": "Çince", "翻译设置": "Çeviri ayarları", @@ -127,7 +121,6 @@ "图标": "İşaretçi", "指示詞": "Deixis", "動詞": "Verbs", - "注册网址": "Kayıt sitesi", "显示帧率": "Çerçive hızını göster", "游戏": "oyun", "剪裁UWP窗口的标题栏": "UWP penceresinin başlık çubuğunu tıklayın", @@ -158,7 +151,6 @@ "开始游戏": "Oyunu başlat", "最邻近": "En yakın", "感動詞": "Sözler taşınıyor", - "字数统计": "kelime sayısı", "形容詞": "Adjective", "json文件": "Json dosyası", "透明度": "transparency", @@ -167,7 +159,6 @@ "选择文件夹": "Dizini Seç", "简体中文": "Basitleştirilmiş Çince", "原文内容": "Orijinal içerik", - "次数统计": "Zaman istatistikleri", "代名詞": "Pronoun", "判定詞": "Tanımlayıcı kelime", "去除重复行": "Çiftli çizgileri sil", @@ -291,7 +282,6 @@ "中东欧": "Merkezi ve Doğu Avrupa", "北欧": "Kuzey Avrupa", "西里尔": "Kiril", - "火山OCR": "Volkan OCR", "翻译及OCR语言": "Çeviri ve OCR dili", "特殊码": "özel kodu", "删除": "Sil", @@ -337,7 +327,6 @@ "波兰语": "Polonyca@ item Spelling dictionary", "窗口置顶": "Pencere Üst", "仅": "Sadece", - "注册网址2": "Kayıt sitesi 2", "任务栏中显示": "Görev çubuğunda göster", "移除": "Çıkar", "复制特殊码": "Özel Kodu Kopiyala", @@ -355,7 +344,6 @@ "结束地址(hex)": "Sonu Adresi (hex)", "搜索文本过短!": "Arama mesajı çok kısa!", "不能为空": "Boş olamaz", - "阿里api": "Alibaba API", "找不到重要组件:": "Önemli komponent bulunamadı:", "请重新下载并关闭杀毒软件后重试": "Lütfen antivirüs yazılımını tekrar indirin ve tekrar deneyin", "系统未安装": "Sistem kurulmadı", @@ -451,11 +439,7 @@ "刷新": "Tazele", "读取剪贴板": "Pano Oku", "进行一次OCR": "OCR yap", - "有道OCR": "Youdao OCR", "免费试用": "Özgür dava", - "通用文字识别 API": "Universal Text Recognition API", - "有道图片翻译": "Youdao Resimlerinin çevirimi", - "图片翻译 API": "Resim Çeviri API", "内嵌翻译": "İçeri yatırılmış çeviri", "隐藏不存在的游戏": "Olmadığı oyunları gizleyin", "宽度": "genişlik", @@ -490,8 +474,6 @@ "日语注音方案": "Japon fonetik taslağı", "Sakura大模型": "Sakura Büyük Modeli", "Magpie路径": "Magpie Yolu", - "Sakura部署教程": "Sakura Deployment Tutorial", - "Github仓库": "Github deposu", "利用上文信息翻译(通常会有一定的效果提升,但会导致变慢)": "Önceki metinde verilen bilgileri kullanarak çevirin (genelde etkinliğinde bazı gelişmelerle, fakat daha yavaş çeviriye yol açabilir)", "使用YAPI注入": "YAPI injeksiyonu kullanıyor", "窗口缩放": "Pencere Yakınlaştır", @@ -552,7 +534,7 @@ "存在": "varlığı", "添加": "Ekle", "使用原型查询": "Prototip sorguları kullanılıyor", - "时": "Zaman", + "时": "saat", "启动": "start-up", "批量添加": "Toplu Ekle", "左移": "Sol vardiyası", @@ -564,8 +546,6 @@ "名称": "isim", "网址": "Web sitesi", "百度OCR": "Baidu OCR", - "飞书OCR": "Feishu OCR", - "讯飞OCR": "IFlytek OCR", "最大缓冲区长度": "Azamik buffer uzunluğu", "最大缓存文本长度": "Maximum cached text length", "半径": "radius", @@ -605,11 +585,9 @@ "不显示时间": "Zamanı gösterme", "过滤历史重复": "Tarihi çizgileri sil", "缓存条数": "Cache girişlerinin sayısı", - "腾讯OCR": "Tencent OCR", "删除列表": "Listeyi sil", "上移": "Yukarı Taşı", "下移": "Aşağı taşın", - "腾讯图片翻译": "Tencent Resim Çevirmesi", "百度图片翻译": "Baidu Resim Çeviri", "大": "büyükdictionary variant", "权限不足,请以管理员权限运行!": "Insufficient permissions, please run with administrator privileges!", @@ -826,5 +804,14 @@ "按行数过滤或截断": "Sırada sayıyla sil ya da küçük", "超过最大字数时截断而非过滤": "Maksimum kelime sayısından fazladığında filtreleme yerine küçük", "超过最大行数时截断而非过滤": "Azamik satır sayısını aştığında filtrelemek yerine küçük", - "复制图片": "Görüntü kopyala" + "复制图片": "Görüntü kopyala", + "试用": "mahkemede", + "图片翻译": "Resim çevirimi", + "通用文字识别": "Universal Text Recognition", + "腾讯": "10 sant", + "通用印刷体识别": "Universal Print Identification", + "小牛": "Calf", + "讯飞": "IFlytek", + "百度翻译开放平台": "Baidu Çeviri Açık Platformu", + "百度智能云": "Baidu AI Bulud" } \ No newline at end of file diff --git a/LunaTranslator/files/lang/uk.json b/LunaTranslator/files/lang/uk.json index 475f9e0f..f373d2f5 100644 --- a/LunaTranslator/files/lang/uk.json +++ b/LunaTranslator/files/lang/uk.json @@ -34,12 +34,6 @@ "快译通": "Куайітонгvietnam. kgm", "有道4": "Youdao 4", "有道5": "Youdao 5", - "百度api": "API Baidu", - "腾讯api": "Похильний API", - "小牛api": "API Mavericks", - "彩云api": "API Caiyun", - "火山api": "Волкановий API", - "有道api": "Youdao API", "导出sqlite文件为json文件": "Експортувати файл sqlite як файл JSON", "中文": "Китайський", "翻译设置": "Параметри перекладу", @@ -124,7 +118,6 @@ "图标": "Піктограма", "指示詞": "Демонстративні слова", "動詞": "Дієслова", - "注册网址": "Веб- сайт реєстрування", "显示帧率": "Показувати швидкість рамок", "游戏": "гра", "剪裁UWP窗口的标题栏": "Перевірити смужку заголовка вікна UWP", @@ -155,7 +148,6 @@ "开始游戏": "Почати гру", "最邻近": "Найближчий сусід", "感動詞": "Пересунення слів", - "字数统计": "кількість слів", "形容詞": "Adjective", "json文件": "Файл JSON", "透明度": "прозорість", @@ -164,7 +156,6 @@ "选择文件夹": "Виберіть теку", "简体中文": "Простий китайський", "原文内容": "Початковий вміст", - "次数统计": "Статистика частоти", "代名詞": "Назва", "判定詞": "Визначення слова", "去除重复行": "Вилучити дві рядки", @@ -285,7 +276,6 @@ "中东欧": "Центральна і Східна Європа", "北欧": "Північна Європа", "西里尔": "Cyril", - "火山OCR": "Волкановий ОКР", "翻译及OCR语言": "Переклад і мова OCR", "特殊码": "специфічний код", "删除": "вилучити", @@ -337,7 +327,6 @@ "备忘录按钮": "Кнопка пам' яті", "绑定窗口按钮": "Кнопка зв’ язати вікно", "仅": "лише", - "注册网址2": "Веб- сайт реєстрації 2", "任务栏中显示": "Show in taskbar", "移除": "вилучити", "复制特殊码": "Копіювати спеціальний код", @@ -355,7 +344,6 @@ "结束地址(hex)": "Адреса кінця (шістнадцять)", "搜索文本过短!": "Search text is too short!", "不能为空": "Не вдалося бути порожнім", - "阿里api": "API Alibaba", "找不到重要组件:": "Важливий компонент не знайдено:", "请重新下载并关闭杀毒软件后重试": "Будь ласка, звантажте і закрийте антивірусне програмне забезпечення знову і спробуйте знову", "系统未安装": "Система не встановлена", @@ -451,11 +439,7 @@ "刷新": "Оновити", "读取剪贴板": "Читати буфер обміну даними", "进行一次OCR": "Виконати OCR", - "有道OCR": "Youdao OCR", "免费试用": "Безкоштовне випробування", - "通用文字识别 API": "Універсальний програмний інтерфейс розпізнавання тексту", - "有道图片翻译": "Переклад зображень Youdao", - "图片翻译 API": "API перекладу зображення", "内嵌翻译": "Вбудований переклад", "隐藏不存在的游戏": "Сховати ігри, які не існують", "宽度": "ширина", @@ -490,8 +474,6 @@ "日语注音方案": "Японська фонетична схема", "Sakura大模型": "Великий модель Sakura", "Magpie路径": "Шлях до Magpie", - "Sakura部署教程": "Навчення розробки Sakura", - "Github仓库": "Сховище Github", "利用上文信息翻译(通常会有一定的效果提升,但会导致变慢)": "Переклад за допомогою інформації, наданої у попередньому тексті (зазвичай, з деяким покращенням ефективності, але це може призвести до повільнішого перекладу)", "使用YAPI注入": "Використання інструкції YAPI", "窗口缩放": "Масштаб вікна", @@ -552,7 +534,7 @@ "存在": "існування", "添加": "Додати", "使用原型查询": "Використання запитів прототипу", - "时": "Час", + "时": "годину", "启动": "запуск", "批量添加": "Додати партію", "左移": "Ліва зміна", @@ -564,8 +546,6 @@ "名称": "назва", "网址": "Веб- сайт", "百度OCR": "Baidu OCR", - "飞书OCR": "Feishu OCR", - "讯飞OCR": "IFlytek OCR", "最大缓冲区长度": "Максимальна довжина буфера", "最大缓存文本长度": "Максимальна довжина кешування тексту", "半径": "радіус", @@ -605,11 +585,9 @@ "不显示时间": "Не показувати час", "过滤历史重复": "Фільтрувати історичні дублікати", "缓存条数": "Кількість записів кешу", - "腾讯OCR": "Похильний OCR", "删除列表": "Вилучити список", "上移": "Пересунути вгору", "下移": "Пересунути вниз", - "腾讯图片翻译": "Переклад схильного зображення", "百度图片翻译": "Переклад зображення Baidu", "大": "великий", "权限不足,请以管理员权限运行!": "Недостатньо прав доступу, будь ласка, запускайте привілеї адміністратора!", @@ -826,5 +804,14 @@ "按行数过滤或截断": "Фільтрувати або вирізати за кількістю рядків", "超过最大字数时截断而非过滤": "Вирізати замість фільтрування, якщо перевищує максимальну кількість слів", "超过最大行数时截断而非过滤": "Вирізати замість фільтрування, якщо перевищено максимальну кількість рядків", - "复制图片": "Копіювати зображення" + "复制图片": "Копіювати зображення", + "试用": "на суді", + "图片翻译": "Переклад зображення", + "通用文字识别": "Універсальне визнання тексту", + "腾讯": "тенсент", + "通用印刷体识别": "Універсальне ідентифікація друку", + "小牛": "Лівець", + "讯飞": "IFlytek", + "百度翻译开放平台": "Відкрита платформа перекладу Baidu", + "百度智能云": "Хмари Baidu AIweather condition" } \ No newline at end of file diff --git a/LunaTranslator/files/lang/vi.json b/LunaTranslator/files/lang/vi.json index 8a7fc9b3..943ac816 100644 --- a/LunaTranslator/files/lang/vi.json +++ b/LunaTranslator/files/lang/vi.json @@ -34,12 +34,6 @@ "快译通": "Dịch nhanh", "有道4": "Có đường 4.", "有道5": "Có đường 5.", - "百度api": "trăm api", - "腾讯api": "Thông tin API", - "小牛api": "Tiểu Ngưu API", - "彩云api": "Đám mây API", - "火山api": "núi lửa api", - "有道api": "Có API", "导出sqlite文件为json文件": "Xuất file sqlite thành file json", "中文": "Trung Quốc", "翻译设置": "Thiết lập dịch", @@ -127,7 +121,6 @@ "图标": "Biểu tượng", "指示詞": "Từ chỉ dẫn", "動詞": "Động từ", - "注册网址": "Đăng ký địa chỉ web", "显示帧率": "Hiện khung hình", "游戏": "Trò chơi", "剪裁UWP窗口的标题栏": "Cắt thanh tiêu đề của cửa sổ UWP", @@ -158,7 +151,6 @@ "开始游戏": "Bắt đầu trò chơi", "最邻近": "Gần nhất", "感動詞": "Lời cảm động", - "字数统计": "Thống kê số lượng từ", "形容詞": "Tính từ", "json文件": "Tài liệu JSON", "透明度": "Độ trong suốt", @@ -167,7 +159,6 @@ "选择文件夹": "Chọn thư mục", "简体中文": "Trung Quốc giản thể", "原文内容": "Nội dung gốc", - "次数统计": "Thống kê số lần", "代名詞": "Đại danh từ", "判定詞": "Phán quyết", "去除重复行": "Loại bỏ các dòng trùng lặp", @@ -291,7 +282,6 @@ "中东欧": "Trung Đông Âu", "北欧": "Bắc Âu", "西里尔": "CyrillName", - "火山OCR": "Núi lửa OCR", "翻译及OCR语言": "Dịch và ngôn ngữ OCR", "特殊码": "Mã đặc biệt", "删除": "Xoá", @@ -337,7 +327,6 @@ "波兰语": "Ba Lan", "窗口置顶": "Cửa sổ trên cùng", "仅": "Chỉ", - "注册网址2": "Đăng ký địa chỉ web 2", "任务栏中显示": "Hiển thị trong Taskbar", "移除": "Xóa", "复制特殊码": "Sao chép mã đặc biệt", @@ -355,7 +344,6 @@ "结束地址(hex)": "Địa chỉ kết thúc (Hex)", "搜索文本过短!": "Tìm kiếm văn bản quá ngắn!", "不能为空": "Không thể để trống", - "阿里api": "bởi aliapi", "找不到重要组件:": "Không tìm thấy thành phần quan trọng:", "请重新下载并关闭杀毒软件后重试": "Vui lòng tải xuống và thử lại sau khi tắt phần mềm diệt virus", "系统未安装": "Hệ thống không được cài đặt", @@ -451,11 +439,7 @@ "刷新": "Làm mới", "读取剪贴板": "Đọc bảng nháp", "进行一次OCR": "Thực hiện OCR", - "有道OCR": "Có OCR", "免费试用": "Dùng thử miễn phí", - "通用文字识别 API": "API nhận dạng văn bản chung", - "有道图片翻译": "Có hình dịch", - "图片翻译 API": "Hình ảnh dịch API", "内嵌翻译": "Dịch nội tuyến", "隐藏不存在的游戏": "Ẩn các trò chơi không tồn tại", "宽度": "Chiều rộng", @@ -490,8 +474,6 @@ "日语注音方案": "Chương trình chú thích tiếng Nhật", "Sakura大模型": "Sakura Lớn Mô hình", "Magpie路径": "Đường Magpie", - "Sakura部署教程": "Hướng dẫn triển khai Sakura", - "Github仓库": "Kho Github", "利用上文信息翻译(通常会有一定的效果提升,但会导致变慢)": "Sử dụng thông tin trên để dịch (thường có một số hiệu ứng tăng lên, nhưng có thể dẫn đến chậm hơn)", "使用YAPI注入": "Sử dụng YAPI Injection", "窗口缩放": "Thu phóng cửa sổ", @@ -552,7 +534,7 @@ "存在": "Hiện diện", "添加": "Thêm", "使用原型查询": "Truy vấn với Prototype", - "时": "Khi", + "时": "Giờ", "启动": "Bắt đầu", "批量添加": "Thêm hàng loạt", "左移": "Dịch trái", @@ -564,8 +546,6 @@ "名称": "Tên", "网址": "Trang chủ", "百度OCR": "Số lượng OCR", - "飞书OCR": "Sách bay OCR", - "讯飞OCR": "Máy bay OCR", "最大缓冲区长度": "Chiều dài bộ đệm tối đa", "最大缓存文本长度": "Độ dài văn bản bộ nhớ cache tối đa", "半径": "Bán kính", @@ -605,11 +585,9 @@ "不显示时间": "Không hiển thị thời gian", "过滤历史重复": "Lọc lịch sử lặp lại", "缓存条数": "Số thanh bộ nhớ cache", - "腾讯OCR": "Thông tin OCR", "删除列表": "Xoá danh sách", "上移": "Di chuyển lên", "下移": "Di chuyển xuống", - "腾讯图片翻译": "Bản dịch hình ảnh Tencent", "百度图片翻译": "100 hình ảnh dịch", "大": "Lớn", "权限不足,请以管理员权限运行!": "Không đủ quyền, hãy chạy với quyền quản trị viên!", @@ -826,5 +804,14 @@ "按行数过滤或截断": "Lọc hoặc cắt ngắn theo số dòng", "超过最大字数时截断而非过滤": "Cắt ngắn thay vì lọc khi vượt quá số từ tối đa", "超过最大行数时截断而非过滤": "Cắt ngắn thay vì lọc khi vượt quá số dòng tối đa", - "复制图片": "Sao chép ảnh" + "复制图片": "Sao chép ảnh", + "试用": "Thử nghiệm", + "图片翻译": "Dịch ảnh", + "通用文字识别": "Nhận dạng văn bản chung", + "腾讯": "Trang chủ", + "通用印刷体识别": "Nhận dạng cơ thể in phổ quát", + "小牛": "Tiểu Ngưu", + "讯飞": "Tin nhắn", + "百度翻译开放平台": "100 phiên dịch mở", + "百度智能云": "100 đám mây thông minh" } \ No newline at end of file diff --git a/LunaTranslator/files/lang/zh.json b/LunaTranslator/files/lang/zh.json index 4b15d922..eee511be 100644 --- a/LunaTranslator/files/lang/zh.json +++ b/LunaTranslator/files/lang/zh.json @@ -39,7 +39,6 @@ "在线翻译": "", "开始游戏": "", "動詞": "", - "次数统计": "", "指示詞": "", "备注": "", "東北きりたん": "", @@ -56,7 +55,6 @@ "端口冲突": "", "连接进程": "", "发现": "", - "火山OCR": "", "有道4": "", "全字符(UTF-8)": "", "取消": "", @@ -165,7 +163,6 @@ "显示/隐藏范围框": "", "选取OCR范围后显示范围框": "", "代理设置": "", - "阿里api": "", "自动": "", "重复次数": "", "仅使用激活的翻译": "", @@ -212,13 +209,10 @@ "形状詞": "", "文本源": "", "北欧(CP1257)": "", - "注册网址2": "", "文本预处理": "", "调整执行顺序": "", - "腾讯api": "", "资源下载": "", "每个字后插入空格": "", - "火山api": "", "結月ゆかり/结月缘": "", "窗口置顶": "", "颜色": "", @@ -269,7 +263,6 @@ "默认设置": "", "意大利语": "", "已保存游戏": "", - "有道api": "", "显示显示原文按钮": "", "去除花括号{}": "", "保留原文": "", @@ -335,12 +328,10 @@ "设置Token": "", "备忘录": "", "自定义python处理": "", - "小牛api": "", "東北ずん子/东北俊子": "", "波兰语": "", "接口": "", "翻译结果修正按钮": "", - "注册网址": "", "警告": "", "俄语": "", "文字更新分析": "", @@ -387,7 +378,6 @@ "当前版本": "", "搜索持续时间(s)": "", "添加行": "", - "百度api": "", "京町セイカ": "", "仅": "", "透明度": "", @@ -395,7 +385,6 @@ "朗读翻译": "", "火山TTS": "", "获取失败": "", - "字数统计": "", "快捷键冲突": "", "用户词典": "", "执行周期(s)": "", @@ -437,7 +426,6 @@ "接続詞": "", "显示游戏静音按钮": "", "拉丁(CP1252)": "", - "彩云api": "", "東北ずん子": "", "编辑专有名词": "", "目标语言": "", @@ -453,11 +441,7 @@ "过滤包含乱码的文本行": "", "进行一次OCR": "", "选取OCR范围——立即": "", - "有道OCR": "", "免费试用": "", - "通用文字识别 API": "", - "有道图片翻译": "", - "图片翻译 API": "", "内嵌翻译": "", "隐藏不存在的游戏": "", "宽度": "", @@ -498,8 +482,6 @@ "日语注音方案": "", "Sakura大模型": "", "Magpie路径": "", - "Sakura部署教程": "", - "Github仓库": "", "利用上文信息翻译(通常会有一定的效果提升,但会导致变慢)": "", "历史翻译": "", "使用YAPI注入": "", @@ -574,9 +556,6 @@ "名称": "", "网址": "", "可选取的": "", - "百度OCR": "", - "飞书OCR": "", - "讯飞OCR": "", "最大缓冲区长度": "", "最大缓存文本长度": "", "半径": "", @@ -615,13 +594,10 @@ "不显示时间": "", "过滤历史重复": "", "缓存条数": "", - "腾讯OCR": "", "创建列表": "", "删除列表": "", "上移": "", "下移": "", - "腾讯图片翻译": "", - "百度图片翻译": "", "大": "", "权限不足,请以管理员权限运行!": "", "标点": "", @@ -826,5 +802,14 @@ "按行数过滤或截断": "", "超过最大字数时截断而非过滤": "", "超过最大行数时截断而非过滤": "", - "复制图片": "" + "复制图片": "", + "试用": "", + "图片翻译": "", + "通用文字识别": "", + "腾讯": "", + "通用印刷体识别": "", + "小牛": "", + "讯飞": "", + "百度翻译开放平台": "", + "百度智能云": "" } \ No newline at end of file diff --git a/otherlang.md b/otherlang.md index b7e2c4d7..1b9c2f83 100644 --- a/otherlang.md +++ b/otherlang.md @@ -1,5 +1,5 @@ -Now this program supports [简体中文]() | [日本語](LunaTranslator/files/lang/ja.json) | [繁體中文](LunaTranslator/files/lang/cht.json) | [English](LunaTranslator/files/lang/en.json) | [Русский язык](LunaTranslator/files/lang/ru.json) | [Español](LunaTranslator/files/lang/es.json) | [한국어](LunaTranslator/files/lang/ko.json) | [Français](LunaTranslator/files/lang/fr.json) | [Tiếng Việt](LunaTranslator/files/lang/vi.json) | [Türkçe](LunaTranslator/files/lang/tr.json) | [Polski](LunaTranslator/files/lang/pl.json) | [Українська Мова](LunaTranslator/files/lang/uk.json) | [Italiano](LunaTranslator/files/lang/it.json) | [اللغة العربية](LunaTranslator/files/lang/ar.json) | [ภาษาไทย](LunaTranslator/files/lang/th.json) | [Deutsch](LunaTranslator/files/lang/de.json) | [Svenska](LunaTranslator/files/lang/sv.json) | [Nederlands](LunaTranslator/files/lang/nl.json) | [Čeština](LunaTranslator/files/lang/cs.json) | [Português](LunaTranslator/files/lang/pt.json) +Now this program supports [简体中文]() | [日本語](LunaTranslator/files/lang/ja.json) | [繁體中文](LunaTranslator/files/lang/cht.json) | [English](LunaTranslator/files/lang/en.json) | [Русский язык](LunaTranslator/files/lang/ru.json) | [Español](LunaTranslator/files/lang/es.json) | [한국어](LunaTranslator/files/lang/ko.json) | [Français](LunaTranslator/files/lang/fr.json) | [Tiếng Việt](LunaTranslator/files/lang/vi.json) | [Türkçe](LunaTranslator/files/lang/tr.json) | [Polski](LunaTranslator/files/lang/pl.json) | [Українська Мова](LunaTranslator/files/lang/uk.json) | [Italiano](LunaTranslator/files/lang/it.json) | [ภาษาไทย](LunaTranslator/files/lang/th.json) | [Deutsch](LunaTranslator/files/lang/de.json) | [Svenska](LunaTranslator/files/lang/sv.json) | [Nederlands](LunaTranslator/files/lang/nl.json) | [Čeština](LunaTranslator/files/lang/cs.json) | [Português](LunaTranslator/files/lang/pt.json) Most of them are machine translated from Chinese. diff --git a/plugins/CMakeLists.txt b/plugins/CMakeLists.txt index dc218c9d..a6a51499 100644 --- a/plugins/CMakeLists.txt +++ b/plugins/CMakeLists.txt @@ -28,8 +28,8 @@ set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR}/version) include(generate_product_version) set(VERSION_MAJOR 5) -set(VERSION_MINOR 41) -set(VERSION_PATCH 1) +set(VERSION_MINOR 42) +set(VERSION_PATCH 0) add_library(pch pch.cpp) target_precompile_headers(pch PUBLIC pch.h) diff --git a/plugins/winsharedutils/screenshot.cpp b/plugins/winsharedutils/screenshot.cpp index 66f2b5d4..ab3812a4 100644 --- a/plugins/winsharedutils/screenshot.cpp +++ b/plugins/winsharedutils/screenshot.cpp @@ -113,7 +113,7 @@ std::vector SaveBitmapToBuffer(HBITMAP hBitmap) GetObject(hBitmap, sizeof(BITMAP), (LPSTR)&Bitmap); bi.biSize = sizeof(BITMAPINFOHEADER); bi.biWidth = Bitmap.bmWidth; - bi.biHeight = Bitmap.bmHeight; // 为负,正向的位图;为正,倒向的位图 + bi.biHeight = -Bitmap.bmHeight; // 为负,正向的位图;为正,倒向的位图 bi.biPlanes = 1; bi.biBitCount = wBitCount; bi.biCompression = BI_RGB; @@ -140,40 +140,40 @@ std::vector SaveBitmapToBuffer(HBITMAP hBitmap) // WriteFile(fh, (LPSTR)&bi, sizeof(BITMAPINFOHEADER), &dwWritten, NULL); memcpy(buffer, &bmfHdr, sizeof(BITMAPFILEHEADER)); - memcpy(buffer + sizeof(BITMAPFILEHEADER), &bi, sizeof(BITMAPINFOHEADER)); + buffer += sizeof(BITMAPFILEHEADER); + memcpy(buffer, &bi, sizeof(BITMAPINFOHEADER)); + buffer += sizeof(BITMAPINFOHEADER); // 获取位图阵列 - lpmem = new char[dwBmBitsSize]; - GetBitmapBits(hBitmap, dwBmBitsSize, lpmem); // 正向的内存图象数据 - - for (int i = 0; i < Bitmap.bmHeight; i++) - { - memcpy(buffer + sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER) + Bitmap.bmWidth * i * 4, lpmem + Bitmap.bmWidth * (Bitmap.bmHeight - i - 1) * 4, Bitmap.bmWidth * 4); - } + if (!GetBitmapBits(hBitmap, dwBmBitsSize, buffer)) + return {}; // 正向的内存图象数据 + if (std::all_of(buffer, buffer + dwBmBitsSize, std::bind(std::equal_to(), std::placeholders::_1, 0))) + return {}; + // for (int i = 0; i < Bitmap.bmHeight; i++) + // { + // memcpy(buffer + sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER) + Bitmap.bmWidth * i * 4, lpmem + Bitmap.bmWidth * (Bitmap.bmHeight - i - 1) * 4, Bitmap.bmWidth * 4); + // } // 写位图数据 // WriteFile(fh, lpbk, dwBmBitsSize, &dwWritten, NULL); - // 清除 - delete[] lpmem; - return data; } -DECLARE bool gdi_screenshot(HWND hwnd, RECT rect, void (*cb)(byte *, size_t)) +DECLARE void gdi_screenshot(HWND hwnd, RECT rect, void (*cb)(byte *, size_t)) { if (rect.bottom == rect.top || rect.left == rect.right) - return false; + return; if (!hwnd) hwnd = GetDesktopWindow(); auto hdc = GetDC(hwnd); if (!hdc) - return false; + return; auto bm = GetBitmap(rect, hdc); // SaveBitmapToFile(bm, LR"(.\2.bmp)"); size_t size; auto bf = std::move(SaveBitmapToBuffer(bm)); - cb(bf.data(), bf.size()); + if (bf.size()) + cb(bf.data(), bf.size()); DeleteObject(bm); ReleaseDC(hwnd, hdc); - return true; } DECLARE void maximum_window(HWND hwnd)