diff --git a/LunaTranslator/LunaTranslator/gui/rangeselect.py b/LunaTranslator/LunaTranslator/gui/rangeselect.py index 6cf2a6cc..822fa551 100644 --- a/LunaTranslator/LunaTranslator/gui/rangeselect.py +++ b/LunaTranslator/LunaTranslator/gui/rangeselect.py @@ -16,7 +16,7 @@ class rangeadjust(Mainw) : self.drag_label = QLabel(self) self.drag_label.setGeometry(0, 0, 4000, 2000) self._isTracking=False - + self._rect=None self.setWindowFlags(Qt.WindowStaysOnTopHint | Qt.FramelessWindowHint | Qt.Tool) self.setAttribute(Qt.WA_TranslucentBackground) @@ -39,11 +39,7 @@ class rangeadjust(Mainw) : self._endPos = None def moveEvent(self,e): rect = self.geometry() - try: - if self.isVisible(): - gobject.baseobject.textsource.rect=[(rect.left(),rect.top()),(rect.right(),rect.bottom())] - except: - pass + self._rect=[(rect.left()+globalconfig['ocrrangewidth'],rect.top()+globalconfig['ocrrangewidth']),(rect.right()-globalconfig['ocrrangewidth'],rect.bottom()-globalconfig['ocrrangewidth'])] def enterEvent(self, QEvent) : self.drag_label.setStyleSheet("background-color:rgba(0,0,0, 0.1)") def leaveEvent(self, QEvent): @@ -52,12 +48,10 @@ class rangeadjust(Mainw) : self.label.setGeometry(0, 0, self.width(), self.height()) rect = self.geometry() - try: - if self.isVisible(): - gobject.baseobject.textsource.rect=[(rect.left(),rect.top()),(rect.right(),rect.bottom())] - except:pass + self._rect=[(rect.left()+globalconfig['ocrrangewidth'],rect.top()+globalconfig['ocrrangewidth']),(rect.right()-globalconfig['ocrrangewidth'],rect.bottom()-globalconfig['ocrrangewidth'])] super(rangeadjust, self).resizeEvent(a0) - + def getrect(self): + return self._rect class rangeselct(QMainWindow) : def __init__(self, parent ) : diff --git a/LunaTranslator/LunaTranslator/gui/settingpage_ocr.py b/LunaTranslator/LunaTranslator/gui/settingpage_ocr.py index d2769ad0..9727ed52 100644 --- a/LunaTranslator/LunaTranslator/gui/settingpage_ocr.py +++ b/LunaTranslator/LunaTranslator/gui/settingpage_ocr.py @@ -49,6 +49,7 @@ def getocrgrid(self) : [(("图像一致性阈值"),8),(getspinbox(0,1,globalconfig,'ocr_diff_sim' ,double=True,step=0.01 ,dec=3),4),(self.threshold2label,4)], [], + [(("多重区域模式"),12),getsimpleswitch(globalconfig ,'multiregion')], [(("OCR范围框颜色"),12),(getcolorbutton(globalconfig,'ocrrangecolor',callback=lambda : selectcolor(self,globalconfig,'ocrrangecolor',self.ocrrangecolor_button,callback=lambda :gobject.baseobject.textsource.setstyle()),name='ocrrangecolor_button',parent=self),1)], [(("OCR范围框宽度"),12),(getspinbox(1,100,globalconfig,'ocrrangewidth' ,callback=lambda x: gobject.baseobject.textsource.setstyle() ),4)], [(("选取OCR范围后立即进行一次识别"),12),getsimpleswitch(globalconfig ,'ocrafterrangeselect')], diff --git a/LunaTranslator/LunaTranslator/gui/translatorUI.py b/LunaTranslator/LunaTranslator/gui/translatorUI.py index 3add9bf9..7e88c829 100644 --- a/LunaTranslator/LunaTranslator/gui/translatorUI.py +++ b/LunaTranslator/LunaTranslator/gui/translatorUI.py @@ -531,6 +531,7 @@ class QUnFrameWindow(resizableframeless): rangeselct_function(self,self.afterrange,auto,auto) def afterrange(self,rect): + gobject.baseobject.textsource.newrangeadjustor() gobject.baseobject.textsource.setrect(rect) self.showhideocrrange() if globalconfig['showrangeafterrangeselect']==False: diff --git a/LunaTranslator/LunaTranslator/myutils/ocrutil.py b/LunaTranslator/LunaTranslator/myutils/ocrutil.py index 49481359..4f2b67e7 100644 --- a/LunaTranslator/LunaTranslator/myutils/ocrutil.py +++ b/LunaTranslator/LunaTranslator/myutils/ocrutil.py @@ -36,7 +36,7 @@ def imagesolve(image): elif globalconfig['ocr_presolve_method']==3: image2=otsu_threshold_fast(image,-1) return image2 -def imageCut(hwnd,x1,y1,x2,y2): +def imageCut(hwnd,x1,y1,x2,y2,viscompare=True): screen = QApplication.primaryScreen() for _ in range(2): @@ -48,10 +48,11 @@ def imageCut(hwnd,x1,y1,x2,y2): if rect is None: continue - x1,y1=windows.ScreenToClient(hwnd,x1,y1) - x2,y2=windows.ScreenToClient(hwnd,x2,y2) rate=dynamic_rate(hwnd,rect) - pix = screen.grabWindow(hwnd, (x1)/rate, (y1)/rate, (x2-x1)/rate, (y2-y1)/rate) + hwndrate=windows.GetDpiForWindow(hwnd)/96 + x1,y1=windows.ScreenToClient(hwnd,x1*rate*hwndrate,y1*rate*hwndrate) + x2,y2=windows.ScreenToClient(hwnd,x2*rate*hwndrate,y2*rate*hwndrate) + pix = screen.grabWindow(hwnd, int(x1/rate/rate/hwndrate), int(y1/rate/rate/hwndrate), int((x2-x1)/rate/rate/hwndrate), int((y2-y1)/rate/rate/hwndrate)) if pix.toImage().allGray(): continue break @@ -62,7 +63,8 @@ def imageCut(hwnd,x1,y1,x2,y2): image= pix.toImage() image2=imagesolve(image) - gobject.baseobject.showocrimage.setimage.emit([image,image2]) + if viscompare: + gobject.baseobject.showocrimage.setimage.emit([image,image2]) return image2 _nowuseocr=None diff --git a/LunaTranslator/LunaTranslator/myutils/post.py b/LunaTranslator/LunaTranslator/myutils/post.py index 31173f71..3a3b444b 100644 --- a/LunaTranslator/LunaTranslator/myutils/post.py +++ b/LunaTranslator/LunaTranslator/myutils/post.py @@ -34,7 +34,7 @@ def _2_f(line,args): while iglobalconfig['ocr_stable_sim'] : - if self.savelastrecimg is not None and (imgr1.shape==self.savelastrecimg.shape ) : - image_score2=compareImage(imgr1 ,self.savelastrecimg ) + if self.savelastrecimg[i] is not None and (imgr1.shape==self.savelastrecimg[i].shape ) : + image_score2=compareImage(imgr1 ,self.savelastrecimg[i] ) else: image_score2=0 - gobject.baseobject.settin_ui.threshold2label.setText(str(image_score2)) + if i==0: + gobject.baseobject.settin_ui.threshold2label.setText(str(image_score2)) if image_score2>globalconfig['ocr_diff_sim']: ok=False else: - self.savelastrecimg=imgr1 + self.savelastrecimg[i]=imgr1 else: ok=False if globalconfig['ocr_auto_method'] in [1,2]: - if time.time()-self.lastocrtime>globalconfig['ocr_interval']: + if time.time()-self.lastocrtime[i]>globalconfig['ocr_interval']: ok=True else: ok=False if ok==False: - return None + continue text=self.ocrtest(imgr) - self.lastocrtime=time.time() + self.lastocrtime[i]=time.time() - if self.savelasttext is not None: - sim=getEqualRate(self.savelasttext,text) + if self.savelasttext[i] is not None: + sim=getEqualRate(self.savelasttext[i],text) #print('text',sim) if sim>0.9: - return None - self.savelasttext=text + continue + self.savelasttext[i]=text - return (text) + __text.append(text) + return '\n'.join(__text) def gettextonce(self): - - if self.rect is None: - return - if self.rect[0][0]>self.rect[1][0] or self.rect[0][1]>self.rect[1][1]: - return - img=imageCut(self.hwnd,self.rect[0][0],self.rect[0][1],self.rect[1][0],self.rect[1][1]) - + __text=[] + for i,range_ui in enumerate(self.range_ui): + rect=range_ui.getrect() + if rect is None: + continue + if rect[0][0]>rect[1][0] or rect[0][1]>rect[1][1]: + return + img=imageCut(self.hwnd,rect[0][0],rect[0][1],rect[1][0],rect[1][1]) + - text=self.ocrtest(img) - imgr1=qimge2np(img) - self.savelastimg=imgr1 - self.savelastrecimg=imgr1 - self.lastocrtime=time.time() - self.savelasttext=text - return text + text=self.ocrtest(img) + imgr1=qimge2np(img) + self.savelastimg[i]=imgr1 + self.savelastrecimg[i]=imgr1 + self.lastocrtime[i]=time.time() + self.savelasttext[i]=text + __text.append(text) + return '\n'.join(__text) def ocrtest(self,img): fname='./cache/ocr/{}.png'.format(self.timestamp) @@ -147,5 +157,4 @@ class ocrtext(basetext): def end(self): super().end() ocr_end() - - self.range_ui.close() \ No newline at end of file + [_.close() for _ in self.range_ui] \ No newline at end of file diff --git a/LunaTranslator/LunaTranslator/windows.py b/LunaTranslator/LunaTranslator/windows.py index b15a0a88..52e7eeec 100644 --- a/LunaTranslator/LunaTranslator/windows.py +++ b/LunaTranslator/LunaTranslator/windows.py @@ -350,6 +350,14 @@ def SetWindowLong(hwnd,nIndex,value): return _SetWindowLongW(hwnd,nIndex,value) def GetDC(hwnd): return _GetDC(hwnd) +def GetDpiForWindow(hwnd): + try: + _GetDpiForWindow=_user32.GetDpiForWindow + _GetDpiForWindow.argtypes=HWND, + _GetDpiForWindow.restype=UINT + return _GetDpiForWindow(hwnd) + except: + return 96 def GetCursorPos(): _p=POINT() _GetCursorPos(pointer(_p)) @@ -733,8 +741,8 @@ _ScreenToClient=_user32.ScreenToClient _ScreenToClient.argtypes=c_void_p,POINTER(POINT) def ScreenToClient(hwnd,x,y): P=POINT() - P.x=x - P.y=y + P.x=int(x) + P.y=int(y) _ScreenToClient(hwnd,pointer(P)) return (P.x,P.y) diff --git a/LunaTranslator/files/defaultconfig/config.json b/LunaTranslator/files/defaultconfig/config.json index f3784177..3a226001 100644 --- a/LunaTranslator/files/defaultconfig/config.json +++ b/LunaTranslator/files/defaultconfig/config.json @@ -96,6 +96,7 @@ 500, 500 ], + "multiregion":false, "textboxreadonly":true, "ocr_stable_sim": 0, "ocr_diff_sim": 0.95, diff --git a/LunaTranslator/files/defaultconfig/static_data.json b/LunaTranslator/files/defaultconfig/static_data.json index efa0c332..33b4e7f5 100644 --- a/LunaTranslator/files/defaultconfig/static_data.json +++ b/LunaTranslator/files/defaultconfig/static_data.json @@ -1,5 +1,5 @@ { - "version":"v2.36.5", + "version":"v2.37.0", "language_list_show":["简体中文","日本語","English","Русский язык","Español","한국어","Français","繁體中文","Tiếng Việt","Türkçe","Polski","Українська Мова","Italiano","اللغة العربية","ภาษาไทย"] , "language_list_translator":["简体中文","日文","英文","俄语","西班牙语","韩语","法语","繁体中文","越南语","土耳其语","波兰语","乌克兰语","意大利语","阿拉伯语","泰语"], "language_list_translator_inner":["zh", "ja", "en","ru","es","ko","fr","cht","vi","tr","pl","uk","it","ar","th"], diff --git a/LunaTranslator/files/defaultconfig/translatorsetting.json b/LunaTranslator/files/defaultconfig/translatorsetting.json index 1f456047..73377705 100644 --- a/LunaTranslator/files/defaultconfig/translatorsetting.json +++ b/LunaTranslator/files/defaultconfig/translatorsetting.json @@ -559,6 +559,7 @@ "TGW": { "args": { "TGW懒人包": "https://www.bilibili.com/video/BV1Te411U7me", + "TGW懒人包1": "https://pan.baidu.com/s/1fe7iiHIAtoXW80Twsrv8Nw?pwd=pato", "Github仓库": "https://github.com/oobabooga/text-generation-webui", "API接口地址(默认为http://127.0.0.1:5000/)": "http://127.0.0.1:5000/", "API超时(秒)": 30, @@ -586,6 +587,10 @@ "type":"label", "islink": true }, + "TGW懒人包1":{ + "type":"label", + "islink": true + }, "Github仓库":{ "type":"label", "islink": true diff --git a/LunaTranslator/files/lang/ar.json b/LunaTranslator/files/lang/ar.json index b98b5d21..a4116264 100644 --- a/LunaTranslator/files/lang/ar.json +++ b/LunaTranslator/files/lang/ar.json @@ -707,5 +707,6 @@ "Hook LosslessScaling进程使其不会退出缩放": "هوك looslessscaling العملية بحيث لا تخرج من التكبير", "正在使用日语模型作为代替,可能效果不佳": "استخدام النموذج الياباني بدلا من ذلك ، قد لا تعمل بشكل جيد", "保持非重复字符": "الحفاظ على الطابع غير المتكرر", - "选择文本窗口中文本框只读": "حدد مربع النص للقراءة فقط في نافذة النص" + "选择文本窗口中文本框只读": "حدد مربع النص للقراءة فقط في نافذة النص", + "多重区域模式": "وضع منطقة متعددة" } \ No newline at end of file diff --git a/LunaTranslator/files/lang/cht.json b/LunaTranslator/files/lang/cht.json index 1a25f8db..c7bb4390 100644 --- a/LunaTranslator/files/lang/cht.json +++ b/LunaTranslator/files/lang/cht.json @@ -707,5 +707,6 @@ "Hook LosslessScaling进程使其不会退出缩放": "Hook LosslessScaling行程使其不會退出縮放", "正在使用日语模型作为代替,可能效果不佳": "正在使用日語模型作為代替,可能效果不佳", "保持非重复字符": "保持非重複字元", - "选择文本窗口中文本框只读": "選擇文字視窗中文字方塊只讀" + "选择文本窗口中文本框只读": "選擇文字視窗中文字方塊只讀", + "多重区域模式": "多重區域模式" } \ No newline at end of file diff --git a/LunaTranslator/files/lang/en.json b/LunaTranslator/files/lang/en.json index 3f4ef6b4..39f242d4 100644 --- a/LunaTranslator/files/lang/en.json +++ b/LunaTranslator/files/lang/en.json @@ -707,5 +707,6 @@ "Hook LosslessScaling进程使其不会退出缩放": "Hook LosslessScaling process prevents it from exiting scaling", "正在使用日语模型作为代替,可能效果不佳": "Using Japanese models as a substitute may not be effective", "保持非重复字符": "Keep non repeating characters", - "选择文本窗口中文本框只读": "Select read-only text boxes in the text window" + "选择文本窗口中文本框只读": "Select read-only text boxes in the text window", + "多重区域模式": "Multi region mode" } \ No newline at end of file diff --git a/LunaTranslator/files/lang/es.json b/LunaTranslator/files/lang/es.json index bef1fc06..0a6a03cf 100644 --- a/LunaTranslator/files/lang/es.json +++ b/LunaTranslator/files/lang/es.json @@ -707,5 +707,6 @@ "Hook LosslessScaling进程使其不会退出缩放": "El proceso Hook losslessscaling hace que no salga del zoom", "正在使用日语模型作为代替,可能效果不佳": "Se está utilizando el modelo japonés como sustituto y puede que no funcione bien", "保持非重复字符": "Mantener caracteres no repetitivos", - "选择文本窗口中文本框只读": "Seleccione la ventana de texto en la que el cuadro de texto es de solo lectura" + "选择文本窗口中文本框只读": "Seleccione la ventana de texto en la que el cuadro de texto es de solo lectura", + "多重区域模式": "Modelo multiregional" } \ No newline at end of file diff --git a/LunaTranslator/files/lang/fr.json b/LunaTranslator/files/lang/fr.json index c05c2b10..66af5a06 100644 --- a/LunaTranslator/files/lang/fr.json +++ b/LunaTranslator/files/lang/fr.json @@ -707,5 +707,6 @@ "Hook LosslessScaling进程使其不会退出缩放": "Hook losslesscaling processus pour ne pas quitter le zoom", "正在使用日语模型作为代替,可能效果不佳": "Le modèle japonais est utilisé à la place, peut ne pas fonctionner aussi bien", "保持非重复字符": "Garder les caractères non répétitifs", - "选择文本窗口中文本框只读": "Sélectionner une zone de texte en lecture seule dans la fenêtre de texte" + "选择文本窗口中文本框只读": "Sélectionner une zone de texte en lecture seule dans la fenêtre de texte", + "多重区域模式": "Mode Multi - zones" } \ No newline at end of file diff --git a/LunaTranslator/files/lang/it.json b/LunaTranslator/files/lang/it.json index 6c42b67d..799e9d8a 100644 --- a/LunaTranslator/files/lang/it.json +++ b/LunaTranslator/files/lang/it.json @@ -707,5 +707,6 @@ "Hook LosslessScaling进程使其不会退出缩放": "Hook LosslessScaling processo impedisce di uscire dalla scalabilità", "正在使用日语模型作为代替,可能效果不佳": "Utilizzare modelli giapponesi come sostituto potrebbe non essere efficace", "保持非重复字符": "Mantieni caratteri non ripetuti", - "选择文本窗口中文本框只读": "Selezionare le caselle di testo di sola lettura nella finestra di testo" + "选择文本窗口中文本框只读": "Selezionare le caselle di testo di sola lettura nella finestra di testo", + "多重区域模式": "Modalità multi regione" } \ No newline at end of file diff --git a/LunaTranslator/files/lang/ja.json b/LunaTranslator/files/lang/ja.json index d3bbad89..202e7106 100644 --- a/LunaTranslator/files/lang/ja.json +++ b/LunaTranslator/files/lang/ja.json @@ -707,5 +707,6 @@ "Hook LosslessScaling进程使其不会退出缩放": "Hook LosslessScalingプロセスはスケーリングを終了しないようにする", "正在使用日语模型作为代替,可能效果不佳": "代替として日本語モデルを使用していますが、効果が低いかもしれません", "保持非重复字符": "非反復文字の維持", - "选择文本窗口中文本框只读": "テキストウィンドウのテキストボックス読み取り専用を選択" + "选择文本窗口中文本框只读": "テキストウィンドウのテキストボックス読み取り専用を選択", + "多重区域模式": "複数領域モード" } \ No newline at end of file diff --git a/LunaTranslator/files/lang/ko.json b/LunaTranslator/files/lang/ko.json index 01bde4fc..fc0cf7b3 100644 --- a/LunaTranslator/files/lang/ko.json +++ b/LunaTranslator/files/lang/ko.json @@ -707,5 +707,6 @@ "Hook LosslessScaling进程使其不会退出缩放": "Hook LosslessScaling 프로세스로 인해 줌이 종료되지 않습니다.", "正在使用日语模型作为代替,可能效果不佳": "일본어 모델을 대체하는 중입니다. 효과가 없을 수 있습니다", "保持非重复字符": "비반복 문자 유지", - "选择文本窗口中文本框只读": "텍스트 선택 창의 텍스트 상자 읽기 전용" + "选择文本窗口中文本框只读": "텍스트 선택 창의 텍스트 상자 읽기 전용", + "多重区域模式": "다중 영역 모드" } \ No newline at end of file diff --git a/LunaTranslator/files/lang/pl.json b/LunaTranslator/files/lang/pl.json index c362f90a..b54e4245 100644 --- a/LunaTranslator/files/lang/pl.json +++ b/LunaTranslator/files/lang/pl.json @@ -707,5 +707,6 @@ "Hook LosslessScaling进程使其不会退出缩放": "Proces Hook Losslessless Scaling zapobiega zakończeniu skalowania", "正在使用日语模型作为代替,可能效果不佳": "Używanie japońskich modeli jako substytutów może nie być skuteczne", "保持非重复字符": "Zachowaj niepowtarzające się znaki", - "选择文本窗口中文本框只读": "Zaznaczanie pola tekstowe tylko do odczytu w oknie tekstowym" + "选择文本窗口中文本框只读": "Zaznaczanie pola tekstowe tylko do odczytu w oknie tekstowym", + "多重区域模式": "Tryb wielu regionów" } \ No newline at end of file diff --git a/LunaTranslator/files/lang/ru.json b/LunaTranslator/files/lang/ru.json index c401b615..db687927 100644 --- a/LunaTranslator/files/lang/ru.json +++ b/LunaTranslator/files/lang/ru.json @@ -707,5 +707,6 @@ "Hook LosslessScaling进程使其不会退出缩放": "Процесс Hook LosslessScaling не выводит из масштабирования", "正在使用日语模型作为代替,可能效果不佳": "В качестве замены используется японская модель, которая может быть неэффективной", "保持非重复字符": "Сохранить символ без повторения", - "选择文本窗口中文本框只读": "Выберите текстовое окно только для чтения" + "选择文本窗口中文本框只读": "Выберите текстовое окно только для чтения", + "多重区域模式": "Многорегиональная модель" } \ No newline at end of file diff --git a/LunaTranslator/files/lang/th.json b/LunaTranslator/files/lang/th.json index 7a3d04dc..b9a44415 100644 --- a/LunaTranslator/files/lang/th.json +++ b/LunaTranslator/files/lang/th.json @@ -707,5 +707,6 @@ "Hook LosslessScaling进程使其不会退出缩放": "Hook LosslessScaling กระบวนการทำให้มันไม่ออกจากซูม", "正在使用日语模型作为代替,可能效果不佳": "ใช้แบบจำลองภาษาญี่ปุ่นแทนอาจไม่ได้ผล", "保持非重复字符": "เก็บอักขระที่ไม่ซ้ำกัน", - "选择文本窗口中文本框只读": "เลือกกล่องข้อความในหน้าต่างข้อความ อ่านอย่างเดียว" + "选择文本窗口中文本框只读": "เลือกกล่องข้อความในหน้าต่างข้อความ อ่านอย่างเดียว", + "多重区域模式": "โหมดหลายโซน" } \ No newline at end of file diff --git a/LunaTranslator/files/lang/tr.json b/LunaTranslator/files/lang/tr.json index 6cae8015..e25a8738 100644 --- a/LunaTranslator/files/lang/tr.json +++ b/LunaTranslator/files/lang/tr.json @@ -707,5 +707,6 @@ "Hook LosslessScaling进程使其不会退出缩放": "Hook LosslessScaling süreç ölçeklenmesini engelledi", "正在使用日语模型作为代替,可能效果不佳": "Japon modellerini yerine koymak etkili olmayabilir.", "保持非重复字符": "Tekrarlamayan karakterleri tut", - "选择文本窗口中文本框只读": "Metin penceresindeki sadece okuyulmuş metin kutularını seçin" + "选择文本窗口中文本框只读": "Metin penceresindeki sadece okuyulmuş metin kutularını seçin", + "多重区域模式": "Çok bölge modu" } \ No newline at end of file diff --git a/LunaTranslator/files/lang/uk.json b/LunaTranslator/files/lang/uk.json index a8be3809..4dca2f3b 100644 --- a/LunaTranslator/files/lang/uk.json +++ b/LunaTranslator/files/lang/uk.json @@ -707,5 +707,6 @@ "Hook LosslessScaling进程使其不会退出缩放": "Процес безвтратного розміруScaling забороняє їй вийти з розміру", "正在使用日语模型作为代替,可能效果不佳": "Використання японських моделей як заміни може бути неефективним", "保持非重复字符": "Зберегти символи, які не повторюються", - "选择文本窗口中文本框只读": "Виберіть текстові поля для лише читання у текстовому вікні" + "选择文本窗口中文本框只读": "Виберіть текстові поля для лише читання у текстовому вікні", + "多重区域模式": "Режим декількох регіонів" } \ No newline at end of file diff --git a/LunaTranslator/files/lang/vi.json b/LunaTranslator/files/lang/vi.json index 04eb65f8..dca3889e 100644 --- a/LunaTranslator/files/lang/vi.json +++ b/LunaTranslator/files/lang/vi.json @@ -707,5 +707,6 @@ "Hook LosslessScaling进程使其不会退出缩放": "Quá trình Hook LosslessScaling làm cho nó không thoát khỏi zoom", "正在使用日语模型作为代替,可能效果不佳": "Các mô hình tiếng Nhật đang được sử dụng thay thế và có thể không hiệu quả", "保持非重复字符": "Giữ các ký tự không trùng lặp", - "选择文本窗口中文本框只读": "Chọn hộp văn bản chỉ đọc trong cửa sổ văn bản" + "选择文本窗口中文本框只读": "Chọn hộp văn bản chỉ đọc trong cửa sổ văn bản", + "多重区域模式": "Chế độ đa vùng" } \ No newline at end of file diff --git a/LunaTranslator/files/lang/zh.json b/LunaTranslator/files/lang/zh.json index 8a0625c7..91d949c2 100644 --- a/LunaTranslator/files/lang/zh.json +++ b/LunaTranslator/files/lang/zh.json @@ -707,5 +707,6 @@ "Hook LosslessScaling进程使其不会退出缩放": "", "正在使用日语模型作为代替,可能效果不佳": "", "保持非重复字符": "", - "选择文本窗口中文本框只读": "" + "选择文本窗口中文本框只读": "", + "多重区域模式": "" } \ No newline at end of file