mirror of
https://github.com/HIllya51/LunaTranslator.git
synced 2025-01-14 08:23:55 +08:00
fix
This commit is contained in:
parent
130cb6bba3
commit
6e68471958
@ -1,5 +1,5 @@
|
||||
import time, uuid
|
||||
import os, threading, re, codecs, winreg
|
||||
import os, threading, re, winreg
|
||||
from qtsymbols import *
|
||||
from traceback import print_exc
|
||||
from myutils.config import (
|
||||
@ -15,7 +15,6 @@ from ctypes import c_int, CFUNCTYPE, c_void_p
|
||||
from myutils.utils import (
|
||||
minmaxmoveobservefunc,
|
||||
parsemayberegexreplace,
|
||||
kanjitrans,
|
||||
find_or_create_uid,
|
||||
checkisusingwine,
|
||||
checkpostusing,
|
||||
@ -34,7 +33,7 @@ from textsource.textsourcebase import basetext
|
||||
from textsource.filetrans import filetrans
|
||||
from gui.selecthook import hookselect
|
||||
from gui.translatorUI import TranslatorWindow
|
||||
import zhconv, functools
|
||||
import functools
|
||||
from gui.transhist import transhist
|
||||
from gui.edittext import edittext
|
||||
import importlib, qtawesome
|
||||
@ -271,11 +270,16 @@ class MAINUI:
|
||||
text,
|
||||
is_auto_run=True,
|
||||
waitforresultcallback=None,
|
||||
waitforresultcallbackengine=None,
|
||||
donttrans=False,
|
||||
):
|
||||
with self.solvegottextlock:
|
||||
succ = self.textgetmethod_1(
|
||||
text, is_auto_run, waitforresultcallback, donttrans
|
||||
text,
|
||||
is_auto_run,
|
||||
waitforresultcallback,
|
||||
waitforresultcallbackengine,
|
||||
donttrans,
|
||||
)
|
||||
if waitforresultcallback and not succ:
|
||||
waitforresultcallback("")
|
||||
@ -285,6 +289,7 @@ class MAINUI:
|
||||
text,
|
||||
is_auto_run=True,
|
||||
waitforresultcallback=None,
|
||||
waitforresultcallbackengine=None,
|
||||
donttrans=False,
|
||||
):
|
||||
if not text:
|
||||
@ -357,7 +362,6 @@ class MAINUI:
|
||||
|
||||
text_solved, optimization_params = self.solvebeforetrans(text)
|
||||
|
||||
usefultranslators = list(self.translators.keys())
|
||||
maybehaspremt = {}
|
||||
fix_rank = globalconfig["fix_translate_rank_rank"].copy()
|
||||
|
||||
@ -379,6 +383,14 @@ class MAINUI:
|
||||
|
||||
if len(real_fix_rank) == 0:
|
||||
return _showrawfunction()
|
||||
|
||||
if waitforresultcallbackengine:
|
||||
if waitforresultcallbackengine in real_fix_rank:
|
||||
real_fix_rank = [waitforresultcallbackengine]
|
||||
else:
|
||||
waitforresultcallbackengine = None
|
||||
|
||||
usefultranslators = real_fix_rank.copy()
|
||||
if globalconfig["fix_translate_rank"] and (not waitforresultcallback):
|
||||
_showrawfunction = functools.partial(
|
||||
self._delaypreparefixrank, _showrawfunction, real_fix_rank
|
||||
@ -536,16 +548,7 @@ class MAINUI:
|
||||
if len(self.currenttranslate):
|
||||
self.currenttranslate += "\n"
|
||||
self.currenttranslate += res
|
||||
if globalconfig["embedded"]["as_fast_as_posible"] or (
|
||||
classname == globalconfig["embedded"]["translator_2"]
|
||||
):
|
||||
safe_callback(
|
||||
kanjitrans(zhconv.convert(res, "zh-tw"))
|
||||
if globalconfig["embedded"]["trans_kanji"]
|
||||
else res
|
||||
)
|
||||
elif len(usefultranslators) == 0:
|
||||
safe_callback("")
|
||||
safe_callback(res)
|
||||
|
||||
def __usewhich(self):
|
||||
|
||||
|
@ -3,6 +3,7 @@ import windows, winsharedutils
|
||||
from myutils.config import globalconfig
|
||||
from gui.resizeablemainwindow import Mainw
|
||||
from gui.dynalang import LAction
|
||||
from traceback import print_exc
|
||||
|
||||
|
||||
class rangeadjust(Mainw):
|
||||
@ -181,7 +182,6 @@ class rangeselect(QMainWindow):
|
||||
self.__start = None
|
||||
self.__end = None
|
||||
self.startauto = False
|
||||
self.clickrelease = False
|
||||
self.rectlabel.resize(0, 0)
|
||||
self.rectlabel.setStyleSheet(
|
||||
" border:%spx solid %s; background-color: rgba(0,0,0, 0)"
|
||||
@ -191,18 +191,6 @@ class rangeselect(QMainWindow):
|
||||
"background-color: rgba(255,255,255, %s)" % globalconfig["ocrselectalpha"]
|
||||
)
|
||||
|
||||
def immediateend(self):
|
||||
try:
|
||||
|
||||
self.close()
|
||||
|
||||
if not self.once:
|
||||
return
|
||||
self.once = False
|
||||
self.callback(self.getRange())
|
||||
except:
|
||||
pass
|
||||
|
||||
def paintEvent(self, event):
|
||||
|
||||
if self.is_drawing:
|
||||
@ -227,9 +215,8 @@ class rangeselect(QMainWindow):
|
||||
|
||||
def mousePressEvent(self, event):
|
||||
if event.button() == Qt.MouseButton.LeftButton:
|
||||
if self.clickrelease:
|
||||
self.clickrelease = False
|
||||
self.mouseReleaseEvent(event)
|
||||
if self.startauto:
|
||||
self.callbackfunction(event)
|
||||
else:
|
||||
self.end_point = self.start_point = event.pos()
|
||||
self.is_drawing = True
|
||||
@ -241,14 +228,14 @@ class rangeselect(QMainWindow):
|
||||
self.is_drawing = True
|
||||
self.end_point = self.start_point = event.pos()
|
||||
self.__start = self.__end = windows.GetCursorPos()
|
||||
self.startauto = False
|
||||
if self.is_drawing:
|
||||
self.end_point = event.pos()
|
||||
self.__end = windows.GetCursorPos()
|
||||
self.update()
|
||||
|
||||
def getRange(self):
|
||||
|
||||
if self.__start is None:
|
||||
self.__start = self.__end
|
||||
x1, y1, x2, y2 = (
|
||||
self.__start.x,
|
||||
self.__start.y,
|
||||
@ -261,22 +248,27 @@ class rangeselect(QMainWindow):
|
||||
|
||||
return ((x1, y1), (x2, y2))
|
||||
|
||||
def callbackfunction(self, event):
|
||||
if not self.once:
|
||||
return
|
||||
self.once = False
|
||||
self.end_point = event.pos()
|
||||
self.__end = windows.GetCursorPos()
|
||||
self.close()
|
||||
try:
|
||||
self.callback(self.getRange())
|
||||
except:
|
||||
print_exc()
|
||||
|
||||
def mouseReleaseEvent(self, event):
|
||||
if event.button() == Qt.MouseButton.LeftButton:
|
||||
self.end_point = event.pos()
|
||||
self.__end = windows.GetCursorPos()
|
||||
|
||||
self.close()
|
||||
if not self.once:
|
||||
return
|
||||
self.once = False
|
||||
self.callback(self.getRange())
|
||||
self.callbackfunction(event)
|
||||
|
||||
|
||||
screen_shot_ui = None
|
||||
|
||||
|
||||
def rangeselct_function(callback, clickrelease, startauto):
|
||||
def rangeselct_function(callback, startauto):
|
||||
global screen_shot_ui
|
||||
if screen_shot_ui is None:
|
||||
screen_shot_ui = rangeselect()
|
||||
@ -287,4 +279,3 @@ def rangeselct_function(callback, clickrelease, startauto):
|
||||
windows.SetFocus(int(screen_shot_ui.winId()))
|
||||
|
||||
screen_shot_ui.startauto = startauto
|
||||
screen_shot_ui.clickrelease = clickrelease
|
||||
|
@ -316,12 +316,8 @@ def gethookembedgrid(self):
|
||||
),
|
||||
],
|
||||
[
|
||||
"使用最快翻译而非指定翻译器",
|
||||
D_getsimpleswitch(globalconfig["embedded"], "as_fast_as_posible"),
|
||||
],
|
||||
[
|
||||
"内嵌的翻译器",
|
||||
"",
|
||||
"使用指定翻译器",
|
||||
D_getsimpleswitch(globalconfig["embedded"], "use_appointed_translate"),
|
||||
D_getsimplecombobox(
|
||||
alltransvis,
|
||||
globalconfig["embedded"],
|
||||
@ -443,21 +439,15 @@ def filetranslate(self):
|
||||
[(functools.partial(createdownloadprogress, self), 0)],
|
||||
[],
|
||||
[
|
||||
"指定翻译器",
|
||||
(
|
||||
D_getsimplecombobox(
|
||||
alltransvis,
|
||||
globalconfig["embedded"],
|
||||
"translator_2",
|
||||
internal=alltrans,
|
||||
),
|
||||
3,
|
||||
"使用指定翻译器",
|
||||
D_getsimpleswitch(globalconfig, "use_appointed_translate"),
|
||||
D_getsimplecombobox(
|
||||
alltransvis,
|
||||
globalconfig,
|
||||
"translator_2",
|
||||
internal=alltrans,
|
||||
),
|
||||
],
|
||||
[
|
||||
"使用最快翻译而非指定翻译器",
|
||||
D_getsimpleswitch(globalconfig["embedded"], "as_fast_as_posible"),
|
||||
],
|
||||
]
|
||||
return grids
|
||||
|
||||
|
@ -303,6 +303,9 @@ class showocrimage(saveposwindow):
|
||||
res = f[0]
|
||||
if not res:
|
||||
return
|
||||
self.ocrfile(res)
|
||||
|
||||
def ocrfile(self, res):
|
||||
img = QImage(res)
|
||||
if img.isNull():
|
||||
return
|
||||
@ -314,6 +317,17 @@ class showocrimage(saveposwindow):
|
||||
else:
|
||||
gobject.baseobject.textgetmethod(text, False)
|
||||
|
||||
def dragEnterEvent(self, event: QDragEnterEvent):
|
||||
if event.mimeData().hasUrls():
|
||||
event.accept()
|
||||
else:
|
||||
event.ignore()
|
||||
|
||||
def dropEvent(self, event: QDropEvent):
|
||||
files = [u.toLocalFile() for u in event.mimeData().urls()]
|
||||
if len(files):
|
||||
self.ocrfile(files[0])
|
||||
|
||||
def __init__(self, parent, cached):
|
||||
self.originimage = None
|
||||
super().__init__(parent, poslist=globalconfig["showocrgeo"])
|
||||
@ -322,6 +336,7 @@ class showocrimage(saveposwindow):
|
||||
self.originlabel = pixmapviewer()
|
||||
qw = QWidget()
|
||||
self.layout1 = QVBoxLayout()
|
||||
self.setAcceptDrops(True)
|
||||
self.setCentralWidget(qw)
|
||||
qw.setLayout(self.layout1)
|
||||
icon = getIconButton(callback=self.openff, icon="fa.folder-open")
|
||||
@ -342,6 +357,8 @@ class showocrimage(saveposwindow):
|
||||
self.setimagefunction(cached)
|
||||
|
||||
def onValueChanged(self, value):
|
||||
if not self.originimage:
|
||||
return
|
||||
transform = QTransform()
|
||||
transform.rotate(value)
|
||||
rotated_image = self.originimage.transformed(transform)
|
||||
|
@ -95,7 +95,7 @@ class AnkiWindow(QWidget):
|
||||
if globalconfig["ankiconnect"]["ocrcroped"]:
|
||||
self.asyncocr(img)
|
||||
|
||||
rangeselct_function(ocroncefunction, False, False)
|
||||
rangeselct_function(ocroncefunction, False)
|
||||
|
||||
def __init__(self, p) -> None:
|
||||
super().__init__()
|
||||
|
@ -465,7 +465,7 @@ class TranslatorWindow(resizableframeless):
|
||||
self.ocr_once_follow_rect = rect
|
||||
self.ocr_do_function(rect)
|
||||
|
||||
rangeselct_function(ocroncefunction, False, False)
|
||||
rangeselct_function(ocroncefunction, False)
|
||||
|
||||
@threader
|
||||
def simulate_key_enter(self):
|
||||
@ -1182,7 +1182,7 @@ class TranslatorWindow(resizableframeless):
|
||||
return
|
||||
self.showhidestate = False
|
||||
|
||||
rangeselct_function(self.afterrange, auto, auto)
|
||||
rangeselct_function(self.afterrange, auto)
|
||||
|
||||
@tryprint
|
||||
def afterrange(self, rect):
|
||||
|
@ -354,6 +354,12 @@ def get_launchpath(uid):
|
||||
|
||||
|
||||
def findgameuidofpath(gamepath, findall=False):
|
||||
if not gamepath:
|
||||
# getpidexe在部分情况下可能为None,导致崩溃
|
||||
if findall:
|
||||
return []
|
||||
else:
|
||||
return None, None
|
||||
gamepath = os.path.normpath(gamepath)
|
||||
collect = []
|
||||
for sub in savegametaged:
|
||||
|
@ -101,7 +101,7 @@ def __ocr_init():
|
||||
def ocr_run(qimage: QImage):
|
||||
image = qimage2binary(qimage, "PNG")
|
||||
if not image:
|
||||
return ""
|
||||
return "", None
|
||||
global _nowuseocrx, _ocrengine
|
||||
try:
|
||||
ocr_init()
|
||||
|
@ -154,10 +154,6 @@
|
||||
miaobian1: miaobian12_common,
|
||||
}
|
||||
function dispatch_text_style_line(style, styleargs, text, args) {
|
||||
if (text == '') {
|
||||
text = '<br>'
|
||||
args.userawhtml = true
|
||||
}
|
||||
let ele = regist_style_imp[style](styleargs, text, args);
|
||||
if (args.userawhtml) {
|
||||
if (args.atcenter) {
|
||||
|
@ -202,6 +202,9 @@ class TextBrowser(QWidget, dataget):
|
||||
t.start()
|
||||
|
||||
def calllunaheightchange(self, h):
|
||||
extra_space = globalconfig["extra_space"]
|
||||
extra_space_trans = globalconfig["extra_space_trans"]
|
||||
h += -min(0, extra_space, extra_space_trans)
|
||||
self.contentsChanged.emit(
|
||||
QSize(
|
||||
self._padding * 2 + self.width(),
|
||||
@ -303,6 +306,11 @@ class TextBrowser(QWidget, dataget):
|
||||
# 显示名称时。不管了,就这样吧
|
||||
text = text.replace(sig, "")
|
||||
userawhtml = True
|
||||
|
||||
if len(text) == 0:
|
||||
userawhtml = True
|
||||
text = "<br>"
|
||||
|
||||
args = dict(
|
||||
atcenter=atcenter,
|
||||
fontFamily=fmori,
|
||||
|
@ -77,7 +77,10 @@ class parsesrt:
|
||||
def __init__(self, file):
|
||||
self.file = file
|
||||
with open(file, "r", encoding="utf8") as ff:
|
||||
self.blocks = ff.read().split("\n\n")
|
||||
text = ff.read()
|
||||
if text.endswith("\n"):
|
||||
text = text[:-1]
|
||||
self.blocks = text.split("\n\n")
|
||||
|
||||
def __len__(self):
|
||||
return len(self.blocks)
|
||||
@ -140,11 +143,9 @@ class filetrans(basetext):
|
||||
|
||||
def query(self, origin):
|
||||
ts = self.__query(origin)
|
||||
t = ts.get(globalconfig["embedded"]["translator_2"], None)
|
||||
if t:
|
||||
return t
|
||||
if globalconfig["embedded"]["as_fast_as_posible"]:
|
||||
return (list(ts.values()) + [None])[0]
|
||||
if globalconfig["use_appointed_translate"]:
|
||||
return ts.get(globalconfig["translator_2"], None)
|
||||
return (list(ts.values()) + [None])[0]
|
||||
|
||||
@threader
|
||||
def starttranslatefile(self, file):
|
||||
@ -184,7 +185,12 @@ class filetrans(basetext):
|
||||
continue
|
||||
ts = self.query(line)
|
||||
if not ts:
|
||||
ts = self.waitfortranslation(line)
|
||||
engine = (
|
||||
globalconfig["translator_2"]
|
||||
if globalconfig["use_appointed_translate"]
|
||||
else None
|
||||
)
|
||||
ts = self.waitfortranslation(line, engine)
|
||||
if self.ending:
|
||||
return
|
||||
|
||||
|
@ -2,7 +2,7 @@ import threading
|
||||
import re, os
|
||||
import time, gobject, windows
|
||||
from collections import OrderedDict
|
||||
import codecs, functools
|
||||
import zhconv, functools
|
||||
from winsharedutils import Is64bit
|
||||
from myutils.config import (
|
||||
globalconfig,
|
||||
@ -16,6 +16,7 @@ from myutils.utils import (
|
||||
getfilemd5,
|
||||
getlangtgt,
|
||||
getlanguagespace,
|
||||
kanjitrans,
|
||||
safe_escape,
|
||||
)
|
||||
from myutils.hwnd import injectdll, test_injectable, ListProcess, getpidexe
|
||||
@ -450,9 +451,16 @@ class texthook(basetext):
|
||||
self.embedcallback(text, "")
|
||||
return
|
||||
if self.checkisusingembed(tp.addr, tp.ctx, tp.ctx2):
|
||||
trans = self.waitfortranslation(text)
|
||||
engine = (
|
||||
globalconfig["embedded"]["translator_2"]
|
||||
if globalconfig["embedded"]["use_appointed_translate"]
|
||||
else None
|
||||
)
|
||||
trans = self.waitfortranslation(text, engine)
|
||||
if not trans:
|
||||
trans = ""
|
||||
if globalconfig["embedded"]["trans_kanji"]:
|
||||
trans = kanjitrans(zhconv.convert(trans, "zh-tw"))
|
||||
self.embedcallback(text, trans)
|
||||
|
||||
def embedcallback(self, text: str, trans: str):
|
||||
|
@ -51,12 +51,13 @@ class basetext:
|
||||
return
|
||||
self.textgetmethod(*arg, **kwarg)
|
||||
|
||||
def waitfortranslation(self, text):
|
||||
def waitfortranslation(self, text, engine=None):
|
||||
resultwaitor = queue.Queue()
|
||||
self.textgetmethod(
|
||||
text,
|
||||
is_auto_run=True,
|
||||
waitforresultcallback=resultwaitor.put,
|
||||
waitforresultcallbackengine=engine,
|
||||
)
|
||||
return resultwaitor.get()
|
||||
|
||||
|
@ -303,14 +303,16 @@
|
||||
"port": 2333
|
||||
}
|
||||
},
|
||||
"translator_2": null,
|
||||
"use_appointed_translate": false,
|
||||
"embedded": {
|
||||
"safecheck_use": true,
|
||||
"safecheckregexs": [
|
||||
"(.*?)\\{(.*?)\\}(.*?)",
|
||||
"(.*?)\\[(.*?)\\](.*?)"
|
||||
],
|
||||
"translator_2": 0,
|
||||
"as_fast_as_posible": true,
|
||||
"translator_2": null,
|
||||
"use_appointed_translate": false,
|
||||
"timeout_translate": 2,
|
||||
"trans_kanji": true,
|
||||
"keeprawtext": false,
|
||||
|
@ -362,7 +362,6 @@
|
||||
"过滤重复": "تصفية التكرار",
|
||||
"搜索结果数上限": "نتائج البحث عن الحد الأعلى",
|
||||
"指示詞": "إشارة عشوائية",
|
||||
"使用最快翻译而非指定翻译器": "استخدام أسرع مترجم بدلا من تحديد مترجم",
|
||||
"搜索": "بحث .",
|
||||
"不透明度": "التعتيم",
|
||||
"过滤乱码文本": "تصفية النص مشوه",
|
||||
@ -823,5 +822,6 @@
|
||||
"指定翻译器": "تعيين مترجم",
|
||||
"关于软件": "عن البرمجيات",
|
||||
"严格的": "صارم",
|
||||
"收藏夹": "المفضلة"
|
||||
"收藏夹": "المفضلة",
|
||||
"使用指定翻译器": "استخدام محدد مترجم"
|
||||
}
|
@ -246,7 +246,6 @@
|
||||
"分析图像更新+周期执行": "分析影像更新+週期執行",
|
||||
"调整游戏窗口按钮": "調整遊戲視窗按鈕",
|
||||
"内嵌的翻译器": "內嵌的翻譯器",
|
||||
"使用最快翻译而非指定翻译器": "使用最快翻譯而非指定翻譯器",
|
||||
"代理设置": "代理設定",
|
||||
"自动更新": "自動更新",
|
||||
"排除复制自翻译器的文本": "排除複製自翻譯器的文字",
|
||||
@ -823,5 +822,6 @@
|
||||
"指定翻译器": "指定翻譯器",
|
||||
"关于软件": "關於軟件",
|
||||
"严格的": "嚴格的",
|
||||
"收藏夹": "我的最愛"
|
||||
"收藏夹": "我的最愛",
|
||||
"使用指定翻译器": "使用指定翻譯器"
|
||||
}
|
@ -269,7 +269,6 @@
|
||||
"默认设置": "výchozí nastavení",
|
||||
"意大利语": "Italština",
|
||||
"已保存游戏": "Uložená hra",
|
||||
"使用最快翻译而非指定翻译器": "Použijte nejrychlejší překlad místo určení překladatele",
|
||||
"有道api": "Youdao API",
|
||||
"显示显示原文按钮": "Zobrazit tlačítko původního textu",
|
||||
"去除花括号{}": "Odstraňte kudrnaté rovnátka.",
|
||||
@ -823,5 +822,6 @@
|
||||
"指定翻译器": "Upřesnit překladatele",
|
||||
"关于软件": "O softwaru",
|
||||
"严格的": "přísná",
|
||||
"收藏夹": "Oblíbené"
|
||||
"收藏夹": "Oblíbené",
|
||||
"使用指定翻译器": "Použít určeného překladatele"
|
||||
}
|
@ -269,7 +269,6 @@
|
||||
"默认设置": "Standardeinstellung",
|
||||
"意大利语": "Italienisch",
|
||||
"已保存游戏": "Gespeichertes Spiel",
|
||||
"使用最快翻译而非指定翻译器": "Verwenden Sie die schnellste Übersetzung, anstatt einen Übersetzer anzugeben",
|
||||
"有道api": "Youdao API",
|
||||
"显示显示原文按钮": "Schaltfläche Originaltext anzeigen",
|
||||
"去除花括号{}": "Lockige Klammern entfernen {}",
|
||||
@ -823,5 +822,6 @@
|
||||
"指定翻译器": "Übersetzer angeben",
|
||||
"关于软件": "Über Software",
|
||||
"严格的": "streng",
|
||||
"收藏夹": "Favoriten"
|
||||
"收藏夹": "Favoriten",
|
||||
"使用指定翻译器": "Verwende einen bestimmten Übersetzer"
|
||||
}
|
@ -246,7 +246,6 @@
|
||||
"分析图像更新+周期执行": "Analyze Image Update + Periodic Execution",
|
||||
"调整游戏窗口按钮": "Adjust Game Window Button",
|
||||
"内嵌的翻译器": "Embedded Translator",
|
||||
"使用最快翻译而非指定翻译器": "Use Fastest Translation Engine Available",
|
||||
"代理设置": "Proxy Settings",
|
||||
"自动更新": "Auto Update",
|
||||
"排除复制自翻译器的文本": "Exclude Copied Text From Translator",
|
||||
@ -823,5 +822,6 @@
|
||||
"指定翻译器": "Specify translator",
|
||||
"关于软件": "About software",
|
||||
"严格的": "strict",
|
||||
"收藏夹": "Favorites"
|
||||
"收藏夹": "Favorites",
|
||||
"使用指定翻译器": "Use designated translator"
|
||||
}
|
@ -246,7 +246,6 @@
|
||||
"分析图像更新+周期执行": "Actualización de la imagen de análisis + Ejecución del ciclo",
|
||||
"调整游戏窗口按钮": "Ajustar el botón de la ventana del juego",
|
||||
"内嵌的翻译器": "Traductor incorporado",
|
||||
"使用最快翻译而非指定翻译器": "Use la traducción más rápida en lugar del traductor especificado",
|
||||
"代理设置": "Configuración del agente",
|
||||
"自动更新": "Actualización automática",
|
||||
"排除复制自翻译器的文本": "Excluir el texto copiado del traductor",
|
||||
@ -823,5 +822,6 @@
|
||||
"指定翻译器": "Especificar traductor",
|
||||
"关于软件": "Sobre el software",
|
||||
"严格的": "Estricto",
|
||||
"收藏夹": "Colección"
|
||||
"收藏夹": "Colección",
|
||||
"使用指定翻译器": "Uso del traductor especificado"
|
||||
}
|
@ -246,7 +246,6 @@
|
||||
"分析图像更新+周期执行": "Mise à jour de l'image analytique + exécution du cycle",
|
||||
"调整游戏窗口按钮": "Ajuster le bouton de la fenêtre de jeu",
|
||||
"内嵌的翻译器": "Traducteur intégré",
|
||||
"使用最快翻译而非指定翻译器": "Utiliser la traduction la plus rapide au lieu du traducteur spécifié",
|
||||
"代理设置": "Paramètres de l'agent",
|
||||
"自动更新": "Mise à jour automatique",
|
||||
"排除复制自翻译器的文本": "Exclure le texte copié depuis le traducteur",
|
||||
@ -823,5 +822,6 @@
|
||||
"指定翻译器": "Spécifier le traducteur",
|
||||
"关于软件": "À propos du logiciel",
|
||||
"严格的": "Strictement",
|
||||
"收藏夹": "Favoris"
|
||||
"收藏夹": "Favoris",
|
||||
"使用指定翻译器": "Utiliser le traducteur spécifié"
|
||||
}
|
@ -240,7 +240,6 @@
|
||||
"说明": "spiegare",
|
||||
"分析图像更新+周期执行": "Analizza gli aggiornamenti delle immagini + esecuzione del ciclo",
|
||||
"内嵌的翻译器": "Traduttore incorporato",
|
||||
"使用最快翻译而非指定翻译器": "Usa la traduzione più veloce invece di specificare un traduttore",
|
||||
"代理设置": "Impostazioni proxy",
|
||||
"自动更新": "Aggiornamento automatico",
|
||||
"排除复制自翻译器的文本": "Escludi testo copiato dal traduttore",
|
||||
@ -823,5 +822,6 @@
|
||||
"指定翻译器": "Specifica traduttore",
|
||||
"关于软件": "Informazioni sul software",
|
||||
"严格的": "severo",
|
||||
"收藏夹": "Preferiti"
|
||||
"收藏夹": "Preferiti",
|
||||
"使用指定翻译器": "Usa traduttore designato"
|
||||
}
|
@ -246,7 +246,6 @@
|
||||
"分析图像更新+周期执行": "解析画像更新+周期実行",
|
||||
"调整游戏窗口按钮": "ゲームウィンドウボタンを調整する",
|
||||
"内嵌的翻译器": "インライントランスレータ",
|
||||
"使用最快翻译而非指定翻译器": "指定された翻訳器ではなく最速の翻訳を使用する",
|
||||
"代理设置": "プロキシ設定",
|
||||
"自动更新": "自動更新",
|
||||
"排除复制自翻译器的文本": "翻訳機からコピーされたテキストを除外する",
|
||||
@ -823,5 +822,6 @@
|
||||
"指定翻译器": "翻訳機の指定",
|
||||
"关于软件": "ソフトウェアについて",
|
||||
"严格的": "きびしい",
|
||||
"收藏夹": "お気に入り"
|
||||
"收藏夹": "お気に入り",
|
||||
"使用指定翻译器": "指定された翻訳機の使用"
|
||||
}
|
@ -246,7 +246,6 @@
|
||||
"分析图像更新+周期执行": "분석 이미지 업데이트 + 주기 실행",
|
||||
"调整游戏窗口按钮": "게임 창 버튼 조정",
|
||||
"内嵌的翻译器": "내장된 번역기",
|
||||
"使用最快翻译而非指定翻译器": "지정된 번역기가 아닌 가장 빠른 번역기 사용",
|
||||
"代理设置": "프록시 설정",
|
||||
"自动更新": "자동 업데이트",
|
||||
"排除复制自翻译器的文本": "번역기에서 복사한 텍스트 제외",
|
||||
@ -823,5 +822,6 @@
|
||||
"指定翻译器": "번역기 지정",
|
||||
"关于软件": "소프트웨어 정보",
|
||||
"严格的": "엄격했어",
|
||||
"收藏夹": "즐겨찾기"
|
||||
"收藏夹": "즐겨찾기",
|
||||
"使用指定翻译器": "지정된 번역기 사용"
|
||||
}
|
@ -269,7 +269,6 @@
|
||||
"默认设置": "standaardinstelling",
|
||||
"意大利语": "Italiaans",
|
||||
"已保存游戏": "Opgeslagen spel",
|
||||
"使用最快翻译而非指定翻译器": "Gebruik de snelste vertaling in plaats van een vertaler op te geven",
|
||||
"有道api": "Youdao API",
|
||||
"显示显示原文按钮": "Originele tekstknop weergeven",
|
||||
"去除花括号{}": "Krullende beugels verwijderen.",
|
||||
@ -823,5 +822,6 @@
|
||||
"指定翻译器": "Vertaler opgeven",
|
||||
"关于软件": "Over software",
|
||||
"严格的": "strikt",
|
||||
"收藏夹": "Favorieten"
|
||||
"收藏夹": "Favorieten",
|
||||
"使用指定翻译器": "Gebruik aangewezen vertaler"
|
||||
}
|
@ -246,7 +246,6 @@
|
||||
"分析图像更新+周期执行": "Analiza aktualizacji obrazów+wykonanie cyklu",
|
||||
"调整游戏窗口按钮": "Dostosuj przyciski okna gry",
|
||||
"内嵌的翻译器": "Wbudowany tłumacz",
|
||||
"使用最快翻译而非指定翻译器": "Użyj najszybszego tłumaczenia zamiast określać tłumacza",
|
||||
"代理设置": "Ustawienia proxy",
|
||||
"自动更新": "Automatyczna aktualizacja",
|
||||
"排除复制自翻译器的文本": "Wyklucz tekst skopiowany z tłumacza",
|
||||
@ -823,5 +822,6 @@
|
||||
"指定翻译器": "Określ tłumacza",
|
||||
"关于软件": "O oprogramowaniu",
|
||||
"严格的": "surowe",
|
||||
"收藏夹": "Ulubione"
|
||||
"收藏夹": "Ulubione",
|
||||
"使用指定翻译器": "Użyj wyznaczonego tłumacza"
|
||||
}
|
@ -269,7 +269,6 @@
|
||||
"默认设置": "configuração predefinida",
|
||||
"意大利语": "Italiano",
|
||||
"已保存游戏": "Jogo gravado",
|
||||
"使用最快翻译而非指定翻译器": "Usar a tradução mais rápida em vez de especificar um tradutor",
|
||||
"有道api": "API Youdao",
|
||||
"显示显示原文按钮": "Mostrar o botão do texto original",
|
||||
"去除花括号{}": "Remover as chaves encaracoladas {}",
|
||||
@ -823,5 +822,6 @@
|
||||
"指定翻译器": "Especificar o tradutor",
|
||||
"关于软件": "Sobre o software",
|
||||
"严格的": "estrito",
|
||||
"收藏夹": "Favoritos"
|
||||
"收藏夹": "Favoritos",
|
||||
"使用指定翻译器": "Usar o tradutor designado"
|
||||
}
|
@ -246,7 +246,6 @@
|
||||
"分析图像更新+周期执行": "Анализ обновлений изображений + цикл выполнения",
|
||||
"调整游戏窗口按钮": "Настройка кнопки окна игры",
|
||||
"内嵌的翻译器": "Встроенный переводчик",
|
||||
"使用最快翻译而非指定翻译器": "Используйте самый быстрый перевод вместо указанного переводчика",
|
||||
"代理设置": "Параметры прокси",
|
||||
"自动更新": "Автоматическое обновление",
|
||||
"排除复制自翻译器的文本": "Исключить копирование текста с переводчика",
|
||||
@ -823,5 +822,6 @@
|
||||
"指定翻译器": "Назначить переводчика",
|
||||
"关于软件": "О программном обеспечении",
|
||||
"严格的": "Строго",
|
||||
"收藏夹": "Коллекция"
|
||||
"收藏夹": "Коллекция",
|
||||
"使用指定翻译器": "Использовать указанный переводчик"
|
||||
}
|
@ -269,7 +269,6 @@
|
||||
"默认设置": "förvald inställning",
|
||||
"意大利语": "Italienska",
|
||||
"已保存游戏": "Sparat spel",
|
||||
"使用最快翻译而非指定翻译器": "Använd den snabbaste översättningen istället för att ange en översättare",
|
||||
"有道api": "Youdao API",
|
||||
"显示显示原文按钮": "Visa originaltextknapp",
|
||||
"去除花括号{}": "Ta bort lockiga hängslen",
|
||||
@ -823,5 +822,6 @@
|
||||
"指定翻译器": "Ange översättare",
|
||||
"关于软件": "Om programvara",
|
||||
"严格的": "strikt",
|
||||
"收藏夹": "Favoriter"
|
||||
"收藏夹": "Favoriter",
|
||||
"使用指定翻译器": "Använd utsedd översättare"
|
||||
}
|
@ -268,7 +268,6 @@
|
||||
"默认设置": "ตั้งค่าปริยาย",
|
||||
"意大利语": "อิตาลี",
|
||||
"已保存游戏": "บันทึกเกม",
|
||||
"使用最快翻译而非指定翻译器": "ใช้การแปลที่เร็วที่สุดแทนการระบุนักแปล",
|
||||
"有道api": "มี Dao-api",
|
||||
"显示显示原文按钮": "แสดงปุ่มแสดงข้อความต้นฉบับ",
|
||||
"去除花括号{}": "ลบวงเล็บดอกไม้ {}",
|
||||
@ -823,5 +822,6 @@
|
||||
"指定翻译器": "ระบุนักแปล",
|
||||
"关于软件": "เกี่ยวกับซอฟต์แวร์",
|
||||
"严格的": "เข้มงวด",
|
||||
"收藏夹": "รายการโปรด"
|
||||
"收藏夹": "รายการโปรด",
|
||||
"使用指定翻译器": "ใช้ตัวแปลที่ระบุ"
|
||||
}
|
@ -246,7 +246,6 @@
|
||||
"分析图像更新+周期执行": "Görüntü güncellemesi",
|
||||
"调整游戏窗口按钮": "Oyun pencere düğmelerini ayarla",
|
||||
"内嵌的翻译器": "İçeri yatırılmış çevirici",
|
||||
"使用最快翻译而非指定翻译器": "Tercümanı belirlemek yerine en hızlı tercüme kullanın",
|
||||
"代理设置": "Proksi Ayarları",
|
||||
"自动更新": "Otomatik güncelleştirme",
|
||||
"排除复制自翻译器的文本": "Tercümeden kopyalanan metin dışarı çıkar",
|
||||
@ -823,5 +822,6 @@
|
||||
"指定翻译器": "Çevirmeyi belirtin",
|
||||
"关于软件": "Yazılım hakkında",
|
||||
"严格的": "strict",
|
||||
"收藏夹": "Favoritler"
|
||||
"收藏夹": "Favoritler",
|
||||
"使用指定翻译器": "Belirlenmiş tercümanları kullan"
|
||||
}
|
@ -240,7 +240,6 @@
|
||||
"说明": "пояснити",
|
||||
"分析图像更新+周期执行": "Аналізувати оновлення зображення+виконання циклу",
|
||||
"内嵌的翻译器": "Вбудований перекладач",
|
||||
"使用最快翻译而非指定翻译器": "Використовувати найшвидший переклад замість визначення перекладача",
|
||||
"代理设置": "Параметри проксі",
|
||||
"自动更新": "Автоматичне оновлення",
|
||||
"排除复制自翻译器的文本": "Виключити текст копіюваний з перекладача",
|
||||
@ -823,5 +822,6 @@
|
||||
"指定翻译器": "Вкажіть перекладач",
|
||||
"关于软件": "Про програмне забезпечення",
|
||||
"严格的": "strict",
|
||||
"收藏夹": "Улюблені"
|
||||
"收藏夹": "Улюблені",
|
||||
"使用指定翻译器": "Використовувати вказаний перекладач"
|
||||
}
|
@ -246,7 +246,6 @@
|
||||
"分析图像更新+周期执行": "Phân tích cập nhật hình ảnh+thực hiện chu kỳ",
|
||||
"调整游戏窗口按钮": "Điều chỉnh nút cửa sổ trò chơi",
|
||||
"内嵌的翻译器": "Trình dịch nội tuyến",
|
||||
"使用最快翻译而非指定翻译器": "Sử dụng bản dịch nhanh nhất thay vì chỉ định",
|
||||
"代理设置": "Thiết lập ủy nhiệm",
|
||||
"自动更新": "Cập nhật tự động",
|
||||
"排除复制自翻译器的文本": "Loại trừ văn bản sao chép tự dịch",
|
||||
@ -823,5 +822,6 @@
|
||||
"指定翻译器": "Chỉ định trình dịch",
|
||||
"关于软件": "Về phần mềm",
|
||||
"严格的": "Nghiêm ngặt",
|
||||
"收藏夹": "Yêu thích"
|
||||
"收藏夹": "Yêu thích",
|
||||
"使用指定翻译器": "Dùng bộ dịch đã chỉ định"
|
||||
}
|
@ -269,7 +269,6 @@
|
||||
"默认设置": "",
|
||||
"意大利语": "",
|
||||
"已保存游戏": "",
|
||||
"使用最快翻译而非指定翻译器": "",
|
||||
"有道api": "",
|
||||
"显示显示原文按钮": "",
|
||||
"去除花括号{}": "",
|
||||
@ -823,5 +822,6 @@
|
||||
"指定翻译器": "",
|
||||
"关于软件": "",
|
||||
"严格的": "",
|
||||
"收藏夹": ""
|
||||
"收藏夹": "",
|
||||
"使用指定翻译器": ""
|
||||
}
|
@ -54,9 +54,10 @@ Due to the limitation of the number of text lines that the game can display, by
|
||||
|
||||
The principle of embedded translation is to pause the game in a certain function before the game displays the text, send the text to be displayed to the translator, wait for the translation, modify the text memory from the translated text, and then let the game continue to display the translation. Therefore, **when using a slower translation, it will definitely cause the game to stutter**. You can avoid long-term stuttering caused by slow translation by limiting the waiting time.
|
||||
|
||||
**3. Use the Fastest Translation Instead of Specified Translation** and **Embedded Translator**
|
||||
**3. Use Specified Translator**
|
||||
|
||||
When multiple translation sources are activated, you can choose to embed a specified translation with the best effect. If not activated, or if the specified translator is not activated, the fastest translation will be used to reduce game lag.
|
||||
|
||||
When activating multiple translation sources, you can choose to embed a specified translation that works best, or use the fastest translation to reduce game stuttering.
|
||||
|
||||
**4. Convert Characters to Traditional/Japanese**
|
||||
|
||||
|
@ -47,14 +47,6 @@
|
||||
|
||||
**model** https://openrouter.ai/docs/models
|
||||
|
||||
### **Deepbricks**
|
||||
|
||||
**API Interface Address** `https://api.deepbricks.ai/v1/chat/completions`
|
||||
|
||||
**API Key** https://deepbricks.ai/api-key
|
||||
|
||||
**model** https://deepbricks.ai/pricing
|
||||
|
||||
### **Mistral AI**
|
||||
|
||||
**API Interface Address** `https://api.mistral.ai/v1/chat/completions`
|
||||
|
@ -1,4 +1,4 @@
|
||||
## Parameter Meaning for OCR Automation Execution Methods
|
||||
## OCR Automation Execution Methods
|
||||
|
||||
### Analyze Image Update
|
||||
|
||||
|
@ -4,7 +4,7 @@
|
||||
### ChatGPT Compatible Interface
|
||||
|
||||
|
||||
You can also use tools like [TGW](https://github.com/oobabooga/text-generation-webui), [llama.cpp](https://github.com/ggerganov/llama.cpp), [ollama](https://github.com/ollama/ollama), [one-api](https://github.com/songquanpeng/one-api) to deploy models, and then fill in the address and model.
|
||||
You can also use tools like [llama.cpp](https://github.com/ggerganov/llama.cpp), [ollama](https://github.com/ollama/ollama), [one-api](https://github.com/songquanpeng/one-api) to deploy models, and then fill in the address and model.
|
||||
|
||||
You can also use platforms like Kaggle to deploy models to the cloud, in which case you may need to use SECRET_KEY; otherwise, you can ignore the SECRET_KEY parameter.
|
||||
|
||||
|
@ -14,7 +14,7 @@
|
||||
- [Embedded Translation](/en/embedtranslate.md)
|
||||
- [Playing Old Games on XP Virtual Machine and Extracting Text for Translation](/en/playonxp.md)
|
||||
- [OCR Related Settings](/en/ocrparam.redirect)
|
||||
- [Parameter Meanings for OCR Automation Execution Methods](/en/ocrparam.md)
|
||||
- [OCR Automation Execution Methods](/en/ocrparam.md)
|
||||
- [Installing Additional Language Support for Windows OCR](/en/windowsocr.md)
|
||||
- [What to Do If the mangaocr Integration Package Fails to Start](/en/mangaocr.md)
|
||||
- [Binding Game Window in OCR Mode](/en/gooduseocr.md)
|
||||
|
@ -33,11 +33,11 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="buttonitem buttonsize"><a class="goodlink buttonsize" href="" target="_blank"
|
||||
id="vediotutorial">.</a>
|
||||
<div class="buttonitem buttonsize"><a class="goodlink buttonsize" href="https://qm.qq.com/q/I5rr3uEpi2" target="_blank"
|
||||
id="vediotutorial">视频教学</a>
|
||||
</div>
|
||||
<div class="buttonitem buttonsize"><a class="goodlink buttonsize" href="" target="_blank"
|
||||
id="contactme">.</a>
|
||||
<div class="buttonitem buttonsize"><a class="goodlink buttonsize" href="https://space.bilibili.com/592120404/video" target="_blank"
|
||||
id="contactme">QQ群963119821</a>
|
||||
</div>
|
||||
<div class="buttonitem buttonsize">
|
||||
<div class="dropdown buttonsize">
|
||||
|
@ -53,9 +53,10 @@
|
||||
|
||||
Принцип встроенного перевода заключается в том, чтобы остановить игру перед отображением текста в определенной функции, отправить текст в переводчик, дождаться перевода, изменить текст в памяти на переведенный текст, а затем продолжить выполнение игры для отображения перевода. Поэтому **при использовании медленного переводчика игра обязательно зависнет**. Вы можете ограничить время ожидания, чтобы избежать длительных зависаний из-за медленного перевода.
|
||||
|
||||
**3. Использовать самый быстрый перевод вместо указанного перевода** и **переводчик для встроенного перевода**
|
||||
**3. Использование указанного переводчика**
|
||||
|
||||
При активации нескольких источников перевода можно выбрать встроенный перевод с лучшим эффектом. Если не активировать, или если указанный переводчик не активирован, будет использоваться самый быстрый перевод, чтобы уменьшить задержку в игре.
|
||||
|
||||
При активации нескольких источников перевода можно выбрать указанный перевод с лучшим результатом или самый быстрый перевод, чтобы уменьшить задержку в игре.
|
||||
|
||||
**4. Преобразовать китайские символы в традиционные/японские иероглифы**
|
||||
|
||||
|
@ -47,14 +47,6 @@
|
||||
|
||||
**model** https://openrouter.ai/docs/models
|
||||
|
||||
### **Deepbricks**
|
||||
|
||||
**Адрес API** `https://api.deepbricks.ai/v1/chat/completions`
|
||||
|
||||
**API Key** https://deepbricks.ai/api-key
|
||||
|
||||
**model** https://deepbricks.ai/pricing
|
||||
|
||||
### **Mistral AI**
|
||||
|
||||
**Адрес API** `https://api.mistral.ai/v1/chat/completions`
|
||||
|
@ -1,4 +1,4 @@
|
||||
## Значение параметров метода автоматического выполнения OCR
|
||||
## Автоматизированный метод выполнения OCR
|
||||
|
||||
### Анализ обновления изображения
|
||||
|
||||
|
@ -3,7 +3,7 @@
|
||||
|
||||
### Совместимый с ChatGPT интерфейс
|
||||
|
||||
Также можно использовать такие инструменты, как [TGW](https://github.com/oobabooga/text-generation-webui), [llama.cpp](https://github.com/ggerganov/llama.cpp), [ollama](https://github.com/ollama/ollama), [one-api](https://github.com/songquanpeng/one-api), для развертывания модели, а затем ввести адрес и модель.
|
||||
Также можно использовать такие инструменты, как [llama.cpp](https://github.com/ggerganov/llama.cpp), [ollama](https://github.com/ollama/ollama), [one-api](https://github.com/songquanpeng/one-api), для развертывания модели, а затем ввести адрес и модель.
|
||||
|
||||
Также можно использовать платформы, такие как Kaggle, для развертывания модели в облаке, в этом случае может потребоваться SECRET_KEY, в других случаях можно игнорировать параметр SECRET_KEY.
|
||||
|
||||
|
@ -14,7 +14,7 @@
|
||||
- [Встроенный перевод](/ru/embedtranslate.md)
|
||||
- [Игра в старые игры на виртуальной машине XP и извлечение текста для перевода](/ru/playonxp.md)
|
||||
- [Настройки OCR](/ru/ocrparam.redirect)
|
||||
- [Значения параметров для автоматического выполнения методов OCR](/ru/ocrparam.md)
|
||||
- [Автоматизированный метод выполнения OCR](/ru/ocrparam.md)
|
||||
- [Установка дополнительной языковой поддержки для Windows OCR](/ru/windowsocr.md)
|
||||
- [Что делать, если интеграционный пакет mangaocr не запускается](/ru/mangaocr.md)
|
||||
- [Привязка окна игры в режиме OCR](/ru/gooduseocr.md)
|
||||
|
@ -6,7 +6,7 @@
|
||||
|
||||
**API Key** **必须把API Key设为空,否则会报错**
|
||||
|
||||
**model** 可以在 `https://deepinfra.com/chat` 查看当前可用的模型。截止到撰写文档时,可以免费使用的模型是:`meta-llama/Meta-Llama-3.1-405B-Instruct` `meta-llama/Meta-Llama-3.1-70B-Instruct` `meta-llama/Meta-Llama-3.1-8B-Instruct` `mistralai/Mixtral-8x22B-Instruct-v0.1` `mistralai/Mixtral-8x7B-Instruct-v0.1` `microsoft/WizardLM-2-8x22B` `microsoft/WizardLM-2-7B` `Qwen/Qwen2.5-72B-Instruct` `Qwen/Qwen2-72B-Instruct` `Qwen/Qwen2-7B-Instruct` `microsoft/Phi-3-medium-4k-instruct` `google/gemma-2-27b-it` `openbmb/MiniCPM-Llama3-V-2_5` `mistralai/Mistral-7B-Instruct-v0.3` `lizpreciatior/lzlv_70b_fp16_hf` `openchat/openchat_3.5` `openchat/openchat-3.6-8b` `Phind/Phind-CodeLlama-34B-v2` `Gryphe/MythoMax-L2-13b` `cognitivecomputations/dolphin-2.9.1-llama-3-70b`
|
||||
**model** 可以在 [https://deepinfra.com/chat](https://deepinfra.com/chat) 查看当前可用的模型。截止到撰写文档时,可以免费使用的模型是:`meta-llama/Meta-Llama-3.1-405B-Instruct` `meta-llama/Meta-Llama-3.1-70B-Instruct` `meta-llama/Meta-Llama-3.1-8B-Instruct` `mistralai/Mixtral-8x22B-Instruct-v0.1` `mistralai/Mixtral-8x7B-Instruct-v0.1` `microsoft/WizardLM-2-8x22B` `microsoft/WizardLM-2-7B` `Qwen/Qwen2.5-72B-Instruct` `Qwen/Qwen2-72B-Instruct` `Qwen/Qwen2-7B-Instruct` `microsoft/Phi-3-medium-4k-instruct` `google/gemma-2-27b-it` `openbmb/MiniCPM-Llama3-V-2_5` `mistralai/Mistral-7B-Instruct-v0.3` `lizpreciatior/lzlv_70b_fp16_hf` `openchat/openchat_3.5` `openchat/openchat-3.6-8b` `Phind/Phind-CodeLlama-34B-v2` `Gryphe/MythoMax-L2-13b` `cognitivecomputations/dolphin-2.9.1-llama-3-70b`
|
||||
|
||||
### **cerebras**
|
||||
|
||||
@ -15,6 +15,6 @@
|
||||
|
||||
**model** 支持`llama3.1-8b` `llama3.1-70b`
|
||||
|
||||
**API Key** 在 `https://inference.cerebras.ai/` 选择模型随意发送消息后进行抓包,查看当前 `标头` -> `请求标头` -> `Authorization` 的值,其为 `Bearer demo-xxxxhahaha` ,其中 `demo-xxxxhahaha` 即为API Key
|
||||
**API Key** 在 [https://inference.cerebras.ai](https://inference.cerebras.ai/) 选择模型随意发送消息后进行抓包,查看当前 `标头` -> `请求标头` -> `Authorization` 的值,其为 `Bearer demo-xxxxhahaha` ,其中 `demo-xxxxhahaha` 即为API Key
|
||||
|
||||
![img](https://image.lunatranslator.org/zh/damoxing/cerebras.png)
|
||||
|
@ -54,9 +54,9 @@
|
||||
|
||||
内嵌翻译的原理是在游戏显示文本前,在某个函数中停住游戏,把其中要显示的文本发送给翻译器,等待到翻译后把文本内存修改从翻译的文本,然后让游戏继续运行来显示翻译。因此**当使用的翻译速度较慢时,是一定会导致游戏卡顿的**。可以通过限制等待的时间,来避免翻译过慢导致长时间卡顿。
|
||||
|
||||
**3. 使用最快翻译而非指定翻译**和**内嵌的翻译器**
|
||||
**3. 使用指定翻译器**
|
||||
|
||||
当激活多个翻译源时,可以选择内嵌某个指定的效果最好的翻译,或者使用速度最快的翻译,来减少游戏卡顿
|
||||
当激活多个翻译源时,可以选择内嵌某个指定的效果最好的翻译。若不激活,或指定的翻译器未被激活,则会使用速度最快的翻译,来减少游戏卡顿
|
||||
|
||||
**4. 将汉字转换成繁体/日式汉字**
|
||||
|
||||
|
@ -49,14 +49,6 @@
|
||||
|
||||
**model** https://openrouter.ai/docs/models
|
||||
|
||||
### **Deepbricks**
|
||||
|
||||
**API接口地址** `https://api.deepbricks.ai/v1/chat/completions`
|
||||
|
||||
**API Key** https://deepbricks.ai/api-key
|
||||
|
||||
**model** https://deepbricks.ai/pricing
|
||||
|
||||
### **Mistral AI**
|
||||
|
||||
**API接口地址** `https://api.mistral.ai/v1/chat/completions`
|
||||
|
@ -1,4 +1,4 @@
|
||||
## OCR自动化执行方法的参数含义
|
||||
## OCR自动化执行方法
|
||||
|
||||
### 分析图像更新
|
||||
|
||||
|
@ -15,7 +15,7 @@
|
||||
|
||||
可以将**Sakura大模型**地址和模型填到这个的参数里面使用(相比起来只是多了些预设prompt等参数,其他无区别)
|
||||
|
||||
也可以使用[TGW](https://github.com/oobabooga/text-generation-webui) 、[llama.cpp](https://github.com/ggerganov/llama.cpp) 、[ollama](https://github.com/ollama/ollama)、[one-api](https://github.com/songquanpeng/one-api)之类的工具进行模型的部署,然后将地址和模型填入。
|
||||
也可以使用[llama.cpp](https://github.com/ggerganov/llama.cpp) 、[ollama](https://github.com/ollama/ollama)、[one-api](https://github.com/songquanpeng/one-api)之类的工具进行模型的部署,然后将地址和模型填入。
|
||||
|
||||
也可以使用Kaggle之类的平台来把模型部署到云端,这时可能会需要用到SECRET_KEY,其他时候可以无视SECRET_KEY参数。
|
||||
|
||||
|
@ -14,7 +14,7 @@
|
||||
- [内嵌翻译](/zh/embedtranslate.md)
|
||||
- [在XP虚拟机上玩古老游戏并提取文本翻译](/zh/playonxp.md)
|
||||
- [OCR相关设置](/zh/ocrparam.redirect)
|
||||
- [OCR自动化执行方法的参数含义](/zh/ocrparam.md)
|
||||
- [OCR自动化执行方法](/zh/ocrparam.md)
|
||||
- [WindowsOCR安装额外的语言支持](/zh/windowsocr.md)
|
||||
- [mangaocr整合包无法启动怎么办](/zh/mangaocr.md)
|
||||
- [OCR模式绑定游戏窗口](/zh/gooduseocr.md)
|
||||
|
@ -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 39)
|
||||
set(VERSION_PATCH 2)
|
||||
set(VERSION_MINOR 40)
|
||||
set(VERSION_PATCH 0)
|
||||
|
||||
add_library(pch pch.cpp)
|
||||
target_precompile_headers(pch PUBLIC pch.h)
|
||||
|
Loading…
x
Reference in New Issue
Block a user