mirror of
https://github.com/HIllya51/LunaTranslator.git
synced 2025-01-12 23:23:54 +08:00
.
This commit is contained in:
parent
32825793ec
commit
6d4b9fdaf9
@ -24,7 +24,7 @@ set_target_properties(LunaHostDll PROPERTIES OUTPUT_NAME "LunaHost${bitappendix}
|
||||
target_link_libraries(LunaHostDll pch host ${YY_Thunks_for_WinXP} lang_host)
|
||||
|
||||
if(BUILD_CLI)
|
||||
add_executable(LunaHostCLI LunaHostCLI.cpp ${versioninfohost})
|
||||
add_executable(LunaHostCLI LunaHostCLI.cpp injector.cpp ${versioninfohost})
|
||||
target_precompile_headers(LunaHostCLI REUSE_FROM pch)
|
||||
set_target_properties(LunaHostCLI PROPERTIES OUTPUT_NAME "LunaHostCLI${bitappendix}")
|
||||
target_link_libraries(LunaHostCLI pch host ${YY_Thunks_for_WinXP} lang_host)
|
||||
|
@ -1,6 +1,6 @@
|
||||
|
||||
if(BUILD_GUI)
|
||||
add_executable(LunaHost WIN32 confighelper.cpp controls.cpp main.cpp processlistwindow.cpp LunaHost.cpp window.cpp ../../../exec/luna.rc pluginmanager.cpp Plugin/extensionimpl.cpp Plugin/copyclipboard.cpp QtLoader_inline.cpp app.manifest ${versioninfohost})
|
||||
add_executable(LunaHost WIN32 ../injector.cpp confighelper.cpp controls.cpp main.cpp processlistwindow.cpp LunaHost.cpp window.cpp ../../../exec/luna.rc pluginmanager.cpp Plugin/extensionimpl.cpp Plugin/copyclipboard.cpp QtLoader_inline.cpp app.manifest ${versioninfohost})
|
||||
target_precompile_headers(LunaHost REUSE_FROM pch)
|
||||
set_target_properties(LunaHost PROPERTIES OUTPUT_NAME "LunaHost${bitappendix}")
|
||||
target_link_libraries(LunaHost comctl32 winhttp pch host nlohmann ${YY_Thunks_for_WinXP} lang_ui)
|
||||
|
@ -50,10 +50,12 @@ C_LUNA_API void Luna_Start(ProcessEvent Connect, ProcessEvent Disconnect, Thread
|
||||
checkoption(embed, [=](const std::wstring &output, const ThreadParam &tp)
|
||||
{ embed(output.c_str(), tp); }));
|
||||
}
|
||||
#if 0
|
||||
C_LUNA_API void Luna_Inject(DWORD pid, LPCWSTR basepath)
|
||||
{
|
||||
Host::InjectProcess(pid, basepath);
|
||||
}
|
||||
#endif
|
||||
C_LUNA_API bool Luna_CreatePipeAndCheck(DWORD pid)
|
||||
{
|
||||
return Host::CreatePipeAndCheck(pid);
|
||||
|
@ -1,6 +1,4 @@
|
||||
#include "host.h"
|
||||
typedef LONG NTSTATUS;
|
||||
#include "yapi.hpp"
|
||||
#define SEARCH_SJIS_UNSAFE 0
|
||||
namespace
|
||||
{
|
||||
@ -30,10 +28,7 @@ namespace
|
||||
.detach();
|
||||
}
|
||||
|
||||
Host::HookEventHandler OnHookFound = [](HookParam hp, std::wstring text)
|
||||
{
|
||||
Host::AddConsoleOutput(std::wstring(hp.hookcode) + L": " + text);
|
||||
};
|
||||
Host::HookEventHandler OnHookFound = [](auto, auto) {};
|
||||
|
||||
CommonSharedMem *commonsharedmem;
|
||||
|
||||
@ -72,15 +67,6 @@ namespace
|
||||
textThreadsByParams->erase(thread->tp);
|
||||
}
|
||||
}
|
||||
BOOL Is64BitProcess(HANDLE ph)
|
||||
{
|
||||
BOOL f64bitProc = FALSE;
|
||||
if (detail::Is64BitOS())
|
||||
{
|
||||
f64bitProc = !(IsWow64Process(ph, &f64bitProc) && f64bitProc);
|
||||
}
|
||||
return f64bitProc;
|
||||
}
|
||||
void __handlepipethread(HANDLE hookPipe, HANDLE hostPipe, HANDLE pipeAvailableEvent)
|
||||
{
|
||||
ConnectNamedPipe(hookPipe, nullptr);
|
||||
@ -281,50 +267,6 @@ namespace Host
|
||||
embedcallback = [=](auto &&...args)
|
||||
{std::lock_guard _(outputmutex);embed.value()(std::forward<decltype(args)>(args)...); };
|
||||
}
|
||||
constexpr auto PROCESS_INJECT_ACCESS = (PROCESS_CREATE_THREAD |
|
||||
PROCESS_QUERY_INFORMATION |
|
||||
PROCESS_VM_OPERATION |
|
||||
PROCESS_VM_WRITE |
|
||||
PROCESS_VM_READ);
|
||||
bool SafeInject(HANDLE process, const std::wstring &location)
|
||||
{
|
||||
// #ifdef _WIN64
|
||||
#if 0
|
||||
BOOL invalidProcess = FALSE;
|
||||
IsWow64Process(process, &invalidProcess);
|
||||
if (invalidProcess) return AddConsoleOutput(NEED_32_BIT);
|
||||
#endif
|
||||
bool succ = false;
|
||||
if (LPVOID remoteData = VirtualAllocEx(process, nullptr, (location.size() + 1) * sizeof(wchar_t), MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE))
|
||||
{
|
||||
WriteProcessMemory(process, remoteData, location.c_str(), (location.size() + 1) * sizeof(wchar_t), nullptr);
|
||||
if (AutoHandle<> thread = CreateRemoteThread(process, nullptr, 0, (LPTHREAD_START_ROUTINE)LoadLibraryW, remoteData, 0, nullptr))
|
||||
{
|
||||
WaitForSingleObject(thread, INFINITE);
|
||||
succ = true;
|
||||
}
|
||||
else if (GetLastError() == ERROR_ACCESS_DENIED)
|
||||
{
|
||||
AddConsoleOutput(TR[NEED_64_BIT]); // https://stackoverflow.com/questions/16091141/createremotethread-access-denied
|
||||
succ = false;
|
||||
}
|
||||
VirtualFreeEx(process, remoteData, 0, MEM_RELEASE);
|
||||
}
|
||||
return succ;
|
||||
}
|
||||
bool UnSafeInject(HANDLE process, const std::wstring &location)
|
||||
{
|
||||
|
||||
DWORD64 injectedDll;
|
||||
yapi::YAPICall LoadLibraryW(process, _T("kernel32.dll"), "LoadLibraryW");
|
||||
if (x64)
|
||||
injectedDll = LoadLibraryW.Dw64()(location.c_str());
|
||||
else
|
||||
injectedDll = LoadLibraryW(location.c_str());
|
||||
if (injectedDll)
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
bool CheckProcess(DWORD processId)
|
||||
{
|
||||
if (processId == GetCurrentProcessId())
|
||||
@ -338,43 +280,11 @@ namespace Host
|
||||
}
|
||||
return true;
|
||||
}
|
||||
bool InjectDll(DWORD processId, const std::wstring locationX)
|
||||
{
|
||||
AutoHandle<> process = OpenProcess(PROCESS_INJECT_ACCESS, FALSE, processId);
|
||||
if (!process)
|
||||
return false;
|
||||
bool proc64 = Is64BitProcess(process);
|
||||
auto dllname = proc64 ? LUNA_HOOK_DLL_64 : LUNA_HOOK_DLL_32;
|
||||
std::wstring location = locationX.size() ? (locationX + L"\\" + dllname) : std::filesystem::path(getModuleFilename().value()).replace_filename(dllname);
|
||||
if (proc64 == x64)
|
||||
{
|
||||
return (SafeInject(process, location));
|
||||
}
|
||||
else
|
||||
{
|
||||
return (UnSafeInject(process, location));
|
||||
}
|
||||
}
|
||||
bool CreatePipeAndCheck(DWORD processId)
|
||||
{
|
||||
CreatePipe(processId);
|
||||
return CheckProcess(processId);
|
||||
}
|
||||
|
||||
void InjectProcess(DWORD processId, const std::wstring locationX)
|
||||
{
|
||||
|
||||
auto check = CreatePipeAndCheck(processId);
|
||||
if (check == false)
|
||||
return;
|
||||
|
||||
std::thread([=]
|
||||
{
|
||||
if(InjectDll(processId,locationX))return ;
|
||||
AddConsoleOutput(TR[INJECT_FAILED]); })
|
||||
.detach();
|
||||
}
|
||||
|
||||
void DetachProcess(DWORD processId)
|
||||
{
|
||||
auto &prs = processRecordsByIds.Acquire().contents;
|
||||
|
97
cpp/LunaHook/LunaHost/injector.cpp
Normal file
97
cpp/LunaHook/LunaHost/injector.cpp
Normal file
@ -0,0 +1,97 @@
|
||||
|
||||
typedef LONG NTSTATUS;
|
||||
#include "yapi.hpp"
|
||||
#include "host.h"
|
||||
namespace
|
||||
{
|
||||
|
||||
constexpr auto PROCESS_INJECT_ACCESS = (PROCESS_CREATE_THREAD |
|
||||
PROCESS_QUERY_INFORMATION |
|
||||
PROCESS_VM_OPERATION |
|
||||
PROCESS_VM_WRITE |
|
||||
PROCESS_VM_READ);
|
||||
bool SafeInject(HANDLE process, const std::wstring &location)
|
||||
{
|
||||
// #ifdef _WIN64
|
||||
#if 0
|
||||
BOOL invalidProcess = FALSE;
|
||||
IsWow64Process(process, &invalidProcess);
|
||||
if (invalidProcess) return AddConsoleOutput(NEED_32_BIT);
|
||||
#endif
|
||||
bool succ = false;
|
||||
if (LPVOID remoteData = VirtualAllocEx(process, nullptr, (location.size() + 1) * sizeof(wchar_t), MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE))
|
||||
{
|
||||
WriteProcessMemory(process, remoteData, location.c_str(), (location.size() + 1) * sizeof(wchar_t), nullptr);
|
||||
if (AutoHandle<> thread = CreateRemoteThread(process, nullptr, 0, (LPTHREAD_START_ROUTINE)LoadLibraryW, remoteData, 0, nullptr))
|
||||
{
|
||||
WaitForSingleObject(thread, INFINITE);
|
||||
succ = true;
|
||||
}
|
||||
else if (GetLastError() == ERROR_ACCESS_DENIED)
|
||||
{
|
||||
Host::AddConsoleOutput(TR[NEED_64_BIT]); // https://stackoverflow.com/questions/16091141/createremotethread-access-denied
|
||||
succ = false;
|
||||
}
|
||||
VirtualFreeEx(process, remoteData, 0, MEM_RELEASE);
|
||||
}
|
||||
return succ;
|
||||
}
|
||||
|
||||
bool UnSafeInject(HANDLE process, const std::wstring &location)
|
||||
{
|
||||
|
||||
DWORD64 injectedDll;
|
||||
yapi::YAPICall LoadLibraryW(process, _T("kernel32.dll"), "LoadLibraryW");
|
||||
if (x64)
|
||||
injectedDll = LoadLibraryW.Dw64()(location.c_str());
|
||||
else
|
||||
injectedDll = LoadLibraryW(location.c_str());
|
||||
if (injectedDll)
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
BOOL Is64BitProcess(HANDLE ph)
|
||||
{
|
||||
BOOL f64bitProc = FALSE;
|
||||
if (detail::Is64BitOS())
|
||||
{
|
||||
f64bitProc = !(IsWow64Process(ph, &f64bitProc) && f64bitProc);
|
||||
}
|
||||
return f64bitProc;
|
||||
}
|
||||
bool InjectDll(DWORD processId, const std::wstring locationX)
|
||||
{
|
||||
AutoHandle<> process = OpenProcess(PROCESS_INJECT_ACCESS, FALSE, processId);
|
||||
if (!process)
|
||||
return false;
|
||||
bool proc64 = Is64BitProcess(process);
|
||||
auto dllname = proc64 ? LUNA_HOOK_DLL_64 : LUNA_HOOK_DLL_32;
|
||||
std::wstring location = locationX.size() ? (locationX + L"\\" + dllname) : std::filesystem::path(getModuleFilename().value()).replace_filename(dllname);
|
||||
if (proc64 == x64)
|
||||
{
|
||||
return (SafeInject(process, location));
|
||||
}
|
||||
else
|
||||
{
|
||||
return (UnSafeInject(process, location));
|
||||
}
|
||||
}
|
||||
}
|
||||
namespace Host
|
||||
{
|
||||
|
||||
void InjectProcess(DWORD processId, const std::wstring locationX)
|
||||
{
|
||||
|
||||
auto check = Host::CreatePipeAndCheck(processId);
|
||||
if (check == false)
|
||||
return;
|
||||
|
||||
std::thread([=]
|
||||
{
|
||||
if(InjectDll(processId,locationX))return ;
|
||||
Host::AddConsoleOutput(TR[INJECT_FAILED]); })
|
||||
.detach();
|
||||
}
|
||||
|
||||
}
|
@ -1,7 +1,7 @@
|
||||
|
||||
set(VERSION_MAJOR 6)
|
||||
set(VERSION_MINOR 16)
|
||||
set(VERSION_PATCH 10)
|
||||
set(VERSION_PATCH 11)
|
||||
set(VERSION_REVISION 0)
|
||||
set(LUNA_VERSION "{${VERSION_MAJOR},${VERSION_MINOR},${VERSION_PATCH},${VERSION_REVISION}}")
|
||||
add_library(VERSION_DEF ${CMAKE_CURRENT_LIST_DIR}/version_def.cpp)
|
||||
|
@ -32,25 +32,6 @@
|
||||
|
||||
Received historical text is cached. When viewing the content of a text item in the text selection window, the historical cached text is queried. If there are too many text items or the text refreshes repeatedly, it will cause too much cached text, making it more sluggish to view text (sometimes even when not viewing). In fact, most of the cached text here is useless; useful historical text can be viewed in historical translations. You can arbitrarily lower this value (default is 1000000, but it can be lowered to 1000).
|
||||
|
||||
1. #### Use YAPI Injection
|
||||
|
||||
This option can sometimes slightly improve comfort, but it may have compatibility issues, so it is not recommended.
|
||||
|
||||
<details>
|
||||
<summary>Detailed Explanation</summary>
|
||||
When injecting a DLL into a game, the process injecting the DLL and the process being injected usually need to have the same bitness.
|
||||
|
||||
To solve this problem, Luna generally uses shareddllproxy32 and shareddllproxy64 to inject DLLs into games of different bitness.
|
||||
|
||||
However, when this proxy process runs, it may be intercepted by antivirus software for a while, causing stuttering or failure to run and needing to run again. In this case, you can use YAPI to directly use the main process of Luna for DLL injection.
|
||||
|
||||
In YAPI, if the game process and the Luna process have the same bitness, it will inject normally; if the bitness is different, it will use a special shellcode to achieve injection. This is also one reason why LunaHost32.dll is more likely to be detected by antivirus software.
|
||||
|
||||
Using YAPI injection is relatively smoother. However, it may be incompatible on ARM tablets.
|
||||
|
||||
When Luna runs with low privileges and the game runs with administrator privileges, this option will be ineffective, and it will fall back to the original mode and request permissions for injection.
|
||||
</details>
|
||||
|
||||
## Default Settings and Game-specific Settings
|
||||
## Dedicated Game Settings
|
||||
|
||||
|
@ -32,25 +32,6 @@
|
||||
|
||||
受信した履歴テキストはキャッシュされます。テキスト選択ウィンドウでテキスト項目の内容を表示する場合、履歴キャッシュテキストがクエリされます。テキスト項目が多すぎるか、テキストが繰り返しリフレッシュされると、キャッシュされたテキストが多すぎて、テキストの表示が遅くなります(時には表示していないときでも)。実際、ここでキャッシュされているテキストのほとんどは無駄です。有用な履歴テキストは履歴翻訳で表示できます。この値を任意に下げることができます(デフォルトは1000000ですが、1000に下げることができます)。
|
||||
|
||||
1. #### YAPIインジェクションの使用
|
||||
|
||||
このオプションは、快適さを少し向上させることがありますが、互換性の問題があるため、推奨されません。
|
||||
|
||||
<details>
|
||||
<summary>詳細な説明</summary>
|
||||
ゲームにDLLを注入する場合、通常、DLLを注入するプロセスと注入されるプロセスは同じビット数である必要があります。
|
||||
|
||||
この問題を解決するために、Lunaは通常、shareddllproxy32とshareddllproxy64を使用して、異なるビット数のゲームにDLLを注入します。
|
||||
|
||||
ただし、このプロキシプロセスが実行されると、ウイルス対策ソフトウェアによって一時的にインターセプトされ、スタッタリングや実行失敗が発生し、再度実行する必要があります。この場合、YAPIを使用してLunaのメインプロセスを使用してDLLを注入できます。
|
||||
|
||||
YAPIでは、ゲームプロセスとLunaプロセスが同じビット数である場合、通常の注入が行われます。ビット数が異なる場合、特別なシェルコードを使用して注入を実現します。これが、LunaHost32.dllがウイルス対策ソフトウェアによって検出されやすい理由の1つです。
|
||||
|
||||
YAPIインジェクションを使用すると、比較的スムーズになります。ただし、ARMタブレットでは互換性がない場合があります。
|
||||
|
||||
Lunaが低権限で実行され、ゲームが管理者権限で実行されている場合、このオプションは無効になり、元のモードにフォールバックして注入のための権限を要求します。
|
||||
</details>
|
||||
|
||||
## デフォルト設定とゲーム固有の設定
|
||||
## 専用ゲーム設定
|
||||
|
||||
|
@ -32,26 +32,6 @@
|
||||
|
||||
接收到的历史文本会被缓存下来,当在文本选择窗口中,查看某条文本的内容时,会查询历史缓存文本。如果文本条目过多,或因文本反复刷新,会导致缓存的文本过多,查看文本时会变得较为卡顿(有时甚至不查看时也会卡顿)。实际上这里缓存的大部分都是无用文本,有用的历史文本可以在历史翻译里面查看,可以将这个数值随意调低(默认是1000000,但其实调到1000就行)。
|
||||
|
||||
1. #### 使用YAPI注入
|
||||
|
||||
这个选项有时可以稍微提高一下舒适度,但可能有兼容性问题,因此不推荐使用。
|
||||
|
||||
<details>
|
||||
<summary>具体解释</summary>
|
||||
向游戏注入Dll时,一般注入Dll的进程和被注入Dll的进程需要有相同的位数。
|
||||
|
||||
为解决这个问题,Luna一般通过shareddllproxy32和shareddllproxy64来分别向不同位数的游戏来注入Dll。
|
||||
|
||||
但这个代理进程运行时,可能会被杀毒软件拦截一会儿,导致卡顿、或运行失败要重新再次运行。这时,可以用YAPI来直接使用Luna的主进程来进行Dll注入。
|
||||
|
||||
YAPI中如果游戏进程和Luna进程的位数相同,则会正常注入;若位数不同,则会使用一段特殊的shellcode来实现注入。这也是LunaHost32.dll更容易被杀软查杀的一个原因。
|
||||
|
||||
使用YAPI注入相对来说会更加流畅一丢丢。不过在Arm平板上使用时,可能会不兼容。
|
||||
|
||||
当Luna运行在低权限,而游戏是管理员权限时,这个选项会失效,会回退到原本模式并请求权限来进行注入。
|
||||
</details>
|
||||
|
||||
|
||||
## 游戏的专用设置
|
||||
|
||||
1. #### 额外的钩子
|
||||
|
@ -194,10 +194,6 @@ def gethookgrid(self):
|
||||
2,
|
||||
),
|
||||
],
|
||||
[
|
||||
"使用YAPI注入",
|
||||
D_getsimpleswitch(globalconfig, "use_yapi"),
|
||||
],
|
||||
]
|
||||
|
||||
return grids
|
||||
|
@ -508,10 +508,6 @@ def internal(self):
|
||||
"选取OCR范围后显示范围框",
|
||||
D_getsimpleswitch(globalconfig, "showrangeafterrangeselect"),
|
||||
],
|
||||
[
|
||||
"选取OCR范围后自动绑定窗口",
|
||||
D_getsimpleswitch(globalconfig, "ocrautobindhwnd"),
|
||||
],
|
||||
[
|
||||
"选取OCR范围时不透明度",
|
||||
(
|
||||
|
@ -70,28 +70,7 @@ class ocrtext(basetext):
|
||||
_r.traceoffsetsignal.emit(curr)
|
||||
|
||||
def setrect(self, rect):
|
||||
p1, p2 = rect
|
||||
h1 = windows.WindowFromPoint(windows.POINT(*p1))
|
||||
h2 = windows.WindowFromPoint(windows.POINT(*p2))
|
||||
h3 = windows.WindowFromPoint(windows.POINT(p1[0], p2[1]))
|
||||
h4 = windows.WindowFromPoint(windows.POINT(p2[0], p1[1]))
|
||||
|
||||
self.range_ui[-1].setrect(rect)
|
||||
if not globalconfig["ocrautobindhwnd"]:
|
||||
return
|
||||
if gobject.baseobject.hwnd:
|
||||
return
|
||||
usehwnds = []
|
||||
for _ in (h1, h2, h3, h4):
|
||||
if windows.GetWindowThreadProcessId(_) == os.getpid():
|
||||
continue
|
||||
usehwnds.append(_)
|
||||
|
||||
if not usehwnds:
|
||||
return
|
||||
hwnd, count = Counter(usehwnds).most_common()[0]
|
||||
if count == len(usehwnds):
|
||||
gobject.baseobject.hwnd = hwnd
|
||||
|
||||
def setstyle(self):
|
||||
[_.setstyle() for _ in self.range_ui]
|
||||
|
@ -12,14 +12,13 @@ from myutils.config import (
|
||||
)
|
||||
from textsource.textsourcebase import basetext
|
||||
from myutils.utils import (
|
||||
checkchaos,
|
||||
getfilemd5,
|
||||
getlangtgt,
|
||||
getlanguagespace,
|
||||
kanjitrans,
|
||||
safe_escape,
|
||||
)
|
||||
from myutils.hwnd import injectdll, test_injectable, ListProcess, getpidexe
|
||||
from myutils.hwnd import injectdll, ListProcess, getpidexe
|
||||
from myutils.wrapper import threader
|
||||
from traceback import print_exc
|
||||
import subprocess, requests
|
||||
@ -208,8 +207,6 @@ class texthook(basetext):
|
||||
c_void_p,
|
||||
c_void_p,
|
||||
)
|
||||
self.Luna_Inject = LunaHost.Luna_Inject
|
||||
self.Luna_Inject.argtypes = DWORD, LPCWSTR
|
||||
self.Luna_CreatePipeAndCheck = LunaHost.Luna_CreatePipeAndCheck
|
||||
self.Luna_CreatePipeAndCheck.argtypes = (DWORD,)
|
||||
self.Luna_CreatePipeAndCheck.restype = c_bool
|
||||
@ -390,14 +387,10 @@ class texthook(basetext):
|
||||
self.autohookmonitorthread()
|
||||
|
||||
def start_unsafe(self, pids):
|
||||
caninject = test_injectable(pids)
|
||||
injectpids = []
|
||||
for pid in pids:
|
||||
if caninject and globalconfig["use_yapi"]:
|
||||
self.Luna_Inject(pid, os.path.abspath("./files/plugins/LunaHook"))
|
||||
else:
|
||||
if self.Luna_CreatePipeAndCheck(pid):
|
||||
injectpids.append(pid)
|
||||
if self.Luna_CreatePipeAndCheck(pid):
|
||||
injectpids.append(pid)
|
||||
if len(injectpids):
|
||||
arch = ["32", "64"][self.is64bit]
|
||||
dll = os.path.abspath(
|
||||
|
@ -6,7 +6,6 @@
|
||||
"excule_from_exe": [],
|
||||
"only_from_exe": [],
|
||||
"showrangeafterrangeselect": true,
|
||||
"ocrautobindhwnd": false,
|
||||
"autodisappear": false,
|
||||
"WindowBackdrop": 3,
|
||||
"WindowEffect": 0,
|
||||
@ -458,7 +457,6 @@
|
||||
"isshowhira": true,
|
||||
"locktools": true,
|
||||
"showfanyisource": false,
|
||||
"use_yapi": false,
|
||||
"showfanyi": true,
|
||||
"autoread": false,
|
||||
"ttsnointerrupt": false,
|
||||
|
@ -382,15 +382,12 @@
|
||||
"新": "جديد .",
|
||||
"缩放系数": "معامل التكبير",
|
||||
"显示日语注音": "عرض صوتي ياباني",
|
||||
"注音颜色": "لون صوتي",
|
||||
"平假名": "هيراغانا",
|
||||
"片假名": "كاتاكانا",
|
||||
"罗马音": "نغمة رومانية",
|
||||
"日语注音方案": "نظام صوتي ياباني",
|
||||
"Sakura大模型": "ساكورا غراند موديل",
|
||||
"Magpie路径": "ماغبي تريل",
|
||||
"利用上文信息翻译(通常会有一定的效果提升,但会导致变慢)": "استخدام المعلومات الواردة أعلاه في الترجمة ( عادة ما يكون هناك بعض التحسن ، ولكن يمكن أن يؤدي إلى إبطاء )",
|
||||
"使用YAPI注入": "استخدام حقن YAPI",
|
||||
"窗口缩放": "نافذة التكبير",
|
||||
"缩放方式": "طريقة التكبير",
|
||||
"去除重复字符": "إزالة الأحرف المكررة",
|
||||
@ -665,7 +662,6 @@
|
||||
"文件": "الوثائق",
|
||||
"最大结果条数": "أقصى عدد من النتائج",
|
||||
"再次进行OCR": "التعرف الضوئي على الحروف مرة أخرى",
|
||||
"选取OCR范围后自动绑定窗口": "تلقائيا ملزمة نافذة بعد تحديد نطاق التعرف الضوئي على الحروف",
|
||||
"鼠标键盘触发+等待稳定": "الماوس لوحة المفاتيح الزناد + انتظار الاستقرار",
|
||||
"匈牙利语": "اللغة الهنغارية",
|
||||
"触发事件": "الحدث الزناد",
|
||||
|
@ -382,15 +382,12 @@
|
||||
"新": "新",
|
||||
"缩放系数": "縮放係數",
|
||||
"显示日语注音": "顯示日語讀音標註",
|
||||
"注音颜色": "讀音顏色",
|
||||
"平假名": "平假名",
|
||||
"片假名": "片假名",
|
||||
"罗马音": "羅馬音",
|
||||
"日语注音方案": "日語讀音標註方案",
|
||||
"Sakura大模型": "Sakura 大模型",
|
||||
"Magpie路径": "Magpie 路徑",
|
||||
"利用上文信息翻译(通常会有一定的效果提升,但会导致变慢)": "利用上文資訊翻譯(通常會有一定的效果提升,但會導致變慢)",
|
||||
"使用YAPI注入": "使用 YAPI 注入",
|
||||
"窗口缩放": "視窗縮放",
|
||||
"缩放方式": "縮放方式",
|
||||
"去除重复字符": "去除重複字元",
|
||||
@ -665,7 +662,6 @@
|
||||
"文件": "文件",
|
||||
"最大结果条数": "最大結果個數",
|
||||
"再次进行OCR": "再次進行 OCR",
|
||||
"选取OCR范围后自动绑定窗口": "選取 OCR 範圍後自動綁定視窗",
|
||||
"鼠标键盘触发+等待稳定": "滑鼠鍵盤觸發+等待穩定",
|
||||
"匈牙利语": "匈牙利語",
|
||||
"触发事件": "觸發事件",
|
||||
|
@ -389,16 +389,13 @@
|
||||
"缩放系数": "Skalační faktor",
|
||||
"语言包": "Jazykový balíček",
|
||||
"显示日语注音": "Zobrazit japonské fonetické anotace",
|
||||
"注音颜色": "Fonetická barva",
|
||||
"平假名": "HiraganaName",
|
||||
"片假名": "KatakanaName",
|
||||
"罗马音": "Výslovnost Roman",
|
||||
"日语注音方案": "Schéma japonských fonetických abeced",
|
||||
"Sakura大模型": "Velký model Sakura",
|
||||
"Magpie路径": "Stříbrná cesta",
|
||||
"利用上文信息翻译(通常会有一定的效果提升,但会导致变慢)": "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",
|
||||
"窗口缩放": "Měřítko okna",
|
||||
"缩放方式": "Metoda škálování",
|
||||
"去除重复字符": "Odstranit duplicitní znaky",
|
||||
@ -665,7 +662,6 @@
|
||||
"文件": "soubor",
|
||||
"最大结果条数": "Maximální počet výsledků",
|
||||
"再次进行OCR": "Proveďte znovu OCR",
|
||||
"选取OCR范围后自动绑定窗口": "Automaticky vázat okno po výběru rozsahu OCR",
|
||||
"鼠标键盘触发+等待稳定": "Spouštěč myši a klávesnice+čekání na stabilizaci",
|
||||
"匈牙利语": "Maďarština",
|
||||
"触发事件": "Spouštěcí událost",
|
||||
|
@ -389,16 +389,13 @@
|
||||
"缩放系数": "Skalierungsfaktor",
|
||||
"语言包": "Sprachpaket",
|
||||
"显示日语注音": "Japanische phonetische Anmerkungen anzeigen",
|
||||
"注音颜色": "Phonetische Farbe",
|
||||
"平假名": "HiraganaName",
|
||||
"片假名": "Katakana",
|
||||
"罗马音": "Aussprache von Roman",
|
||||
"日语注音方案": "Japanisches Phonetisches Alphabet Schema",
|
||||
"Sakura大模型": "Sakura Großes Modell",
|
||||
"Magpie路径": "Magpie Path",
|
||||
"利用上文信息翻译(通常会有一定的效果提升,但会导致变慢)": "Ü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",
|
||||
"窗口缩放": "Fensterskalierung",
|
||||
"缩放方式": "Skalierungsmethode",
|
||||
"去除重复字符": "Doppelte Zeichen entfernen",
|
||||
@ -665,7 +662,6 @@
|
||||
"文件": "Datei",
|
||||
"最大结果条数": "Maximale Anzahl der Ergebnisse",
|
||||
"再次进行OCR": "OCR erneut ausführen",
|
||||
"选取OCR范围后自动绑定窗口": "Fenster nach Auswahl des OCR-Bereichs automatisch binden",
|
||||
"鼠标键盘触发+等待稳定": "Maus und Tastatur Trigger+warten auf Stabilisierung",
|
||||
"匈牙利语": "Ungarische Sprache",
|
||||
"触发事件": "Auslöseereignis",
|
||||
|
@ -381,15 +381,12 @@
|
||||
"新": "New",
|
||||
"缩放系数": "Scale Factor",
|
||||
"显示日语注音": "Show Furigana",
|
||||
"注音颜色": "Furigana Color",
|
||||
"平假名": "ひらがな (Hiragana)",
|
||||
"片假名": "カタカナ (Katakana)",
|
||||
"罗马音": "Romaji",
|
||||
"日语注音方案": "Phonetic Guide (Furigana)",
|
||||
"Sakura大模型": "Sakura Large Model",
|
||||
"Magpie路径": "Magpie Path",
|
||||
"利用上文信息翻译(通常会有一定的效果提升,但会导致变慢)": "Enable Context-Aware Translation (Improves quality by using previous text for translation context, but may be slower)",
|
||||
"使用YAPI注入": "Use YAPI Injection",
|
||||
"窗口缩放": "Window Scaling",
|
||||
"缩放方式": "Scaling Method",
|
||||
"去除重复字符": "Remove Duplicate Characters",
|
||||
@ -665,7 +662,6 @@
|
||||
"文件": "file",
|
||||
"最大结果条数": "Maximum number of results",
|
||||
"再次进行OCR": "Perform OCR again",
|
||||
"选取OCR范围后自动绑定窗口": "Automatically bind window after selecting OCR range",
|
||||
"鼠标键盘触发+等待稳定": "Mouse and keyboard trigger+waiting for stabilization",
|
||||
"匈牙利语": "Hungarian language",
|
||||
"触发事件": "Trigger event",
|
||||
|
@ -382,15 +382,12 @@
|
||||
"新": "Nuevo",
|
||||
"缩放系数": "Coeficiente de escala",
|
||||
"显示日语注音": "Muestra la fonética japonesa",
|
||||
"注音颜色": "Color de la nota",
|
||||
"平假名": "Hirayama",
|
||||
"片假名": "Seudónimo de película",
|
||||
"罗马音": "Acento Romano",
|
||||
"日语注音方案": "Programa de fonética japonesa",
|
||||
"Sakura大模型": "Gran modelo Sakura",
|
||||
"Magpie路径": "Ruta magpie",
|
||||
"利用上文信息翻译(通常会有一定的效果提升,但会导致变慢)": "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",
|
||||
"缩放方式": "Modo de zoom",
|
||||
"去除重复字符": "Eliminar caracteres duplicados",
|
||||
@ -665,7 +662,6 @@
|
||||
"文件": "Documentos",
|
||||
"最大结果条数": "Número máximo de resultados",
|
||||
"再次进行OCR": "Volver a realizar OCR",
|
||||
"选取OCR范围后自动绑定窗口": "Vincular automáticamente la ventana después de seleccionar el rango OCR",
|
||||
"鼠标键盘触发+等待稳定": "Activación del ratón y el teclado + espera para estabilizarse",
|
||||
"匈牙利语": "Húngaro",
|
||||
"触发事件": "Evento desencadenante",
|
||||
|
@ -382,15 +382,12 @@
|
||||
"新": "Nouveau",
|
||||
"缩放系数": "Facteur de zoom",
|
||||
"显示日语注音": "Afficher les notes en japonais",
|
||||
"注音颜色": "Couleur d'accent",
|
||||
"平假名": "Hiragana",
|
||||
"片假名": "Nom du film",
|
||||
"罗马音": "Voix romaine",
|
||||
"日语注音方案": "Programme d'accent japonais",
|
||||
"Sakura大模型": "Sakura Grand Modèle",
|
||||
"Magpie路径": "Le chemin Magpie",
|
||||
"利用上文信息翻译(通常会有一定的效果提升,但会导致变慢)": "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",
|
||||
"缩放方式": "Mode de zoom",
|
||||
"去除重复字符": "Supprimer les caractères dupliqués",
|
||||
@ -665,7 +662,6 @@
|
||||
"文件": "Documents",
|
||||
"最大结果条数": "Nombre maximal de barres de résultats",
|
||||
"再次进行OCR": "OCR à nouveau",
|
||||
"选取OCR范围后自动绑定窗口": "Fenêtre de liaison automatique après sélection de la plage ocr",
|
||||
"鼠标键盘触发+等待稳定": "Déclenchement du clavier de la souris + attente de stabilisation",
|
||||
"匈牙利语": "Hongrois",
|
||||
"触发事件": "Événements déclenchés",
|
||||
|
@ -382,15 +382,12 @@
|
||||
"新": "nuovo",
|
||||
"缩放系数": "Fattore di scala",
|
||||
"显示日语注音": "Mostra pinyin giapponese",
|
||||
"注音颜色": "Colore pinyin",
|
||||
"平假名": "Hiragana",
|
||||
"片假名": "Katakana",
|
||||
"罗马音": "Suono romanico",
|
||||
"日语注音方案": "Schema fonetico giapponese",
|
||||
"Sakura大模型": "Modello Sakura Large",
|
||||
"Magpie路径": "Percorso magpie",
|
||||
"利用上文信息翻译(通常会有一定的效果提升,但会导致变慢)": "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",
|
||||
"缩放方式": "Metodo zoom",
|
||||
"去除重复字符": "Rimuovi caratteri duplicati",
|
||||
@ -665,7 +662,6 @@
|
||||
"文件": "file",
|
||||
"最大结果条数": "Numero massimo di risultati",
|
||||
"再次进行OCR": "Esegui nuovamente OCR",
|
||||
"选取OCR范围后自动绑定窗口": "Associa automaticamente la finestra dopo aver selezionato l'intervallo OCR",
|
||||
"鼠标键盘触发+等待稳定": "Mouse e tastiera trigger + attesa di stabilizzazione",
|
||||
"匈牙利语": "Lingua ungherese",
|
||||
"触发事件": "Evento di attivazione",
|
||||
|
@ -382,15 +382,12 @@
|
||||
"新": "新規",
|
||||
"缩放系数": "スケーリング係数",
|
||||
"显示日语注音": "日本語のルビを表示",
|
||||
"注音颜色": "ルビの色",
|
||||
"平假名": "ひらがな",
|
||||
"片假名": "カタカナ",
|
||||
"罗马音": "ローマ字",
|
||||
"日语注音方案": "日本語の表記方法",
|
||||
"Sakura大模型": "Sakuraビッグモデル",
|
||||
"Magpie路径": "Magpieパス",
|
||||
"利用上文信息翻译(通常会有一定的效果提升,但会导致变慢)": "上記の情報翻訳を利用する(通常は一定の効果が上がるが、遅くなる)",
|
||||
"使用YAPI注入": "YAPI注入を使用する",
|
||||
"窗口缩放": "ウィンドウのズーム",
|
||||
"缩放方式": "スケール方法",
|
||||
"去除重复字符": "繰り返し文字を削除",
|
||||
@ -665,7 +662,6 @@
|
||||
"文件": "ファイル",
|
||||
"最大结果条数": "最大結果バー数",
|
||||
"再次进行OCR": "OCRを再実行",
|
||||
"选取OCR范围后自动绑定窗口": "OCR範囲を選択するとウィンドウが自動的にバインドされます",
|
||||
"鼠标键盘触发+等待稳定": "マウスのキーボードトリガ+待機安定",
|
||||
"匈牙利语": "ハンガリー語",
|
||||
"触发事件": "イベントのトリガー",
|
||||
|
@ -382,15 +382,12 @@
|
||||
"新": "새",
|
||||
"缩放系数": "배율 계수",
|
||||
"显示日语注音": "일본어 메모 표시",
|
||||
"注音颜色": "주음 색상",
|
||||
"平假名": "히라가나",
|
||||
"片假名": "가명",
|
||||
"罗马音": "로마음",
|
||||
"日语注音方案": "일본어 주음 방안",
|
||||
"Sakura大模型": "Sakura 대형 모델",
|
||||
"Magpie路径": "Magpie 경로",
|
||||
"利用上文信息翻译(通常会有一定的效果提升,但会导致变慢)": "위의 정보를 사용하여 번역 (일반적으로 효과가 향상되지만 느려질 수 있음)",
|
||||
"使用YAPI注入": "YAPI 주입 사용",
|
||||
"窗口缩放": "창 크기 조절",
|
||||
"缩放方式": "배율 조정 방법",
|
||||
"去除重复字符": "중복 문자 제거",
|
||||
@ -665,7 +662,6 @@
|
||||
"文件": "파일",
|
||||
"最大结果条数": "최대 결과 개수",
|
||||
"再次进行OCR": "다시 OCR을 진행하도록 하겠습니다.",
|
||||
"选取OCR范围后自动绑定窗口": "OCR 범위 선택 후 창 자동 바인딩",
|
||||
"鼠标键盘触发+等待稳定": "마우스 키보드 트리거 + 안정 대기 중",
|
||||
"匈牙利语": "헝가리어",
|
||||
"触发事件": "이벤트 트리거",
|
||||
|
@ -389,16 +389,13 @@
|
||||
"缩放系数": "Schaalfactor",
|
||||
"语言包": "Taalpakket",
|
||||
"显示日语注音": "Japanse fonetische annotaties tonen",
|
||||
"注音颜色": "Fonetische kleur",
|
||||
"平假名": "HiraganaName",
|
||||
"片假名": "Katakana",
|
||||
"罗马音": "Uitspraak van Romeins",
|
||||
"日语注音方案": "Japans fonetisch alfabet",
|
||||
"Sakura大模型": "Groot model Sakura",
|
||||
"Magpie路径": "Magpiepad",
|
||||
"利用上文信息翻译(通常会有一定的效果提升,但会导致变慢)": "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",
|
||||
"窗口缩放": "Vensterschalen",
|
||||
"缩放方式": "Schaalmethode",
|
||||
"去除重复字符": "Dubbele tekens verwijderen",
|
||||
@ -665,7 +662,6 @@
|
||||
"文件": "bestand",
|
||||
"最大结果条数": "Maximaal aantal resultaten",
|
||||
"再次进行OCR": "OCR opnieuw uitvoeren",
|
||||
"选取OCR范围后自动绑定窗口": "Venster automatisch binden na het selecteren van OCR-bereik",
|
||||
"鼠标键盘触发+等待稳定": "Muis en toetsenbord trigger+wachten op stabilisatie",
|
||||
"匈牙利语": "Hongaarse taal",
|
||||
"触发事件": "Trigger gebeurtenis",
|
||||
|
@ -382,15 +382,12 @@
|
||||
"新": "nowy",
|
||||
"缩放系数": "Współczynnik skalowania",
|
||||
"显示日语注音": "Wyświetl japoński pinyin",
|
||||
"注音颜色": "Kolor pinyin",
|
||||
"平假名": "HiraganaName",
|
||||
"片假名": "KatakanaName",
|
||||
"罗马音": "Dźwięk romański",
|
||||
"日语注音方案": "Japoński schemat fonetyczny",
|
||||
"Sakura大模型": "Duży model Sakura",
|
||||
"Magpie路径": "Ścieżka dla Sraków",
|
||||
"利用上文信息翻译(通常会有一定的效果提升,但会导致变慢)": "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",
|
||||
"缩放方式": "Metoda powiększania",
|
||||
"去除重复字符": "Usuń duplikaty znaków",
|
||||
@ -665,7 +662,6 @@
|
||||
"文件": "plik",
|
||||
"最大结果条数": "Maksymalna liczba wyników",
|
||||
"再次进行OCR": "Wykonaj ponownie OCR",
|
||||
"选取OCR范围后自动绑定窗口": "Automatycznie wiąże okno po wybraniu zakresu OCR",
|
||||
"鼠标键盘触发+等待稳定": "Wyzwalacz myszy i klawiatury+oczekiwanie na stabilizację",
|
||||
"匈牙利语": "Język węgierski",
|
||||
"触发事件": "Wyzwalanie zdarzenia",
|
||||
|
@ -389,16 +389,13 @@
|
||||
"缩放系数": "Fator de escala",
|
||||
"语言包": "Pacote de Idiomas",
|
||||
"显示日语注音": "Mostrar as anotações fonéticas japonesas",
|
||||
"注音颜色": "Cor fonética",
|
||||
"平假名": "Hiraganaworld. kgm",
|
||||
"片假名": "Katakana",
|
||||
"罗马音": "Pronúncia romana",
|
||||
"日语注音方案": "Esquema do Alfabeto Fonético Japonês",
|
||||
"Sakura大模型": "Modelo Grande Sakura",
|
||||
"Magpie路径": "Caminho do Magpie",
|
||||
"利用上文信息翻译(通常会有一定的效果提升,但会导致变慢)": "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",
|
||||
"窗口缩放": "Escala da janela",
|
||||
"缩放方式": "Método de dimensionamento",
|
||||
"去除重复字符": "Remover caracteres duplicados",
|
||||
@ -665,7 +662,6 @@
|
||||
"文件": "ficheiro",
|
||||
"最大结果条数": "Número máximo de resultados",
|
||||
"再次进行OCR": "Executar OCR novamente",
|
||||
"选取OCR范围后自动绑定窗口": "Vincular automaticamente a janela após selecionar o intervalo de OCR",
|
||||
"鼠标键盘触发+等待稳定": "Mouse e teclado gatilho + aguardando estabilização",
|
||||
"匈牙利语": "Língua húngara",
|
||||
"触发事件": "Evento de disparo",
|
||||
|
@ -382,15 +382,12 @@
|
||||
"新": "Новый",
|
||||
"缩放系数": "Коэффициент масштабирования",
|
||||
"显示日语注音": "Показать японское произношение",
|
||||
"注音颜色": "Цвет звука",
|
||||
"平假名": "Псевдоним",
|
||||
"片假名": "Фильм под псевдонимом",
|
||||
"罗马音": "Римские согласные",
|
||||
"日语注音方案": "Японская фонетическая программа",
|
||||
"Sakura大模型": "Большая модель Sakura",
|
||||
"Magpie路径": "Путь Magpie",
|
||||
"利用上文信息翻译(通常会有一定的效果提升,但会导致变慢)": "Использование вышеприведенного перевода информации (обычно имеет определенный эффект улучшения, но приводит к замедлению)",
|
||||
"使用YAPI注入": "Использовать инъекцию YAPI",
|
||||
"窗口缩放": "Масштаб окна",
|
||||
"缩放方式": "Режим масштабирования",
|
||||
"去除重复字符": "Удалить повторяющиеся символы",
|
||||
@ -665,7 +662,6 @@
|
||||
"文件": "Документация",
|
||||
"最大结果条数": "Максимальное число итоговых полос",
|
||||
"再次进行OCR": "Повторить OCR",
|
||||
"选取OCR范围后自动绑定窗口": "Выберите диапазон OCR и автоматически свяжите окно",
|
||||
"鼠标键盘触发+等待稳定": "Запуск клавиатуры мыши + Ожидание стабилизации",
|
||||
"匈牙利语": "Венгерский язык",
|
||||
"触发事件": "Событие запуска",
|
||||
|
@ -389,16 +389,13 @@
|
||||
"缩放系数": "Skalningsfaktor",
|
||||
"语言包": "Språkpaket",
|
||||
"显示日语注音": "Visa japanska fonetiska anteckningar",
|
||||
"注音颜色": "Fonetisk färg",
|
||||
"平假名": "Hiragana",
|
||||
"片假名": "Katakana",
|
||||
"罗马音": "Romerskt uttal",
|
||||
"日语注音方案": "Japanskt fonetiskt alfabetssystem",
|
||||
"Sakura大模型": "Sakura Large Model",
|
||||
"Magpie路径": "Magpiebana",
|
||||
"利用上文信息翻译(通常会有一定的效果提升,但会导致变慢)": "Ö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",
|
||||
"窗口缩放": "Fönsterskalning",
|
||||
"缩放方式": "Skalningsmetod",
|
||||
"去除重复字符": "Ta bort dubbletter",
|
||||
@ -665,7 +662,6 @@
|
||||
"文件": "fil",
|
||||
"最大结果条数": "Maximalt antal resultat",
|
||||
"再次进行OCR": "Utför OCR igen",
|
||||
"选取OCR范围后自动绑定窗口": "Bind automatiskt fönster efter markerat OCR-område",
|
||||
"鼠标键盘触发+等待稳定": "Mus och tangentbord trigger + väntar på stabilisering",
|
||||
"匈牙利语": "Ungerska språket",
|
||||
"触发事件": "Trigger- händelse",
|
||||
|
@ -382,15 +382,12 @@
|
||||
"新": "ใหม่",
|
||||
"缩放系数": "ค่าสัมประสิทธิ์การซูม",
|
||||
"显示日语注音": "แสดงหมายเหตุภาษาญี่ปุ่น",
|
||||
"注音颜色": "สี Injection",
|
||||
"平假名": "ฮิรางานะ",
|
||||
"片假名": "คาตาคานะ",
|
||||
"罗马音": "เสียงโรมัน",
|
||||
"日语注音方案": "โปรแกรมบันทึกเสียงภาษาญี่ปุ่น",
|
||||
"Sakura大模型": "Sakura ใหญ่ แบบ",
|
||||
"Magpie路径": "เส้นทาง Magpie",
|
||||
"利用上文信息翻译(通常会有一定的效果提升,但会导致变慢)": "ใช้ประโยชน์จากการแปลข้อมูลข้างต้น (มักจะมีผลบางอย่างเพิ่มขึ้น แต่ทำให้ช้าลง)",
|
||||
"使用YAPI注入": "ใช้ YAPI ฉีด",
|
||||
"窗口缩放": "หน้าต่างซูม",
|
||||
"缩放方式": "โหมดซูม",
|
||||
"去除重复字符": "ลบอักขระที่ซ้ำกัน",
|
||||
@ -665,7 +662,6 @@
|
||||
"文件": "แฟ้ม",
|
||||
"最大结果条数": "จำนวนแถบผลลัพธ์สูงสุด",
|
||||
"再次进行OCR": "OCR อีกครั้ง",
|
||||
"选取OCR范围后自动绑定窗口": "ผูกหน้าต่างโดยอัตโนมัติหลังจากเลือกช่วง OCR",
|
||||
"鼠标键盘触发+等待稳定": "เมาส์คีย์บอร์ดทริกเกอร์ + รอความมั่นคง",
|
||||
"匈牙利语": "ฮังการี",
|
||||
"触发事件": "เหตุการณ์ทริกเกอร์",
|
||||
|
@ -382,15 +382,12 @@
|
||||
"新": "Yeni",
|
||||
"缩放系数": "Scale factor",
|
||||
"显示日语注音": "Display Japanese Pinyin",
|
||||
"注音颜色": "Pinyin rengi",
|
||||
"平假名": "HiraganaKCharselect unicode block name",
|
||||
"片假名": "KatakanaKCharselect unicode block name",
|
||||
"罗马音": "Romanik sesi",
|
||||
"日语注音方案": "Japon fonetik taslağı",
|
||||
"Sakura大模型": "Sakura Büyük Modeli",
|
||||
"Magpie路径": "Magpie Yolu",
|
||||
"利用上文信息翻译(通常会有一定的效果提升,但会导致变慢)": "Ö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",
|
||||
"缩放方式": "Yakınlaştırma yöntemi",
|
||||
"去除重复字符": "Çift karakterleri sil",
|
||||
@ -665,7 +662,6 @@
|
||||
"文件": "dosya",
|
||||
"最大结果条数": "En yüksek sonuçların sayısı",
|
||||
"再次进行OCR": "OCR tekrar yap",
|
||||
"选取OCR范围后自动绑定窗口": "OCR menzili seçmeden sonra pencereyi otomatik bağlayın",
|
||||
"鼠标键盘触发+等待稳定": "Fare ve klavye tetikleyici+stabilizasyonu bekliyor",
|
||||
"匈牙利语": "Macar dili",
|
||||
"触发事件": "Dönüştürme olayını",
|
||||
|
@ -382,15 +382,12 @@
|
||||
"新": "новий",
|
||||
"缩放系数": "Фактор масштабу",
|
||||
"显示日语注音": "Показувати японський пінін",
|
||||
"注音颜色": "Колір пініна",
|
||||
"平假名": "Гіраганаworld. kgm",
|
||||
"片假名": "Катаканаzambia_ districts. kgm",
|
||||
"罗马音": "Романський звук",
|
||||
"日语注音方案": "Японська фонетична схема",
|
||||
"Sakura大模型": "Великий модель Sakura",
|
||||
"Magpie路径": "Шлях до Magpie",
|
||||
"利用上文信息翻译(通常会有一定的效果提升,但会导致变慢)": "Переклад за допомогою інформації, наданої у попередньому тексті (зазвичай, з деяким покращенням ефективності, але це може призвести до повільнішого перекладу)",
|
||||
"使用YAPI注入": "Використання інструкції YAPI",
|
||||
"窗口缩放": "Масштаб вікна",
|
||||
"缩放方式": "Метод масштабу",
|
||||
"去除重复字符": "Вилучити дублікатні символи",
|
||||
@ -665,7 +662,6 @@
|
||||
"文件": "файл",
|
||||
"最大结果条数": "Максимальна кількість результатів",
|
||||
"再次进行OCR": "Виконати OCR знову",
|
||||
"选取OCR范围后自动绑定窗口": "Автоматично зв’ язати вікно після вибору діапазону OCR",
|
||||
"鼠标键盘触发+等待稳定": "Пуск миші і клавіатури+чекає на стабілізацію",
|
||||
"匈牙利语": "Угорська мова",
|
||||
"触发事件": "Подія пересування",
|
||||
|
@ -382,15 +382,12 @@
|
||||
"新": "Mới",
|
||||
"缩放系数": "Hệ số thu phóng",
|
||||
"显示日语注音": "Hiện chú thích tiếng Nhật",
|
||||
"注音颜色": "Màu chú thích",
|
||||
"平假名": "Name",
|
||||
"片假名": "Katakana",
|
||||
"罗马音": "Tiếng La Mã",
|
||||
"日语注音方案": "Chương trình chú thích tiếng Nhật",
|
||||
"Sakura大模型": "Sakura Lớn Mô hình",
|
||||
"Magpie路径": "Đường Magpie",
|
||||
"利用上文信息翻译(通常会有一定的效果提升,但会导致变慢)": "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ổ",
|
||||
"缩放方式": "Cách thu phóng",
|
||||
"去除重复字符": "Loại bỏ các ký tự trùng lặp",
|
||||
@ -665,7 +662,6 @@
|
||||
"文件": "Tài liệu",
|
||||
"最大结果条数": "Số thanh kết quả tối đa",
|
||||
"再次进行OCR": "OCR lần nữa",
|
||||
"选取OCR范围后自动绑定窗口": "Tự động ràng buộc cửa sổ sau khi chọn phạm vi OCR",
|
||||
"鼠标键盘触发+等待稳定": "Kích hoạt bàn phím chuột+chờ ổn định",
|
||||
"匈牙利语": "Việt Nam",
|
||||
"触发事件": "Sự kiện kích hoạt",
|
||||
|
@ -399,16 +399,13 @@
|
||||
"缩放系数": "",
|
||||
"语言包": "",
|
||||
"显示日语注音": "",
|
||||
"注音颜色": "",
|
||||
"平假名": "",
|
||||
"片假名": "",
|
||||
"罗马音": "",
|
||||
"日语注音方案": "",
|
||||
"Sakura大模型": "",
|
||||
"Magpie路径": "",
|
||||
"利用上文信息翻译(通常会有一定的效果提升,但会导致变慢)": "",
|
||||
"历史翻译": "",
|
||||
"使用YAPI注入": "",
|
||||
"窗口缩放": "",
|
||||
"缩放方式": "",
|
||||
"去除重复字符": "",
|
||||
@ -677,7 +674,6 @@
|
||||
"文件": "",
|
||||
"最大结果条数": "",
|
||||
"再次进行OCR": "",
|
||||
"选取OCR范围后自动绑定窗口": "",
|
||||
"延迟": "",
|
||||
"鼠标键盘触发+等待稳定": "",
|
||||
"匈牙利语": "",
|
||||
|
Loading…
x
Reference in New Issue
Block a user