mirror of
https://github.com/HIllya51/LunaTranslator.git
synced 2025-01-13 07:33:53 +08:00
.
This commit is contained in:
parent
9788f5065f
commit
a2e7cca929
@ -39,15 +39,14 @@ DECLARE_API bool check_language_valid(wchar_t *language)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
DECLARE_API void getlanguagelist(void (*cb)(LPCWSTR))
|
DECLARE_API void getlanguagelist(void (*cb)(LPCWSTR, LPCWSTR))
|
||||||
{
|
{
|
||||||
OcrEngine ocrEngine = OcrEngine::TryCreateFromUserProfileLanguages();
|
OcrEngine ocrEngine = OcrEngine::TryCreateFromUserProfileLanguages();
|
||||||
auto languages = ocrEngine.AvailableRecognizerLanguages();
|
auto languages = ocrEngine.AvailableRecognizerLanguages();
|
||||||
|
|
||||||
for (auto &&language : languages)
|
for (auto &&language : languages)
|
||||||
{
|
{
|
||||||
auto lang = language.LanguageTag();
|
cb(language.LanguageTag().c_str(), language.DisplayName().c_str());
|
||||||
cb(lang.c_str());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
DECLARE_API void OCR(void *ptr, size_t size, wchar_t *lang, wchar_t *space, void (*cb)(int, int, int, int, LPCWSTR))
|
DECLARE_API void OCR(void *ptr, size_t size, wchar_t *lang, wchar_t *space, void (*cb)(int, int, int, int, LPCWSTR))
|
||||||
|
@ -91,7 +91,7 @@ def getlangtgt():
|
|||||||
def getlanguagespace(lang=None):
|
def getlanguagespace(lang=None):
|
||||||
if lang is None:
|
if lang is None:
|
||||||
lang = getlanguse()
|
lang = getlanguse()
|
||||||
return "" if (lang in ("zh", "ja", "cht")) else " "
|
return "" if (lang.split("-")[0] in ("zh", "ja", "cht")) else " "
|
||||||
|
|
||||||
|
|
||||||
def findenclose(text, tag):
|
def findenclose(text, tag):
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import base64
|
import base64
|
||||||
from myutils.config import globalconfig
|
from myutils.config import globalconfig
|
||||||
from ocrengines.baseocrclass import baseocr
|
from ocrengines.baseocrclass import baseocr
|
||||||
import random
|
import random, zhconv
|
||||||
from hashlib import md5
|
from hashlib import md5
|
||||||
|
|
||||||
|
|
||||||
@ -27,7 +27,14 @@ class OCR(baseocr):
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
js = response.json()
|
js = response.json()
|
||||||
text = [_["dst"] for _ in js["data"]["content"]]
|
text = [
|
||||||
|
(
|
||||||
|
zhconv.convert(_["dst"], "zh-tw")
|
||||||
|
if ("cht" == self.tgtlang_1)
|
||||||
|
else _["dst"]
|
||||||
|
)
|
||||||
|
for _ in js["data"]["content"]
|
||||||
|
]
|
||||||
box = [
|
box = [
|
||||||
(
|
(
|
||||||
l["points"][0]["x"],
|
l["points"][0]["x"],
|
||||||
@ -87,7 +94,14 @@ class OCR(baseocr):
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
js = response.json()
|
js = response.json()
|
||||||
text = [_["src"] for _ in js["data"]["content"]]
|
text = [
|
||||||
|
(
|
||||||
|
zhconv.convert(_["dst"], "zh-tw")
|
||||||
|
if ("cht" == self.tgtlang_1)
|
||||||
|
else _["dst"]
|
||||||
|
)
|
||||||
|
for _ in js["data"]["content"]
|
||||||
|
]
|
||||||
box = [
|
box = [
|
||||||
(
|
(
|
||||||
l["points"][0]["x"],
|
l["points"][0]["x"],
|
||||||
@ -108,24 +122,25 @@ class OCR(baseocr):
|
|||||||
@property
|
@property
|
||||||
def srclangx(self):
|
def srclangx(self):
|
||||||
return {
|
return {
|
||||||
|
"cht": "zh",
|
||||||
"es": "spa",
|
"es": "spa",
|
||||||
"ko": "kor",
|
"ko": "kor",
|
||||||
"fr": "fra",
|
"fr": "fra",
|
||||||
"ja": "jp",
|
"ja": "jp",
|
||||||
"cht": "cht",
|
|
||||||
"vi": "vie",
|
"vi": "vie",
|
||||||
"uk": "ukr",
|
"uk": "ukr",
|
||||||
"ar": "ara",
|
"ar": "ara",
|
||||||
|
"sv": "swe",
|
||||||
}.get(self.srclang_1, self.srclang_1)
|
}.get(self.srclang_1, self.srclang_1)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def tgtlangx(self):
|
def tgtlangx(self):
|
||||||
return {
|
return {
|
||||||
|
"cht": "zh",
|
||||||
"es": "spa",
|
"es": "spa",
|
||||||
"ko": "kor",
|
"ko": "kor",
|
||||||
"fr": "fra",
|
"fr": "fra",
|
||||||
"ja": "jp",
|
"ja": "jp",
|
||||||
"cht": "cht",
|
|
||||||
"vi": "vie",
|
"vi": "vie",
|
||||||
"uk": "ukr",
|
"uk": "ukr",
|
||||||
"ar": "ara",
|
"ar": "ara",
|
||||||
@ -134,6 +149,7 @@ class OCR(baseocr):
|
|||||||
def langmap(self):
|
def langmap(self):
|
||||||
return {
|
return {
|
||||||
"auto": "auto_detect",
|
"auto": "auto_detect",
|
||||||
|
"cht": "CHN_ENG",
|
||||||
"zh": "CHN_ENG",
|
"zh": "CHN_ENG",
|
||||||
"en": "ENG",
|
"en": "ENG",
|
||||||
"ja": "JAP",
|
"ja": "JAP",
|
||||||
@ -141,6 +157,17 @@ class OCR(baseocr):
|
|||||||
"ko": "KOR",
|
"ko": "KOR",
|
||||||
"fr": "FRE",
|
"fr": "FRE",
|
||||||
"es": "SPA",
|
"es": "SPA",
|
||||||
|
"pt": "POR",
|
||||||
|
"de": "GER",
|
||||||
|
"it": "ITA",
|
||||||
|
"ru": "RUS",
|
||||||
|
"nl": "DUT",
|
||||||
|
"sv": "SWE",
|
||||||
|
"pl": "POL",
|
||||||
|
"tr": "TUR",
|
||||||
|
"th": "THA",
|
||||||
|
"vi": "VIE",
|
||||||
|
"ar": "ARA",
|
||||||
}
|
}
|
||||||
|
|
||||||
def initocr(self):
|
def initocr(self):
|
||||||
|
@ -13,7 +13,12 @@ class OCR(baseocr):
|
|||||||
"es": "spa",
|
"es": "spa",
|
||||||
"fr": "fre",
|
"fr": "fre",
|
||||||
"ru": "rus",
|
"ru": "rus",
|
||||||
"cht": "cht",
|
"ar": "ara",
|
||||||
|
"de": "ger",
|
||||||
|
"tr": "tur",
|
||||||
|
"sv": "swe",
|
||||||
|
"es": "spa",
|
||||||
|
"pt": "por",
|
||||||
}
|
}
|
||||||
|
|
||||||
def ocr(self, imagebinary):
|
def ocr(self, imagebinary):
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
from hashlib import sha1
|
from hashlib import sha1
|
||||||
import time, random, hmac, base64, uuid, hashlib, json
|
import time, random, hmac, base64, uuid, hashlib, json
|
||||||
from ocrengines.baseocrclass import baseocr
|
from ocrengines.baseocrclass import baseocr
|
||||||
|
import zhconv
|
||||||
|
|
||||||
|
|
||||||
class OCR(baseocr):
|
class OCR(baseocr):
|
||||||
@ -18,9 +19,8 @@ class OCR(baseocr):
|
|||||||
except:
|
except:
|
||||||
return "ap-beijing"
|
return "ap-beijing"
|
||||||
|
|
||||||
@property
|
def langmap(self):
|
||||||
def langocr(self):
|
# https://cloud.tencent.com/document/product/866/33526
|
||||||
s = self.srclang_1
|
|
||||||
return {
|
return {
|
||||||
"zh": "zh",
|
"zh": "zh",
|
||||||
"cht": "zh",
|
"cht": "zh",
|
||||||
@ -38,18 +38,19 @@ class OCR(baseocr):
|
|||||||
"hu": "hun",
|
"hu": "hun",
|
||||||
"th": "tha",
|
"th": "tha",
|
||||||
"ar": "ara",
|
"ar": "ara",
|
||||||
}.get(s, "auto")
|
}
|
||||||
|
|
||||||
def langmap(self):
|
@property
|
||||||
# https://cloud.tencent.com/document/product/551/17232
|
def langocr(self):
|
||||||
return {"cht": "zh-TW"}
|
s = self.srclang_1
|
||||||
|
return self.langmap().get(s, "auto")
|
||||||
|
|
||||||
def ocr_fy(self, imagebinary):
|
def ocr_fy(self, imagebinary):
|
||||||
self.checkempty(["SecretId", "SecretKey"])
|
self.checkempty(["SecretId", "SecretKey"])
|
||||||
|
|
||||||
encodestr = str(base64.b64encode(imagebinary), "utf-8")
|
encodestr = str(base64.b64encode(imagebinary), "utf-8")
|
||||||
req_para = {
|
req_para = {
|
||||||
"Source": self.srclang,
|
"Source": self.langocr,
|
||||||
"Target": self.tgtlang,
|
"Target": self.tgtlang,
|
||||||
"ProjectId": int(self.config["ProjectId"]),
|
"ProjectId": int(self.config["ProjectId"]),
|
||||||
"Data": encodestr,
|
"Data": encodestr,
|
||||||
@ -140,27 +141,17 @@ class OCR(baseocr):
|
|||||||
for _ in r.json()["Response"]["ImageRecord"]["Value"]
|
for _ in r.json()["Response"]["ImageRecord"]["Value"]
|
||||||
]
|
]
|
||||||
texts = [
|
texts = [
|
||||||
_["TargetText"] for _ in r.json()["Response"]["ImageRecord"]["Value"]
|
(
|
||||||
|
zhconv.convert(_["TargetText"], "zh-tw")
|
||||||
|
if ("cht" == self.tgtlang_1)
|
||||||
|
else _["TargetText"]
|
||||||
|
)
|
||||||
|
for _ in r.json()["Response"]["ImageRecord"]["Value"]
|
||||||
]
|
]
|
||||||
return {"box": boxs, "text": texts, "isocrtranslate": True}
|
return {"box": boxs, "text": texts, "isocrtranslate": True}
|
||||||
except:
|
except:
|
||||||
raise Exception(r)
|
raise Exception(r)
|
||||||
|
|
||||||
def langmap(self):
|
|
||||||
# https://cloud.tencent.com/document/product/866/33526
|
|
||||||
return {
|
|
||||||
"ja": "jap",
|
|
||||||
"ko": "kor",
|
|
||||||
"en": "auto",
|
|
||||||
"ru": "rus",
|
|
||||||
"es": "spa",
|
|
||||||
"fr": "fre",
|
|
||||||
"vi": "vie",
|
|
||||||
"it": "ita",
|
|
||||||
"ar": "ara",
|
|
||||||
"th": "tha",
|
|
||||||
}
|
|
||||||
|
|
||||||
def ocr_ocr(self, imagebinary):
|
def ocr_ocr(self, imagebinary):
|
||||||
self.checkempty(["SecretId", "SecretKey"])
|
self.checkempty(["SecretId", "SecretKey"])
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import gobject
|
import gobject
|
||||||
import winrtutils
|
import winrtutils
|
||||||
from myutils.config import _TR, static_data, getlang_inner2show
|
from myutils.config import _TR, static_data
|
||||||
from myutils.utils import dynamiclink
|
from myutils.utils import dynamiclink
|
||||||
from ocrengines.baseocrclass import baseocr
|
from ocrengines.baseocrclass import baseocr
|
||||||
from qtsymbols import *
|
from qtsymbols import *
|
||||||
@ -8,36 +8,13 @@ from gui.dynalang import LPushButton, LLabel
|
|||||||
from myutils.utils import getlanguagespace
|
from myutils.utils import getlanguagespace
|
||||||
|
|
||||||
|
|
||||||
def initsupports():
|
|
||||||
_allsupport = winrtutils.getlanguagelist()
|
|
||||||
supportmap = {}
|
|
||||||
for lang in [_["code"] for _ in static_data["lang_list_all"]] + [
|
|
||||||
"zh-Hans",
|
|
||||||
"zh-Hant",
|
|
||||||
]:
|
|
||||||
if lang == "zh" or lang == "cht":
|
|
||||||
continue
|
|
||||||
for s in _allsupport:
|
|
||||||
if s.startswith(lang) or lang.startswith(s):
|
|
||||||
supportmap[lang] = s
|
|
||||||
break
|
|
||||||
if "zh-Hans" in supportmap:
|
|
||||||
v = supportmap.pop("zh-Hans")
|
|
||||||
supportmap["zh"] = v
|
|
||||||
if "zh-Hant" in supportmap:
|
|
||||||
v = supportmap.pop("zh-Hant")
|
|
||||||
supportmap["cht"] = v
|
|
||||||
return supportmap
|
|
||||||
|
|
||||||
|
|
||||||
def question():
|
def question():
|
||||||
dialog = QWidget()
|
dialog = QWidget()
|
||||||
formLayout = QHBoxLayout()
|
formLayout = QHBoxLayout()
|
||||||
formLayout.setContentsMargins(0, 0, 0, 0)
|
formLayout.setContentsMargins(0, 0, 0, 0)
|
||||||
dialog.setLayout(formLayout)
|
dialog.setLayout(formLayout)
|
||||||
_allsupport = initsupports()
|
supportlang = QLabel()
|
||||||
supportlang = LLabel()
|
supportlang.setText(", ".join([_[1] for _ in winrtutils.getlanguagelist()]))
|
||||||
supportlang.setText("_,_".join([getlang_inner2show(f) for f in _allsupport]))
|
|
||||||
btndownload = LPushButton("添加语言包")
|
btndownload = LPushButton("添加语言包")
|
||||||
btndownload.clicked.connect(
|
btndownload.clicked.connect(
|
||||||
lambda: gobject.baseobject.openlink(
|
lambda: gobject.baseobject.openlink(
|
||||||
@ -53,43 +30,29 @@ def question():
|
|||||||
class OCR(baseocr):
|
class OCR(baseocr):
|
||||||
|
|
||||||
def langmap(self):
|
def langmap(self):
|
||||||
return {"cht": "cht"}
|
return {"zh": "zh-Hans", "cht": "zh-Hant"}
|
||||||
|
|
||||||
def initocr(self):
|
|
||||||
self.supportmap = initsupports()
|
|
||||||
|
|
||||||
def ocr(self, imagebinary):
|
def ocr(self, imagebinary):
|
||||||
if len(self.supportmap) == 0:
|
supports = [_[0] for _ in winrtutils.getlanguagelist()]
|
||||||
|
if len(supports) == 0:
|
||||||
|
|
||||||
raise Exception(_TR("无可用语言"))
|
raise Exception(_TR("无可用语言"))
|
||||||
if self.srclang == "auto":
|
if self.srclang == "auto":
|
||||||
if len(self.supportmap) == 1:
|
if len(supports) == 1:
|
||||||
uselang = list(self.supportmap.values())[0]
|
uselang = supports[0]
|
||||||
else:
|
else:
|
||||||
self.raise_cant_be_auto_lang()
|
self.raise_cant_be_auto_lang()
|
||||||
else:
|
else:
|
||||||
if self.srclang not in self.supportmap:
|
if not winrtutils.check_language_valid(self.srclang):
|
||||||
|
|
||||||
_allsupport = initsupports()
|
|
||||||
idx = [_["code"] for _ in static_data["lang_list_all"]].index(
|
|
||||||
self.srclang
|
|
||||||
)
|
|
||||||
raise Exception(
|
raise Exception(
|
||||||
_TR("系统未安装")
|
_TR("系统未安装当前语言的OCR模型")
|
||||||
+ ' "'
|
|
||||||
+ _TR([_["zh"] for _ in static_data["lang_list_all"]][idx])
|
|
||||||
+ '" '
|
|
||||||
+ _TR("的OCR模型")
|
|
||||||
+ "\n"
|
+ "\n"
|
||||||
+ _TR("当前支持的语言")
|
+ _TR("当前支持的语言")
|
||||||
+ ": "
|
+ ": "
|
||||||
+ ", ".join([_TR(getlang_inner2show(f)) for f in _allsupport])
|
+ ", ".join([_[1] for _ in winrtutils.getlanguagelist()])
|
||||||
)
|
)
|
||||||
else:
|
uselang = self.srclang
|
||||||
uselang = self.srclang
|
ret = winrtutils.OCR_f(imagebinary, uselang, getlanguagespace(uselang))
|
||||||
ret = winrtutils.OCR_f(
|
|
||||||
imagebinary, self.supportmap[uselang], getlanguagespace(uselang)
|
|
||||||
)
|
|
||||||
boxs = [_[1:] for _ in ret]
|
boxs = [_[1:] for _ in ret]
|
||||||
texts = [_[0] for _ in ret]
|
texts = [_[0] for _ in ret]
|
||||||
return {"box": boxs, "text": texts}
|
return {"box": boxs, "text": texts}
|
||||||
|
@ -60,10 +60,18 @@ def getlanguagelist():
|
|||||||
if not winrtutilsdll:
|
if not winrtutilsdll:
|
||||||
return []
|
return []
|
||||||
ret = []
|
ret = []
|
||||||
_getlanguagelist(CFUNCTYPE(None, c_wchar_p)(ret.append))
|
_getlanguagelist(
|
||||||
|
CFUNCTYPE(None, c_wchar_p, c_wchar_p)(lambda t, d: ret.append((t, d)))
|
||||||
|
)
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
|
|
||||||
|
def check_language_valid(l):
|
||||||
|
if not winrtutilsdll:
|
||||||
|
return False
|
||||||
|
return _check_language_valid(l)
|
||||||
|
|
||||||
|
|
||||||
def winrt_capture_window(hwnd):
|
def winrt_capture_window(hwnd):
|
||||||
if not winrtutilsdll:
|
if not winrtutilsdll:
|
||||||
return
|
return
|
||||||
|
@ -52,7 +52,6 @@
|
|||||||
"民安ともえ": "الأمن العام",
|
"民安ともえ": "الأمن العام",
|
||||||
"光标": "المؤشر",
|
"光标": "المؤشر",
|
||||||
"清空": "إفراغ",
|
"清空": "إفراغ",
|
||||||
"的OCR模型": "نموذج التعرف الضوئي على الحروف",
|
|
||||||
"泰语": "التايلاندية",
|
"泰语": "التايلاندية",
|
||||||
"特殊码": "رمز خاص",
|
"特殊码": "رمز خاص",
|
||||||
"语法加亮": "تسليط الضوء على بناء الجملة",
|
"语法加亮": "تسليط الضوء على بناء الجملة",
|
||||||
@ -766,5 +765,6 @@
|
|||||||
"年度总结": "ملخص سنوي",
|
"年度总结": "ملخص سنوي",
|
||||||
"取词翻译": "اختيار الترجمة",
|
"取词翻译": "اختيار الترجمة",
|
||||||
"取词查词": "كلمة البحث",
|
"取词查词": "كلمة البحث",
|
||||||
"音频编码": "ترميز الصوت"
|
"音频编码": "ترميز الصوت",
|
||||||
|
"系统未安装当前语言的OCR模型": "التعرف الضوئي على الحروف نموذج اللغة الحالية غير مثبتة على النظام"
|
||||||
}
|
}
|
@ -281,7 +281,6 @@
|
|||||||
"找不到重要组件:": "找不到重要元件:",
|
"找不到重要组件:": "找不到重要元件:",
|
||||||
"请重新下载并关闭杀毒软件后重试": "請重新下載並關閉防毒軟體後重試",
|
"请重新下载并关闭杀毒软件后重试": "請重新下載並關閉防毒軟體後重試",
|
||||||
"系统未安装": "系統未安裝",
|
"系统未安装": "系統未安裝",
|
||||||
"的OCR模型": "的 OCR 模型",
|
|
||||||
"有道TTS": "有道 TTS",
|
"有道TTS": "有道 TTS",
|
||||||
"不支持的键位": "不支援的鍵位",
|
"不支持的键位": "不支援的鍵位",
|
||||||
"快捷键冲突": "快速鍵衝突",
|
"快捷键冲突": "快速鍵衝突",
|
||||||
@ -766,5 +765,6 @@
|
|||||||
"年度总结": "年度總結",
|
"年度总结": "年度總結",
|
||||||
"取词翻译": "取詞翻譯",
|
"取词翻译": "取詞翻譯",
|
||||||
"取词查词": "取詞查詞",
|
"取词查词": "取詞查詞",
|
||||||
"音频编码": "音訊編碼"
|
"音频编码": "音訊編碼",
|
||||||
|
"系统未安装当前语言的OCR模型": "系統未安裝當前語言的OCR模型"
|
||||||
}
|
}
|
@ -59,7 +59,6 @@
|
|||||||
"打开目录": "Otevřít adresář",
|
"打开目录": "Otevřít adresář",
|
||||||
"字体样式": "Styl písma",
|
"字体样式": "Styl písma",
|
||||||
"搜索文本过短!": "Vyhledávací text je příliš krátký!",
|
"搜索文本过短!": "Vyhledávací text je příliš krátký!",
|
||||||
"的OCR模型": "Model OCR",
|
|
||||||
"小学馆": "Sál základní školy",
|
"小学馆": "Sál základní školy",
|
||||||
"光标": "kurzor",
|
"光标": "kurzor",
|
||||||
"项目网站": "Webové stránky projektu",
|
"项目网站": "Webové stránky projektu",
|
||||||
@ -766,5 +765,6 @@
|
|||||||
"年度总结": "Roční shrnutí",
|
"年度总结": "Roční shrnutí",
|
||||||
"取词翻译": "Překlad výběru slova",
|
"取词翻译": "Překlad výběru slova",
|
||||||
"取词查词": "Načíst a vyhledávat slova",
|
"取词查词": "Načíst a vyhledávat slova",
|
||||||
"音频编码": "Kódování zvuku"
|
"音频编码": "Kódování zvuku",
|
||||||
|
"系统未安装当前语言的OCR模型": "OCR model pro aktuální jazyk není nainstalován v systému"
|
||||||
}
|
}
|
@ -59,7 +59,6 @@
|
|||||||
"打开目录": "Verzeichnis öffnen",
|
"打开目录": "Verzeichnis öffnen",
|
||||||
"字体样式": "Schriftart",
|
"字体样式": "Schriftart",
|
||||||
"搜索文本过短!": "Der Suchtext ist zu kurz!",
|
"搜索文本过短!": "Der Suchtext ist zu kurz!",
|
||||||
"的OCR模型": "Das OCR-Modell",
|
|
||||||
"小学馆": "Grundschulsaal",
|
"小学馆": "Grundschulsaal",
|
||||||
"光标": "Cursor",
|
"光标": "Cursor",
|
||||||
"项目网站": "Website des Projekts",
|
"项目网站": "Website des Projekts",
|
||||||
@ -766,5 +765,6 @@
|
|||||||
"年度总结": "Jahreszusammenfassung",
|
"年度总结": "Jahreszusammenfassung",
|
||||||
"取词翻译": "Übersetzung der Wortauswahl",
|
"取词翻译": "Übersetzung der Wortauswahl",
|
||||||
"取词查词": "Wörter abrufen und suchen",
|
"取词查词": "Wörter abrufen und suchen",
|
||||||
"音频编码": "Audio-Codierung"
|
"音频编码": "Audio-Codierung",
|
||||||
|
"系统未安装当前语言的OCR模型": "Das OCR-Modell für die aktuelle Sprache ist nicht im System installiert"
|
||||||
}
|
}
|
@ -281,7 +281,6 @@
|
|||||||
"找不到重要组件:": "Important Component Not Found:",
|
"找不到重要组件:": "Important Component Not Found:",
|
||||||
"请重新下载并关闭杀毒软件后重试": "Please re-download and try again with antivirus disabled",
|
"请重新下载并关闭杀毒软件后重试": "Please re-download and try again with antivirus disabled",
|
||||||
"系统未安装": "System Not Installed",
|
"系统未安装": "System Not Installed",
|
||||||
"的OCR模型": "OCR Model",
|
|
||||||
"有道TTS": "Youdao TTS",
|
"有道TTS": "Youdao TTS",
|
||||||
"不支持的键位": "Unsupported Key Position",
|
"不支持的键位": "Unsupported Key Position",
|
||||||
"快捷键冲突": "Hotkey Conflict",
|
"快捷键冲突": "Hotkey Conflict",
|
||||||
@ -766,5 +765,6 @@
|
|||||||
"年度总结": "Annual Summary",
|
"年度总结": "Annual Summary",
|
||||||
"取词翻译": "Word selection translation",
|
"取词翻译": "Word selection translation",
|
||||||
"取词查词": "Retrieve and search for words",
|
"取词查词": "Retrieve and search for words",
|
||||||
"音频编码": "audio coding"
|
"音频编码": "audio coding",
|
||||||
|
"系统未安装当前语言的OCR模型": "The OCR model for the current language is not installed in the system"
|
||||||
}
|
}
|
@ -281,7 +281,6 @@
|
|||||||
"找不到重要组件:": "No se pueden encontrar componentes importantes:",
|
"找不到重要组件:": "No se pueden encontrar componentes importantes:",
|
||||||
"请重新下载并关闭杀毒软件后重试": "Por favor, vuelva a descargar y cierre el software antivirus y vuelva a intentarlo.",
|
"请重新下载并关闭杀毒软件后重试": "Por favor, vuelva a descargar y cierre el software antivirus y vuelva a intentarlo.",
|
||||||
"系统未安装": "El sistema no está instalado",
|
"系统未安装": "El sistema no está instalado",
|
||||||
"的OCR模型": "Modelo OCR",
|
|
||||||
"有道TTS": "Youdao TTS",
|
"有道TTS": "Youdao TTS",
|
||||||
"不支持的键位": "Teclas no soportadas",
|
"不支持的键位": "Teclas no soportadas",
|
||||||
"快捷键冲突": "Conflicto de teclas de acceso rápido",
|
"快捷键冲突": "Conflicto de teclas de acceso rápido",
|
||||||
@ -766,5 +765,6 @@
|
|||||||
"年度总结": "Resumen Anual",
|
"年度总结": "Resumen Anual",
|
||||||
"取词翻译": "Traducción de palabras",
|
"取词翻译": "Traducción de palabras",
|
||||||
"取词查词": "Buscar palabras",
|
"取词查词": "Buscar palabras",
|
||||||
"音频编码": "Codificación de audio"
|
"音频编码": "Codificación de audio",
|
||||||
|
"系统未安装当前语言的OCR模型": "El sistema no instala el modelo OCR del idioma actual"
|
||||||
}
|
}
|
@ -281,7 +281,6 @@
|
|||||||
"找不到重要组件:": "Aucun composant important trouvé:",
|
"找不到重要组件:": "Aucun composant important trouvé:",
|
||||||
"请重新下载并关闭杀毒软件后重试": "Veuillez réessayer après le téléchargement et la fermeture du logiciel antivirus",
|
"请重新下载并关闭杀毒软件后重试": "Veuillez réessayer après le téléchargement et la fermeture du logiciel antivirus",
|
||||||
"系统未安装": "Le système n'est pas installé",
|
"系统未安装": "Le système n'est pas installé",
|
||||||
"的OCR模型": "Le modèle ocr",
|
|
||||||
"有道TTS": "Avec tts",
|
"有道TTS": "Avec tts",
|
||||||
"不支持的键位": "Clés non supportées",
|
"不支持的键位": "Clés non supportées",
|
||||||
"快捷键冲突": "Conflit de touches de raccourci",
|
"快捷键冲突": "Conflit de touches de raccourci",
|
||||||
@ -766,5 +765,6 @@
|
|||||||
"年度总结": "Résumé annuel",
|
"年度总结": "Résumé annuel",
|
||||||
"取词翻译": "Traduction des mots",
|
"取词翻译": "Traduction des mots",
|
||||||
"取词查词": "Recherche de mots",
|
"取词查词": "Recherche de mots",
|
||||||
"音频编码": "Codage audio"
|
"音频编码": "Codage audio",
|
||||||
|
"系统未安装当前语言的OCR模型": "Le système n'a pas installé le modèle OCR pour la langue actuelle"
|
||||||
}
|
}
|
@ -281,7 +281,6 @@
|
|||||||
"找不到重要组件:": "Componente importante non trovato:",
|
"找不到重要组件:": "Componente importante non trovato:",
|
||||||
"请重新下载并关闭杀毒软件后重试": "Si prega di scaricare e chiudere nuovamente il software antivirus e riprovare",
|
"请重新下载并关闭杀毒软件后重试": "Si prega di scaricare e chiudere nuovamente il software antivirus e riprovare",
|
||||||
"系统未安装": "Sistema non installato",
|
"系统未安装": "Sistema non installato",
|
||||||
"的OCR模型": "Modello OCR per",
|
|
||||||
"有道TTS": "Youdao TTS",
|
"有道TTS": "Youdao TTS",
|
||||||
"不支持的键位": "Posizione chiave non supportata",
|
"不支持的键位": "Posizione chiave non supportata",
|
||||||
"快捷键冲突": "Conflitto di tasti scorciatoie",
|
"快捷键冲突": "Conflitto di tasti scorciatoie",
|
||||||
@ -766,5 +765,6 @@
|
|||||||
"年度总结": "Sintesi annuale",
|
"年度总结": "Sintesi annuale",
|
||||||
"取词翻译": "Traduzione della selezione delle parole",
|
"取词翻译": "Traduzione della selezione delle parole",
|
||||||
"取词查词": "Recupera e cerca parole",
|
"取词查词": "Recupera e cerca parole",
|
||||||
"音频编码": "Codificazione audio"
|
"音频编码": "Codificazione audio",
|
||||||
|
"系统未安装当前语言的OCR模型": "Il modello OCR per la lingua corrente non è installato nel sistema"
|
||||||
}
|
}
|
@ -281,7 +281,6 @@
|
|||||||
"找不到重要组件:": "重要なコンポーネントが見つかりませんでした:",
|
"找不到重要组件:": "重要なコンポーネントが見つかりませんでした:",
|
||||||
"请重新下载并关闭杀毒软件后重试": "ウイルス対策ソフトウェアを再ダウンロードして閉じてから再試行してください",
|
"请重新下载并关闭杀毒软件后重试": "ウイルス対策ソフトウェアを再ダウンロードして閉じてから再試行してください",
|
||||||
"系统未安装": "システムがインストールされていません",
|
"系统未安装": "システムがインストールされていません",
|
||||||
"的OCR模型": "のOCRモデル",
|
|
||||||
"有道TTS": "有道TTS",
|
"有道TTS": "有道TTS",
|
||||||
"不支持的键位": "サポートされていないキー",
|
"不支持的键位": "サポートされていないキー",
|
||||||
"快捷键冲突": "ショートカットキーの競合",
|
"快捷键冲突": "ショートカットキーの競合",
|
||||||
@ -766,5 +765,6 @@
|
|||||||
"年度总结": "年度まとめ",
|
"年度总结": "年度まとめ",
|
||||||
"取词翻译": "単語の翻訳",
|
"取词翻译": "単語の翻訳",
|
||||||
"取词查词": "単語を取って単語を調べる",
|
"取词查词": "単語を取って単語を調べる",
|
||||||
"音频编码": "オーディオコーディング"
|
"音频编码": "オーディオコーディング",
|
||||||
|
"系统未安装当前语言的OCR模型": "現在の言語のOCRモデルがシステムにインストールされていません"
|
||||||
}
|
}
|
@ -281,7 +281,6 @@
|
|||||||
"找不到重要组件:": "중요한 구성 요소를 찾을 수 없음:",
|
"找不到重要组件:": "중요한 구성 요소를 찾을 수 없음:",
|
||||||
"请重新下载并关闭杀毒软件后重试": "백신 프로그램을 다시 다운로드하고 닫은 후 다시 시도하십시오.",
|
"请重新下载并关闭杀毒软件后重试": "백신 프로그램을 다시 다운로드하고 닫은 후 다시 시도하십시오.",
|
||||||
"系统未安装": "시스템이 설치되지 않았습니다.",
|
"系统未安装": "시스템이 설치되지 않았습니다.",
|
||||||
"的OCR模型": "의 OCR 모델",
|
|
||||||
"有道TTS": "TTS가 있어요.",
|
"有道TTS": "TTS가 있어요.",
|
||||||
"不支持的键位": "지원되지 않는 키",
|
"不支持的键位": "지원되지 않는 키",
|
||||||
"快捷键冲突": "단축키 충돌",
|
"快捷键冲突": "단축키 충돌",
|
||||||
@ -766,5 +765,6 @@
|
|||||||
"年度总结": "연간 요약",
|
"年度总结": "연간 요약",
|
||||||
"取词翻译": "취사 번역",
|
"取词翻译": "취사 번역",
|
||||||
"取词查词": "취사 조사",
|
"取词查词": "취사 조사",
|
||||||
"音频编码": "오디오 인코딩"
|
"音频编码": "오디오 인코딩",
|
||||||
|
"系统未安装当前语言的OCR模型": "현재 언어의 OCR 모델이 시스템에 설치되지 않았습니다."
|
||||||
}
|
}
|
@ -59,7 +59,6 @@
|
|||||||
"打开目录": "Map openen",
|
"打开目录": "Map openen",
|
||||||
"字体样式": "Lettertypestijl",
|
"字体样式": "Lettertypestijl",
|
||||||
"搜索文本过短!": "De zoektekst is te kort!",
|
"搜索文本过短!": "De zoektekst is te kort!",
|
||||||
"的OCR模型": "Het OCR-model",
|
|
||||||
"小学馆": "Hal van de basisschool",
|
"小学馆": "Hal van de basisschool",
|
||||||
"光标": "cursor",
|
"光标": "cursor",
|
||||||
"项目网站": "Website van het project",
|
"项目网站": "Website van het project",
|
||||||
@ -766,5 +765,6 @@
|
|||||||
"年度总结": "Jaarlijkse samenvatting",
|
"年度总结": "Jaarlijkse samenvatting",
|
||||||
"取词翻译": "Woordselectie vertaling",
|
"取词翻译": "Woordselectie vertaling",
|
||||||
"取词查词": "Woorden ophalen en zoeken",
|
"取词查词": "Woorden ophalen en zoeken",
|
||||||
"音频编码": "Audiocodering"
|
"音频编码": "Audiocodering",
|
||||||
|
"系统未安装当前语言的OCR模型": "Het OCR-model voor de huidige taal is niet geïnstalleerd in het systeem"
|
||||||
}
|
}
|
@ -281,7 +281,6 @@
|
|||||||
"找不到重要组件:": "Nie znaleziono ważnego komponentu:",
|
"找不到重要组件:": "Nie znaleziono ważnego komponentu:",
|
||||||
"请重新下载并关闭杀毒软件后重试": "Pobierz i zamknij oprogramowanie antywirusowe ponownie i spróbuj ponownie",
|
"请重新下载并关闭杀毒软件后重试": "Pobierz i zamknij oprogramowanie antywirusowe ponownie i spróbuj ponownie",
|
||||||
"系统未安装": "System nie zainstalowany",
|
"系统未安装": "System nie zainstalowany",
|
||||||
"的OCR模型": "Model OCR dla",
|
|
||||||
"有道TTS": "Youdao TTS",
|
"有道TTS": "Youdao TTS",
|
||||||
"不支持的键位": "Nieobsługiwana pozycja klucza",
|
"不支持的键位": "Nieobsługiwana pozycja klucza",
|
||||||
"快捷键冲突": "Konflikt kluczy skrótów",
|
"快捷键冲突": "Konflikt kluczy skrótów",
|
||||||
@ -766,5 +765,6 @@
|
|||||||
"年度总结": "Roczne podsumowanie",
|
"年度总结": "Roczne podsumowanie",
|
||||||
"取词翻译": "Tłumaczenie wyboru słowa",
|
"取词翻译": "Tłumaczenie wyboru słowa",
|
||||||
"取词查词": "Pobieranie i wyszukiwanie słów",
|
"取词查词": "Pobieranie i wyszukiwanie słów",
|
||||||
"音频编码": "Kodowanie dźwięku"
|
"音频编码": "Kodowanie dźwięku",
|
||||||
|
"系统未安装当前语言的OCR模型": "Model OCR dla bieżącego języka nie jest zainstalowany w systemie"
|
||||||
}
|
}
|
@ -59,7 +59,6 @@
|
|||||||
"打开目录": "Abrir a pasta",
|
"打开目录": "Abrir a pasta",
|
||||||
"字体样式": "Estilo do Tipo de Letra",
|
"字体样式": "Estilo do Tipo de Letra",
|
||||||
"搜索文本过短!": "O texto de pesquisa é muito curto!",
|
"搜索文本过短!": "O texto de pesquisa é muito curto!",
|
||||||
"的OCR模型": "O modelo OCR",
|
|
||||||
"小学馆": "Sala do Ensino Fundamental",
|
"小学馆": "Sala do Ensino Fundamental",
|
||||||
"光标": "cursor",
|
"光标": "cursor",
|
||||||
"项目网站": "Sítio Web do projecto",
|
"项目网站": "Sítio Web do projecto",
|
||||||
@ -766,5 +765,6 @@
|
|||||||
"年度总结": "Resumo anual",
|
"年度总结": "Resumo anual",
|
||||||
"取词翻译": "Tradução da selecção de palavras",
|
"取词翻译": "Tradução da selecção de palavras",
|
||||||
"取词查词": "Obter e procurar palavras",
|
"取词查词": "Obter e procurar palavras",
|
||||||
"音频编码": "Codificação de áudio"
|
"音频编码": "Codificação de áudio",
|
||||||
|
"系统未安装当前语言的OCR模型": "O modelo OCR para o idioma atual não está instalado no sistema"
|
||||||
}
|
}
|
@ -281,7 +281,6 @@
|
|||||||
"找不到重要组件:": "Не удалось найти важные компоненты:",
|
"找不到重要组件:": "Не удалось найти важные компоненты:",
|
||||||
"请重新下载并关闭杀毒软件后重试": "Пожалуйста, перезагрузите и выключите антивирусное программное обеспечение и попробуйте снова.",
|
"请重新下载并关闭杀毒软件后重试": "Пожалуйста, перезагрузите и выключите антивирусное программное обеспечение и попробуйте снова.",
|
||||||
"系统未安装": "Система не установлена",
|
"系统未安装": "Система не установлена",
|
||||||
"的OCR模型": "Модель OCR",
|
|
||||||
"有道TTS": "Есть TTS",
|
"有道TTS": "Есть TTS",
|
||||||
"不支持的键位": "Не поддерживаемые клавиши",
|
"不支持的键位": "Не поддерживаемые клавиши",
|
||||||
"快捷键冲突": "Конфликт комбинаций клавиш",
|
"快捷键冲突": "Конфликт комбинаций клавиш",
|
||||||
@ -766,5 +765,6 @@
|
|||||||
"年度总结": "Ежегодное резюме",
|
"年度总结": "Ежегодное резюме",
|
||||||
"取词翻译": "Перевод",
|
"取词翻译": "Перевод",
|
||||||
"取词查词": "Поиск слов",
|
"取词查词": "Поиск слов",
|
||||||
"音频编码": "Звуковое кодирование"
|
"音频编码": "Звуковое кодирование",
|
||||||
|
"系统未安装当前语言的OCR模型": "Система не устанавливает модель OCR для текущего языка"
|
||||||
}
|
}
|
@ -59,7 +59,6 @@
|
|||||||
"打开目录": "Öppna katalog",
|
"打开目录": "Öppna katalog",
|
||||||
"字体样式": "Teckensnittsstil",
|
"字体样式": "Teckensnittsstil",
|
||||||
"搜索文本过短!": "Söktexten är för kort!",
|
"搜索文本过短!": "Söktexten är för kort!",
|
||||||
"的OCR模型": "OCR-modellen",
|
|
||||||
"小学馆": "Elementary School Hall",
|
"小学馆": "Elementary School Hall",
|
||||||
"光标": "markör",
|
"光标": "markör",
|
||||||
"项目网站": "Projektets webbplats",
|
"项目网站": "Projektets webbplats",
|
||||||
@ -766,5 +765,6 @@
|
|||||||
"年度总结": "Årlig sammanfattning",
|
"年度总结": "Årlig sammanfattning",
|
||||||
"取词翻译": "Ordmarkeringsöversättning",
|
"取词翻译": "Ordmarkeringsöversättning",
|
||||||
"取词查词": "Hämta och sök efter ord",
|
"取词查词": "Hämta och sök efter ord",
|
||||||
"音频编码": "Ljudkodning"
|
"音频编码": "Ljudkodning",
|
||||||
|
"系统未安装当前语言的OCR模型": "OCR-modellen för det aktuella språket är inte installerad i systemet"
|
||||||
}
|
}
|
@ -58,7 +58,6 @@
|
|||||||
"打开目录": "เปิดไดเรกทอรี",
|
"打开目录": "เปิดไดเรกทอรี",
|
||||||
"字体样式": "รูปแบบตัวอักษร",
|
"字体样式": "รูปแบบตัวอักษร",
|
||||||
"搜索文本过短!": "ค้นหาข้อความสั้นเกินไป!",
|
"搜索文本过短!": "ค้นหาข้อความสั้นเกินไป!",
|
||||||
"的OCR模型": "รุ่น OCR",
|
|
||||||
"小学馆": "ศาลาประถมศึกษา",
|
"小学馆": "ศาลาประถมศึกษา",
|
||||||
"光标": "เคอร์เซอร์",
|
"光标": "เคอร์เซอร์",
|
||||||
"项目网站": "เว็บไซต์โครงการ",
|
"项目网站": "เว็บไซต์โครงการ",
|
||||||
@ -766,5 +765,6 @@
|
|||||||
"年度总结": "สรุปรายปี",
|
"年度总结": "สรุปรายปี",
|
||||||
"取词翻译": "คำแปล",
|
"取词翻译": "คำแปล",
|
||||||
"取词查词": "ค้นหาคำ",
|
"取词查词": "ค้นหาคำ",
|
||||||
"音频编码": "การเข้ารหัสเสียง"
|
"音频编码": "การเข้ารหัสเสียง",
|
||||||
|
"系统未安装当前语言的OCR模型": "ระบบไม่ได้ติดตั้งรุ่น OCR สำหรับภาษาปัจจุบัน"
|
||||||
}
|
}
|
@ -281,7 +281,6 @@
|
|||||||
"找不到重要组件:": "Önemli komponent bulunamadı:",
|
"找不到重要组件:": "Önemli komponent bulunamadı:",
|
||||||
"请重新下载并关闭杀毒软件后重试": "Lütfen antivirüs yazılımını tekrar indirin ve tekrar deneyin",
|
"请重新下载并关闭杀毒软件后重试": "Lütfen antivirüs yazılımını tekrar indirin ve tekrar deneyin",
|
||||||
"系统未安装": "Sistem kurulmadı",
|
"系统未安装": "Sistem kurulmadı",
|
||||||
"的OCR模型": "OCR modeli için",
|
|
||||||
"有道TTS": "Youdao TTS",
|
"有道TTS": "Youdao TTS",
|
||||||
"不支持的键位": "Desteklenmeyen anahtar pozisyonu",
|
"不支持的键位": "Desteklenmeyen anahtar pozisyonu",
|
||||||
"快捷键冲突": "Kısayol tuş çatışması",
|
"快捷键冲突": "Kısayol tuş çatışması",
|
||||||
@ -766,5 +765,6 @@
|
|||||||
"年度总结": "Yıllık Toplantı",
|
"年度总结": "Yıllık Toplantı",
|
||||||
"取词翻译": "Kelime seçimi çevirimi",
|
"取词翻译": "Kelime seçimi çevirimi",
|
||||||
"取词查词": "Kelimeleri alın ve arayın",
|
"取词查词": "Kelimeleri alın ve arayın",
|
||||||
"音频编码": "Ses Kodlama"
|
"音频编码": "Ses Kodlama",
|
||||||
|
"系统未安装当前语言的OCR模型": "Ağımdaki dilin OCR modeli sistemde kurulmadı."
|
||||||
}
|
}
|
@ -281,7 +281,6 @@
|
|||||||
"找不到重要组件:": "Важливий компонент не знайдено:",
|
"找不到重要组件:": "Важливий компонент не знайдено:",
|
||||||
"请重新下载并关闭杀毒软件后重试": "Будь ласка, звантажте і закрийте антивірусне програмне забезпечення знову і спробуйте знову",
|
"请重新下载并关闭杀毒软件后重试": "Будь ласка, звантажте і закрийте антивірусне програмне забезпечення знову і спробуйте знову",
|
||||||
"系统未安装": "Система не встановлена",
|
"系统未安装": "Система не встановлена",
|
||||||
"的OCR模型": "Модель OCR для",
|
|
||||||
"有道TTS": "Youdao TTS",
|
"有道TTS": "Youdao TTS",
|
||||||
"不支持的键位": "Непідтримувана позиція ключа",
|
"不支持的键位": "Непідтримувана позиція ключа",
|
||||||
"快捷键冲突": "Конфлікт клавіш скорочення",
|
"快捷键冲突": "Конфлікт клавіш скорочення",
|
||||||
@ -766,5 +765,6 @@
|
|||||||
"年度总结": "Річне резюме",
|
"年度总结": "Річне резюме",
|
||||||
"取词翻译": "Переклад вибору слів",
|
"取词翻译": "Переклад вибору слів",
|
||||||
"取词查词": "Отримати і шукати слова",
|
"取词查词": "Отримати і шукати слова",
|
||||||
"音频编码": "Аудіокодування"
|
"音频编码": "Аудіокодування",
|
||||||
|
"系统未安装当前语言的OCR模型": "Модель OCR для поточної мови не встановлена у системі"
|
||||||
}
|
}
|
@ -281,7 +281,6 @@
|
|||||||
"找不到重要组件:": "Không tìm thấy thành phần quan trọng:",
|
"找不到重要组件:": "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",
|
"请重新下载并关闭杀毒软件后重试": "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",
|
"系统未安装": "Hệ thống không được cài đặt",
|
||||||
"的OCR模型": "Mô hình OCR",
|
|
||||||
"有道TTS": "Có TTS",
|
"有道TTS": "Có TTS",
|
||||||
"不支持的键位": "Các phím không được hỗ trợ",
|
"不支持的键位": "Các phím không được hỗ trợ",
|
||||||
"快捷键冲突": "Xung đột phím tắt",
|
"快捷键冲突": "Xung đột phím tắt",
|
||||||
@ -766,5 +765,6 @@
|
|||||||
"年度总结": "Tóm tắt hàng năm",
|
"年度总结": "Tóm tắt hàng năm",
|
||||||
"取词翻译": "Dịch thuật lấy từ",
|
"取词翻译": "Dịch thuật lấy từ",
|
||||||
"取词查词": "Tìm kiếm từ",
|
"取词查词": "Tìm kiếm từ",
|
||||||
"音频编码": "Mã hóa âm thanh"
|
"音频编码": "Mã hóa âm thanh",
|
||||||
|
"系统未安装当前语言的OCR模型": "Hệ thống không cài đặt mô hình OCR cho ngôn ngữ hiện tại"
|
||||||
}
|
}
|
@ -60,7 +60,7 @@
|
|||||||
"手动设置代理": "",
|
"手动设置代理": "",
|
||||||
"字体样式": "",
|
"字体样式": "",
|
||||||
"搜索文本过短!": "",
|
"搜索文本过短!": "",
|
||||||
"的OCR模型": "",
|
"系统未安装当前语言的OCR模型": "",
|
||||||
"小学馆": "",
|
"小学馆": "",
|
||||||
"光标": "",
|
"光标": "",
|
||||||
"项目网站": "",
|
"项目网站": "",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user