This commit is contained in:
恍兮惚兮 2024-09-18 12:01:52 +08:00
parent 8fff3ac787
commit c6eb64f79d
79 changed files with 2752 additions and 1114 deletions

View File

@ -245,7 +245,7 @@ class TableViewW(QTableView):
"row": maxr - minr + 1,
"col": maxc - minc + 1,
}
winsharedutils.clipboard_set(json.dumps(data))
winsharedutils.clipboard_set(json.dumps(data, ensure_ascii=False))
def pastetable(self):
string = winsharedutils.clipboard_get()

View File

@ -282,6 +282,12 @@ class basetrans(commonbase):
template = "You are a translator. Please help me translate the following {srclang} text into {tgtlang}, and you should only tell me the translation."
return fmt.format(template, srclang=self.srclang, tgtlang=self.tgtlang)
def _gptlike_create_prefill(self, usekey, tempk):
user_prompt = (
self.config.get(tempk, "") if self.config.get(usekey, False) else ""
)
return user_prompt
def reinitandtrans(self, contentsolved, is_auto_run):
if self.needreinit or self.initok == False:
self.needreinit = False

View File

@ -1,4 +1,4 @@
from translator.gptcommon import gptcommon
from translator.gptcommon import gptcommon, list_models
class TS(gptcommon):

View File

@ -46,7 +46,9 @@ class TS(basetrans):
message.append(self.context[i * 2])
message.append(self.context[i * 2 + 1])
message.append({"role": "user", "content": query})
prefill = self._gptlike_create_prefill("prefill_use", "prefill")
if prefill:
message.append({"role": "assistant", "content": prefill})
headers = {
"anthropic-version": "2023-06-01",
"accept": "application/json",

View File

@ -75,7 +75,9 @@ class TS(basetrans):
)
message.append(self.context[i * 2])
message.append(self.context[i * 2 + 1])
prefill = self._gptlike_create_prefill("prefill_use", "prefill")
if prefill:
message.append({"role": "CHATBOT", "message": prefill})
headers = {"Authorization": "Bearer " + self.multiapikeycurrent["SECRET_KEY"]}
usingstream = self.config["流式输出"]
data = dict(

View File

@ -62,6 +62,9 @@ class TS(basetrans):
message.append(self.context[i * 2 + 1])
message.append({"role": "user", "parts": [{"text": query}]})
prefill = self._gptlike_create_prefill("prefill_use", "prefill")
if prefill:
message.append({"role": "model", "parts": [{"text": prefill}]})
contents = dict(contents=message)
usingstream = self.config["usingstream"]
payload = {**contents, **safety, **sys_message, **gen_config}

View File

@ -7,8 +7,11 @@ from myutils.proxy import getproxy
def list_models(typename, regist):
js = requests.get(
createurl(regist["API接口地址"]().strip())[: -len("/chat/completions")] + "/models",
headers={"Authorization": "Bearer " + regist["SECRET_KEY"]().split("|")[0].strip()},
createurl(regist["API接口地址"]().strip())[: -len("/chat/completions")]
+ "/models",
headers={
"Authorization": "Bearer " + regist["SECRET_KEY"]().split("|")[0].strip()
},
proxies=getproxy(("fanyi", typename)),
timeout=10,
).json()
@ -39,9 +42,10 @@ class gptcommon(basetrans):
# stop=None,
top_p=self.config["top_p"],
temperature=temperature,
frequency_penalty=self.config["frequency_penalty"],
stream=self.config["流式输出"],
)
if "api.mistral.ai" not in self.config["API接口地址"]:
data.update(dict(frequency_penalty=self.config["frequency_penalty"]))
try:
if self.config["use_other_args"]:
extra = json.loads(self.config["other_args"])
@ -74,18 +78,17 @@ class gptcommon(basetrans):
break
try:
json_data = json.loads(response_data)
rs = json_data["choices"][0].get("finish_reason")
if rs and rs != "null":
break
msg = json_data["choices"][0]["delta"].get("content", None)
if not msg:
continue
message += msg
yield msg
rs = json_data["choices"][0].get("finish_reason")
if rs and rs != "null":
break
except:
print_exc()
raise Exception(response_data)
yield msg
else:
try:
@ -117,6 +120,9 @@ class gptcommon(basetrans):
message.append(self.context[i * 2])
message.append(self.context[i * 2 + 1])
message.append({"role": "user", "content": query})
prefill = self._gptlike_create_prefill("prefill_use", "prefill")
if prefill:
message.append({"role": "assistant", "content": prefill})
usingstream = self.config["流式输出"]
response = self.proxysession.post(
self.createurl(),

View File

@ -1858,20 +1858,6 @@
"color": "blue",
"name": "腾讯api"
},
"txhunyuan": {
"type": "api",
"use": false,
"color": "blue",
"name": "腾讯混元大模型",
"is_gpt_like": true
},
"baiduqianfan": {
"type": "api",
"use": false,
"color": "blue",
"name": "百度千帆大模型",
"is_gpt_like": true
},
"yandexapi": {
"type": "api",
"use": false,
@ -2005,6 +1991,20 @@
"type": "pre",
"color": "blue",
"name": "实时编辑"
},
"baiduqianfan": {
"type": "api",
"use": false,
"color": "blue",
"name": "百度千帆大模型",
"is_gpt_like": true
},
"txhunyuan": {
"type": "api",
"use": false,
"color": "blue",
"name": "腾讯混元大模型",
"is_gpt_like": true
}
},
"ZoomFactor": 1,

View File

@ -333,9 +333,19 @@
"use_user_user_prompt": false,
"other_args": "{}",
"use_other_args": false,
"s": ""
"s": "",
"s2": "",
"prefill": "",
"prefill_use": false
},
"argstype": {
"prefill": {
"refswitch": "prefill_use",
"rank": 5.11
},
"prefill_use": {
"type": "switch"
},
"other_args": {
"type": "multiline",
"refswitch": "use_other_args",
@ -350,6 +360,10 @@
"type": "split",
"rank": 2.5
},
"s2": {
"type": "split",
"rank": 5.12
},
"BASE_URL": {
"rank": 0
},
@ -415,9 +429,19 @@
"use_user_user_prompt": false,
"other_args": "{}",
"use_other_args": false,
"s": ""
"s": "",
"s2": "",
"prefill": "",
"prefill_use": false
},
"argstype": {
"prefill": {
"refswitch": "prefill_use",
"rank": 5.11
},
"prefill_use": {
"type": "switch"
},
"other_args": {
"type": "multiline",
"refswitch": "use_other_args",
@ -432,6 +456,10 @@
"type": "split",
"rank": 2.5
},
"s2": {
"type": "split",
"rank": 5.12
},
"API接口地址": {
"rank": 0
},
@ -606,9 +634,23 @@
"user_user_prompt": "{sentence}",
"other_args": "{}",
"use_other_args": false,
"s": ""
"s": "",
"s2":"",
"prefill": "",
"prefill_use": false
},
"argstype": {
"prefill": {
"refswitch": "prefill_use",
"rank": 5.11
},
"prefill_use": {
"type": "switch"
},
"s2": {
"type": "split",
"rank": 5.12
},
"other_args": {
"type": "multiline",
"refswitch": "use_other_args",
@ -1001,9 +1043,19 @@
"other_args": "{}",
"use_other_args": false,
"s": "",
"usingstream": true
"s2":"",
"usingstream": true,
"prefill": "",
"prefill_use": false
},
"argstype": {
"prefill": {
"refswitch": "prefill_use",
"rank": 5.11
},
"prefill_use": {
"type": "switch"
},
"other_args": {
"type": "multiline",
"refswitch": "use_other_args",
@ -1023,6 +1075,10 @@
"type": "split",
"rank": 3.5
},
"s2": {
"type": "split",
"rank": 5.12
},
"custom_prompt": {
"name": "自定义_system prompt",
"type": "multiline",
@ -1223,8 +1279,9 @@
"chatgpt-offline": {
"args": {
"model": "gpt-3.5-turbo",
"modellistcache": [],
"附带上下文个数": 0,
"API接口地址": "http://127.0.0.1:5000/",
"API接口地址": "https://api.openai.com",
"SECRET_KEY": "",
"使用自定义promt": false,
"自定义promt": "",
@ -1237,9 +1294,19 @@
"use_user_user_prompt": false,
"other_args": "{}",
"use_other_args": false,
"s": ""
"s": "",
"s2": "",
"prefill": "",
"prefill_use": false
},
"argstype": {
"prefill": {
"refswitch": "prefill_use",
"rank": 5.11
},
"prefill_use": {
"type": "switch"
},
"other_args": {
"type": "multiline",
"refswitch": "use_other_args",
@ -1250,19 +1317,29 @@
"refswitch": "use_user_user_prompt",
"rank": 5.1
},
"SECRET_KEY": {
"rank": 3,
"name": "API Key"
},
"s": {
"type": "split",
"rank": 1.5
"rank": 2.5
},
"s2": {
"type": "split",
"rank": 5.12
},
"API接口地址": {
"rank": 0
},
"SECRET_KEY": {
"rank": 6,
"name": "API Key"
},
"model": {
"rank": 1
"rank": 1,
"type": "lineedit_or_combo",
"list_function": "list_models",
"list_cache": "modellistcache"
},
"modellistcache": {
"type": "list_cache"
},
"top_p": {
"type": "spin",
@ -1284,7 +1361,7 @@
},
"流式输出": {
"type": "switch",
"rank": 2
"rank": 3
},
"自定义promt": {
"type": "multiline",

View File

@ -68,8 +68,6 @@
<details>
<summary>点击查看</summary>
* [Artikash/Textractor](https://github.com/Artikash/Textractor)
* [RapidAI/RapidOcrOnnx](https://github.com/RapidAI/RapidOcrOnnx)
* [PaddlePaddle/PaddleOCR](https://github.com/PaddlePaddle/PaddleOCR)

View File

@ -1,101 +1,65 @@
# LunaTranslator
# LunaTranslator
<p align="left">
<img src="https://img.shields.io/github/license/HIllya51/LunaTranslator">
<a href="https://github.com/HIllya51/LunaTranslator/releases"><img src="https://img.shields.io/github/v/release/HIllya51/LunaTranslator?color=ffa"></a>
<a href="https://github.com/HIllya51/LunaTranslator/releases/latest/download/LunaTranslator.zip" target="_blank"><img src="https://img.shields.io/badge/download_64bit-blue"/></a> <a href="https://github.com/HIllya51/LunaTranslator/releases/latest/download/LunaTranslator_x86.zip" target="_blank"><img src="https://img.shields.io/badge/download_32bit-blue"/></a> <img src="https://img.shields.io/badge/OS-windows 7--11 / wine-FF007C"/>
<img src="https://img.shields.io/github/license/HIllya51/LunaTranslator">
<a href="https://github.com/HIllya51/LunaTranslator/releases"><img src="https://img.shields.io/github/v/release/HIllya51/LunaTranslator?color=ffa"></a>
<a href="https://github.com/HIllya51/LunaTranslator/releases/latest/download/LunaTranslator.zip" target="_blank"><img src="https://img.shields.io/badge/download_64bit-blue"/></a> <a href="https://github.com/HIllya51/LunaTranslator/releases/latest/download/LunaTranslator_x86.zip" target="_blank"><img src="https://img.shields.io/badge/download_32bit-blue"/></a> <img src="https://img.shields.io/badge/OS-windows 7--11 / wine-FF0000"/>
</p>
### [简体中文](README.md) | [Русский язык](README_ru.md) | English | [Other Languages](otherlang.md)
> **A galgame translator**
### [User Manual](https://docs.lunatranslator.org/#/zh/) [Video Tutorial](https://space.bilibili.com/592120404/video) <a href="https://qm.qq.com/q/I5rr3uEpi2"><img src="https://img.shields.io/badge/QQ Group-963119821-FF007C"></a> <a href="https://discord.com/invite/ErtDwVeAbB"><img src="https://img.shields.io/discord/1262692128031772733?label=Discord&logo=discord&color=FF007C"></a>
### Simplified Chinese | [Russian](README_ru.md) | [English](README_en.md) | [Other Language](otherlang.md)
### [Tutorial](https://docs.lunatranslator.org/#/en/) [Vedio](https://space.bilibili.com/592120404/video) [Discord](https://discord.com/invite/ErtDwVeAbB)
> **A galgame translation tool**
## Feature Support
## Features
#### Text Input
#### Text sources
- **HOOK** Supports obtaining text using HOOK methods, supports the use of special codes, supports automatic saving of games and HOOKs, automatic loading of HOOKs, etc. For some engines, it also supports embedded translation. For games that are not supported or not well supported, please [submit feedback](https://lunatranslator.org/Resource/game_support)
&emsp;&emsp;**Clipboard** Support reading text from the clipboard for translation
- **OCR** Supports **offline OCR** (in addition to the built-in OCR engine, it also supports WindowsOCR, Tessearact5, manga-ocr, WeChat/QQ OCR) and **online OCR** (Baidu OCR/picture translation, Youdao OCR/picture translation, Youdao OCR/picture translation, Lark OCR, iFlytek OCR, Google Lens, Google Cloud Vision, docsumo, ocrspace). It can also use **multimodal large models** for OCR (supports GeminiOCR, ChatGPT compatible interfaces)
&emsp;&emsp;**OCR** Support offline OCR (deployed), WindowsOCR, Baidu OCR, Youdao OCR, ocrspace, docsumo, and binding to game window to avoid overlap.
- **Clipboard** Supports obtaining text from the clipboard for translation
&emsp;&emsp;**HOOK** Supports text extraction via hooking, Hook codes (H-codes), automatic game and hook saving, and auto-loading hooks. Some engines also support embedded translation
- **Text Output** Extracted text can be output to the clipboard, Websocket, for use by other programs.
#### Translators
#### Translator
Support almost all translation engines you can think of, including:
Supports almost all conceivable translation engines, including:
&emsp;&emsp;**Offline Translation**: J-Beijing 7, Kingsoft FastAIT, YiDianTong, Sakura, TGW, Sugoi
- **Free Online Translation** Supports Baidu, Bing, Google, Alibaba, Youdao, Caiyun, Sogou, iFlytek, Tencent, ByteDance, Volcano, DeepL/DeepLX, papago, yandex, lingva, reverso, TranslateCom, ModernMT
&emsp;&emsp;**Free Online Translation**: Baidu, Bing, Google, Ali, Youdao, Caiyun, Sogou, DeepL, Kingsoft, iFlytek, Tencent, ByteDance, Volcano, Papago, Yeekit, and more
- **Registered Online Translation** Supports user-registered **traditional translation** (Baidu, Tencent, Youdao, Xiaoniu, Caiyun, Volcano, DeepL, yandex, google, ibm, Azure, Lark) and **large model translation** (ChatGPT compatible interface, claude, cohere, gemini, Baidu Qianfan, Tencent Hunyuan)
&emsp;&emsp;**API Online Translation**: Baidu, Tencent, Youdao, Niutrans, Caiyun, Volcano, DeepL, Yandex, Google, IBM, Feishu, ChatGPT, Azure, Cohere, Claude, Gemini, and more (requires user registration)
- **Offline Translation** Supports **traditional translation** (J Beijing 7, Kingsoft, Yidiantong, ezTrans, Sugoi, MT5) and offline deployed **large model translation** (ChatGPT compatible interface, Sakura large model)
&emsp;&emsp;**Chrome Debug Translation**: DeepL, Yandex, Youdao, Baidu, Tencent, Bing, Caiyun, Niutrans, Ali, Google, OpenAI
- **Chrome Debug Translation** Supports **traditional translation** (deepl, yandex, youdao, baidu, tencent, bing, caiyun, xiaoniu, alibaba, google) and **large model translation** (chatgpt, deepseek, moonshot, qianwen, chatglm, Theb.ai, DuckDuckGo)
&emsp;&emsp;**Pre-translation** Support reading human translation and aggregating machine pre-translation files
- **Pre-translation** Supports reading pre-translated files, supports translation caching
&emsp;&emsp;**Custom Translation Extension** Support the use of Python language to extend other translation interfaces I don't know
- **Support for Custom Translation Extensions** Supports extending other translation interfaces using the Python language
#### Text-to-Speech
- **Offline TTS** Supports WindowsTTS, VoiceRoid2/VoiceRoid+, NeoSpeech, VOICEVOX, VITS
- **Online TTS** Supports Volcano TTS, Youdao TTS, Edge TTS, Google TTS
#### Speech Synthesis
#### Translation Optimization
&emsp;&emsp;**Offline TTS**: Windows TTS, VoiceRoid2, VoiceRoid+, NeoSpeech, VOICEVOX, VITS, and more
- **Text Processing** Supports more than ten common text processing methods, and complex text processing can be achieved through the adjustment of combinations and execution order
&emsp;&emsp;**Online TTS**: Volcano TTS, Youdao TTS, Edge TTS, Google TTS, and more
- **Translation Optimization** Supports the use of custom proper noun translation, supports the import of VNR shared dictionaries
#### Translation optimization
#### Japanese Learning
&emsp;&emsp;**Text Processing**: Supports over a dozen common text processing methods, from simple processing such as text de-duplication and filtering line breaks, to complex regular expression replacement and even writing your own custom Python preprocessor
- **Japanese Word Segmentation and Kana Display** Supports word segmentation and kana display using Mecab, etc.
&emsp;&emsp;**Translation Optimization**: Supports custom proper noun translations and importing VNR shared dictionaries
- **Vocabulary Lookup** Supports **offline dictionaries** (MDICT, Shougakukan, Lingoes Dictionary, EDICT/EDICT2) and **online dictionaries** (Youdao, weblio, Goo, Moji, jisho) for word lookup
#### Japanese learning
- **Anki** Supports one-click addition of words to Anki
&emsp;&emsp;**Japanese Word Segmentation and Furigana Display** Supports MeCab and other tokenizers for word segmentation and furigana display to help you read
&emsp;&emsp;**Dictionary Lookup**: Supports MDICT, Shogakukan, Lingoes, EDICT, Youdao, Weblio, Goo, Moji, Jisho, and other online and offline dictionaries
&emsp;&emsp;**Anki Integration**: Supports one-click addition of words to Anki
## References
<details>
<summary>Click to view</summary>
* [Artikash/Textractor](https://github.com/Artikash/Textractor)
* [RapidAI/RapidOcrOnnx](https://github.com/RapidAI/RapidOcrOnnx)
* [PaddlePaddle/PaddleOCR](https://github.com/PaddlePaddle/PaddleOCR)
* [UlionTse/translators](https://github.com/UlionTse/translators)
* [Blinue/Magpie](https://github.com/Blinue/Magpie)
* [nanokina/ebyroid](https://github.com/nanokina/ebyroid)
* [xupefei/Locale-Emulator](https://github.com/xupefei/Locale-Emulator)
* [InWILL/Locale_Remulator](https://github.com/InWILL/Locale_Remulator)
* [zxyacb/ntlea](https://github.com/zxyacb/ntlea)
* [@KirpichKrasniy](https://github.com/KirpichKrasniy)
</details>
## Support author
If you feel that the software is helpful to you, welcome to become my [sponsor](https://patreon.com/HIllya51). Thank you ~
<img src='.\\LunaTranslator\\files\\zan.jpg' style="height: 400px !important;">

View File

@ -1,97 +1,69 @@
# LunaTranslator
# LunaTranslator
<p align="left">
<img src="https://img.shields.io/github/license/HIllya51/LunaTranslator">
<a href="https://github.com/HIllya51/LunaTranslator/releases"><img src="https://img.shields.io/github/v/release/HIllya51/LunaTranslator?color=ffa"></a>
<a href="https://github.com/HIllya51/LunaTranslator/releases/latest/download/LunaTranslator.zip" target="_blank"><img src="https://img.shields.io/badge/download_64bit-blue"/></a> <a href="https://github.com/HIllya51/LunaTranslator/releases/latest/download/LunaTranslator_x86.zip" target="_blank"><img src="https://img.shields.io/badge/download_32bit-blue"/></a> <img src="https://img.shields.io/badge/OS-windows 7--11 / wine-FF007C"/>
<img src="https://img.shields.io/github/license/HIllya51/LunaTranslator">
<a href="https://github.com/HIllya51/LunaTranslator/releases"><img src="https://img.shields.io/github/v/release/HIllya51/LunaTranslator?color=ffa"></a>
<a href="https://github.com/HIllya51/LunaTranslator/releases/latest/download/LunaTranslator.zip" target="_blank"><img src="https://img.shields.io/badge/загрузить_64bit-синий"/></a> <a href="https://github.com/HIllya51/LunaTranslator/releases/latest/download/LunaTranslator_x86.zip" target="_blank"><img src="https://img.shields.io/badge/загрузить_32bit-синий"/></a> <img src="https://img.shields.io/badge/ОС-windows 7--11 / wine-FF0000"/>
</p>
### [简体中文](README.md) | Русский язык | [English](README_en.md) | [Other Language](otherlang.md)
### [Инструкция по использованию](https://docs.lunatranslator.org/#/ru/) [Видео-учебник](https://space.bilibili.com/592120404/video)
> **Переводчик текста с экрана для игр и не только!**
<a href="https://qm.qq.com/q/I5rr3uEpi2"><img src="https://img.shields.io/badge/группа_QQ-963119821-FF007C"></a> <a href="https://discord.com/invite/ErtDwVeAbB"><img src="https://img.shields.io/discord/1262692128031772733?label=Discord&logo=discord&color=FF007C"></a>
### Упрощенный китайский | [Русский язык](README_ru.md) | [Английский](README_en.md) | [Другие языки](otherlang.md)
> **Транслятор для galgame**
## Поддержка функций
#### Ввод текста
- **HOOK** Поддерживает получение текста с использованием метода HOOK, поддерживает использование специальных кодов, поддерживает автоматическое сохранение игр и HOOK, автоматическое загрузка HOOK и т.д. Для некоторых движков также поддерживается встроенная трансляция. Для игр, которые не поддерживаются или плохо поддерживаются, пожалуйста, [отправьте обратную связь](https://lunatranslator.org/Resource/game_support)
### [Tutorial](https://docs.lunatranslator.org/#/ru/) [Vedio](https://space.bilibili.com/592120404/video) [Discord](https://discord.com/invite/ErtDwVeAbB)
- **OCR** Поддерживает **оффлайн OCR** ( помимо встроенного движка OCR, также поддерживает WindowsOCR, Tessearact5, manga-ocr, WeChat/QQ OCR ) и **онлайн OCR** ( Baidu OCR/перевод изображений, Youdao OCR/перевод изображений, Youdao OCR/перевод изображений, Lark OCR, iFlytek OCR, Google Lens, Google Cloud Vision, docsumo, ocrspace ). Также можно использовать **многомодальные большие модели** для OCR ( поддерживает GeminiOCR, интерфейс совместимый с ChatGPT )
- **Буфер обмена** Поддерживает получение текста из буфера обмена для перевода
## Основные функции:
- **Вывод текста** Извлеченный текст может быть выведен в буфер обмена, Websocket для использования другими программами.
#### Источник текста
#### Транслятор
&emsp;&emsp;**Буфер обмена** Копирование текста из буфера обмена для перевода.
Поддерживает почти все представимые системы перевода, включая:
&emsp;&emsp;**OCR** Поддерживает автономные считывальщики текста с экрана Paddle OCR и WindowsOCR, а также онлайн сервисы: Baidu OCR, Youdao OCR, OCRspace, docsumo. Также поддерживает привязку и скрытие окон для распознавания текста с экрана для удобной игры.
- **Бесплатные онлайн переводы** Поддерживает использование Baidu, Bing, Google, Alibaba, Youdao, Caiyun, Sogou, iFlytek, Tencent, ByteDance, Volcano, DeepL/DeepLX, papago, yandex, lingva, reverso, TranslateCom, ModernMT
&emsp;&emsp;**HOOK** Поддерживает использование HOOK для получения текста из данных игры, поддерживает использование специальных кодов, поддерживает автоматическое сохранение игр, а также автоматическую загрузку HOOK во время запуска игр.
- **Зарегистрированные онлайн переводы** Поддерживает использование зарегистрированных пользователем **традиционных переводов** ( Baidu, Tencent, Youdao, Xiaoniu, Caiyun, Volcano, DeepL, yandex, google, ibm, Azure, Lark ) и **больших моделей перевода** ( интерфейс совместимый с ChatGPT, claude, cohere, gemini, Baidu Qianfan, Tencent Hunyuan )
- **Оффлайн перевод** Поддерживает **традиционный перевод** ( J Beijing 7, Kingsoft, Yidiantong, ezTrans, Sugoi, MT5 ) и оффлайн развернутый **большой модельный перевод** ( интерфейс совместимый с ChatGPT, Sakura большой модель )
#### Переводчики
- **Chrome отладочный перевод** Поддерживает **традиционный перевод** ( deepl, yandex, youdao, baidu, tencent, bing, caiyun, xiaoniu, alibaba, google ) и **большой модельный перевод** ( chatgpt, deepseek, moonshot, qianwen, chatglm, Theb.ai, DuckDuckGo )
Поддерживает почти все существующие механизмы перевода, в том числе:
- **Предварительный перевод** Поддерживает чтение предварительно переведенных файлов, поддерживает кэширование переводов
&emsp;&emsp;**Автономный перевод** Поддерживает автономный перевод с использованием JBeijing 7, Jinshan Quick Translation и Yidiantong.
&emsp;&emsp;**Бесплатный онлайн-перевод** Поддерживает Baidu, Bing, Google, Ali, Youdao, Caiyun, Sogou, DeepL, Kingsoft, Xunfei, Tencent, Byte, Volcano, papago, yeekit и другие онлайн-сервисы.
&emsp;&emsp;**Онлайн-перевод с регистрацией ключа API** Поддерживает перевод с использованием зарегистрированных пользователем ключей перевода для Baidu, Tencent, Youdao, Mavericks, Caiyun, Volcano и Deepl.
&emsp;&emsp;**Предварительный перевод** Поддержка чтения файлов предварительного перевода, выполненных человеком, и агрегация машинных файлов.
&emsp;&emsp;**Поддержка пользовательских расширений перевода** Поддержка использования языка python для расширения других интерфейсов перевода, о которых я не знаю.
#### Синтез речи/Озвучка текста
&emsp;&emsp;**Offline TTS** Поддерживает windowsTTS, VoiceRoid+, NeoSpeech, VoiceRoid2 и VOICEVOX.
&emsp;&emsp;**Online TTS** Поддерживает Volcano TTS, youdaoTTS, EdgeTTS
#### Обработка текста/Оптимизация перевода
&emsp;&emsp;**Обработка текста** Поддерживает простую обработку, такую ​​как дедупликация текста, фильтрация HTML-тегов, фильтрация разрывов строк, фильтрация символов и чисел, поддержка пользовательской простой замены текста и замены регулярных выражений.
&emsp;&emsp;**Оптимизация перевода** Поддерживает использование собственных корректировок перевода и импорт общих словарей VNR.
#### Японская письменность
&emsp;&emsp;**Сегментация японских слов и отображение каны** Поддержка использования встроенных бесплатных загружаемых инструментов сегментации слов и отображения каны, поддержка использования Mecab для оптимизации сегментации слов и отображения каны.
&emsp;&emsp;**Поиск слов** Поддерживает поиск слов с использованием Xiaoxiaoguan, Lingoes Dictionary и EDICT (японо-английский словарь).
## Отдельная благодарность:
* [@KirpichKrasniy](https://github.com/KirpichKrasniy) (Также можете зайти в русскоязычные сообщества программы: [VK](https://vk.com/lunatranslator) и [Telegram](https://t.me/LunaTranslator))
## References
<details>
<summary>Click to view</summary>
* [Artikash/Textractor](https://github.com/Artikash/Textractor)
* [RapidAI/RapidOcrOnnx](https://github.com/RapidAI/RapidOcrOnnx)
* [PaddlePaddle/PaddleOCR](https://github.com/PaddlePaddle/PaddleOCR)
* [UlionTse/translators](https://github.com/UlionTse/translators)
* [Blinue/Magpie](https://github.com/Blinue/Magpie)
* [nanokina/ebyroid](https://github.com/nanokina/ebyroid)
* [xupefei/Locale-Emulator](https://github.com/xupefei/Locale-Emulator)
* [InWILL/Locale_Remulator](https://github.com/InWILL/Locale_Remulator)
* [zxyacb/ntlea](https://github.com/zxyacb/ntlea)
* [@KirpichKrasniy](https://github.com/KirpichKrasniy)
</details>
## Support author
- **Поддержка пользовательских расширений перевода** Поддерживает расширение других интерфейсов перевода с использованием языка Python
If you feel that the software is helpful to you, welcome to become my [sponsor](https://patreon.com/HIllya51). Thank you ~
#### Синтез речи
- **Оффлайн TTS** Поддерживает WindowsTTS, VoiceRoid2/VoiceRoid+, NeoSpeech, VOICEVOX, VITS
- **Онлайн TTS** Поддерживает Volcano TTS, Youdao TTS, Edge TTS, Google TTS
#### Оптимизация перевода
- **Обработка текста** Поддерживает более десяти распространенных методов обработки текста, и с помощью комбинирования и изменения порядка выполнения можно выполнять сложную обработку текста
- **Оптимизация перевода** Поддерживает использование пользовательских переводов собственных названий, поддерживает импорт общих словарей VNR
#### Изучение японского языка
- **Сегментация японских слов и отображение глифов** Поддерживает использование Mecab и других для сегментации и отображения глифов
- **Поиск слов** Поддерживает использование **оффлайн словарей** ( MDICT, Shougakukan, Lingoes Dictionary, EDICT/EDICT2 ) и **онлайн словарей** ( Youdao, weblio, Goo, Moji, jisho ) для поиска слов
- **Anki** Поддерживает добавление слов в Anki одним нажатием кнопки
## Поддержка автора
Если вы считаете, что программа вам полезна, приглашаю вас стать моим [спонсором](https://patreon.com/HIllya51). Спасибо ~

View File

@ -1,51 +1,50 @@
> **A galgame translator**
## Features
> **A galgame translation tool**
#### Text sources
## Feature Support
&emsp;&emsp;**Clipboard** Support reading text from the clipboard for translation
#### Text Input
&emsp;&emsp;**OCR** Support offline OCR (deployed), WindowsOCR, Baidu OCR, Youdao OCR, ocrspace, docsumo, and binding to game window to avoid overlap.
- **HOOK** Supports obtaining text using HOOK methods, supports the use of special codes, supports automatic saving of games and HOOKs, automatic loading of HOOKs, etc. For some engines, it also supports embedded translation. For games that are not supported or not well supported, please [submit feedback](https://lunatranslator.org/Resource/game_support)
&emsp;&emsp;**HOOK** Supports text extraction via hooking, Hook codes (H-codes), automatic game and hook saving, and auto-loading hooks. Some engines also support embedded translation
- **OCR** Supports **offline OCR** (in addition to the built-in OCR engine, it also supports WindowsOCR, Tessearact5, manga-ocr, WeChat/QQ OCR) and **online OCR** (Baidu OCR/picture translation, Youdao OCR/picture translation, Youdao OCR/picture translation, Lark OCR, iFlytek OCR, Google Lens, Google Cloud Vision, docsumo, ocrspace). It can also use **multimodal large models** for OCR (supports GeminiOCR, ChatGPT compatible interfaces)
#### Translators
- **Clipboard** Supports obtaining text from the clipboard for translation
Support almost all translation engines you can think of, including:
- **Text Output** Extracted text can be output to the clipboard, Websocket, for use by other programs.
&emsp;&emsp;**Offline Translation**: J-Beijing 7, Kingsoft FastAIT, YiDianTong, Sakura, TGW, Sugoi
#### Translator
&emsp;&emsp;**Free Online Translation**: Baidu, Bing, Google, Ali, Youdao, Caiyun, Sogou, DeepL, Kingsoft, iFlytek, Tencent, ByteDance, Volcano, Papago, Yeekit, and more
Supports almost all conceivable translation engines, including:
&emsp;&emsp;**API Online Translation**: Baidu, Tencent, Youdao, Niutrans, Caiyun, Volcano, DeepL, Yandex, Google, IBM, Feishu, ChatGPT, Azure, Cohere, Claude, Gemini, and more (requires user registration)
- **Free Online Translation** Supports Baidu, Bing, Google, Alibaba, Youdao, Caiyun, Sogou, iFlytek, Tencent, ByteDance, Volcano, DeepL/DeepLX, papago, yandex, lingva, reverso, TranslateCom, ModernMT
&emsp;&emsp;**Chrome Debug Translation**: DeepL, Yandex, Youdao, Baidu, Tencent, Bing, Caiyun, Niutrans, Ali, Google, OpenAI
- **Registered Online Translation** Supports user-registered **traditional translation** (Baidu, Tencent, Youdao, Xiaoniu, Caiyun, Volcano, DeepL, yandex, google, ibm, Azure, Lark) and **large model translation** (ChatGPT compatible interface, claude, cohere, gemini, Baidu Qianfan, Tencent Hunyuan)
&emsp;&emsp;**Pre-translation** Support reading human translation and aggregating machine pre-translation files
- **Offline Translation** Supports **traditional translation** (J Beijing 7, Kingsoft, Yidiantong, ezTrans, Sugoi, MT5) and offline deployed **large model translation** (ChatGPT compatible interface, Sakura large model)
&emsp;&emsp;**Custom Translation Extension** Support the use of Python language to extend other translation interfaces I don't know
- **Chrome Debug Translation** Supports **traditional translation** (deepl, yandex, youdao, baidu, tencent, bing, caiyun, xiaoniu, alibaba, google) and **large model translation** (chatgpt, deepseek, moonshot, qianwen, chatglm, Theb.ai, DuckDuckGo)
- **Pre-translation** Supports reading pre-translated files, supports translation caching
- **Support for Custom Translation Extensions** Supports extending other translation interfaces using the Python language
#### Text-to-Speech
#### Speech Synthesis
- **Offline TTS** Supports WindowsTTS, VoiceRoid2/VoiceRoid+, NeoSpeech, VOICEVOX, VITS
&emsp;&emsp;**Offline TTS**: Windows TTS, VoiceRoid2, VoiceRoid+, NeoSpeech, VOICEVOX, VITS, and more
- **Online TTS** Supports Volcano TTS, Youdao TTS, Edge TTS, Google TTS
&emsp;&emsp;**Online TTS**: Volcano TTS, Youdao TTS, Edge TTS, Google TTS, and more
#### Translation Optimization
#### Translation optimization
- **Text Processing** Supports more than ten common text processing methods, and complex text processing can be achieved through the adjustment of combinations and execution order
&emsp;&emsp;**Text Processing**: Supports over a dozen common text processing methods, from simple processing such as text de-duplication and filtering line breaks, to complex regular expression replacement and even writing your own custom Python preprocessor
- **Translation Optimization** Supports the use of custom proper noun translation, supports the import of VNR shared dictionaries
&emsp;&emsp;**Translation Optimization**: Supports custom proper noun translations and importing VNR shared dictionaries
#### Japanese Learning
#### Japanese learning
- **Japanese Word Segmentation and Kana Display** Supports word segmentation and kana display using Mecab, etc.
&emsp;&emsp;**Japanese Word Segmentation and Furigana Display** Supports MeCab and other tokenizers for word segmentation and furigana display to help you read
- **Vocabulary Lookup** Supports **offline dictionaries** (MDICT, Shougakukan, Lingoes Dictionary, EDICT/EDICT2) and **online dictionaries** (Youdao, weblio, Goo, Moji, jisho) for word lookup
&emsp;&emsp;**Dictionary Lookup**: Supports MDICT, Shogakukan, Lingoes, EDICT, Youdao, Weblio, Goo, Moji, Jisho, and other online and offline dictionaries
&emsp;&emsp;**Anki Integration**: Supports one-click addition of words to Anki
- **Anki** Supports one-click addition of words to Anki

134
docs/en/alltoolbuttons.md Normal file
View File

@ -0,0 +1,134 @@
## Detailed Explanation of Tool Buttons
?> All buttons can be hidden or displayed in `Display Settings` -> `Tool Buttons`.<br>
All buttons can be freely adjusted in position. Buttons can be set to alignment groups `Left` `Center` `Right`, and adjustments to relative positions will be limited within the alignment group.<br>
Button colors can be customized in `Display Settings` -> `Interface Settings` -> `Toolbar` -> `Button Colors`.<br>
Some buttons have two icons to indicate two different states. Some buttons only have one icon, but they use different colors to represent different states.
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.6.0/css/all.min.css">
<style>
i{
color:blue;
width:20px;
}
.fa-icon {
visibility: hidden;
}
.btnstatus2{
color:deeppink;
}
</style>
1. #### <i class="fa fa-rotate-right"></i> <i class="fa fa-icon fa-rotate-right"></i> Manual Translation
The actual meaning is to read the input once from the current text input source and perform translation.
For example, if the current mode is OCR, it will perform OCR again.
1. #### <i class="fa fa-forward"></i> <i class="btnstatus2 fa fa-forward"></i> Auto Translation
The actual meaning is to pause/continue automatically reading text from the current text input source.
For example, if the current mode is HOOK, it will pause reading game text; if the current mode is OCR, it will pause automatic image recognition; if the current mode is clipboard mode, it will pause automatic reading of the clipboard.
1. #### <i class="fa fa-gear"></i> <i class="fa fa-icon fa-rotate-right"></i> Open Settings
N/A
1. #### <i class="fa fa-file"></i> <i class="fa fa-icon fa-rotate-right"></i> Read Clipboard
The actual meaning is to read text once from the clipboard regardless of the current default text input source and pass it on to the subsequent translation/tts/... process
1. #### <i class="fa fa-sitemap"></i> <i class="fa fa-icon fa-rotate-right"></i> Open Related Page
It is equivalent to a small browser, mainly for creating a small favorites folder for each game. It will automatically query metadata for game-related pages such as vndb/bangumi/dlsite/, and you can also manually add some web pages associated with the game (such as game strategy pages) for easy viewing. It saves the trouble of creating and managing bookmarks in a browser.
See [Useful Features](/zh/usefulsmalltools.md?id=Related Page, Convenient Management of Game-Related Web Pages)
1. #### <i class="fa fa-futbol"></i> <i class="fa fa-icon fa-rotate-right"></i> Game Settings
When using HOOK mode to connect to a game, or using OCR mode to bind a game window, you can directly open the current game's settings window through this button
1. #### <i class="fa fa-mouse-pointer"></i> <i class="btnstatus2 fa fa-mouse-pointer"></i> Mouse Through Window
After activating this button, the translation window will not respond to mouse clicks, but will pass the click event to the underlying window.<br>
When placing the translation window above the game window's text box and activating this button, you can directly click the game's text box instead of the translation window.<br>
When the mouse moves to the **area of the Mouse Through Window button and one button to the left and right**, it will automatically exit through to use the tool buttons; it will automatically restore through when moving out of the area.
1. #### <i class="fa fa-lightbulb"></i> <i class="btnstatus2 fa fa-lightbulb"></i> Background Window Transparency
The function of this button is to switch the opacity of the translation window to 0 with one click. This switch will not cause the original opacity settings to be forgotten.
1. #### <i class="fa fa-lock"></i> <i class="btnstatus2 fa fa-unlock"></i> Lock Toolbar
When the toolbar is not locked, it will automatically hide when the mouse moves out; after activation, the toolbar will always be displayed.<br>
When the toolbar is not locked, if `Mouse Through Window` is activated, the toolbar will only be displayed when the mouse moves to the **area of the Mouse Through Window button and one button to the left and right**; otherwise, as long as the mouse enters the translation window, the toolbar will be displayed.<br>
If the window effect (Aero/Arylic) is currently used and the toolbar is not locked, the toolbar will be in the area above the text area on the z-axis, not on the y-axis above the text area. This is because due to Windows, when using the window effect, if the toolbar is only hidden instead of reducing its window height, the hidden toolbar will still be rendered with the acrylic/Aero background, resulting in a blank area where the toolbar is located.
1. #### <i class="fa fa-link"></i> <i class="fa fa-icon fa-rotate-right"></i> Select Game
**This button is only available in HOOK mode**<br>
Clicking the button pops up the select game process window to select the game process to HOOK.
1. #### <i class="fa fa-tasks"></i> <i class="fa fa-icon fa-rotate-right"></i> Select Text
**This button is only available in HOOK mode**<br>
Clicking the button pops up the select game text window to select which text to translate that is HOOKed.<br>
However, the select text window will automatically pop up after selecting the process, and this button is actually used to replace the selected text or modify some settings.
1. #### <i class="fa fa-crop"></i> <i class="fa fa-icon fa-rotate-right"></i> Select OCR Range
**This button is only available in OCR mode**<br>
In OCR mode, select the OCR area, or change the OCR area, or when activating `OCR Settings` -> `Other` -> `Multiple Area Mode`, add a new OCR area
1. #### <i class="fa fa-square"></i> <i class="fa fa-icon fa-rotate-right"></i> Show/Hide Range Box
**This button is only available in OCR mode**<br>
When no OCR range is selected, use this button to display the OCR range, which will automatically set the OCR range to the last selected OCR.
1. #### <i class="fa fa-crop"></i> <i class="fa fa-icon fa-rotate-right"></i> Perform OCR Once
This button is similar to `Read Clipboard`, regardless of the current default text input source, it will first select the OCR range, then perform OCR once, and then proceed with the translation process.<br>
This button is generally used in HOOK mode, when encountering choices, to temporarily use OCR for translation of choices. Or in OCR mode, to temporarily recognize a new position that occasionally appears.<br>
1. #### <i class="fa fa-spinner"></i> <i class="fa fa-icon fa-rotate-right"></i> Perform OCR Again
After using `Perform OCR Once`, use this button to perform OCR again at the original location without having to re-select the recognition area.
1. #### <i class="fa fa-book"></i> <i class="fa fa-icon fa-rotate-right"></i> Proper Noun Translation_Direct Replacement
1. #### <i class="fa fa-book"></i> <i class="fa fa-icon fa-rotate-right"></i> Proper Noun Translation_Global
1. #### <i class="fa fa-book"></i> <i class="fa fa-icon fa-rotate-right"></i> Proper Noun Translation
1. #### <i class="fa fa-won"></i> <i class="fa fa-icon fa-rotate-right"></i> Translation Result Correction_Global
1. #### <i class="fa fa-won"></i> <i class="fa fa-icon fa-rotate-right"></i> Translation Result Correction
The above five buttons have similar effects and are used to quickly open the translation optimization settings window to add new specified terms.<br>
For `Global`, it will definitely open the global dictionary settings. For non-`Global`, when there is a bound game (HOOK linked game/clipboard, OCR bound window), it will open the game's dedicated dictionary settings, otherwise it will open the global dictionary settings.
1. #### <i class="fa fa-minus"></i> <i class="fa fa-icon fa-rotate-right"></i> Minimize to Tray
N/A
1. #### <i class="fa fa-times"></i> <i class="fa fa-icon fa-rotate-right"></i> Exit
N/A
1. #### <i class="fa fa-hand-paper"></i> <i class="fa fa-icon fa-rotate-right"></i> Move
Drag the translation window.<br>
In fact, when there is no button on the button bar, there is additional blank area, you can drag it at will. This button is just for reserving a drag position.
1. #### <i class="fa fa-compress"></i> <i class="fa fa-expand"></i> Window Scaling
You can scale the game window (HOOK linked game/clipboard, OCR bound window) with one click (default uses the built-in Magpie, or you can set it to use your own downloaded Magpie, etc.).<br>
1. #### <i class="fa fa-camera"></i> <i class="fa fa-icon fa-rotate-right"></i> Window Screenshot
You can take a screenshot of the bound window (it will take two screenshots by default, GDI and Winrt, both of which have a certain probability of failure). The best part is that if you are currently using Magpie for scaling, it will also take a screenshot of the enlarged window.<br>
See [Useful Features](/zh/usefulsmalltools.md?id=Window Screenshot & Gallery & Recording, Capture Every Wonderful Moment)
1. #### <i class="fa fa-volume-off"></i> <i class="btnstatus2 fa fa-volume-up"></i> Game Mute
After binding the game window (not just in HOOK mode, OCR or clipboard mode can also, as long as the game window is bound), you can mute the game with one click, saving the trouble of muting the game in the system volume mixer.
1. #### <i class="fa fa-eye"></i> <i class="btnstatus2 fa fa-eye-slash"></i> Show/Hide Original Text
Toggle whether to display the original text, which will take effect immediately.
1. #### <i class="fa fa-toggle-on"></i> <i class="btnstatus2 fa fa-toggle-off"></i> Show/Hide Translation
Toggle whether to use translation, which is the master switch for translation. If turned off, no translation will be performed.<br>
If a translation has already been performed, turning it off will hide the translation result, and it will re-display the current translation result when turned back on.<br>
If no translation has been performed and it is switched from hidden to display, it will trigger the translation of the current sentence.
1. #### <i class="fa fa-music"></i> <i class="fa fa-icon fa-rotate-right"></i> Read Out Loud
Left-clicking the button will perform text-to-speech on the current text.<br>Right-clicking the button will interrupt the reading.<br>
This reading will ignore `Skip` (if in `Voice Settings`, the current text target is matched as `Skip`, then using the button for reading will ignore the skip and force the reading).
1. #### <i class="fa fa-copy"></i> <i class="fa fa-icon fa-rotate-right"></i> Copy to Clipboard
Copy the currently extracted text to the clipboard once. If you want to automatically extract to the clipboard, you should activate `Text Input` -> `Text Output` -> `Clipboard` -> `Auto Output`.
1. #### <i class="fa fa-rotate-left"></i> <i class="fa fa-icon fa-rotate-right"></i> Show/Hide History Translation
Open or close the window for historical translations.
1. #### <i class="fa fa-gamepad"></i> <i class="fa fa-icon fa-rotate-right"></i> Game Management
Open the game manager interface.
1. #### <i class="fa fa-edit"></i> <i class="fa fa-icon fa-rotate-right"></i> Edit
Open the edit window to edit the currently extracted text.<br>
In this window, you can modify the text and then perform translation; or you can translate any text you enter yourself.
1. #### <i class="fa fa-edit"></i> <i class="fa fa-icon fa-rotate-right"></i> Edit_Translation History
Open the translation history edit window for the current game.
1. #### <i class="fa fa-download"></i> <i class="fa fa-icon fa-rotate-right"></i> Simulate Key Press Ctrl
1. #### <i class="fa fa-download"></i> <i class="fa fa-icon fa-rotate-right"></i> Simulate Key Press Enter
As above, it is used to send a simulated key press to the game window. It has some effect when using streaming/tablet.
1. #### <i class="fa fa-list-ul"></i> <i class="fa fa-icon fa-rotate-right"></i> Memo
Open the memo window for the game you are currently playing. Each game has a separate memo file.<br>
It can be used to temporarily write some notes, or copy the strategy into it to read and delete as you play, which is very convenient. It saves the trouble of opening a web page/separately opening a txt file, very practical.
1. #### <i class="fab fa-windows"></i> <i class="btnstatus2 fab fa-windows"></i> Bind Window (Some software does not support) (Click to cancel)
**This button is very important, many features depend on this button to be set first before they can be used**<br>
After binding the game window, `Window Scaling` `Window Screenshot` `Game Mute`, `Follow Game Window` -> `Unpin when Game Loses Focus` and `Synchronize with Game Window Movement`, as well as recording game time, etc., are available.
This button is available regardless of HOOK/OCR/Clipboard mode.<br>
In HOOK mode, it will automatically bind the game window according to the connected game, but you can also use this button to re-select other windows.<br>
In OCR mode, after binding the window, it also allows the OCR area and range box to move automatically in sync with the movement of the game window.
In OCR/Clipboard model, after binding the window, you can also link to the current game's game settings like in HOOK mode, to use the current game's dedicated translation optimization dictionary, etc.
1. #### <i class="fa fa-neuter"></i> <i class="btnstatus2 fa fa-neuter"></i> Always on Top
Cancel/Always on Top translation window
1. #### <i class="fa fa-i-cursor"></i> <i class="btnstatus2 fa fa-i-cursor"></i> Selectable
Make the text in the translation window's text area selectable. When selectable is activated, you cannot drag in the text area but can only drag the toolbar (because dragging is for selecting text)
1. #### <i class="fa fa-search"></i> <i class="fa fa-icon fa-rotate-right"></i> Look Up
Open the look-up window.

28
docs/en/basicuse.md Normal file
View File

@ -0,0 +1,28 @@
## Basic Usage
The interface after startup is as follows.
![img](https://image.lunatranslator.org/zh/opensetting.png)
First, you need to activate several translation sources. Click the "Open Settings" button to open the settings interface, and then click on "Translation Settings" on the left side.
In the online translation section on the right below, choose any translation sources and activate them.
![img](https://image.lunatranslator.org/zh/transsetting.png)
Close the settings interface, click the "Select Game" button to open the game selection interface, select the game and then OK.
![img](https://image.lunatranslator.org/zh/attach.png)
![img](https://image.lunatranslator.org/zh/selectgame.png)
Then, a text selection interface will pop up. Let the game run for a while to display some text. At this point, several text lines will appear in the text selection interface.
Click the button under the first column selection, or double-click the text line to select that line of text for translation. (If the game supports embedded translation, a second column "Embedded" will also appear)
![img](https://image.lunatranslator.org/zh/selecttext.png)
After the selection is complete, close the text selection interface. At this point, you can see the translation of the game.
![img](https://image.lunatranslator.org/zh/showtrans.png)

33
docs/en/cantstart.md Normal file
View File

@ -0,0 +1,33 @@
## Can't Start the Software?
#### **1. Error/ModuleNotFoundError**
If you update directly from an old version to a new one, or if you update automatically to a new version, the old invalid files will not be deleted. Due to the file loading order of Python, the old files are loaded preferentially, which prevents the new files from being loaded, causing this issue.
The solution is to keep the userconfig folder, delete the other files, and then re-download and unzip.
<details>
<summary>Some built-in solutions that no longer cause errors</summary>
<img src="https://image.lunatranslator.org/zh/cantstart/1.png">
<img src="https://image.lunatranslator.org/zh/cantstart/3.jpg">
</details>
#### **2. Error/PermissionError**
If the software is placed in special folders such as `Program Files`, it may not have read and write permissions. Please run with administrator privileges.
<img src="https://image.lunatranslator.org/zh/cantstart/6.png" width=400>
#### **3. Missing Important Components**
<img src="https://image.lunatranslator.org/zh/cantstart/2.jpg">
Solution: Close antivirus software. If it cannot be closed (such as Windows Defender), add it to the trust list and then re-download.
Note: To achieve HOOK extraction of game text, it is necessary to inject Dll into the game. Files such as shareddllproxy32.exe/LunaHost32.dll implement this, and therefore are particularly likely to be considered as viruses. The software is currently automatically built by [Github Actions](https://github.com/HIllya51/LunaTranslator/actions). Unless the Github server is infected, it is impossible to contain viruses, so it can be safely added to the trust list.
<details>
<summary>For Windows Defender, the method is: “Virus & threat protection” -> “Exclusions” -> “Add or remove exclusions” -> “Add an exclusion” -> “Folder”, add Luna's folder to it</summary>
<img src="https://image.lunatranslator.org/zh/cantstart/4.png">
<img src="https://image.lunatranslator.org/zh/cantstart/3.png">
</details>

83
docs/en/embedtranslate.md Normal file
View File

@ -0,0 +1,83 @@
## How to Use Embedded Translation?
> First, not all games support embedding. Second, embedding may cause the game to crash.
<details>
<summary>If the 'Embed' line is not available in the text selection, it means embedding is not supported.</summary>
<img src="https://image.lunatranslator.org/zh/embed/noembed.png">
<img src="https://image.lunatranslator.org/zh/embed/someembed.png">
</details>
For games that support embedding, select the text entries that support embedding and activate it.
![img](https://image.lunatranslator.org/zh/embed/select.png)
For entries that support embedding, you can freely choose whether to activate both **Display** and **Embed**. When both are activated, translations will be embedded in the game and more translations will be displayed in the software window; if only embedding is activated, only the embedded translations will be displayed in the game, and the software window will not display anything.
When starting embedded translation, garbled text often occurs. Game garbling is usually due to **character sets** and **fonts**. For English games, it is usually caused by the lack of Chinese **fonts**, for example:
![img](https://image.lunatranslator.org/zh/embed/luanma.png)
At this time, you need to activate **Modify Game Font** in the **Embed Settings** and select an appropriate font to display Chinese characters.
![img](https://image.lunatranslator.org/zh/embed/ziti.png)
After modifying the font, Chinese characters can be displayed correctly:
![img](https://image.lunatranslator.org/zh/embed/okembed.png)
However, you may find that the embedded text is in Traditional Chinese, you can uncheck **Convert characters to Traditional/Japanese** in the **Embed Settings**.
> This is because **for many old Japanese galgames, they use their own built-in shift-jis character set processing and cannot correctly handle Chinese characters. By converting Chinese characters to similar Traditional/Japanese characters, the occurrence of garbled text can be reduced, so it is set to automatically convert Simplified Chinese to Traditional Chinese by default**. If garbled text appears after unchecking this setting, please restore it.
For newer game engines and most English games, Unicode character sets such as utf-8 or utf-16 are generally used (such as **KiriKiri**, **Renpy**, **TyranoScript**, **RPGMakerMV**, etc.), and even if garbled text appears, it is usually a font issue, not a character set issue.
![img](https://image.lunatranslator.org/zh/embed/fanti.png)
After unchecking this setting, Simplified Chinese can be displayed correctly. However, for some games that cannot display Simplified Chinese correctly, you can try activating this option to see if it can be displayed normally.
![img](https://image.lunatranslator.org/zh/embed/good.png)
** **
## Some Other Settings
**1. Keep Original Text**
![img](https://image.lunatranslator.org/zh/embed/keeporigin.png)
Due to the limitation of the number of text lines that the game can display, by default, there is no line break added between the translation and the original text. If you are sure it can accommodate, you can add a line break in front of the translation by adding a regex in **Translation Optimization** -> **Translation Result Correction**.
![img](https://image.lunatranslator.org/zh/embed/addspace.png)
**2. Translation Waiting Time**
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**
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**
Omitted
**5. Insert Spaces Between Overlapping Characters**
For some old Japanese game engines like SiglusEngine, they cannot correctly handle the width of Chinese characters and display them according to the width of English characters, causing overlapping of Chinese characters in embedded display. You can try adjusting this setting to solve this problem.
**6. Limit the Number of Characters per Line**
Sometimes some games have a limited number of characters per line, and content exceeding the length will be displayed outside the text box on the right and cannot be displayed. You can manually wrap the line to avoid this situation through this setting.
![img](https://image.lunatranslator.org/zh/embed/limitlength.png)
**7. Modify Game Font**
Omitted
**8. Embedded Safety Check**
For games like Renpy, the extracted text often includes characters of syntax elements such as `{` `}` `[` `]`. If the translation source does not handle these contents correctly, it will break the syntax and cause the game to crash. Therefore, the software defaults to **skipping translation** of certain character combinations that may cause the game by regex matching. If you are not worried about game crashes, you can cancel this setting, or manually replace some finer-grained regex matches to reduce unnecessary skipping.
![img](https://image.lunatranslator.org/zh/embed/safeskip.png)

141
docs/en/fastkeys.md Normal file
View File

@ -0,0 +1,141 @@
## Detailed Explanation of Shortcut Keys
### To use shortcut keys, you first need to activate `Use Shortcut Keys`, then activate the specific shortcut key you want to use, and set its key combination.
<!-- tabs:start -->
### **General**
1. #### Manual Translation
Reads input once from the current text input source and performs translation.
For example, if the current mode is OCR, it will perform OCR again.
1. #### Auto Translation
Pauses/resumes automatic text reading from the current text input source.
For example, if the current mode is HOOK, it will pause reading game text; if the current mode is OCR, it will pause automatic image recognition; if the current mode is clipboard, it will pause automatic reading from the clipboard.
1. #### Open Settings
N/A
1. #### Show/Hide Original Text
Toggles whether to display the original text, taking effect immediately.
1. #### Show/Hide Translation
Toggles whether to use translation, which is the main switch for translation. Turning it off will stop any translation.
If translation has already been performed, turning it off will hide the translation results, and turning it back on will redisplay the current translation results.
If no translation has been performed and it is switched from hidden to displayed, it will trigger translation for the current sentence.
1. #### Show/Hide Historical Translations
Opens or closes the historical translations window.
1. #### Mouse Pass-through Window
Toggles the mouse pass-through window state.
This feature must be used in conjunction with the mouse pass-through window tool button to function correctly.
1. #### Lock Toolbar
When the toolbar is not locked, it will automatically hide when the mouse moves out; activating this will keep the toolbar always visible.
When the toolbar is not locked and `Mouse Pass-through Window` is activated, the toolbar will only be displayed when the mouse moves to the **Mouse Pass-through Window button and the area to its left and right**; otherwise, it will be displayed as soon as the mouse enters the translation window.
If window effects (Aero/Arylic) are used and the toolbar is not locked, the toolbar will be in the z-axis area above the text area, not on the y-axis above the text area. This is because, due to Windows, when window effects are used, if the toolbar is only hidden rather than shrunk to reduce its window height, the hidden toolbar will still be rendered with the Acrylic/Aero background, causing a blank area where the toolbar is located.
1. #### Show/Hide Translation Window
N/A
1. #### Exit
N/A
### **HOOK**
**Available only in HOOK mode**
1. #### Select Game
Pops up the game process selection window to select the game process to HOOK.
1. #### Select Text
Pops up the game text selection window to select which HOOKed text to translate.
However, the text selection window will automatically pop up after selecting the process, and is actually used to change the selected text or modify some settings.
### **OCR**
1. #### Select OCR Range
**Available only in OCR mode**
In OCR mode, selects the OCR area, or changes the OCR area, or when `OCR Settings` -> `Other` -> `Multi-region Mode` is activated, adds a new OCR area.
1. #### Show/Hide Range Box
**Available only in OCR mode**
When no OCR range is selected, using this shortcut key will display the OCR range and automatically set the OCR range to the last selected OCR.
1. #### Select OCR Range - Immediate
**Available only in OCR mode**
The difference from `Select OCR Range` is that it requires one less mouse click.
1. #### Perform OCR Once
Similar to `Read Clipboard`, regardless of the current default text input source, it will first select the OCR range, then perform OCR once, and then proceed with the translation process.
Generally used for, in HOOK mode, temporarily using OCR to translate selection branches when encountering them, or in OCR mode, temporarily recognizing a new occasional position.
1. #### Perform OCR Again
After using `Perform OCR Once`, using this shortcut key will perform OCR again in the original position without reselecting the recognition area.
### **Clipboard**
1. #### Read Clipboard
The actual meaning is that regardless of the current default text input source, it reads text once from the clipboard and passes it to the subsequent translation/TTS/... process.
1. #### Copy to Clipboard
Copies the currently extracted text to the clipboard once. If you want to automatically extract to the clipboard, you should activate `Text Input` -> `Text Output` -> `Clipboard` -> `Auto Output`.
1. #### Copy Translation to Clipboard
Copies the translation instead of the original text to the clipboard.
### **TTS**
1. #### Auto Read
Toggles whether to automatically read aloud.
1. #### Read
Performs text-to-speech on the current text.
This reading will ignore `Skip` (if the current text target is matched as `Skip` in `Voice Assignment`, using the shortcut key to read will ignore the skip and force reading).
1. #### Read Interrupt
Interrupts the reading.
### **Game**
1. #### Bind Window (Click to Cancel)
After binding the game window, `Window Scaling`, `Window Screenshot`, `Game Mute`, `Follow Game Window` -> `Cancel Topmost When Game Loses Focus` and `Move Synchronously When Game Window Moves`, as well as recording game time, become available.
This shortcut key is available regardless of HOOK/OCR/clipboard mode.
In HOOK mode, it will automatically bind the game window according to the connected game, but you can also use this shortcut key to reselect another window.
In OCR mode, after binding the window, it additionally allows the OCR area and range box to move synchronously when the game window moves.
In OCR/clipboard mode, after binding the window, it can also be associated with the current game settings in HOOK mode, thus using the game's proprietary translation optimization dictionary, etc.
1. #### Window Scaling
Can scale the game window (HOOK linked game/clipboard, OCR bound window) with one click (default uses the built-in Magpie, or can be set to use a downloaded Magpie, etc.).
1. #### Window Screenshot
Can take a screenshot of the bound window (default takes two screenshots, GDI and Winrt, both of which may fail). The best part is that if Magpie is currently being used for scaling, it will also take a screenshot of the scaled window.
See [Practical Functions](/zh/usefulsmalltools.md?id=窗口截图amp画廊amp录音捕捉每个精彩瞬间) for details.
1. #### Game Mute
After binding the game window (not just in HOOK mode, but also in OCR or clipboard mode, as long as the game window is bound), you can mute the game with one click, saving the trouble of muting the game in the system volume mixer.
1. #### Magpie In-game Overlay
**Valid only when using the built-in Magpie to scale the window**
Shows/hides the in-game overlay of the built-in Magpie.
1. #### Gallery Recording
Shortcut key for a recording function in game management.
### **Dictionary Lookup**
1. #### Anki Recording
Shortcut key for the recording function in the Anki add interface in the dictionary lookup window.
1. #### Anki Recording Example Sentence
Shortcut key for the recording function in the Anki add interface in the dictionary lookup window, but this shortcut key sets the recorded audio to the example sentence field.
1. #### Anki Add
Adds the word to Anki.
1. #### Read Word
Reads the word in the current dictionary lookup window.
<!-- tabs:end -->

29
docs/en/gooduseocr.md Normal file
View File

@ -0,0 +1,29 @@
## Bind Game Window for OCR Mode
By default, `Automatically bind window after selecting OCR range` is activated; when the four corners of the selection frame belong to a single window HWND, it will automatically bind to that window.
Typically, one very frustrating aspect of using other OCR software is often having to pay attention to the position of the game window and the translation window. It can be annoying if the translation window intersects with the screenshot area or if the game window needs to be switched to the background.
However, Luna's **Bind Window** setting perfectly resolves this annoyance.
Click the **Bind Window** button, then click on the game window. The button turns pink, indicating that the game window has been successfully bound.
![img](https://image.lunatranslator.org/zh/gooduseocr/bind.png)
![img](https://image.lunatranslator.org/zh/gooduseocr/bindok.png)
When this happens, there will be some significant changes:
1. **Screenshots will only capture the game window and not any other non-game windows.** This way, the translation window can be placed anywhere without causing dramatic changes due to intersecting with the screenshot area. Additionally, when the game window is obscured by another window, the screenshot will still only capture the game window.
2. **The OCR region will move in sync with the game window as the game window moves.** Thus, when you need to move the game window sometimes, theres no need to move the OCR frame, especially if you have hidden the frame. There would be no need to show-move-hide it again.
In addition to these benefits, there are other advantages to binding the game window:
1. The game screenshot feature can more accurately capture the game window.
2. The gameplay time tracking function can more accurately record the time.
3. You can use the built-in Magpie or call your own downloaded Magpie via the tool button.
4. You can obtain the game's position and internal ID from the window handle, allowing for some personalized settings for the game, including dedicated language/TTS/translation optimization/text processing/Anki settings, etc.

186
docs/en/guochandamoxing.md Normal file
View File

@ -0,0 +1,186 @@
## How to Use Large Model API for Translation
<details>
<summary>How to use multiple ChatGPT-compatible interfaces (or dedicated interfaces) simultaneously?</summary>
If you simply have multiple different keys and want to poll them, just separate them with a `|`.<br>
However, sometimes you want to use multiple different API addresses/prompts/models/parameters at the same time to compare translation effects. The method is:<br>
Click the "+" button at the bottom right
<img src="https://image.lunatranslator.org/zh/damoxing/extraapi1.png">
A window will pop up, select ChatGPT-compatible interface (or dedicated interface), and give it a name. This will copy the current ChatGPT-compatible interface (or dedicated interface) settings and API.
<img src="https://image.lunatranslator.org/zh/damoxing/extraapi2.png">
Activate the copied interface and you can make individual settings. The copied interface can run with the original interface, allowing you to use multiple different settings.
<img src="https://image.lunatranslator.org/zh/damoxing/extraapi3.png">
</details>
>**model** can be selected from the drop-down list, and if it's not in the list, you can manually enter/modify it according to the official documentation of the interface.<br>
>Some interfaces can dynamically obtain the model list based on **API Interface Address** and **API Key**. After filling in these two items, click the refresh button next to **model** to get the list of available models.
### ChatGPT-Compatible Interfaces
>Most large model platforms use ChatGPT-compatible interfaces.<br>Since there are so many platforms, it's impossible to list them all. For other interfaces not listed, please refer to their documentation to fill in the corresponding parameters.
#### Foreign Large Model Interfaces
<!-- tabs:start -->
### **groq**
**API Interface Address** `https://api.groq.com/openai/v1/chat/completions`
**API Key** https://console.groq.com/keys
**model** https://console.groq.com/docs/models Fill in `Model ID`
### **OpenRouter**
**API Interface Address** `https://openrouter.ai/api/v1/chat/completions`
**API Key** https://openrouter.ai/settings/keys
**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`
**API Key** https://console.mistral.ai/api-keys/
**model** https://docs.mistral.ai/getting-started/models/
### **Azure**
https://learn.microsoft.com/en-us/azure/ai-services/openai/reference#completions
<!-- tabs:end -->
#### Domestic Large Model Interfaces
<!-- tabs:start -->
### **DeepSeek**
**API Interface Address** `https://api.deepseek.com`
**API Key** https://platform.deepseek.com/api_keys
**model** https://platform.deepseek.com/api-docs/zh-cn/pricing
### **Alibaba Cloud Bailian Large Model**
**API Interface Address** `https://dashscope.aliyuncs.com/compatible-mode/v1`
**API Key** https://bailian.console.aliyun.com/?apiKey=1#/api-key
**model** https://help.aliyun.com/zh/model-studio/product-overview/billing-for-alibaba-cloud-model-studio/#2550bcc04d2tk
### **ByteDance DouBao Large Model (Volcano Engine)**
**API Interface Address** `https://ark.cn-beijing.volces.com/api/v3`
**API Key** [Create API Key](https://console.volcengine.com/ark/region:ark+cn-beijing/apiKey?apikey=%7B%7D) to obtain
**model** [Create Inference Access Point](https://console.volcengine.com/ark/region:ark+cn-beijing/endpoint?current=1&pageSize=10), fill in **Access Point** instead of **Model**
![img](https://image.lunatranslator.org/zh/damoxing/doubao.png)
### **Moonshot AI**
**API Interface Address** `https://api.moonshot.cn`
**API Key** https://platform.moonshot.cn/console/api-keys
**model** https://platform.moonshot.cn/docs/intro
### **Zhipu AI**
**API Interface Address** `https://open.bigmodel.cn/api/paas/v4/chat/completions`
**API Key** https://bigmodel.cn/usercenter/apikeys
**model** https://bigmodel.cn/dev/howuse/model
### **Lingyiwanwu**
**API Interface Address** `https://api.lingyiwanwu.com`
**API Key** https://platform.lingyiwanwu.com/apikeys
**model** https://platform.lingyiwanwu.com/docs/api-reference#list-models
### **SiliconFlow**
**API Interface Address** `https://api.siliconflow.cn`
**API Key** https://cloud-hk.siliconflow.cn/account/ak
**model** https://docs.siliconflow.cn/docs/model-names
### **iFlytek Spark Large Model**
**API Interface Address** `https://spark-api-open.xf-yun.com/v1`
**API Key** Refer to the [official documentation](https://www.xfyun.cn/doc/spark/HTTP%E8%B0%83%E7%94%A8%E6%96%87%E6%A1%A3.html#_3-%E8%AF%B7%E6%B1%82%E8%AF%B7%E6%B1%82%E6%B1%82%E8%AF%B7%E6%B1%82%E6%B1%82%E8%AF%B7%E6%B1%82) to obtain **APIKey** and **APISecret**, fill in according to the format of **APIKey:APISecret**
**model** https://www.xfyun.cn/doc/spark/HTTP%E8%B0%83%E7%94%A8%E6%96%87%E6%A1%A3.html#_3-2-%E8%AF%B7%E6%B1%82%E5%8F%82%E6%95%B0
<!-- tabs:end -->
### Dedicated Interfaces for Specific Platforms
>Some large model platforms are not fully compatible with the ChatGPT interface, please fill in the parameters to use in the dedicated interface.
#### Foreign Large Model Interfaces
<!-- tabs:start -->
### **gemini**
**model** https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models
**API Key** https://aistudio.google.com/app/apikey
### **claude**
**BASE_URL** `https://api.anthropic.com`
**API_KEY** https://console.anthropic.com/
**model** https://docs.anthropic.com/en/docs/about-claude/models
### **cohere**
**API Key** https://dashboard.cohere.com/api-keys
**model** https://docs.cohere.com/docs/models
<!-- tabs:end -->
#### Domestic Large Model Interfaces
<!-- tabs:start -->
### **Tencent Hunyuan Large Model**
**SecretId** & **SecretKey** https://console.cloud.tencent.com/cam/capi
**model** https://cloud.tencent.com/document/product/1729/97731
### **Baidu Qianfan Large Model**
!> This model seems to only support Chinese-English translation and does not support Japanese.
**model** Should fill in the tail of the **Request Address** in the Baidu interface documentation, for example:
![img](https://image.lunatranslator.org/zh/damoxing/qianfan1.png)
![img](https://image.lunatranslator.org/zh/damoxing/qianfan2.png)
<!-- tabs:end -->

View File

@ -1,47 +0,0 @@
# HOOK Instructions
To use the HOOK feature:
- Select Textractor in the Basic Settings. This will automatically open the process selection window.
Alternatively, you can:
- Click the "Select Game" button in the settings, or
- Click the first highlighted button "Select Game" in the toolbar.
![img](https://image.lunatranslator.org/zh/toolbar3.jpg)
There are three ways to select a process:
- Click "Click me, then click the game window" and then click on the game window. This will automatically detect the game process.
- Choose the game from the list below.
- Manually enter the process ID.
Note: When running in no_admin mode, the process may be displayed or selections may do nothing. Please switch to admin mode to fix this.
![img](https://image.lunatranslator.org/zh/selectprocess.jpg)
After selection, click OK. A text selection window will automatically appear. (You can also open this by clicking "Select Text" or the second highlighted button in the toolbar)
Once the text selection window is open, click on the game to display the next line of text. This will show several extracted text strings.
![img](https://image.lunatranslator.org/zh/selecttext.jpg)
Click on any item in the list to preview the captured text in the window below.
![img](https://image.lunatranslator.org/zh/yulan.jpg)
If there are many items in the list, you can filter them by entering text from the current game window into the "Search Entries Containing Text" box at the bottom.
For example, by searching for the Japanese word "約束" (yakusoku) that appears in the game, you'll filter the list down to just one item.
![img](https://image.lunatranslator.org/zh/filter.jpg)
To select multiple items, hold down the Ctrl key while clicking.
After making your selection(s), click OK to start the translation. If you later find that the selected items are not suitable, you can always make a new selection.
![img](https://image.lunatranslator.org/zh/reshook.jpg)

80
docs/en/hooksettings.md Normal file
View File

@ -0,0 +1,80 @@
## Detailed Explanation of HOOK Settings
### Parameter Meanings of HOOK Settings
**1. Code Page**
?> This setting is meaningful only when the text extracted from the game is a **multi-byte string with an unspecified encoding within the HOOK engine**. When the HOOK engine has already specified a code page, or the text is a **wide character string** or **UTF32** string, this setting has no meaning.
This setting generally does not need to be modified. It is only necessary when some old engines (e.g., Yuris) may have GBK/BIG5/UTF8 in their official Chinese versions. If you cannot find the correct text, please send an [issue](https://lunatranslator.org/Resource/game_support) directly to me; modifying this setting is usually futile.
**3. Filter Repeatedly Refreshing Sentences**
A simple text filter implemented internally by the HOOK engine. This filter can slightly improve performance in cases of crazy repeated text refreshing, but it is generally not recommended because the rules are too simplistic and may sometimes disrupt genuine repetition patterns.
**4. Refresh Delay**
?> Relatively speaking, this is the most practical option.
If you face one of the following situations:
1. Text is extracted one or two characters at a time;
2. Text is extracted line by line, pushing out the previous line, and only the last line is displayed;
3. Text is correct but extracted very slowly;
Then you need to adjust this option.
For **1 and 2**, because the game text is displayed too slowly, and the refresh delay is too low, each time one or two characters or a line of text is extracted, it immediately refreshes. In this case, you need to **increase the refresh delay** or increase the game's text display speed.
For **3**, you can **appropriately reduce the refresh delay** while paying attention not to cause situations **1 and 2**.
**5. Maximum Buffer Length**
Sometimes, text will refresh repeatedly without stopping. If the refresh delay is high and cannot be reduced, it will continue to receive text until the buffer is filled or the text stops refreshing to meet the refresh delay (usually when the game loses focus, so it generally waits until the buffer is filled).
To solve this problem, you can appropriately reduce the buffer length, but be careful not to make the buffer length too short to be less than the actual text length.
**6. Maximum Cached Text Length**
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).
**7. Filter Lines Containing Garbled Text**
The garbled text filtering in text processing only filters out garbled characters, while this filter, upon receiving text, will discard the entire line of text if any garbled characters are detected. When the game refreshes a large number of sentences containing garbled text, you can appropriately use this option to filter out invalid sentences and improve performance.
**8. 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
The settings made in the settings interface -> HOOK settings are default settings. When no specific HOOK settings are specified for a game, the default settings are used.
To set specific HOOK settings for a game, you need to open the **Game Management** interface, open the **Game Settings** interface, switch to the HOOK sub-tab in the game settings tab, and uncheck **Follow Default** to set specific HOOK settings for the game.
**1. Special Code**
When **Insert Special Code** and **Select Special Code Text**, this special code will be recorded, and it will be automatically inserted the next time it starts. This setting records all previously recorded special codes and allows adding or deleting special codes.
**2. Delayed Injection**
Sometimes, the position in the game that needs to be hooked, on the DLL, requires the game to run for a short while before the DLL is loaded. We also need to wait for the DLL to load before injecting.
![img](https://image.lunatranslator.org/zh/gamesettings/1.jpg)
![img](https://image.lunatranslator.org/zh/gamesettings/2.jpg)

60
docs/en/ocrparam.md Normal file
View File

@ -0,0 +1,60 @@
## Parameter Meaning for OCR Automation Execution Methods
### Analyze Image Update
This method utilizes parameters such as “Image Stability Threshold,” “Image Consistency Threshold,” and “Text Similarity Threshold.”
#### 1. Image Stability Threshold
When game text does not appear immediately (text speed is not the fastest), or when the game has a dynamic background or live2D elements, the captured images will continuously change.
Each time a screenshot is taken, it is compared to the previous screenshot to calculate similarity. When the similarity exceeds the threshold, the image is considered stable, and the next step is performed.
If it can be confirmed that the game is completely static, this value can be set to 0. Conversely, if it isn't, this value should be appropriately increased.
#### 2. Image Consistency Threshold
This parameter is the most important one.
After the image stabilizes, the current image is compared to the image at the last OCR execution (not the last screenshot). When the similarity is lower than this threshold, it is considered that the game text has changed, and OCR is performed.
If the OCR frequency is too high, this value can be appropriately increased; conversely, if it is too sluggish, it can be appropriately decreased.
#### 3. Text Similarity Threshold
The results of OCR are unstable, and minor disturbances in the image can cause slight changes in the text, leading to repeated translations.
After each OCR invocation, the current OCR result is compared to the previous OCR result (using edit distance). Only when the edit distance is greater than the threshold will the text be outputted.
### Periodic Execution
This method executes periodically based on the “Execution Interval” and uses the “Text Similarity Threshold” to avoid translating the same text repeatedly.
### Analyze Image Update + Periodic Execution
Combining the above two methods, OCR is executed at least once every “Execution Interval.” It also employs the “Text Similarity Threshold” to avoid translating identical text. Additionally, OCR is performed within intervals based on “Analyze Image Update,” resetting the interval timer.
### Mouse/Keyboard Trigger + Wait for Stability
#### 1. Trigger Events
By default, the following mouse/keyboard events trigger this method: pressing the left mouse button, pressing Enter, releasing Ctrl, releasing Shift, and releasing Alt. If the game window is bound, the method is triggered only when the game window is the foreground window.
After triggering the method, a short wait period is required for the game to render new text, considering that text may not appear immediately (if the text speed is not the fastest).
Once the method is triggered and stability is achieved, a translation is always performed, without considering the similarity of the text.
If the text speed is the fastest, both of the following parameters can be set to 0. Otherwise, the time needed to wait is determined by the following parameters:
#### 2. Delay (s)
Wait for a fixed delay time (there is an inherent delay of 0.1 seconds built-in to accommodate the internal logic handling of game engines).
#### 3. Image Stability Threshold
This value is similar to the previously mentioned parameter with the same name. However, this is used solely to determine whether the text rendering is complete, and thus it does not share the configuration with the similarly named parameter above.
Due to the unpredictable rendering times of slower text speeds, a specified fixed delay might not suffice. The action is executed when the similarity between the image and the previous screenshot is higher than the threshold.

View File

@ -1,23 +0,0 @@
# OCR Instructions
First, select OCR in the Basic Settings. Three new icons will appear in the toolbar:
![img](https://image.lunatranslator.org/zh/toolbar2.jpg)
Click the first button to select the screenshot area. A selection region will appear as shown in the image below:
![img](https://image.lunatranslator.org/zh/12.jpg)
The second button toggles the visibility of the selection region.
The third button allows you to bind the screenshot to a specific window. To do this:
1. Click the button
2. Click on the game window
3. The button will turn pink, indicating a successful bind
To unbind, click the button and then click on the translator itself.
Here's how it looks when bound to a screenshot window. OCR will function normally even if windows overlap:
![img](https://image.lunatranslator.org/zh/ocrbind.jpg)

21
docs/en/offlinellm.md Normal file
View File

@ -0,0 +1,21 @@
## How to Use Large Model Offline Translation?
### Sakura Large Model
> Recommended for use, simple configuration, good results, and can also run lightweight models purely on CPU.
Deployment Methods
1. [Deploy SakuraLLM to an Online GPU Platform](/zh/sakurallmcolab.md)
2. Other deployment methods can be referred to at https://github.com/SakuraLLM/SakuraLLM/wiki
### ChatGPT Compatible Interface
You can fill in the **Sakura Large Model** address and model into the parameters of this interface (compared to this, it only adds some preset prompts and other parameters, with no other differences).
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 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.
You can also fill in the API of the registered large model (but it's unnecessary), and compared to the ChatGPT compatible interface under registered online translation, the only difference is that it does not use a proxy.

26
docs/en/playonxp.md Normal file
View File

@ -0,0 +1,26 @@
## Playing Ancient Games on an XP Virtual Machine and Extracting Text for Translation
**1. Running the Game in a Different Locale Using ntleas in the VM**
If the game displays garbled characters, you can use [ntleas](https://github.com/zxyacb/ntlea)'s x86\ntleas.exe to run the game in a different locale. Open cmd, switch to the ntleas\x86 folder, and run `ntleas.exe "absolute path to game.exe"`.
![img](https://image.lunatranslator.org/zh/playonxp/ntleas.png)
**2. Extracting Text Using LunaHook Windows XP Special Edition in the VM**
Download `[LunaHook](https://github.com/HIllya51/LunaHook/releases)`'s `Release_Chinese_winxp.zip`, copy it into the VM, and run it. Select the game's process, choose the game text, and then in the settings, activate `Copy to Clipboard`.
![img](https://image.lunatranslator.org/zh/playonxp/image.png)
**3. Translating on the Host Machine**
Set up shared clipboard functionality for the VM to transmit clipboard content from the VM to the host machine.
![img](https://image.lunatranslator.org/zh/playonxp/copy.png)
Run LunaTranslator on the host machine and switch the text input source from `HOOK` to `Clipboard`.
![img](https://image.lunatranslator.org/zh/playonxp/host.png)
---
The final effect is as follows:
![img](https://image.lunatranslator.org/zh/playonxp/effect.png)

11
docs/en/qa1.md Normal file
View File

@ -0,0 +1,11 @@
## How to Use Mecab Tokenization & Part-of-Speech Color Highlighting
First, you need to download the Mecab dictionary. Download the [default version](https://lunatranslator.org/Resource/dictionary/Mecab.zip) or the [official latest version](https://clrd.ninjal.ac.jp/unidic/), and unzip it.
Then, activate Mecab in the Dictionary Settings and set the dictionary path.
![img](https://image.lunatranslator.org/zh/mecab.png)
Next, in the Display Settings -> Text Settings, activate Tokenization -> Pronunciation Display (activated by default) and Syntax Highlighting.
![img](https://image.lunatranslator.org/zh/fenci.png)

31
docs/en/qa2.md Normal file
View File

@ -0,0 +1,31 @@
## How to Automatically Add Words to Anki
1. Install Anki, https://apps.ankiweb.net/ go to the homepage to download and install.
2. Search for Anki Connect, the first result.
![img](https://image.lunatranslator.org/zh/anki/336449205-4eb7ce93-a9e9-489b-be8a-da67cfdca6ea.png)
It will provide a number, currently 2055492159.
3.
![img](https://image.lunatranslator.org/zh/anki/336449710-95f90d9a-cfe6-42c3-a44f-64d88d13833d.png)
4.
![img](https://image.lunatranslator.org/zh/anki/336450025-9bf64445-f62e-4bfe-86f7-da99a7100e92.png)
Enter the number and restart Anki.
---
On the Luna side, after clicking on the word lookup.
![img](https://image.lunatranslator.org/zh/anki/336451202-a2dd54c0-e4ee-4c27-9183-8b4ab05c4819.png)
![img](https://image.lunatranslator.org/zh/anki/336451442-7887d600-8c44-4256-9020-1d85e0f6184a.png)
---
Reference: [asukaminato0721](https://github.com/HIllya51/LunaTranslator/issues/796)

View File

@ -1,188 +0,0 @@
# Settings
Access the settings window by clicking the settings button in the toolbar or the tray icon.
## Basic Settings
Choose your text output source. A pink ✓ indicates selection, while a gray × indicates inactive selection; only one can be selected at a time.
- When selecting OCR as the text input, you need to define the OCR region in the toolbar.
- Choosing Textractor (HOOK) as the text input will open a process selection window, followed by a text selection window after choosing a game.
- The default is clipboard mode, which automatically extracts and translates text from the clipboard.
![img](https://image.lunatranslator.org/zh/5.jpg)
## Translation Settings
Configure various translation engines. The developer (HIllya51) hasn't separated different types of translators into categories.
Supported translation engines include:
&emsp;&emsp;**Offline Translation**: Supports JBeijing7, Kingsoft FastAIT, and YiDianTong for offline translation.
&emsp;&emsp;Free Online Translation: Supports Baidu, Bing, Google, Ali, Youdao, Caiyun, Sogou, DeepL, Kingsoft, iFlytek, Tencent, ByteDance, Volcano, Papago, and Yeekit.
&emsp;&emsp;**Registered Online Translation**: Supports user-registered API keys for Baidu, Tencent, Youdao, Niutrans, Caiyun, Volcano, and DeepL.
&emsp;&emsp;**Pre-translation**: Supports loading human translations and aggregated machine pre-translations.
You can select any number of translation engines without restriction.
- The buttons represent: Enable/Disable translator / Set translation text color / Settings
- Offline translation, API online translation, and pre-translation require setup before use.
- For Google Translate and DeepL, you may need to set up a proxy to access them.
- Pre-translation supports fuzzy matching (particularly effective in OCR mode).
![img](https://image.lunatranslator.org/zh/6.jpg)
## HOOK设置
LocaleEmulator settings allow you to set the LocaleEmulator path (built-in for newer versions). Once set, you can launch games through LocaleEmulator.
- "Game Manager" stores previously hooked games for convenient launches (same as clicking "Open Game Manager" in the toolbar).
- "Record Translation File" saves extracted text to the "transkiroku" folder, outputting two files:
1. **game_md5_game_executable_name.sqlite**: Records a single translation source output for generating "manual translation" files. Setting a preferred translation source prioritizes that source, and falls back to others if translation fails.
2. **game_md5_game_executable_name.premt_synthesize.sqlite**: Used for "machine pre-translation" to record all valid translation results.
- "Export SQLite file to JSON" Exports to JSON for easy translation editing. Set the JSON file path as the "Manual Translation" file path to use manual translations.
- In clipboard and OCR modes, files are recorded with prefixes "0_copy" and "0_ocr" respectively.
[➔ See HOOK instructions for detailed usage](hooksetsumei.md)
![img](https://image.lunatranslator.org/zh/21.jpg)
## OCR Settings
In OCR mode, select your preferred OCR source.
- The local OCR is a built-in engine that's easy to use.
- Baidu OCR, OCRSpace, and Docsumo require API keys.
- Youdao OCR and Youdao Image Translation are experimental interfaces that may be unstable.
- Windows OCR requires Japanese language components installed on your system.
- Setting "Perform OCR at regular intervals" and specifying a maximum interval forces OCR to occur every X seconds, regardless if the game scene has changed or not.
[➔ See OCR instructions for detailed usage](ocrsetsumei.md)
![img](https://image.lunatranslator.org/zh/22.jpg)
## Display Settings
- Opacity sets the window background opacity.
- When "Show Original Text" is enabled, you can set options to display furigana and word segmentation results.
- Font styles include four options (Normal, Hollow, Outline, Shadow). The latter three advanced styles can be adjusted using "Hollow Line Width," "Outline Width," and "Shadow Strength" settings.
- "Original Text Color" sets the color for the source text, while "Background Color" sets the window background color.
- "Fill Color" is used for advanced font styles.
- "Selectable Mode" allows content selection within the translation window.
![img](https://image.lunatranslator.org/zh/7.jpg)
The four font styles are shown below:
![img](https://image.lunatranslator.org/zh/ziti1.jpg)
![img](https://image.lunatranslator.org/zh/ziti2.jpg)
![img](https://image.lunatranslator.org/zh/ziti3.jpg)
![img](https://image.lunatranslator.org/zh/ziti4.jpg)
Furigana (phonetic guide) display example:
![img](https://image.lunatranslator.org/zh/jiaming.jpg)
Tokenization (word segmentation) display example:
![img](https://image.lunatranslator.org/zh/fenci.jpg)
## Voice Settings
- Windows TTS requires Japanese language components installed on your system.
- Azure TTS and Volcano TTS are online services that may become unavailable in the future.
- VoiceRoid2 is an offline TTS engine.
- VOICEVOX is an open-source TTS engine, but it's relatively slow at Text-to-Speech.
![img](https://image.lunatranslator.org/zh/8.jpg)
## Translation Optimization
For text extracted via HOOK, you can set up simple processing operations to improve the content.
This includes common settings and some advanced options.
- "Simple Text Replacement" allows replacing or filtering extracted text.
- "Regular Expression Replacement" requires knowledge of Python's re.sub method (Regex).
- "Manual Translation for Proper Nouns" supports user-configured dictionaries for special terms (e.g., names, places).
- "Translation Result Correction" occurs after translation; forced replacement of translation results can be useful when noun translations fail with certain engines.
- This software partially supports using VNR shared dictionaries.
- Users familiar with Python can directly modify the LunaTranslator\LunaTranslator\postprocess\post.py file to implement custom processing.
![img](https://image.lunatranslator.org/zh/10.jpg)
## Dictionary Settings
With a dictionary configured, LunaTranslaotr can help you in your Japanese learning:
- MeCab setup + "Show Word Segmentation": Displays word boundaries (tokenization)
- MeCab + "Show Furigana": Applies furigana to kanji
- MeCab + "Show Different Colors for Parts of Speech": Highlights grammatical elements
- "Quick Word Lookup": Enables click-to-translate in the translation window
Note: Without MeCab, a basic built-in tokenizer will be used, providing limited furigana and segmentation without part-of-speech distinction.
![img](https://image.lunatranslator.org/zh/cishu.jpg)
![img](https://image.lunatranslator.org/zh/fenci.jpg)
![img](https://image.lunatranslator.org/zh/searchword.jpg)
![img](https://image.lunatranslator.org/zh/searchword2.jpg)
## Resource Download and Update
Automatic updates and links to commonly used resources.
![img](https://image.lunatranslator.org/zh/down.jpg)
## Hotkey Settings
Enable the use of hotkeys, where you can activate and configure specific hotkey settings as desired.
![img](https://image.lunatranslator.org/zh/quick.jpg)

View File

@ -1,13 +1,33 @@
- [Introduction](/en/README.md)
**Basic**
- Usage
- [Start](/en/start.md)
- [Toolbar](/en/toolbar.md)
- [Settings](/en/settings.md)
- [Tray icon](/en/trayicon.md)
- [Introduction](/en/README.md)
- [Download and Launch](/en/start.md)
- [Cannot Start the Software](/en/cantstart.md)
- [Basic Usage](/en/basicuse.md)
- [Software Update](/en/update.md)
- [Support the Author](/en/support.md)
- [OCR instructions](/en/ocrsetsumei.md)
**Detailed**
- [HOOK instructions](/en/hooksetsumei.md)
- [Support author](/en/support.md)
- [HOOK Related Settings](/en/hooksettings.redirect)
- [Detailed Explanation of HOOK Settings](/en/hooksettings.md)
- [How to Use 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 Automated Execution Methods](/en/ocrparam.md)
- [How to Install Additional Language Support for WindowsOCR](/en/windowsocr.md)
- [OCR Mode Binding Game Window](/en/gooduseocr.md)
- [Translation Source Settings](/en/guochandamoxing.redirect)
- [How to Use Large Model API for Translation](/en/guochandamoxing.md)
- [How to Use Large Model Offline Translation](/en/offlinellm.md)
- [How to Use Debug Browser for Translation](/en/tiaoshiliulanqi.md)
- [Text Processing & Translation Optimization](/en/textprocess.redirect)
- [The Role and Usage of Various Text Processing Methods](/en/textprocess.md)
- [The Role of Various Translation Optimizations](/en/transoptimi.md)
- [Text-to-Speech](/en/ttsofname.md)
- [Tokenization & Dictionary](/en/qa1.redirect)
- [How to Use Mecab Tokenization & Part-of-Speech Color Tagging](/en/qa1.md)
- [Anki Integration](/en/qa2.md)
- [Tool Buttons](/en/alltoolbuttons.md)
- [Shortcut Keys](/en/fastkeys.md)
- [Practical Features](/en/usefulsmalltools.md)

View File

@ -1,15 +1,25 @@
# Getting Started
### Download
Download 64-bit version <a href="https://github.com/HIllya51/LunaTranslator/releases/latest/download/LunaTranslator.zip" target="_blank"><img src="https://img.shields.io/badge/download_64bit-blue"/></a> Download 32-bit version <a href="https://github.com/HIllya51/LunaTranslator/releases/latest/download/LunaTranslator_x86.zip" target="_blank"><img src="https://img.shields.io/badge/download_32bit-blue"/></a> or download from <a target="_blank" href="https://github.com/HIllya51/LunaTranslator/releases" target="_blank">releases</a> <a href="https://github.com/HIllya51/LunaTranslator/releases/latest/download/LunaTranslator.zip" target="_blank">LunaTranslator.zip</a> or <a href="https://github.com/HIllya51/LunaTranslator/releases/latest/download/LunaTranslator_x86.zip" target="_blank">LunaTranslator_x86.zip</a>, and unzip to any directory.
#### Note
## How to Download
Make sure not to download the source code by mistake!
1. Go to [the LunaTranslator releases page](https://github.com/HIllya51/LunaTranslator/releases)
2. In the "Assets" section of the latest release, find and download the "LunaTranslator.zip" file
3. Extract the contents of the ZIP file to any directory on your computer.
![img](https://image.lunatranslator.org/zh/download.jpg)
![img](https://image.lunatranslator.org/zh/down.png)
## How to Run
There are two ways to launch LunaTranslator:
1. **LunaTranslator.exe** - This will launch the application with administrator privileges. Some games require admin rights for proper hooking
2. **LunaTranslator_no_Admin.exe** - This will launch the application in normal mode without administrator privileges
### Launch
After unzipping, you can see the following files. Use **LunaTranslator.exe** to start.
![img](https://image.lunatranslator.org/zh/startup.png)
**LunaTranslator.exe** will start in normal mode.
**LunaTranslator_admin.exe** will start with administrator privileges. Some games require administrator privileges to HOOK, so use this only when necessary; otherwise, start in normal mode.
**LunaTranslator_debug.exe** will display the command line and show the log during runtime. If you encounter a bug, please run this program and attach the log.
#### Note
Sometimes it may be flagged by antivirus software. Please add it to the trusted list and re-download and unzip.

View File

@ -1,5 +1,5 @@
# Support author
## Support author
If you feel that the software is helpful to you, welcome to become my [sponsor](https://patreon.com/HIllya51). Thank you ~

114
docs/en/textprocess.md Normal file
View File

@ -0,0 +1,114 @@
## Functions and Usage of Various Text Processing Methods
> Generally, in HOOK mode, sometimes incorrect text is read, such as repeated text or other messy text. In such cases, text processing is needed to resolve the issue.
> If there are very complex error forms, you can activate multiple processing methods and adjust their execution order to obtain a rich combination of processing methods.
**1. Filter Non-Japanese Character Set Characters in Text**
Sometimes, garbled text is hooked. Since this problem usually occurs in Japanese games, this method is preset to filter out **characters that cannot be encoded using the shift-jis character set**, for example:
`エマさんԟのイԠラストは全部大好き!` will be processed into `エマさんのイラストは全部大好き!`
**2. Filter Control Characters**
This method will filter out ASCII control characters in the text, such as `` etc.
**3. Filter English Punctuation**
This method will filter out ```!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~``` in the text.
**4. Filter Other Garbled Text**
This requires setting the allowed character encoding or Unicode range in the settings. Characters not allowed will be filtered out.
**5. Filter Characters Outside「」**
For example: `こなみ「ひとめぼれってやつだよね……」` will be processed into `「ひとめぼれってやつだよね……」`
**6. Remove Curly Braces {}**
This is not exactly as it seems; it is mainly used to filter Japanese furigana. Many game scripts use {} and some other characters to add furigana to kanji. It supports two furigana formats: `{汉字/注音}` and `{汉字:注音}`, for example:
`「{恵麻/えま}さん、まだ{起き/おき}てる?」` or `「{恵麻:えま}さん、まだ{起き:おき}てる?」` will be processed into `「恵麻さん、まだ起きてる?」`
**7. Filter Text by Specified Word Count**
This method determines how to process based on the current text's word count.
If the text length is less than the minimum word count, the text will be filtered. For example, some games continuously refresh a single inverted triangle character in a static state, which can be filtered using this method.
If the text length exceeds the maximum word count, if **truncate instead of filter when exceeding** is activated, it will truncate the text to the specified word count; if not activated, the text will be completely filtered.
**8. Filter Text by Specified Line Count**
This is similar to the above but determines based on the text's line count. For example, it can be used to truncate the first 3 lines of text.
**9. Remove Duplicate Characters _AAAABBBBCCCC->ABC**
This is the most commonly used filter.
Due to the way games sometimes draw text (e.g., drawing text, then shadow, then outline), HOOK mode may extract the same characters multiple times. For example, `恵恵恵麻麻麻さささんんんははは再再再びびび液液液タタタブブブへへへ視視視線線線ををを落落落とととすすす。。。` will be processed into `恵麻さんは再び液タブへ視線を落とす。`. The default repetition count is `1`, which automatically analyzes the number of repeated characters, but there may be inaccuracies, so it is recommended to specify a definite repetition count.
**10. Filter Historical Duplicates LRU**
Sometimes, the way the game redraws text is not character by character but line by line, and it continuously redraws the current displayed text in a static state. For example, if the current display is two lines of text `你好` and `哈哈`, without using this method, it will repeatedly output `你好哈哈你好哈哈你好哈哈你好哈哈……`. Using this method, it caches several recently output texts, and when the cache is full and new text appears, it removes the earliest text in the cache, thus preventing recent texts from repeatedly refreshing.
**11. Remove Duplicate Lines _ABCDABCDABCD->ABCD**
This is also common, similar to the above, but generally does not refresh repeatedly, but quickly refreshes multiple times. The effect is `恵麻さんは再び液タブへ視線を落とす。恵麻さんは再び液タブへ視線を落とす。恵麻さんは再び液タブへ視線を落とす。` will become `恵麻さんは再び液タブへ視線を落とす。`. Similarly, the default repetition count is `1`, which automatically analyzes the number of repeated characters, but there may be inaccuracies, so it is recommended to specify a definite repetition count.
**12. Remove Duplicate Lines _S1S1S1S2S2S2->S1S2**
This is relatively complex; sometimes, the refresh count of each sentence is not exactly the same, so the program must analyze how to deduplicate. For example, `恵麻さん……ううん、恵麻ははにかむように私の名前を呼ぶ。恵麻さん……ううん、恵麻ははにかむように私の名前を呼ぶ。恵麻さん……ううん、恵麻ははにかむように私の名前を呼ぶ。なんてニヤニヤしていると、恵麻さんが振り返った。私は恵麻さんの目元を優しくハンカチで拭う。私は恵麻さんの目元を優しくハンカチで拭う。` where `恵麻さん……ううん、恵麻ははにかむように私の名前を呼ぶ。` repeats 3 times, `なんてニヤニヤしていると、恵麻さんが振り返った。` does not repeat, and `私は恵麻さんの目元を優しくハンカチで拭う。` repeats 2 times, the final analysis will get `恵麻さん……ううん、恵麻ははにかむように私の名前を呼ぶ。なんてニヤしていると、恵麻さんが振り返った。私は恵麻さんの目元を優しくハンカチで拭う。`, where due to the complexity, there may be a few analysis errors, which is unavoidable, but generally, it can get the correct result.
**13. Filter Angle Brackets <>**
This is actually filtering HTML tags, but the name is written this way to avoid confusion for beginners. For example, `<div>`, `</div>`, and `<div id="dsds">` will be filtered. This is mainly used in TyranoScript games where the HOOK extracts the text as innerHTML, usually containing many such tags.
**14. Filter Newline Characters**
Originally named **Filter Newline Characters Language Adaptive**, the old **Filter Newline Characters** has been deprecated.
If the source language is not Japanese, when filtering newline characters, they will be replaced with spaces instead of being filtered out to avoid multiple words being connected together.
**15. Filter Numbers**
N/A
**16. Filter English Letters**
N/A
**17. Remove Duplicate Lines _ABCDBCDCDD->ABCD**
This is also common. The reason for this is that sometimes the function HOOKed to display text has the displayed text as a parameter, which is called every time a character is displayed, and each time the parameter string points to the next character, resulting in the fact that the first call has already obtained the complete text, and subsequent calls output the remaining substring until the length decreases to 0. For example, `恵麻さんは再び液タブへ視線を落とす。麻さんは再び液タブへ視線を落とす。さんは再び液タブへ視線を落とす。んは再び液タブへ視線を落とす。は再び液タブへ視線を落とす。再び液タブへ視線を落とす。び液タブへ視線を落とす。液タブへ視線を落とす。タブへ視線を落とす。ブへ視線を落とす。へ視線を落とす。視線を落とす。線を落とす。を落とす。落とす。とす。す。。` will be analyzed to determine that the real text should be `恵麻さんは再び液タブへ視線を落とす。`
**18. Remove Duplicate Lines _AABABCABCD->ABCD**
This is also common. The reason for this is that every time a character is drawn, the previous characters are redrawn when the next character is drawn. For example, `恵麻恵麻さ恵麻さん恵麻さんは恵麻さんは再恵麻さんは再び恵麻さんは再び液恵麻さんは再び液タ恵麻さんは再び液タブ恵麻さんは再び液タブへ恵麻さんは再び液タブへ視恵麻さんは再び液タブへ視線恵麻さんは再び液タブへ視線を恵麻さんは再び液タブへ視線を落恵麻さんは再び液タブへ視線を落と恵麻さんは再び液タブへ視線を落とす恵麻さんは再び液タブへ視線を落とす。` will be analyzed to determine that the real text should be `恵麻さんは再び液タブへ視線を落とす。`
**19. Remove Duplicate Lines _AABABCABCDEEFEFG->ABCDEFG**
This is similar to the above, but when there are multiple lines of text, each line is processed separately according to the above logic, which brings more complexity. Due to the complexity, this processing often fails to handle correctly. If encountered, it is recommended to write a custom Python script to solve it.
**20. Custom Python Processing**
Write a Python script for more complex processing. When the processing script does not exist, it will automatically generate a `mypost.py` file and the following template in the userconfig directory:
```
def POSTSOLVE(line):
return line
```
**21. String Replacement**
Not only replacement but also mainly used for filtering. For example, fixed garbled characters, repeatedly refreshed inverted triangle characters, etc., can be filtered by replacing them with blanks.
Both the `Regex` and `Escape` options can be activated simultaneously, or only one of them, or neither.
When neither is activated, ordinary string replacement will be used.
When `Escape` is activated, the input content will be treated as an escaped string rather than a string literal. For example, `\n` can be used to represent a newline character, thus enabling filtering of characters that appear only before or after newline characters.
When `Regex` is activated, regular expression replacement will be used.

View File

@ -0,0 +1,11 @@
## How to Use Debug Browser for Translation
!> Requires Chrome/Edge installed on your computer, or a portable version.
If Chrome/Edge is installed in the default path, there's no need to manually set the path; otherwise, you need to specify the installation/portable path.
!> After opening the interface, a browser window will pop up; do not close this window.
During translation, the text will be automatically filled into the input box on the browser page, and then the translated result will be read and sent back to LunaTranslator.
?> For the first use of certain interfaces, you might need to log in. Subsequent uses will not require logging in again.

View File

@ -1,64 +0,0 @@
# Toolbar
>When the software is in focus, hover over the buttons in the toolbar to see their tooltips
>Below is an introduction to each button's function, from left to right.
## Universal button/Clipboard mode
![img](https://image.lunatranslator.org/zh/toolbar1.jpg)
> These are universal buttons that appear in clipboard mode. From left to right:
&emsp;&emsp;**Retranslate**: By default, LunaTranslator doesn't translate very short texts. Use this button to force translation. It's also useful when translators occasionally malfunction or return errors
&emsp;&emsp;**Auto Translate**: Automatically translates received text. The button is pink when enabled and white when paused
&emsp;&emsp;**Open Settings**: Opens the settings window.
&emsp;&emsp;**Copy to Clipboard**: Copies the latest text extracted by OCR/HOOK to the clipboard
&emsp;&emsp;**Show/Hide Original Text**: Toggles the display of the original text
&emsp;&emsp;**Show Translation History**: Opens a window displaying previously extracted original text and translations
&emsp;&emsp;**Text-to-Speech**: When enabled, reads aloud the latest text from clipboard/OCR/HOOK. Note: This requires a Japanese text-to-speech engine installed on your system
&emsp;&emsp;**Mouse Click-through**: Makes the translation window fully transparent. Clicks will pass through to the game window beneath
&emsp;&emsp;**Lock Toolbar**: Disable toolbar auto-hide. The button is pink when active and white when disabled
&emsp;&emsp;**Game Manager**: Opens the game list window to select and open a game
&emsp;&emsp;**Minimize to Tray**: Hides LunaTranslator to the system tray. You can restore LunaTranslator from the tray icon
&emsp;&emsp;**Exit**: Closes the software
## OCR Mode Buttons
![img](https://image.lunatranslator.org/zh/toolbar2.jpg)
> OCR mode includes three additional buttons:
&emsp;&emsp;**Select OCR Region**: Allows you to select the area for OCR (similar to screenshot tools)
&emsp;&emsp;**Show/Hide Region Border**: Toggles the visibility of the rectangle indicating the OCR recognition area.
&emsp;&emsp;**Bind to Window**: Click this button, then click on the game window. The button turns pink to indicate successful binding. This allows the translation window to overlap the OCR region. Click the button and then click on the translator itself to unbind.
## HOOK Mode Buttons
![img](https://image.lunatranslator.org/zh/toolbar3.jpg)
> HOOK mode includes two additional buttons:
&emsp;&emsp;**Select Game**: Opens the game selection window to choose which game to hook.
&emsp;&emsp;**Select Text**: Opens the text selection window to choose which text strings to extract from the hooked game.

47
docs/en/transoptimi.md Normal file
View File

@ -0,0 +1,47 @@
## Functions of Various Translation Optimizations
#### **1. Proper Noun Translation - Direct Replacement**
This method directly replaces the original text with the translated text before translation. It supports using `Regex` and `Escape` for more complex replacements.
When the game loads metadata from VNDB, it queries the game's character names as a preset dictionary. However, the translations are in English due to VNDB, and you can modify them to Chinese.
<details>
<summary>Example</summary>
<img src="https://image.lunatranslator.org/zh/transoptimi/1.png">
</details>
#### **2. Proper Noun Translation**
If using the `Sakura Large Model` and setting the prompt format to `v0.10pre1 (supports gpt dictionary)`, it will be converted into gpt dictionary format. Otherwise, it will follow VNR's approach and replace the original text with a placeholder `ZX?Z` (ps: I don't know what this means). After translation, the placeholder is usually not destroyed, and then the placeholder is replaced with the translation.
For game-specific entries, it is recommended not to add them in `Text Processing` -> `Translation Optimization`. In the past, the game's md5 value was used to distinguish entries for multiple games, but this implementation was not very good and has been deprecated. Now, it is recommended to add game-specific entries in the `Game Settings` -> `Translation Optimization` settings for this method.
The last column `Comment` is only used for the `Sakura Large Model`; other translations will ignore this column.
<details>
<summary>Setting Game-specific Entries</summary>
It is recommended to use:
<img src="https://image.lunatranslator.org/zh/transoptimi/2.png">
Instead of:
<img src="https://image.lunatranslator.org/zh/transoptimi/3.png">
</details>
<details>
<summary>Setting the Sakura Large Model Prompt Format to v0.10pre1 (Supports gpt Dictionary)</summary>
<img src="https://image.lunatranslator.org/zh/transoptimi/4.png">
</details>
#### **3. Translation Result Correction**
This method allows for certain corrections to the translation result after translation and can use the entire expression for complex corrections.
#### **4. VNR Shared Dictionary**
Used to support VNR's shared dictionary format; not recommended for use.
## Game-specific Translation Optimization
In `Game Settings` -> `Translation Optimization`, if `Follow Default` is deactivated, game-specific translation optimization settings will be used.
If `Inherit Default` is activated, the game-specific translation optimization dictionary will also use the default global dictionary.

View File

@ -1,12 +0,0 @@
# Tray Icon
![img](https://image.lunatranslator.org/zh/trayicon.jpg)
Left-clicking the tray icon:
- First click: Shows the program window
- Second click: Hides the program window
Right-clicking the tray icon:
- Opens a menu with options to show the window or exit the program

61
docs/en/ttsofname.md Normal file
View File

@ -0,0 +1,61 @@
## Text-to-Speech Using Different Voices for Different Characters
First, if the current text does not contain names or other identifying information, you can additionally select the name text in the text selector. The displayed text will be arranged in the order of selection.
Then, in `Game Settings` -> `Voice` (or `Voice Settings` in the settings interface, but this will be a global setting, not recommended for global settings), deactivate `Follow Default`, then activate `Voice Assignment`, and add a row in its settings. Set `Condition` to `Contains`, fill in the character name in `Target`, and then select the voice in `Assign To`.
![img](https://image.lunatranslator.org/zh/tts/1.png)
However, since the name text is additionally selected, the displayed and translated content includes the name, and the voice will also read the name. To solve this problem, activate `Voice Correction`, where you can use regular expressions to filter out the name and its symbols.
If `Apply to Translation` is also activated, this voice correction will also remove the name from the displayed and translated content, making the displayed content the same as when the name entry is not selected.
![img](https://image.lunatranslator.org/zh/tts/3.png)
## Detailed Explanation of Voice Assignment
When the current text meets the condition, the action specified in `Assign To` is executed.
#### Conditions
1. Regex
Whether to use a regular expression for judgment.
1. Condition
**Start/End** When set to Start/End, the condition is met only when the target is at the start or end of the text.
**Contains** The condition is met as long as the target appears in the text. This is a more lenient judgment.
When `Regex` is activated simultaneously, the regular expression is automatically processed to be compatible with this option.
1. Target
The text used for judgment, usually a **character name**.
When `Regex` is activated, the content will be used as a regular expression for more accurate judgment.
#### Assign To
1. Skip
When the condition is met, skip reading the current text.
1. Default
Use the default voice for content that meets the condition. Usually, when using a very lenient judgment, it is easy to cause false positives. Moving the judgment set to this action before a more lenient judgment can avoid false positives.
1. Select Voice
After selection, a window will pop up to select the voice engine and voice. When the condition is met, this voice will be used for reading.
## Some Issues with Voice Correction
The entire process is:
1. Extract text
1. Text processing - Pre-processing
1. Voice assignment
1. Voice correction
1. -> Execute text-to-speech
1. Display original text (not refreshed upon receiving translation)
1. Translation optimization - Pre-processing
1. Translation
1. Translation optimization - Post-processing
1. Display translation
If you want to read according to the character name and do not want the name to appear in the original text and translation, you must insert an action before displaying the original text and executing text-to-speech.
Considering that in most cases, the correction target and voice correction target are the same, the `Apply to Translation` option is introduced, making the text passed to translation consistent with the corrected reading text.
Of course, if using a large model for translation, keeping the character name in the original text is also a good decision, so this option is not activated by default.
Of course, if you do not want to keep the character name in the translation, you can also consider filtering out the name in `Translation Optimization`, but this way, the original text will still contain the name, which I do not like.

15
docs/en/update.md Normal file
View File

@ -0,0 +1,15 @@
## Software Update
### Manual Update
#### Note
After downloading, unzip and overwrite to the previous directory. Do not delete the userconfig folder, otherwise, you will lose your previous settings!!
Alternatively, you can copy the previous userconfig folder to the new unzipped directory!!
### Automatic Update
In Settings -> Version Update, you can enable automatic updates. Automatic updates may occasionally cause errors; please perform a manual update to fix them!
![img](https://image.lunatranslator.org/zh/update.png)

View File

@ -0,0 +1,39 @@
## Some Useful Small Features
#### Game Mute, Quickly Mute the Current Game
![img](https://image.lunatranslator.org/zh/usefulsmalltools/2.png)
After binding the game window (not just in HOOK mode, but also in OCR or clipboard mode, as long as the game window is bound), you can mute the game with one click, saving the trouble of muting the game in the system volume mixer.
#### Window Scaling, One-click Scaling of the Game Window
![img](https://image.lunatranslator.org/zh/usefulsmalltools/1.png)
You can scale the game window with one click (default uses the built-in Magpie, or can be set to use a downloaded Magpie, etc.). This makes Magpie better interact with the software while saving the trouble of pressing shortcuts (I really don't want to touch the keyboard if I can click with the mouse, I don't know if anyone else feels the same).
#### Memo, Convenient for Recording Game Impressions and Strategies
![img](https://image.lunatranslator.org/zh/usefulsmalltools/4.png)
For the game you are currently playing, open the memo window. Each game has a separate memo file. It can be used to temporarily write notes or copy strategies to view and delete as you play, very convenient, saving the trouble of opening a web page/separate txt file, very practical.
#### Window Screenshot & Gallery & Recording, Capture Every Exciting Moment
![img](https://image.lunatranslator.org/zh/usefulsmalltools/6.png)
You can take a screenshot of the bound window (default takes two screenshots, GDI and Winrt, both of which may fail). The best part is that if Magpie is currently being used for scaling, it will also take a screenshot of the scaled window.
The gallery automatically includes images downloaded from the web based on metadata queries, and the captured images are automatically appended to the gallery, allowing convenient management of screenshots of the game you are currently playing. You can also add some brief memo information to each image in the gallery and add a recording to each image, making it very convenient to record every exciting moment in the game.
![img](https://image.lunatranslator.org/zh/usefulsmalltools/3.png)
![img](https://image.lunatranslator.org/zh/usefulsmalltools/8.png)
#### Associated Pages, Convenient Management of Game-related Web Pages
![img](https://image.lunatranslator.org/zh/usefulsmalltools/5.png)
Equivalent to a small browser, mainly allowing you to create a small bookmark for each game. It automatically queries metadata to collect game pages from vndb/bangumi/dlsite/etc., and you can manually add some web pages related to this game (e.g., game strategy web pages, in addition to using memos, you can also use this function to collect them), making it convenient to view. It saves the trouble of creating and managing bookmarks in the browser.
![img](https://image.lunatranslator.org/zh/usefulsmalltools/7.png)

17
docs/en/windowsocr.md Normal file
View File

@ -0,0 +1,17 @@
## How to Install Additional Language Support for WindowsOCR?
> WindowsOCR only supports Windows 10 and Windows 11 operating systems.
1. Open Settings.
2. Open "Time & Language."
![img](https://image.lunatranslator.org/zh/windowsocr/3.png)
3. Open "Language & Region", click on "Preferred Languages" -> "Add a language"
![img](https://image.lunatranslator.org/zh/windowsocr/2.png)
4. Install the required language.
![img](https://image.lunatranslator.org/zh/windowsocr/1.png)

View File

@ -1,154 +0,0 @@
function parsevalue(text) {
if (text == 'undefined') return -1;
if (text == '') return -1;
if (text == '✓') return 5;
if (text == '✗') return 3;
return parseFloat(text)
}
function sortTable(table, n) {
var rows, switching, i, x, y, shouldSwitch, dir, switchcount = 0;
switching = true;
dir = "asc";
while (switching) {
switching = false;
rows = table.rows;
for (i = 1; i < (rows.length - 1); i++) {
shouldSwitch = false;
x = rows[i].getElementsByTagName("TD")[n];
y = rows[i + 1].getElementsByTagName("TD")[n];
if (dir == "asc") {
if (parsevalue(x.innerText) > parsevalue(y.innerText)) {
shouldSwitch = true;
break;
}
} else if (dir == "desc") {
if (parsevalue(x.innerText) < parsevalue(y.innerText)) {
shouldSwitch = true;
break;
}
}
}
if (shouldSwitch) {
rows[i].parentNode.insertBefore(rows[i + 1], rows[i]);
switching = true;
switchcount++;
} else {
if (switchcount == 0 && dir == "asc") {
dir = "desc";
switching = true;
}
}
}
}
const manytables = [
{
name: 'LLM翻译',
titles: [
{ type: 'isfree', name: '免费' },
// { type: 'effect', name: '效果' },
{ type: 'freetoken', name: '试用token' },
],
rankdatas: [
{ type: 'DeepSeek', isfree: false, freetoken: 5000000 },
{ type: '阿里云百炼大模型', isfree: false },
{ type: '字节跳动豆包大模型', isfree: false },
{ type: '月之暗面', isfree: false },
{ type: '智谱AI', isfree: false },
{ type: '零一万物', isfree: false },
{ type: '硅基流动', isfree: false },
{ type: '讯飞星火大模型', isfree: false },
{ type: '腾讯混元大模型', isfree: false },
{ type: '百度千帆大模型', isfree: false },
{ type: 'gemini', isfree: true },
{ type: 'Sakura大模型', isfree: true },
{ type: 'ChatGPT', isfree: false },
{ type: 'claude', isfree: false },
{ type: 'cohere', isfree: false },
]
},
{
name: 'OCR',
titles: [
{ type: 'isoffline', name: '离线' },
{ type: 'isfree', name: '免费' },
{ type: 'istrial', name: '可试用' },
{ type: 'price', name: '价格' },
{ type: 'effect', name: '效果' },
],
rankdatas: [
{ type: '本地OCR', isoffline: true, isfree: true, effect: 3 },
{ type: 'WeChat/QQ OCR', isoffline: true, isfree: true, effect: 3.5 },
{ type: 'WindowsOCR', isoffline: true, isfree: true, effect: 2.8 },
{ type: 'Tesseract5', isoffline: true, isfree: true, effect: 1.5 },
{ type: 'manga-ocr', isoffline: true, isfree: true, effect: 3.6 },
{ type: 'Google Lens', isoffline: false, isfree: true, effect: 4 },
{ type: 'GeminiOCR', isoffline: false, isfree: false, effect: 5, istrial: false, price: 5 },
{ type: 'Google Cloud Vision', isoffline: false, isfree: false, effect: 5, istrial: false },
{ type: '百度OCR', isoffline: false, isfree: false, istrial: false },
{ type: '百度图片翻译', isoffline: false, isfree: false, istrial: false },
{ type: '腾讯OCR', isoffline: false, isfree: false, istrial: false },
{ type: '腾讯图片翻译', isoffline: false, isfree: false, istrial: false },
{ type: '飞书OCR', isoffline: false, isfree: true },
{ type: 'ocrspace', isoffline: false, isfree: false, istrial: false },
{ type: 'docsumo', isoffline: false, isfree: false, istrial: false },
{ type: '有道OCR', isoffline: false, isfree: false, istrial: true },
{ type: '有道图片翻译', isoffline: false, isfree: false, istrial: true },
{ type: '火山OCR', isoffline: false, isfree: false, istrial: false },
{ type: '讯飞OCR', isoffline: false, isfree: false, istrial: false },
{ type: '有道词典', isoffline: false, isfree: true },
]
}
];
manytables.forEach((atable) => {
var ele_manytables = document.getElementById('manytables')
var centertable = document.createElement('div')
centertable.classList.add('centertable')
var table = document.createElement('table')
centertable.appendChild(table)
table.classList.add('manytables')
ele_manytables.appendChild(centertable)
var header = document.createElement('tr')
table.appendChild(header)
var tablename = document.createElement('th')
var div = document.createElement('div')
tablename.appendChild(div)
div.classList.add('manytables2')
div.innerText = atable.name
header.appendChild(tablename)
atable.titles.forEach((title, idx) => {
var th = document.createElement('th')
var div = document.createElement('div')
th.appendChild(div)
div.innerText = title.name
div.addEventListener('click', function () { sortTable(table, idx + 1) })
div.classList.add('clickable')
div.classList.add('manytables2')
header.appendChild(th)
})
atable.rankdatas.forEach(item => {
var tr = document.createElement('tr')
table.appendChild(tr)
var td = document.createElement('td')
tr.appendChild(td)
td.innerText = item.type
td.classList.add('manytables2')
atable.titles.forEach((title, idx) => {
var td = document.createElement('td')
td.classList.add('manytables2')
tr.appendChild(td)
if (item[title.type] === true)
td.innerText = '✓'
else if (item[title.type] === false)
td.innerText = ''//'✗'
else if (item[title.type] === undefined)
td.innerText = ''
else
td.innerText = item[title.type]
})
})
})

View File

@ -1,45 +1,53 @@
> **Переводчик текста с экрана для игр и не только!**
> **Транслятор для galgame**
## Поддержка функций
#### Ввод текста
- **HOOK** Поддерживает получение текста с использованием метода HOOK, поддерживает использование специальных кодов, поддерживает автоматическое сохранение игр и HOOK, автоматическое загрузка HOOK и т.д. Для некоторых движков также поддерживается встроенная трансляция. Для игр, которые не поддерживаются или плохо поддерживаются, пожалуйста, [отправьте обратную связь](https://lunatranslator.org/Resource/game_support)
## Основные функции:
- **OCR** Поддерживает **оффлайн OCR** ( помимо встроенного движка OCR, также поддерживает WindowsOCR, Tessearact5, manga-ocr, WeChat/QQ OCR ) и **онлайн OCR** ( Baidu OCR/перевод изображений, Youdao OCR/перевод изображений, Youdao OCR/перевод изображений, Lark OCR, iFlytek OCR, Google Lens, Google Cloud Vision, docsumo, ocrspace ). Также можно использовать **многомодальные большие модели** для OCR ( поддерживает GeminiOCR, интерфейс совместимый с ChatGPT )
#### Выбор источника текста
- **Буфер обмена** Поддерживает получение текста из буфера обмена для перевода
&emsp;&emsp;**Буфер обмена** Копирование текста из буфера обмена для перевода.
- **Вывод текста** Извлеченный текст может быть выведен в буфер обмена, Websocket для использования другими программами.
&emsp;&emsp;**OCR** Поддерживает автономные считывальщики текста с экрана Paddle OCR и WindowsOCR, а также онлайн сервисы: Baidu OCR, Youdao OCR, OCRspace, docsumo. Также поддерживает привязку и скрытие окон для распознавания текста с экрана для удобной игры.
#### Транслятор
&emsp;&emsp;**HOOK** Поддерживает использование HOOK для получения текста из данных игры, поддерживает использование специальных кодов, поддерживает автоматическое сохранение игр, а также автоматическую загрузку HOOK во время запуска игр.
Поддерживает почти все представимые системы перевода, включая:
- **Бесплатные онлайн переводы** Поддерживает использование Baidu, Bing, Google, Alibaba, Youdao, Caiyun, Sogou, iFlytek, Tencent, ByteDance, Volcano, DeepL/DeepLX, papago, yandex, lingva, reverso, TranslateCom, ModernMT
#### Выбор переводчика
- **Зарегистрированные онлайн переводы** Поддерживает использование зарегистрированных пользователем **традиционных переводов** ( Baidu, Tencent, Youdao, Xiaoniu, Caiyun, Volcano, DeepL, yandex, google, ibm, Azure, Lark ) и **больших моделей перевода** ( интерфейс совместимый с ChatGPT, claude, cohere, gemini, Baidu Qianfan, Tencent Hunyuan )
Поддерживает почти все существующие механизмы перевода, в том числе:
- **Оффлайн перевод** Поддерживает **традиционный перевод** ( J Beijing 7, Kingsoft, Yidiantong, ezTrans, Sugoi, MT5 ) и оффлайн развернутый **большой модельный перевод** ( интерфейс совместимый с ChatGPT, Sakura большой модель )
&emsp;&emsp;**Автономный перевод** Поддержка автономного перевода с использованием JBeijing 7, Jinshan Quick Translation и Yidiantong (Не работает для перевода на русский язык).
- **Chrome отладочный перевод** Поддерживает **традиционный перевод** ( deepl, yandex, youdao, baidu, tencent, bing, caiyun, xiaoniu, alibaba, google ) и **большой модельный перевод** ( chatgpt, deepseek, moonshot, qianwen, chatglm, Theb.ai, DuckDuckGo )
&emsp;&emsp;**Бесплатный онлайн-перевод** Поддержка Baidu, Bing, Google, Ali, Youdao, Caiyun, Sogou, DeepL, Kingsoft, Xunfei, Tencent, Byte, Volcano, papago, yeekit и других онлайн-сервисов.
- **Предварительный перевод** Поддерживает чтение предварительно переведенных файлов, поддерживает кэширование переводов
&emsp;&emsp;**Онлайн-перевод с регистрацией ключа API** Поддержка перевода с использованием зарегистрированных пользователем ключей перевода для Baidu, Tencent, Youdao, Mavericks, Caiyun, Volcano, Deepl и других.
- **Поддержка пользовательских расширений перевода** Поддерживает расширение других интерфейсов перевода с использованием языка Python
#### Синтез речи
&emsp;&emsp;**Предварительный перевод** Поддержка чтения файлов предварительного перевода, выполненных человеком, и агрегация машинных файлов.
- **Оффлайн TTS** Поддерживает WindowsTTS, VoiceRoid2/VoiceRoid+, NeoSpeech, VOICEVOX, VITS
&emsp;&emsp;**Поддержка пользовательских расширений перевода** Поддержка использования языка python для расширения других интерфейсов перевода, о которых я не знаю.
- **Онлайн TTS** Поддерживает Volcano TTS, Youdao TTS, Edge TTS, Google TTS
#### Синтез речи/Озвучка текста
#### Оптимизация перевода
&emsp;&emsp;**Offline TTS** Поддержка windowsTTS, VoiceRoid2 и VOICEVOX.
- **Обработка текста** Поддерживает более десяти распространенных методов обработки текста, и с помощью комбинирования и изменения порядка выполнения можно выполнять сложную обработку текста
&emsp;&emsp;**Online TTS** Поддержка AzureTTS и Volcano TTS.
- **Оптимизация перевода** Поддерживает использование пользовательских переводов собственных названий, поддерживает импорт общих словарей VNR
#### Обработка текста/Оптимизация перевода
#### Изучение японского языка
&emsp;&emsp;**Обработка текста** Поддерживает простую обработку, такую, как дедупликация текста, фильтрация HTML-тегов, фильтрация разрывов строк, фильтрация символов и чисел, поддержка пользовательской простой замены текста и замены с использованием регулярных выражений.
- **Сегментация японских слов и отображение глифов** Поддерживает использование Mecab и других для сегментации и отображения глифов
&emsp;&emsp;**Оптимизация перевода** Поддерживает использование собственных корректировок перевода и импорт общих словарей VNR.
- **Поиск слов** Поддерживает использование **оффлайн словарей** ( MDICT, Shougakukan, Lingoes Dictionary, EDICT/EDICT2 ) и **онлайн словарей** ( Youdao, weblio, Goo, Moji, jisho ) для поиска слов
#### Японская письменность
- **Anki** Поддерживает добавление слов в Anki одним нажатием кнопки
&emsp;&emsp;**Сегментация японских слов и отображение каны** Поддержка использования встроенных бесплатных загружаемых инструментов сегментации слов и отображения каны, поддержка использования Mecab для оптимизации сегментации слов и отображения каны, поддержка сторонних словарей.
&emsp;&emsp;**Поиск слов** Поддержка поиска слов с использованием Xiaoxiaoguan, Lingoes Dictionary и EDICT (японо-английский словарь).

157
docs/ru/alltoolbuttons.md Normal file
View File

@ -0,0 +1,157 @@
## Подробное описание кнопок инструментов
?> Все кнопки можно скрыть или показать в `Настройках отображения` -> `Кнопки инструментов`.<br>
Можно свободно изменять позицию всех кнопок. Кнопки можно группировать по `лево`, `по центру`, `право`, и изменения относительных позиций будут ограничены в пределах группы.<br>
Цвет кнопок можно настроить в `Настройках отображения` -> `Настройки интерфейса` -> `Панель инструментов` -> `Цвет кнопок`.<br>
Некоторые кнопки имеют два значка, чтобы указать две разные состояния. Некоторые кнопки имеют только один значок, но разные цвета для разных состояний.
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.6.0/css/all.min.css">
<style>
i{
color: blue;
width: 20px;
}
.fa-icon {
visibility: hidden;
}
.btnstatus2{
color: deeppink;
}
</style>
1. #### <i class="fa fa-rotate-right"></i> <i class="fa fa-icon fa-rotate-right"></i> Ручной перевод
Фактически означает, что с текущего источника текстового ввода прочитается входной текст один раз и будет выполнен перевод.
Например, если в настоящее время выбран режим OCR, будет выполнена еще одна OCR-операция.
1. #### <i class="fa fa-forward"></i> <i class="btnstatus2 fa fa-forward"></i> Автоматический перевод
Фактически означает, что приостановить/продолжить автоматическое чтение текста из текущего источника текстового ввода.
Например, если в настоящее время выбран режим HOOK, чтение текста игры будет приостановлено; в режиме OCR, приостановится автоматическое распознавание изображений; в режиме буфера обмена, приостановится автоматическое чтение буфера обмена.
1. #### <i class="fa fa-gear"></i> <i class="fa fa-icon fa-rotate-right"></i> Открыть настройки
Краткое описание
1. #### <i class="fa fa-file"></i> <i class="fa fa-icon fa-rotate-right"></i> Прочитать буфер обмена
Фактически означает, что независимо от текущего источника текстового ввода, с буфера обмена будет прочитан текст один раз и передан в последующий процесс перевода/TTS/...
1. #### <i class="fa fa-sitemap"></i> <i class="fa fa-icon fa-rotate-right"></i> Открыть связанную страницу
Это эквивалент небольшому браузеру, который в основном предназначен для создания отдельных закладок для каждой игры. Автоматически ищет метаданные для страниц с коллекцией игр на vndb/bangumi/dlsite/ и т.д., также можно вручную добавить некоторые веб-страницы, связанные с этой игрой (например, веб-страницы с гайдами по игре, помимо использования блокнота, можно использовать эту функцию для хранения закладок), что облегчает просмотр. Избавляет от необходимости создавать закладки в браузере и управлять ими.
Подробнее в разделе [Полезные функции](/ru/usefulsmalltools.md?id=Связанные_страницы,_удобное_управлениееб-страницами_связанными_сгрой)
1. #### <i class="fa fa-futbol"></i> <i class="fa fa-icon fa-rotate-right"></i> Настройки игры
При использовании режима HOOK для подключения к игре или привязке окна игры в режиме OCR, можно использовать эту кнопку для прямого открытия окна настроек текущей игры
1. #### <i class="fa fa-mouse-pointer"></i> <i class="btnstatus2 fa fa-mouse-pointer"></i> Прозрачность окна мыши
Активация этой кнопки приводит к тому, что при щелчке мышью на окне перевода окно перевода не реагирует на щелчок, а передает событие клика в окно ниже.<br>
Когда окно перевода размещено над текстовым полем окна игры, активация этой кнопки позволяет щелкнуть текстовое поле игры, а не окно перевода.<br>
При перемещении мыши в **область кнопки прозрачности окна мыши и одной кнопки слева или справа от нее**, прозрачность автоматически отключается для использования кнопок инструментов; когда мышь выходит из этой области, прозрачность возвращается.
1. #### <i class="fa fa-lightbulb"></i> <i class="btnstatus2 fa fa-lightbulb"></i> Прозрачность фонового окна
Функция этой кнопки заключается в одном нажатии для переключения непрозрачности окна перевода в 0. Этот переключатель не забывает настройки непрозрачности по умолчанию.
1. #### <i class="fa fa-lock"></i> <i class="btnstatus2 fa fa-unlock"></i> Закрепить панель инструментов
Если панель инструментов не зафиксирована, при перемещении мыши за пределы панели она автоматически скрывается; после активации панель инструментов будет всегда видна.<br>
Если панель инструментов не зафиксирована и активирована `прозрачность окна мыши`, панель инструментов будет отображаться только при перемещении мыши в **область кнопки прозрачности окна мыши и одной кнопки слева или справа от нее**; в противном случае панель инструментов отображается при любом входе мыши в окно перевода.<br>
Если в настоящее время используются эффекты окон (Aero/Arylic) и панель инструментов не зафиксирована, панель инструментов будет находиться в области z-оси над областью текста, а не находиться на y-оси над областью текста. Это связано с тем, что из-за Windows, при использовании эффектов окон, если панель инструментов просто скрывается, а не уменьшается по высоте окна, скрытая панель инструментов все равно будет отображаться с прозрачным фоном Alyric/Aero, что приводит к появлению белого пятна в области панели инструментов.
1. #### <i class="fa fa-link"></i> <i class="fa fa-icon fa-rotate-right"></i> Выбор игры
**Эта кнопка доступна только в режиме HOOK**<br>
При нажатии на кнопку открывается окно выбора процесса игры для HOOK.
1. #### <i class="fa fa-tasks"></i> <i class="fa fa-icon fa-rotate-right"></i> Выбор текста
**Эта кнопка доступна только в режиме HOOK**<br>
При нажатии на кнопку открывается окно выбора текста игры для перевода.<br>
Однако окно выбора текста автоматически появляется после выбора процесса, и эта кнопка фактически используется для замены выбранного текста или изменения некоторых настроек.
1. #### <i class="fa fa-crop"></i> <i class="fa fa-icon fa-rotate-right"></i> Выбор области OCR
**Эта кнопка доступна только в режиме OCR**<br>
В режиме OCR выбирать область OCR, изменять область OCR или добавлять новую область OCR при активации `OCR настройки` -> `Другие` -> `Многообластный режим`.
1. #### <i class="fa fa-square"></i> <i class="fa fa-icon fa-rotate-right"></i> Показать/Скрыть рамку области
**Эта кнопка доступна только в режиме OCR**<br>
Когда никакая область OCR не выбрана, используйте эту кнопку, чтобы отобразить область OCR, автоматически устанавливая область OCR в последний выбранный OCR.
1. #### <i class="fa fa-crop"></i> <i class="fa fa-icon fa-rotate-right"></i> Выполнить одинOCR
Эта кнопка аналогична кнопке `Прочитать буфер обмена`, независимо от текущего источника текстового ввода, сначала выбирается область OCR, затем выполняется один OCR, а затем процесс перевода.<br>
Обычно эта кнопка используется в режиме HOOK, когда при выборе ветвей, временно используется OCR для перевода ветвей. Или в режиме OCR, чтобы временно распознать новый случайный появляющийся раз в другом месте.<br>
1. #### <i class="fa fa-spinner"></i> <i class="fa fa-icon fa-rotate-right"></i> Повторное выполнение OCR
После использования кнопки `Выполнить одинOCR`, при нажатии этой кнопки можно снова выполнить OCR в исходном положении без повторного выбора области распознавания.
1. #### <i class="fa fa-book"></i> <i class="fa fa-icon fa-rotate-right"></i> Перевод собственных названий_прямое замещение
1. #### <i class="fa fa-book"></i> <i class="fa fa-icon fa-rotate-right"></i> Перевод собственных названий_глобально
1. #### <i class="fa fa-book"></i> <i class="fa fa-icon fa-rotate-right"></i> Перевод собственных названий
1. #### <i class="fa fa-won"></i> <i class="fa fa-icon fa-rotate-right"></i> Исправление результатов перевода_глобально
1. #### <i class="fa fa-won"></i> <i class="fa fa-icon fa-rotate-right"></i> Исправление результатов перевода
Эти пять кнопок похожи по эффекту, они предназначены для быстрого открытия окна настроек оптимизации перевода, добавления новых указанных терминов.<br>
Для `глобального`, всегда открывается глобальное настройки словаря. Для не `глобального`, при наличии привязанной игры (HOOK-соединение игры/буфер обмена, окно OCR-привязки), открывается настройки специализированного словаря для игры, в противном случае открываются глобальные настройки словаря.
1. #### <i class="fa fa-minus"></i> <i class="fa fa-icon fa-rotate-right"></i> Свернуть в системный трей
Краткое описание
1. #### <i class="fa fa-times"></i> <i class="fa fa-icon fa-rotate-right"></i> Выход
Краткое описание
1. #### <i class="fa fa-hand-paper"></i> <i class="fa fa-icon fa-rotate-right"></i> Перемещение
Перемещение окна перевода.<br>
На самом деле, когда на панели кнопок есть дополнительное пустое пространство без кнопок, можно свободно перемещать. Эта кнопка используется только для резервирования позиции для перемещения.
1. #### <i class="fa fa-compress"></i> <i class="fa fa-expand"></i> Изменение масштаба окна
Можно одним нажатием изменить масштаб окна игры (HOOK-соединение игры/буфер обмена, окно OCR-привязки) (по умолчанию используется встроенный Magpie, также можно настроить использование скачанного Magpie и т.д.).<br>
1. #### <i class="fa fa-camera"></i> <i class="fa fa-icon fa-rotate-right"></i> Снимок окна
Можно сделать снимок привязанного окна (по умолчанию делает два снимка, GDI и Winrt, оба имеют некоторую вероятность сбоя). Лучшее место, если в настоящее время используется Magpie для масштабирования, также будет делать снимок увеличенного окна.<br>
Подробнее в разделе [Полезные функции](/ru/usefulsmalltools.md?id=Снимок_окна&amp;галерея&amp;запись_звука,_захват_каждогоркогоомента)
1. #### <i class="fa fa-volume-off"></i> <i class="btnstatus2 fa fa-volume-up"></i> Выключение звука игры
После привязки окна игры (не только в режиме HOOK, но и в режиме OCR или буфера обмена, если только окно игры привязано), можно одним нажатием выключить звук игры, избавившись от необходимости отключать звук игры в системном микшере.
1. #### <i class="fa fa-eye"></i> <i class="btnstatus2 fa fa-eye-slash"></i> Показать/скрыть исходный текст
Переключение отображения исходного текста, вступает в силу немедленно.
1. #### <i class="fa fa-toggle-on"></i> <i class="btnstatus2 fa fa-toggle-off"></i> Показать/скрыть перевод
Переключение использования перевода, является общим переключателем перевода, после его отключения не будет выполнено никакого перевода.<br>
Если перевод уже выполнен, после отключения он будет скрыт, и при повторном включении будет снова отображаться результат текущего перевода.<br>
Если перевод еще не выполнен и переключение скрытия на отображение, будет инициирован перевод текущего предложения.
1. #### <i class="fa fa-music"></i> <i class="fa fa-icon fa-rotate-right"></i> Чтение
Левый клик по кнопке будет читать текущий текст с синтезом речи.<br>Правый клик на кнопке прерывает чтение.<br> Это чтение игнорирует `пропуск` (если в `голосовых настройках` соответствует текущему тексту цель `пропуск`, то при использовании кнопки для чтения будет проигнорирован пропуск и будет принудительно прочитано)
1. #### <i class="fa fa-copy"></i> <i class="fa fa-icon fa-rotate-right"></i> Копировать в буфер обмена
Копирование текущего извлеченного текста в буфер обмена один раз. Если вы хотите автоматически извлечь в буфер обмена, следует активировать `Текстовый ввод` -> `Вывод текста` -> `Буфер обмена` -> `Автоматическое вывод`.
1. #### <i class="fa fa-rotate-left"></i> <i class="fa fa-icon fa-rotate-right"></i> Показать/скрыть историю переводов
Открыть или закрыть окно истории переводов.
1. #### <i class="fa fa-gamepad"></i> <i class="fa fa-icon fa-rotate-right"></i> Управление игрой
Открыть интерфейс менеджера игр.
1. #### <i class="fa fa-edit"></i> <i class="fa fa-icon fa-rotate-right"></i> Редактирование
Открыть окно редактирования, запустить редактирование текущего извлеченного текста.<br>
В этом окне можно изменить текст, а затем перевести; или перевести любой введенный текст.
1. #### <i class="fa fa-edit"></i> <i class="fa fa-icon fa-rotate-right"></i> Редактированиеурнал переводов
Открыть окно редактирования журнала переводов текущей игры.
1. #### <i class="fa fa-download"></i> <i class="fa fa-icon fa-rotate-right"></i> Имитация нажатия клавиши Ctrl
11. #### <i class="fa fa-download"></i> <i class="fa fa-icon fa-rotate-right"></i> Имитация нажатия клавиши Enter
Так же, для отправки имитации нажатия клавиши в окно игры. Может быть полезно при использовании потоковой передачи/планшета.
1. #### <i class="fa fa-list-ul"></i> <i class="fa fa-icon fa-rotate-right"></i> Заметки
Открыть окно заметок для текущей игры, которая находится в процессе игры. Для каждой игры есть отдельный файл заметок.<br>
Можно использовать для временной записи заметок или копирования стратегий для игры и удаления их по мере прохождения, очень удобно, избавляя от необходимости открытия веб-страниц/отдельного файла txt, очень практично.
1. #### <i class="fab fa-windows"></i> <i class="btnstatus2 fab fa-windows"></i> Привязка окна (не поддерживается некоторыми программами) (нажмите, чтобы отменить)
**Эта кнопка очень важна, многие функции зависят от предварительной настройки этой кнопки**<br>
После привязки окна игры, такие функции, как `изменение масштаба окна`, `снимок окна`, `выключение звука игры`, `следование за окном игры` -> `снять привилегированный режим, когда игра теряет фокус` и `синхронное перемещение с окном игры`, а также учет времени игры и т. д., становятся доступными.
Независимо от режима HOOK/OCR/буфера обмена эта кнопка доступна.<br>
В режиме HOOK автоматически привязывается к окну игры, соединенной с игрой, но также можно использовать эту кнопку для повторного выбора другого окна.<br>
В режиме OCR после привязки окна дополнительно разрешается синхронное автоматическое перемещение области и рамки OCR при перемещении окна игры.
В режиме OCR/буфера обмена после привязки окна также можно, как и в режиме HOOK, связать текущую игру с настройками игры, чтобы использовать специализированный словарь оптимизации перевода для текущей игры и т. д.
1. #### <i class="fa fa-neuter"></i> <i class="btnstatus2 fa fa-neuter"></i> Окно на переднем плане
Отменить/установить окно перевода на передний план
1. #### <i class="fa fa-i-cursor"></i> <i class="btnstatus2 fa fa-i-cursor"></i> Выделение
Сделать текст в области текста окна перевода доступным для выбора. После активации возможности выбора текста, перетаскивание в тексте будет невозможно, можно только перетаскивать панель инструментов (поскольку при перетаскивании происходит выбор текста)
1. #### <i class="fa fa-search"></i> <i class="fa fa-icon fa-rotate-right"></i> Поиск слова
Открыть окно поиска слов.

27
docs/ru/basicuse.md Normal file
View File

@ -0,0 +1,27 @@
## Основы использования
После запуска интерфейс выглядит следующим образом.
![img](https://image.lunatranslator.org/zh/opensetting.png)
Сначала необходимо активировать несколько источников перевода, нажмите кнопку "Открыть настройки", чтобы открыть интерфейс настроек, затем нажмите "Настройки перевода" слева.
В правой нижней части онлайн-перевода выберите любые источники перевода для активации.
![img](https://image.lunatranslator.org/zh/transsetting.png)
Закройте интерфейс настроек, нажмите кнопку "Выбрать игру", чтобы открыть интерфейс выбора игры, выберите игру и нажмите OK.
![img](https://image.lunatranslator.org/zh/attach.png)
![img](https://image.lunatranslator.org/zh/selectgame.png)
Затем появится интерфейс выбора текста, запустите игру, чтобы отобразить некоторый текст, в интерфейсе выбора текста появятся несколько строк текста.
Нажмите кнопку выбора в первом столбце или дважды щелкните строку текста, чтобы выбрать эту строку для перевода. (Если игра поддерживает встроенный перевод, появится дополнительный столбец "Встроенный")
![img](https://image.lunatranslator.org/zh/selecttext.png)
После завершения выбора закройте интерфейс выбора текста. Теперь вы можете видеть перевод игры.
![img](https://image.lunatranslator.org/zh/showtrans.png)

33
docs/ru/cantstart.md Normal file
View File

@ -0,0 +1,33 @@
## Невозможно запустить программу?
#### **1. Error/ModuleNotFoundError**
Если вы обновились с предыдущей версии на новую версию напрямую или через автоматическое обновление, старые недействительные файлы не будут удалены, и из-за порядка загрузки файлов в Python старые файлы будут загружены первыми, что приведет к невозможности загрузки новых файлов и вызовет эту проблему.
Решение: Сохраните папку userconfig, удалите другие файлы, затем повторно загрузите и распакуйте.
<details>
<summary>Частично уже решено, больше не будет ошибок</summary>
<img src="https://image.lunatranslator.org/zh/cantstart/1.png">
<img src="https://image.lunatranslator.org/zh/cantstart/3.jpg">
</details>
#### **2. Error/PermissionError**
Если программа помещена в специальные папки, такие как `Program Files`, у нее может не быть прав на чтение и запись. Пожалуйста, запустите с правами администратора.
<img src="https://image.lunatranslator.org/zh/cantstart/6.png" width=400>
#### **3. Не удается найти важные компоненты**
<img src="https://image.lunatranslator.org/zh/cantstart/2.jpg">
Решение: Закройте антивирусную программу, если ее невозможно закрыть (например, Windows Defender), добавьте в список доверенных, затем повторно загрузите.
Примечание: Для реализации HOOK для извлечения текста из игры необходимо внедрить Dll в игру, shareddllproxy32.exe/LunaHost32.dll и несколько других файлов реализуют это, поэтому они особенно легко распознаются как вирусы. Программа в настоящее время автоматически собирается с помощью [Github Actions](https://github.com/HIllya51/LunaTranslator/actions), поэтому если сервер Github не заражен, она не может содержать вирусы, и вы можете спокойно добавить их в список доверенных.
<details>
<summary>Для Windows Defender метод: "Защита от вирусов и угроз" -> "Исключения" -> "Добавить или удалить исключения" -> "Добавить исключение" -> "Папка", добавьте папку Luna</summary>
<img src="https://image.lunatranslator.org/zh/cantstart/4.png">
<img src="https://image.lunatranslator.org/zh/cantstart/3.png">
</details>

82
docs/ru/embedtranslate.md Normal file
View File

@ -0,0 +1,82 @@
## Как использовать встроенный перевод?
> Во-первых, не все игры поддерживают встроенный перевод. Во-вторых, встроенный перевод может привести к сбою игры.
<details>
<summary>Если в окне выбора текста нет строки "Встроенный", значит, встроенный перевод не поддерживается</summary>
<img src="https://image.lunatranslator.org/zh/embed/noembed.png">
<img src="https://image.lunatranslator.org/zh/embed/someembed.png">
</details>
Для игр, поддерживающих встроенный перевод, выберите элемент текста, поддерживающий встроенный перевод, и активируйте его.
![img](https://image.lunatranslator.org/zh/embed/select.png)
Для элементов, поддерживающих встроенный перевод, **отображение** и **встроенный** могут быть активированы одновременно или нет. Когда они активированы одновременно, перевод будет встроен в игру и отображаться в окне программы; если активирован только встроенный, перевод будет отображаться только в игре, а в окне программы ничего не будет отображаться.
Когда начинается встроенный перевод, часто возникает проблема с глифами. Обычно это связано с проблемами **набора символов** и **шрифта**. Для английских игр это обычно связано с отсутствием китайского **шрифта** в игре, например:
![img](https://image.lunatranslator.org/zh/embed/luanma.png)
В этом случае вам нужно активировать **изменение шрифта игры** в **настройках встроенного перевода** и выбрать подходящий шрифт для отображения китайских символов.
![img](https://image.lunatranslator.org/zh/embed/ziti.png)
После изменения шрифта китайские символы могут отображаться правильно:
![img](https://image.lunatranslator.org/zh/embed/okembed.png)
Но вы заметите, что встроенный текст написан на традиционном китайском. Вы можете отключить **преобразование китайских символов в традиционные/японские иероглифы** в **настройках встроенного перевода**.
> Это связано с тем, что **многие старые японские галгеи используют собственный набор символов shift-jis, который не может правильно обрабатывать китайские символы. Преобразование китайских иероглифов в похожие традиционные/японские иероглифы может уменьшить количество глифов. Поэтому по умолчанию упрощенные китайские символы автоматически преобразуются в традиционные китайские**. Если после отключения этой настройки возникнут глифы, восстановите эту настройку.
Для некоторых новых игровых движков и большинства английских игр обычно используются наборы символов Unicode, такие как utf-8 или utf-16 (например, **KiriKiri**, **Renpy**, **TyranoScript**, **RPGMakerMV** и т.д.). Даже если возникнут глифы, обычно это проблема шрифта, а не набора символов.
![img](https://image.lunatranslator.org/zh/embed/fanti.png)
После отключения этой настройки можно отображать упрощенные китайские символы нормально. Но для некоторых игр, которые не могут отображать упрощенные китайские символы нормально, можно попробовать активировать эту опцию, чтобы увидеть, можно ли отображать их нормально.
![img](https://image.lunatranslator.org/zh/embed/good.png)
** **
## Некоторые другие настройки
**1. Сохранить оригинальный текст**
![img](https://image.lunatranslator.org/zh/embed/keeporigin.png)
Из-за ограничений игры по количеству строк текста, по умолчанию не добавляется разрыв строки между переводом и оригинальным текстом. Если вы уверены, что можете вместить, можно добавить разрыв строки перед переводом с помощью регулярного выражения в **оптимизации перевода** -> **исправление результата перевода**.
![img](https://image.lunatranslator.org/zh/embed/addspace.png)
**2. Время ожидания перевода**
Принцип встроенного перевода заключается в том, чтобы остановить игру перед отображением текста в определенной функции, отправить текст в переводчик, дождаться перевода, изменить текст в памяти на переведенный текст, а затем продолжить выполнение игры для отображения перевода. Поэтому **при использовании медленного переводчика игра обязательно зависнет**. Вы можете ограничить время ожидания, чтобы избежать длительных зависаний из-за медленного перевода.
**3. Использовать самый быстрый перевод вместо указанного перевода** и **переводчик для встроенного перевода**
При активации нескольких источников перевода можно выбрать указанный перевод с лучшим результатом или самый быстрый перевод, чтобы уменьшить задержку в игре.
**4. Преобразовать китайские символы в традиционные/японские иероглифы**
Пропущено
**5. Вставить пробелы между перекрывающимися символами**
Для некоторых старых японских игровых движков, таких как SiglusEngine, неправильно обрабатывается ширина китайских символов, и они отображаются с шириной английских символов, что приводит к перекрытию символов во встроенном китайском тексте. Можно попробовать настроить эту опцию, чтобы решить эту проблему.
**6. Ограничить количество символов в строке**
Иногда в некоторых играх количество символов в строке ограничено, и содержимое, превышающее длину, будет отображаться за пределами правой части текстового поля и не будет отображаться. Эту проблему можно решить, вручную разбив строки с помощью этой настройки.
![img](https://image.lunatranslator.org/zh/embed/limitlength.png)
**7. Изменить шрифт игры**
Пропущено
**8. Проверка безопасности встроенного перевода**
Для игр, таких как Renpy, извлеченный текст часто включает символы `{` `}` `[` `]` и другие элементы синтаксиса. Если переводчик неправильно обрабатывает эти элементы и разрушает синтаксис, это может привести к сбою игры. Поэтому программа по умолчанию пропускает перевод некоторых комбинаций символов, которые могут привести к сбою игры, с помощью регулярных выражений. Если вы не боитесь сбоя игры, можете отключить эту настройку или вручную заменить некоторые более детализированные регулярные выражения, чтобы уменьшить ненужный пропуск.
![img](https://image.lunatranslator.org/zh/embed/safeskip.png)

140
docs/ru/fastkeys.md Normal file
View File

@ -0,0 +1,140 @@
## Подробное объяснение горячих клавиш
### Для использования горячих клавиш сначала необходимо включить `Использование горячих клавиш`, затем активировать нужную горячую клавишу и назначить ей кнопку
<!-- tabs:start -->
### **Общие**
1. #### Ручной перевод
Считывание входного текста один раз из текущего источника текстового ввода и выполнение перевода.
Например, если в настоящее время выбран режим OCR, будет выполнена еще одна операция OCR.
1. #### Автоматический перевод
Приостановка/продолжение автоматического чтения текста из текущего источника текстового ввода.
Например, если в настоящее время выбран режим HOOK, чтение текста игры будет приостановлено; в режиме OCR, приостановится автоматическое распознавание изображений; в режиме буфера обмена, приостановится автоматическое чтение буфера обмена.
1. #### Открыть настройки
Пропустить
1. #### Показать/скрыть исходный текст
Переключение отображения исходного текста, вступает в силу немедленно.
1. #### Показать/скрыть перевод
Переключение использования перевода, является общим переключателем перевода, после его отключения не будет выполнено никакого перевода.
Если перевод уже выполнен, после отключения он будет скрыт, и при повторном включении будет снова отображаться результат текущего перевода.
Если перевод еще не выполнен и переключение скрытия на отображение, будет инициирован перевод текущего предложения.
1. #### Показать/скрыть историю переводов
Открыть или закрыть окно истории переводов.
1. #### Прозрачность окна мыши
Переключение состояния прозрачности окна мыши.
Для корректного использования этой функции необходимо использовать соответствующую кнопку инструмента прозрачности окна мыши.
1. #### Закрепить панель инструментов
Если панель инструментов не зафиксирована, при перемещении мыши за пределы панели она автоматически скрывается; после активации панель инструментов будет всегда видна.
Если панель инструментов не зафиксирована и активирована `прозрачность окна мыши`, панель инструментов будет отображаться только при перемещении мыши в **область кнопки прозрачности окна мыши и одной кнопки слева или справа от нее**; в противном случае панель инструментов отображается при любом входе мыши в окно перевода.
Если в настоящее время используются эффекты окон (Aero/Arylic) и панель инструментов не зафиксирована, панель инструментов будет находиться в области z-оси над областью текста, а не находиться на y-оси над областью текста. Это связано с тем, что из-за Windows, при использовании эффектов окон, если панель инструментов просто скрывается, а не уменьшается по высоте окна, скрытая панель инструментов все равно будет отображаться с прозрачным фоном Alyric/Aero, что приводит к появлению белого пятна в области панели инструментов.
1. #### Показать/скрыть окно перевода
Пропустить
1. #### Выход
Пропустить
### **HOOK**
**Доступно только в режиме HOOK**<br>
1. #### Выбор игры
Открыть окно выбора процесса игры для HOOK.
1. #### Выбор текста
Открыть окно выбора текста игры для перевода.
Однако окно выбора текста автоматически появляется после выбора процесса, и на самом деле это предназначено для замены выбранного текста или изменения некоторых настроек.
### **OCR**
1. #### Выбор области OCR
**Доступно только в режиме OCR**<br>
В режиме OCR выбирать область OCR, изменять область OCR или добавлять новую область OCR при активации `Настройки OCR` -> `Другие` -> `Многообластный режим`.
1. #### Показать/скрыть рамку области
**Доступно только в режиме OCR**<br>
Если никакая область OCR не выбрана, при использовании этого горячего клавиша для отображения области OCR, автоматически устанавливается область OCR в последний выбранный OCR.
1. #### Выбор области OCR — немедленно
**Доступно только в режиме OCR**<br>
Разница от `Выбор области OCR` заключается только в том, что требуется нажатие мыши меньше раз.
1. #### Выполнить один OCR
Аналогично `Чтение буфера обмена`, независимо от текущего источника текстового ввода, сначала выбирается область OCR, затем выполняется один OCR, а затем процесс перевода.
Обычно используется в режиме HOOK, когда при выборе ветвей, временно используется OCR для перевода ветвей. Или в режиме OCR, чтобы временно распознать новый случайный появляющийся раз в другом месте.
1. #### Повторное выполнение OCR
После использования `Выполнить один OCR`, при нажатии этого горячего клавиша, можно снова выполнить OCR в исходном положении без повторного выбора области распознавания.
### **Буфер обмена**
1. #### Чтение буфера обмена
Фактически означает, что независимо от текущего источника текстового ввода, с буфера обмена будет прочитан текст один раз и передан в последующий процесс перевода/TTS/...
1. #### Копировать в буфер обмена
Копирование текущего извлеченного текста в буфер обмена один раз. Если вы хотите автоматически извлечь в буфер обмена, следует активировать `Текстовый ввод` -> `Вывод текста` -> `Буфер обмена` -> `Автоматическое вывод`.
1. #### Копировать в буфер обмена перевод
Копировать перевод, а не исходный текст в буфер обмена
### **TTS**
1. #### Автоматическое чтение
Переключение автоматического чтения.
1. #### Чтение
Произношение текущего текста с синтезом речи.
Это чтение игнорирует `пропуск` (если в `голосовых настройках` соответствует текущему тексту цель `пропуск`, то при использовании горячей клавиши для чтения будет проигнорирован пропуск и будет принудительно прочитано)
1. #### Прервать чтение
Прервать чтение.
### **Игра**
1. #### Привязка окна (для отмены кликните снова)
После привязки окна игры доступны функции `изменение масштаба окна`, `снимок окна`, `выключение звука игры`, `следование за окном игры` -> `снять привилегированный режим, когда игра теряет фокус` и `синхронное перемещение при перемещении окна игры`, а также учет времени игры и т. д.
Независимо от режима HOOK/OCR/буфера обмена, эта горячая клавиша доступна.<br>
В режиме HOOK окно игры будет автоматически привязано в соответствии с подключенной игрой, но вы также можете использовать эту горячую клавишу для повторного выбора другого окна.<br>
В режиме OCR после привязки окна дополнительно разрешается синхронное автоматическое перемещение области и рамки OCR при перемещении окна игры.
В режиме OCR/буфера обмена после привязки окна также можно, как и в режиме HOOK, связать текущую игру с настройками игры, что позволяет использовать специализированный словарь оптимизации перевода для данной игры и т. д.
1. #### Изменение масштаба окна
Можно мгновенно изменить масштаб окна игры (привязка HOOK/буфер обмена, окно OCR) (по умолчанию используется встроенный Magpie, также можно настроить на использование скачанного Magpie и т. д.).<br>
1. #### Снимок окна
Можно сделать скриншот привязанного окна (по умолчанию создаются два вида снимков, GDI и Winrt, оба с некоторой вероятностью могут сбоить). Самым большим преимуществом является то, что если в данный момент используется Magpie для масштабирования, также будет сделан скриншот увеличенного окна.<br>
Подробнее о [полезных функциях](/ru/usefulsmalltools.md?id=Снимок_окна&amp;галерея&amp;запись_звука,_захват_каждогоркогоомента)
1. #### Выключение звука игры
После привязки окна игры (не только в режиме HOOK, но и в режиме OCR или буфера обмена, главное, что окно игры привязано), можно мгновенно выключить звук игры одним нажатием, избавившись от необходимости переключения звука в системном микшере.
1. #### Magpie Встроенная наложенная слой в игре
**Действует только при использовании встроенного Magpie для масштабирования окна**<br>
Показать/скрыть встроенную наложенную слой Magpie в игре.
1. #### Галерея Запись
Горячая клавиша для функции записи в галерее в управлении игрой.
### **Поиск слов**
1. #### Anki Запись звука
Горячая клавиша для функции записи звука в интерфейсе добавления в Anki в окне поиска слов.
1. #### Anki Запись звука Пример
Горячая клавиша для функции записи звука в интерфейсе добавления в Anki в окне поиска слов, но записанное аудио будет назначено для поля примера.
1. #### Anki Добавить
Добавить слово в Anki.
1. #### Прочитать слово
Прочитать слово в текущем окне поиска слов.
<!-- tabs:end -->

33
docs/ru/gooduseocr.md Normal file
View File

@ -0,0 +1,33 @@
## Привязка окна игры в режиме OCR
По умолчанию активирована опция `Автоматическая привязка окна после выбора области OCR`. Когда все четыре угла рамки области принадлежат одному окну HWND, она автоматически привязывается к этому окну.
Как правило, при использовании других программ OCR одна из раздражающих вещей заключается в том, что часто нужно следить за положением окна игры и окна перевода. Возможно, окно перевода и область скриншота пересекаются, или иногда окно игры нужно переместить на задний план, что тоже раздражает.
Однако, настройка **привязки окна** в Luna идеально решает эту проблему.
Нажмите кнопку **привязки окна**, затем нажмите на окно игры, кнопка станет розовой, что указывает на успешную привязку окна игры.
![img](https://image.lunatranslator.org/zh/gooduseocr/bind.png)
![img](https://image.lunatranslator.org/zh/gooduseocr/bindok.png)
Это приведет к некоторым важным изменениям:
1. **Скриншот будет делаться только окну игры, не будут захвачены другие окна**. Таким образом, окно перевода можно разместить в любом месте, не беспокоясь о том, что оно пересекается с областью скриншота и вызывает резкие изменения; таким образом, когда окно игры закрыто другим окном, скриншот будет делаться только окну игры, не захватывая закрывающее окно.
2. **Когда окно игры перемещается, область OCR будет следовать за окном игры синхронно**. Таким образом, когда иногда нужно переместить окно игры, не нужно перемещать рамку области OCR, особенно когда рамка области скрыта, не нужно показывать-перемещать-скрывать.
Кроме того, после привязки окна игры есть и другие преимущества:
1. Функция скриншота игры может более точно захватывать окно игры.
2. Функция отслеживания времени игры может более точно записывать время.
3. Можно использовать встроенный Magpie или вызывать загруженный вами Magpie с помощью кнопки инструмента.
4. Можно получить местоположение игры и внутренний ID программы из дескриптора окна, что позволяет настроить игру, включая настройки языка/синтеза речи/оптимизации перевода/обработки текста/Anki и т.д. специально для этой игры.
А также некоторые другие оптимизации, которые не помню, требуют привязки окна для использования.
Таким образом, даже если привязано окно игры и используется только OCR без HOOK, на самом деле можно получить лучший опыт, чем с другими программами.

186
docs/ru/guochandamoxing.md Normal file
View File

@ -0,0 +1,186 @@
## Как использовать API большой модели для перевода
<details>
<summary>Использовать несколько совместимых с ChatGPT интерфейсов (или специальных интерфейсов) одновременно?</summary>
Если у вас есть несколько разных ключей и вы хотите их ротацию, просто разделите их символом |.<br>
Но иногда хочется использовать несколько разных адресов API/prompt/model/параметров и т.д. для сравнения результатов перевода. Метод следующий:<br>
Нажмите кнопку "+" в правом нижнем углу
<img src="https://image.lunatranslator.org/zh/damoxing/extraapi1.png">
Появится окно, выберите совместимый с ChatGPT интерфейс (или специальный интерфейс) и дайте ему имя. Это скопирует текущие настройки и API совместимого с ChatGPT интерфейса (или специального интерфейса).
<img src="https://image.lunatranslator.org/zh/damoxing/extraapi2.png">
Активируйте скопированный интерфейс и можете настроить его отдельно. Скопированный интерфейс может работать вместе с исходным интерфейсом, что позволяет использовать несколько разных настроек.
<img src="https://image.lunatranslator.org/zh/damoxing/extraapi3.png">
</details>
>**model** можно выбрать из выпадающего списка, если его нет в списке, можно ввести/изменить вручную, следуя официальной документации интерфейса.<br>
>Некоторые интерфейсы могут динамически получать список моделей на основе **адреса API** и **API Key**. После заполнения этих двух пунктов нажмите кнопку обновления рядом с **model**, чтобы получить список доступных моделей.
### Совместимый с ChatGPT интерфейс
>Большинство платформ больших моделей используют совместимый с ChatGPT интерфейс.<br>Из-за разнообразия платформ невозможно перечислить их все. Для других неперечисленных интерфейсов, пожалуйста, обратитесь к их документации, чтобы заполнить соответствующие параметры.
#### Зарубежные интерфейсы больших моделей
<!-- tabs:start -->
### **groq**
**Адрес API** `https://api.groq.com/openai/v1/chat/completions`
**API Key** https://console.groq.com/keys
**model** https://console.groq.com/docs/models заполните `Model ID`
### **OpenRouter**
**Адрес API** `https://openrouter.ai/api/v1/chat/completions`
**API Key** https://openrouter.ai/settings/keys
**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`
**API Key** https://console.mistral.ai/api-keys/
**model** https://docs.mistral.ai/getting-started/models/
### **Azure**
https://learn.microsoft.com/en-us/azure/ai-services/openai/reference#completions
<!-- tabs:end -->
#### Китайские интерфейсы больших моделей
<!-- tabs:start -->
### **DeepSeek**
**Адрес API** `https://api.deepseek.com`
**API Key** https://platform.deepseek.com/api_keys
**model** https://platform.deepseek.com/api-docs/zh-cn/pricing
### **Alibaba Cloud Bailian Large Model**
**Адрес API** `https://dashscope.aliyuncs.com/compatible-mode/v1`
**API Key** https://bailian.console.aliyun.com/?apiKey=1#/api-key
**model** https://help.aliyun.com/zh/model-studio/product-overview/billing-for-alibaba-cloud-model-studio/#2550bcc04d2tk
### **ByteDance Doubao Large Model (Volcengine)**
**Адрес API** `https://ark.cn-beijing.volces.com/api/v3`
**API Key** [Создать API Key](https://console.volcengine.com/ark/region:ark+cn-beijing/apiKey?apikey=%7B%7D) получить
**model** [Создать точку доступа для вывода](https://console.volcengine.com/ark/region:ark+cn-beijing/endpoint?current=1&pageSize=10) затем заполните **точку доступа**, а не **модель**
![img](https://image.lunatranslator.org/zh/damoxing/doubao.png)
### **Moonshot**
**Адрес API** `https://api.moonshot.cn`
**API Key** https://platform.moonshot.cn/console/api-keys
**model** https://platform.moonshot.cn/docs/intro
### **Zhipu AI**
**Адрес API** `https://open.bigmodel.cn/api/paas/v4/chat/completions`
**API Key** https://bigmodel.cn/usercenter/apikeys
**model** https://bigmodel.cn/dev/howuse/model
### **Lingyi Wanwu**
**Адрес API** `https://api.lingyiwanwu.com`
**API Key** https://platform.lingyiwanwu.com/apikeys
**model** https://platform.lingyiwanwu.com/docs/api-reference#list-models
### **Siliconflow**
**Адрес API** `https://api.siliconflow.cn`
**API Key** https://cloud-hk.siliconflow.cn/account/ak
**model** https://docs.siliconflow.cn/docs/model-names
### **Xunfei Spark Large Model**
**Адрес API** `https://spark-api-open.xf-yun.com/v1`
**API Key** См. [официальную документацию](https://www.xfyun.cn/doc/spark/HTTP%E8%B0%83%E7%94%A8%E6%96%87%E6%A1%A3.html#_3-%E8%AF%B7%E6%B1%82%E8%AF%B4%E6%98%8E) получить **APIKey** и **APISecret**, затем заполните в формате **APIKey:APISecret**
**model** https://www.xfyun.cn/doc/spark/HTTP%E8%B0%83%E7%94%A8%E6%96%87%E6%A1%A3.html#_3-2-%E8%AF%B7%E6%B1%82%E5%8F%82%E6%95%B0
<!-- tabs:end -->
### Специальные интерфейсы для определенных платформ
>Некоторые платформы больших моделей не полностью совместимы с интерфейсом ChatGPT, пожалуйста, заполните параметры в специальном интерфейсе для использования.
#### Зарубежные интерфейсы больших моделей
<!-- tabs:start -->
### **gemini**
**model** https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models
**API Key** https://aistudio.google.com/app/apikey
### **claude**
**BASE_URL** `https://api.anthropic.com`
**API_KEY** https://console.anthropic.com/
**model** https://docs.anthropic.com/en/docs/about-claude/models
### **cohere**
**API Key** https://dashboard.cohere.com/api-keys
**model** https://docs.cohere.com/docs/models
<!-- tabs:end -->
#### Китайские интерфейсы больших моделей
<!-- tabs:start -->
### **Tencent Hunyuan Large Model**
**SecretId** & **SecretKey** https://console.cloud.tencent.com/cam/capi
**model** https://cloud.tencent.com/document/product/1729/97731
### **Baidu Qianfan Large Model**
!> Похоже, эта модель поддерживает только перевод с китайского на английский, не поддерживает японский
**model** следует заполнить хвостовой частью **адреса запроса** в документации Baidu, например:
![img](https://image.lunatranslator.org/zh/damoxing/qianfan1.png)
![img](https://image.lunatranslator.org/zh/damoxing/qianfan2.png)
<!-- tabs:end -->

View File

@ -1,49 +0,0 @@
# Подробное описание HOOK
Выберите режим Textractor в интерфейсе основных настроек, и окно выбора выбора процесса появится автоматически.
Также можно самостоятельно нажать кнопку "Выбрать игру" в настройках приложения во вкладке "Настройка HOOK" или **первую кнопку** на панели инструментов, чтобы открылось окно выбора процесса.
![img](https://image.lunatranslator.org/ru/toolbar3_ru.png)
Существует три способа выбора процесса:
* После нажатия первой кнопки, выберите игру, и прогресс игры будет получен автоматически.
* Выберите процесс игры из списка ниже.
* Вручную введите путь процесса
При работе с no_admin.exe процессы иногда могут быть невидимы или при выборе процесса не будет ничего происходить.
![img](https://image.lunatranslator.org/ru/selectprocess_ru.png)
После выбора нажмите OK, и окно выбора текста появится автоматически.
Также можно нажать на **вторую кнопку** «Выбрать текст», или нажмите вторую кнопку в рамке на панели инструментов)
После того, как появится окно выбора текста, щелкните игру, чтобы сцена поменялась и игра отобразила следующий текст. После этого появятся несколько извлеченных текстов.
![img](https://image.lunatranslator.org/ru/selecttext_ru.png)
Нажмите на любой элемент в списке, и текст, захваченный этим элементом, отобразится в окне предварительного просмотра ниже.
![img](https://image.lunatranslator.org/ru/yulan_ru.png)
Иногда в списке много записей, введите в строку «Поиск записей, содержащих текст:» текст из игры, чтобы отфильтровать записи, и Вы легко найдете то, что вам нужно.
Ищите по слову «ограничение», как оно встречается в игре, в списке остается только 1 запись.
![img](https://image.lunatranslator.org/ru/filter_ru.png)
Вы можете удерживать нажатой клавишу Ctrl для выбора нескольких элементов, если Вам требуется выбрать несколько источников вывода текста.
Нажмите OK, и игра начнет перевод. Если позже будет обнаружено, что выбранный элемент не соответствует требованиям, его можно будет выбрать повторно.
![img](https://image.lunatranslator.org/ru/reshook_ru.png)

80
docs/ru/hooksettings.md Normal file
View File

@ -0,0 +1,80 @@
## Подробное объяснение настроек HOOK
### Значение параметров настроек HOOK
**1. Кодовая страница**
?> Эта настройка имеет значение только тогда, когда текст, извлеченный из игры, является **строкой с неопределенной кодировкой внутри движка HOOK** и **многобайтовой строкой**. Когда движок HOOK уже указал кодовую страницу, или текст является **широкой символьной строкой** или **строкой UTF32**, эта настройка не имеет никакого значения.
Эта настройка обычно не требует изменения. Она необходима только для некоторых старых движков (например, Yuris), официальные китайские версии которых могут иметь GBK/BIG5/UTF8. Если вы не можете найти правильный текст, отправьте [issue](https://lunatranslator.org/Resource/game_support) напрямую мне; изменение этой настройки обычно бесполезно.
**3. Фильтрация повторяющихся предложений**
Простой фильтр текста, реализованный внутри движка HOOK. Этот фильтр может немного повысить производительность в случаях безумного повторения текста, но обычно не рекомендуется использовать его, так как правила слишком просты и иногда могут разрушить истинные повторяющиеся шаблоны.
**4. Задержка обновления**
?> Относительно, это самый практичный вариант.
Если вы сталкиваетесь с одним из следующих ситуаций:
1. Текст извлекается по одному или двум символам за раз;
2. Текст извлекается построчно, заменяя предыдущую строку, и в итоге отображается только последняя строка;
3. Текст правильный, но извлекается очень медленно;
Тогда вам нужно настроить этот параметр.
Для **1 и 2** ситуаций, потому что текст игры отображается слишком медленно, а задержка обновления слишком низкая, что приводит к немедленному обновлению каждый раз, когда извлекается один или два символа или строка текста. В этом случае вам нужно **увеличить задержку обновления** или увеличить скорость отображения текста в игре.
Для **3**, вы можете **уменьшить задержку обновления**, одновременно обращая внимание на то, чтобы не возникали ситуации **1 и 2**.
**5. Максимальная длина буфера**
Иногда текст будет повторяться без остановки. В этом случае, если задержка обновления высокая и не может быть уменьшена, это приведет к постоянному получению текста до тех пор, пока текст не заполнит буфер или не перестанет обновляться, чтобы удовлетворить задержку обновления (обычно игра теряет фокус, чтобы остановить обновление, поэтому обычно ждут, пока буфер не заполнится).
Чтобы решить эту проблему, можно соответствующим образом уменьшить длину буфера, но обратите внимание, чтобы длина буфера не была слишком низкой, чтобы быть меньше фактической длины текста.
**6. Максимальная длина кэшированного текста**
Полученный исторический текст будет кэшироваться, и когда вы просматриваете содержимое какого-либо текста в окне выбора текста, будет запрашиваться исторический кэшированный текст. Если есть слишком много элементов текста или текст повторяется, это приведет к слишком большому кэшированному тексту, что сделает просмотр текста более медленным (иногда даже без просмотра). На самом деле большая часть кэшированного текста здесь бесполезна; полезный исторический текст можно просмотреть в исторических переводах, и это значение можно свободно уменьшить (по умолчанию 1000000, но на самом деле достаточно 1000).
**7. Фильтрация строк, содержащих глифы**
Фильтрация глифов в обработке текста будет фильтровать только глифы, а эта фильтрация, при получении текста, если обнаруживается, что строка текста содержит какие-либо глифы, будет полностью отброшена. Когда игра обновляет большое количество предложений, содержащих глифы, можно соответствующим образом использовать этот параметр, чтобы отфильтровать недействительные предложения и повысить производительность.
**8. Использование YAPI для инъекции**
Этот параметр иногда может немного повысить комфорт, но может быть проблемы с совместимостью, поэтому не рекомендуется использовать.
<details>
<summary>Подробное объяснение</summary>
При инъекции Dll в игру, обычно процесс инъекции Dll и процесс, в который инъектируется Dll, должны иметь одинаковую разрядность.
Чтобы решить эту проблему, Luna обычно использует shareddllproxy32 и shareddllproxy64 для инъекции Dll в игры с разной разрядностью.
Однако, когда этот прокси-процесс работает, он может быть заблокирован антивирусной программой на некоторое время, что приведет к задержке или сбою работы и необходимости запускать снова. В этом случае можно использовать YAPI для прямой инъекции Dll с помощью основного процесса Luna.
В YAPI, если процесс игры и процесс Luna имеют одинаковую разрядность, инъекция будет проходить нормально; если разрядность разная, будет использоваться специальный shellcode для реализации инъекции. Это также одна из причин, почему LunaHost32.dll легче обнаруживается антивирусной программой.
Использование YAPI для инъекции относительно более плавное. Однако на планшетах с Arm может быть несовместимость.
Когда Luna работает с низкими правами, а игра с правами администратора, этот параметр будет недействителен, он вернется к исходному режиму и запросит права для инъекции.
</details>
## Настройки по умолчанию и специальные настройки для игр
Настройки, сделанные в интерфейсе настроек -> HOOK, являются настройками по умолчанию. Когда для игры не указаны специальные настройки HOOK, будут использоваться настройки по умолчанию.
Чтобы сделать специальные настройки HOOK для игры, необходимо открыть интерфейс **Управление играми**, открыть интерфейс **Настройки игры**, переключиться на вкладку HOOK во вкладке настроек игры, отключить **Следовать по умолчанию**, чтобы сделать специальные настройки HOOK для игры.
**1. Специальный код**
Когда **вставлен специальный код** и **выбран текст специального кода**, этот специальный код будет записан, и при следующем запуске он будет автоматически вставлен. Эта настройка записывает все ранее записанные специальные коды и позволяет добавлять или удалять специальные коды.
**2. Задержка инъекции**
Иногда место в игре, которое нужно зацепить, в dll требует, чтобы игра немного поработала, прежде чем загрузится dll. Нам также нужно подождать, пока загрузится dll, прежде чем проводить инъекцию.
![img](https://image.lunatranslator.org/zh/gamesettings/1.jpg)
![img](https://image.lunatranslator.org/zh/gamesettings/2.jpg)

57
docs/ru/ocrparam.md Normal file
View File

@ -0,0 +1,57 @@
## Значение параметров метода автоматического выполнения OCR
### Анализ обновления изображения
Этот метод использует параметры "Порог стабильности изображения", "Порог согласованности изображения" и "Порог сходства текста".
#### 1. Порог стабильности изображения
Когда текст игры не появляется сразу (скорость текста не самая высокая) или игра имеет динамическое фоновое изображение или live2d, захваченное изображение постоянно меняется.
При каждом захвате изображения оно сравнивается с предыдущим захватом, вычисляя степень сходства. Если степень сходства больше порогового значения, изображение считается стабильным и производится следующее определение.
Если можно утверждать, что игра полностью статична, этот параметр можно установить в 0, в противном случае его можно увеличить.
#### 2. Порог согласованности изображения
Этот параметр является наиболее важным.
После того как изображение стабилизируется, сравнивается текущее изображение с изображением, на котором была проведена OCR в последний раз (а не с предыдущим захватом). Если степень сходства меньше порогового значения, предполагается, что текст игры изменился и выполняется OCR.
Если частота OCR слишком высока, этот параметр можно увеличить; наоборот, если он слишком медленный, его можно уменьшить.
#### 3. Порог сходства текста
Результаты OCR не являются стабильными, часто малые изменения в изображении могут вызвать незначительные изменения в тексте, что, в свою очередь, приводит к повторному переводу.
После каждого вызова OCR результаты сравниваются с предыдущими результатами OCR (редакционное расстояние), и текст выводится только при превышении редакционного расстояния пороговым значением.
### Периодическое выполнение
Этот метод выполняется периодически с использованием "Порога сходства текста" для предотвращения перевода одинаковых текстов.
### Анализ обновления изображения + Периодическое выполнение
Кombining the two methods mentioned above, OCR is performed at least every "execution cycle" time interval, and the "text similarity threshold" is used to avoid translating the same text. Also, OCR is performed during the interval according to "image update analysis", and the OCR within the interval resets the interval timer.
### Триггер мыши и клавиатуры + Ожидание стабильности
#### 1. Событие триггера
По умолчанию следующие события мыши и клавиатуры активируют этот метод: нажатие левой кнопки мыши, нажатие клавиши Enter, отпускание клавиши Ctrl, отпускание клавиши Shift, отпускание клавиши Alt. Если окно игры привязано, метод активируется только тогда, когда окно игры находится в фокусе.
После активации этого метода, поскольку необходимо подождать, пока игра отрендерит новый текст или пока текст не появится сразу (скорость текста не самая высокая), необходимо немного подождать, пока отображаемый текст стабилизируется.
После активации этого метода и стабилизации будет выполнен перевод, без учета сходства текста.
Если скорость текста является максимальной, следующие два параметра можно установить в 0. В противном случае, для определения времени ожидания необходимы следующие параметры:
#### 2. Задержка (с)
Ждет фиксированное время задержки (встроенная задержка составляет 0,1 с для удовлетворения внутренней логики обработки игрового движка).
#### 3. Порог стабильности изображения
Этот параметр аналогичен вышеупомянутому с同名 параметру. Но он используется только для определения завершения рендеринга текста, поэтому не используется совместно с вышеупомянутым параметром.
Поскольку время рендеринга медленного текста нефиксированно, использование указанного фиксированного задержки может быть недостаточным. При выполнении данного триггерного события, когда степень сходства изображения с предыдущим захватом больше порогового значения.

View File

@ -1,19 +0,0 @@
# Подробное описание OCR
После выбора режима OCR в основных настройках, на панели инструментов появятся три значка.
![img](https://image.lunatranslator.org/ru/toolbar2_ru.png)
Нажмите **первую кнопку**, чтобы появилось окно выбора диапазона распознавания текста, как показано на рисунке. Не стоит выбирать слишком большой диапазон, т.к. движок OCR может схватывать мусорные символы и портить качество перевода.
![img](https://image.lunatranslator.org/ru/12_ru.png)
Поле выбора области распознавания, можно скрыть/отобразить окно, нажав **вторую кнопку.** Оно закрепится и станет прозрачным, можно будет управлять игрой, нажимая сквозь окно захвата текста.
С помощью **третьей кнопки** можно заставить окно распознавания текста захватывать текста ТОЛЬКО из выбранного окна, не трогая другие окна, равно как и другие области экрана.
Это позволяет накладывать текст перевода поверх оригинального текста, что не будет мешать переводу.
Двойной щелчок по кнопке убирает привязку к окну.
![img](https://image.lunatranslator.org/ru/ocrbind_ru.png)

21
docs/ru/offlinellm.md Normal file
View File

@ -0,0 +1,21 @@
## Как использовать офлайн-перевод с большой моделью?
### Sakura Large Model
> Рекомендуется для использования, простая настройка, хорошие результаты, также может работать на чистом CPU с легкой моделью.
Методы развертывания
1. [Развертывание SakuraLLM на онлайн-платформе GPU](/zh/sakurallmcolab.md)
2. Другие методы развертывания можно найти на https://github.com/SakuraLLM/SakuraLLM/wiki
### Совместимый с ChatGPT интерфейс
Можно использовать адрес и модель **Sakura Large Model** в параметрах этого интерфейса (по сравнению с этим просто добавлены некоторые предварительно заданные 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), для развертывания модели, а затем ввести адрес и модель.
Также можно использовать платформы, такие как Kaggle, для развертывания модели в облаке, в этом случае может потребоваться SECRET_KEY, в других случаях можно игнорировать параметр SECRET_KEY.
Также можно ввести API зарегистрированной большой модели (но это не обязательно), по сравнению с зарегистрированным онлайн-переводом с совместимым с ChatGPT интерфейсом, единственное отличие заключается в том, что не будет использоваться прокси.

26
docs/ru/playonxp.md Normal file
View File

@ -0,0 +1,26 @@
## Играть в старые игры на виртуальной машине с Windows XP и извлекать текст для перевода
**1. Использование ntleas для запуска игры в виртуальной машине**
Если у вас проблемы с повреждением текста в игре, вы можете использовать x86\ntleas.exe из [ntleas](https://github.com/zxyacb/ntlea) для запуска игры в нужной кодировке. Откройте cmd, перейдите в папку ntleas\x86 и запустите `ntleas.exe "Полный путь к исполняемому файлу игры.exe"`.
![img](https://image.lunatranslator.org/zh/playonxp/ntleas.png)
**2. Использование LunaHook специальной версии для Windows XP в виртуальной машине для извлечения текста**
Скачайте `Release_Chinese_winxp.zip` из [LunaHook](https://github.com/HIllya51/LunaHook/releases), скопируйте его в виртуальную машину и запустите. Выберите процесс игры, выберите текст игры. Затем, в настройках, активируйте опцию `Копировать в буфер обмена`.
![img](https://image.lunatranslator.org/zh/playonxp/image.png)
**3. Перевод на основном компьютере**
Настройте общий буфер обмена для виртуальной машины, чтобы передать содержимое буфера обмена из виртуальной машины на основной компьютер.
![img](https://image.lunatranslator.org/zh/playonxp/copy.png)
На основном компьютере запустите LunaTranslator, переключите источник текстового ввода с `HOOK` на `Буфер обмена`.
![img](https://image.lunatranslator.org/zh/playonxp/host.png)
---
Финальный результат будет выглядеть так:
![img](https://image.lunatranslator.org/zh/playonxp/effect.png)

11
docs/ru/qa1.md Normal file
View File

@ -0,0 +1,11 @@
## Как использовать Mecab для токенизации и цветовой разметки частей речи
Сначала нужно загрузить словарь Mecab. Загрузите [версию по умолчанию](https://lunatranslator.org/Resource/dictionary/Mecab.zip) или [последнюю официальную версию](https://clrd.ninjal.ac.jp/unidic/), распакуйте.
Затем активируйте Mecab в настройках словарей и установите путь к словарю.
![img](https://image.lunatranslator.org/zh/mecab.png)
Затем, в настройках отображения -> настройках текста, активируйте токенизацию -> отображение произношения (по умолчанию уже активировано) и выделение синтаксиса.
![img](https://image.lunatranslator.org/zh/fenci.png)

31
docs/ru/qa2.md Normal file
View File

@ -0,0 +1,31 @@
## Как автоматически добавлять слова в Anki
1. Установите Anki, перейдите на [домашнюю страницу](https://apps.ankiweb.net/) и скачайте установщик.
2. Ищите "Anki Connect" - первая запись.
![img](https://image.lunatranslator.org/zh/anki/336449205-4eb7ce93-a9e9-489b-be8a-da67cfdca6ea.png)
Будет предоставлено число, в настоящее время это 2055492159.
3.
![img](https://image.lunatranslator.org/zh/anki/336449710-95f90d9a-cfe6-42c3-a44f-64d88d13833d.png)
4.
![img](https://image.lunatranslator.org/zh/anki/336450025-9bf64445-f62e-4bfe-86f7-da99a7100e92.png)
Введите число и перезапустите Anki
---
На стороне Luna, после нажатия кнопки "проверить слово".
![img](https://image.lunatranslator.org/zh/anki/336451202-a2dd54c0-e4ee-4c27-9183-8b4ab05c4819.png)
![img](https://image.lunatranslator.org/zh/anki/336451442-7887d600-8c44-4256-9020-1d85e0f6184a.png)
---
Ссылка: [asukaminato0721](https://github.com/HIllya51/LunaTranslator/issues/796)

View File

@ -1,189 +0,0 @@
# Настройки
Нажмите «Настройки» на панели инструментов или на значке в области уведомлений, чтобы открыть окно настроек.
## Основные настройки
Выберите используемый источник захвата текста. Розовая галочка означает выбранный, серый × означает не выбранный. Только одна или меньше опций может действовать одновременно.
&emsp;&emsp;При выборе OCR в качестве ввода текста, необходимо выбрать диапазон распознавания OCR на панели инструментов.[➔ Об этом подробнее написано в пункте "Описание OCR"](/ru/ocrsetsumei.md)
&emsp;&emsp;После того, как Вы выберете Textractor (HOOK) в качестве ввода текста, появится окно выбора процесса, после выбора игры появится окно выбора текста.[➔ Об этом подробнее написано в пункте "Описание HOOK"](/ru/hooksetsumei.md)
&emsp;&emsp;При выборе источника "буфер обмена", весь копируемый Вами текст будет автоматически извлекаться из буфера обмена и переводиться.
![img](https://image.lunatranslator.org/ru/5_ru.png)
## Настройки переводчиков
&emsp;&emsp;**Автономный перевод** Поддерживает автономный перевод с использованием JBeijing 7, Jinshan Quick Translation и Yidiantong.
&emsp;&emsp;**Бесплатный онлайн-перевод** Поддерживает Baidu, Bing, Google, Ali, Youdao, Caiyun, Sogou, DeepL, Kingsoft, Xunfei, Tencent, Byte, Volcano, papago, yeekit и другие онлайн-сервисы.
&emsp;&emsp;**Онлайн-перевод с регистрацией ключа API** Поддерживает перевод с использованием зарегистрированных пользователем ключей перевода для Baidu, Tencent, Youdao, Mavericks, Caiyun, Volcano и Deepl.
&emsp;&emsp;**Предварительный перевод** Поддержка чтения файлов предварительного перевода, выполненных человеком, и агрегация машинных файлов.
&emsp;&emsp;**Поддержка пользовательских расширений перевода** Поддержка использования языка python для расширения других интерфейсов перевода, о которых я не знаю.
Количество выбранных переводчиков не ограничено.
&emsp;&emsp;**Кнопки:** Розовая галочка означает включенный переводчик. Кнопка кисточки позволяет установить цвет отображения текста перевода.
&emsp;&emsp;**Предварительный перевод** необходимо установить и нажать на кнопку шестеренки, чтобы выбрать путь установки переводчика.
Для **Google Translate** и **Deepl** может потребоваться прокси-сервер, его можно ввести в настройках прокси. После ввода прокси-сервера нужно нажать OK и поставить розовую галочка.
Для предварительного перевода можно использовать нечеткое сопоставление (в основном эффективно для режима OCR).
![img](https://image.lunatranslator.org/ru/6_ru.png)
## Настройки HOOK
В настройках LocaleEmulator можно задать путь к программе (в новой версии есть встроенный), после установки пути можно запускать игру через LocaleEmulator.
Игра, которая была зацеплена ранее, сохраняется в сохраненных играх, оттуда игру можно запустить (нажатие на панель инструментов для открытия сохраненной игры — то же самое).
Запись файлов перевода сохраняет извлеченный текст в два файла, которые появляются в папке transkiroku.
**"md5 имя программы.sqlite"** Этот файл будет записывать только один исходный вывод перевода для создания файла «человеческого перевода». После установки «предпочтительного источника перевода» содержимое этого источника перевода будет записано первым, а содержимое других источников перевода будет записано только в случае неудачного перевода.
**"Файл md5 имя программы.premt_synthesize.sqlite"** Этот файл используется для «машинного предварительного перевода» и будет записывать все действительные результаты перевода.
**Экспортируйте файл sqlite как файл .json** Нажмите эту кнопку, чтобы выбрать файл и экспортировать его в формат .json, который удобен для изменения результатов перевода. Затем, после установки пути к файлу .json в настройках «ручного перевода», можно использовать человеческий перевод.
Файлы также будут записаны в режиме буфера обмена и в режиме OCR с префиксом 0_copy и 0_ocr соответственно.
[➔ Более полное описание смотри в "Описании HOOK"](/ru/hooksetsumei.md)
![img](https://image.lunatranslator.org/ru/21_ru.png)
## Настройки OCR
В режиме OCR вы можете выбрать источник OCR.
&emsp;&emsp;**Локальный OCR** — это встроенный механизм OCR, который можно использовать, не задумываясь.
&emsp;&emsp;Для **Baidu OCR/ocrspace/docsumo** необходимо установить ключ.
&emsp;&emsp;**YoudaooOCR** — это эмпирические интерфейсы, которые легко сбить с толку. **Они позволяют считывать облачка манги (сверху-вниз, справа-налево)**
&emsp;&emsp;**WindowsOCR** требует, чтобы в операционной системе были установлены компоненты, относящиеся к японскому языку.
&emsp;&emsp;OCR срабатывает при изменении изображения на экране, но Вы можете установить минимальный и максимальный интервал OCR, после чего OCR должен выполняться каждые x секунд, независимо от того, меняется изображение или нет.
[➔ Подробности смотри в "Описание OCR"](/ru/ocrsetsumei.md)
![img](https://image.lunatranslator.org/ru/22_ru.png)
## Настройка окна перевода
**Непрозрачность** — прозрачность фона окна.
После включения **отображения исходного текста**, можно настроить отображение каны и результатов сегментации слов.
**Стиль шрифта** поддерживает четыре стиля шрифта (обычный, контур, штрих и тень), а последние три расширенных шрифта можно установить отдельно в «Ширина полой линии», «Ширина штриха» и «Сила тени».
**Исходный цвет текста** может установить исходный цвет текста, а цвет фона может установить цвет фона окна.
**Цвет заливки** устанавлиает цвет заливки в расширенном стиле шрифта.
Вы можете ** выбрать контент в окне перевода** , а также настроить реакцию окна перевода на сворачивание игры в режиме HOOK.
![img](https://image.lunatranslator.org/ru/7_ru.png)
Четыре стиля шрифта следующие:
![img](https://image.lunatranslator.org/ru/ziti1_ru.png)
![img](https://image.lunatranslator.org/ru/ziti2_ru.png)
![img](https://image.lunatranslator.org/ru/ziti3_ru.png)
![img](https://image.lunatranslator.org/ru/ziti4_ru.png)
Кана отображается следующим образом:
![img](https://image.lunatranslator.org/ru/jiaming_ru.png)
Причастие отображается следующим образом:
![img](https://image.lunatranslator.org/ru/fenci_ru.png)
## Настройка озвучки
** WindowsTTS** требует, чтобы в операционной системе были установлены компоненты, относящиеся к японскому языку.
** AzureTTS и Volcano TTS** являются сетевыми TT и могут стать недействительными в будущем.
** VoiceRoid2** — это автономный механизм перевода.
** VOICEVOX** — это механизм TTS с открытым исходным кодом, но он медленно генерирует голос.
![img](https://image.lunatranslator.org/ru/8_ru.png)
## Настройка оптимизации перевода
Для текста, извлеченного с помощью HOOK или OCR, иногда будут выдаваться мусорные символы, здесь вы можете установить несколько простых операций обработки текста.
К ним относятся некоторые ** общие настройки** , а также некоторые ** дополнительные настройки** .
Извлеченный текст можно ** заменить/отфильтровать** , используя простую таблицу замещений.
Использование ** регулярных выражений для замены** требует, чтобы пользователи знали, как использовать reg.sub в Python.
Используйте опцию ** ручного перевода имен собственных** , которая поддерживает использование настраиваемых пользователем специальных словарей существительных (например, некоторых имен людей и мест и т. д.) для оптимизации перевода.
** Исправление результатов перевода** происходит после завершения перевода, перевод существительных подвержен сбоям для некоторых систем перевода, и результаты перевода могут быть принудительно заменены.
Часть этого программного обеспечения поддерживает использование ** общих словарей VNR.**
Если пользователь понимает язык python, он может напрямую изменить его в файле ** LunaTranslator\LunaTranslator\postprocess\post.py** , чтобы реализовать любой процесс обработки, который пожелает пользователь.
![img](https://image.lunatranslator.org/ru/10_ru.png)
## Настройка словарей
Если установлен словарь, это программное обеспечение может помочь пользователям выучить японский язык.
Установите использование сегментации слов mecab и установите отображение результатов сегментации слов в настройках дисплея для отображения результатов сегментации слов, установите использование сегментации слов mecab и установите отображение каны в настройках дисплея для отображения каны иероглифов.
(Если вы не используете ** mecab** , вы будете использовать встроенный в систему простой токенизатор, который также может отображать псевдонимы и результаты сегментации слов, но не может различать части речи)
Настройте ** использование сегментации слов mecab** и настройте ** отображение частей речи** разными цветами, тогда вы сможете помечать слова с разными частями речи разными цветами.
После включения ** быстрого поиска слов** щелкните исходный текст в окне перевода, и появится всплывающее окно поиска слов.
![img](https://image.lunatranslator.org/ru/cishu_ru.png)
![img](https://image.lunatranslator.org/ru/fenci_ru.png)
![img](https://image.lunatranslator.org/ru/searchword_ru.png)
![img](https://image.lunatranslator.org/ru/searchword2_ru.png)
## Загрузка ресурсов и обновления
Автоматические обновления и ссылки на некоторые популярные ресурсы.
![img](https://image.lunatranslator.org/ru/down_ru.png)
## Настройка сочетания клавиш
После включения ** использования сочетаний клавиш** , Вы можете настроить одну или сочетание двух клавиш на каждое действие.
![img](https://image.lunatranslator.org/ru/quick_ru.png)

View File

@ -1,13 +1,33 @@
- [Введение](/ru/README.md)
**Основные**
- Инструкции
- [Первый запуск](/ru/start.md)
- [Панель инструментов](/ru/toolbar.md)
- [Основные настройки](/ru/settings.md)
- [Иконка на панели задач](/ru/trayicon.md)
- [Введение](/ru/README.md)
- [Загрузка и запуск](/ru/start.md)
- [Невозможно запустить программу](/ru/cantstart.md)
- [Основы использования](/ru/basicuse.md)
- [Обновление программы](/ru/update.md)
- [Поддержка автора](/ru/support.md)
- [Подробное описание OCR](/ru/ocrsetsumei.md)
**Подробные**
- [Подробное описание HOOK](/ru/hooksetsumei.md)
- [Поддержать автора программы](/ru/support.md)
- [Настройки, связанные с HOOK](/ru/hooksettings.redirect)
- [Подробное объяснение настроек HOOK](/ru/hooksettings.md)
- [Как использовать встроенный перевод](/ru/embedtranslate.md)
- [Игра в старые игры на виртуальной машине XP и извлечение текста для перевода](/ru/playonxp.md)
- [Настройки, связанные с OCR](/ru/ocrparam.redirect)
- [Значение параметров методов автоматического выполнения OCR](/ru/ocrparam.md)
- [Как установить дополнительную поддержку языков для Windows OCR](/ru/windowsocr.md)
- [Привязка окна игры в режиме OCR](/ru/gooduseocr.md)
- [Настройки источника перевода](/ru/guochandamoxing.redirect)
- [Как использовать API большой модели для перевода](/ru/guochandamoxing.md)
- [Как использовать офлайн-перевод с большой моделью](/ru/offlinellm.md)
- [Как использовать отладочный браузер для перевода](/ru/tiaoshiliulanqi.md)
- [Обработка текста и оптимизация перевода](/ru/textprocess.redirect)
- [Функции и использование различных методов обработки текста](/ru/textprocess.md)
- [Функции различных оптимизаций перевода](/ru/transoptimi.md)
- [Голосовое синтезирование](/ru/ttsofname.md)
- [Токенизация и словари](/ru/qa1.redirect)
- [Как использовать Mecab для токенизации и цветовой разметки частей речи](/ru/qa1.md)
- [Интеграция с Anki](/ru/qa2.md)
- [Кнопки инструментов](/ru/alltoolbuttons.md)
- [Горячие клавиши](/ru/fastkeys.md)
- [Полезные функции](/ru/usefulsmalltools.md)

View File

@ -1,14 +1,25 @@
### Скачать
# Начало
Скачать 64-битную версию <a href="https://github.com/HIllya51/LunaTranslator/releases/latest/download/LunaTranslator.zip" target="_blank"><img src="https://img.shields.io/badge/download_64bit-blue"/></a> Скачать 32-битную версию <a href="https://github.com/HIllya51/LunaTranslator/releases/latest/download/LunaTranslator_x86.zip" target="_blank"><img src="https://img.shields.io/badge/download_32bit-blue"/></a> или из <a target="_blank" href="https://github.com/HIllya51/LunaTranslator/releases" target="_blank"> выпусков</a> скачать <a href="https://github.com/HIllya51/LunaTranslator/releases/latest/download/LunaTranslator.zip" target="_blank">LunaTranslator.zip</a> или <a href="https://github.com/HIllya51/LunaTranslator/releases/latest/download/LunaTranslator_x86.zip" target="_blank">LunaTranslator_x86.zip</a>, распаковать в любую директорию.
## Скачать
#### Внимание
Ссылка для загрузки актуальной версии программы: <a target="_blank" href="https://github.com/HIllya51/LunaTranslator/releases">https://github.com/HIllya51/LunaTranslator/releases</a>
Скачайте архив **LunaTranslator.zip** и распакуйте его в любое удобное для вас место.
![img](https://image.lunatranslator.org/ru/download_ru.png)
Не скачивайте вместо исполняемого файла исходный код!
## Запустить
![img](https://image.lunatranslator.org/zh/down.png)
**LunaTranslator.exe** -- Запуск с правами администратора (Некоторые игры требуют прав администратора для привязки HOOK).
### Запуск
**LunaTranslator_no_Admin.exe** -- Запуск без прав администратора.
После распаковки вы увидите следующие файлы, запустите **LunaTranslator.exe**.
![img](https://image.lunatranslator.org/zh/startup.png)
**LunaTranslator.exe** запускается в обычном режиме
**LunaTranslator_admin.exe** запускается с правами администратора, некоторые игры требуют прав администратора для HOOK, используйте его только в этом случае, в остальных случаях запускайте в обычном режиме.
**LunaTranslator_debug.exe** запускается с командной строкой и отображает логи во время работы. Если вы сталкиваетесь с ошибками, запустите этот программу и приложите логи.
#### Внимание
Иногда антивирусное программное обеспечение блокирует его, пожалуйста, добавьте доверие и заново скачайте и распакуйте.

View File

@ -1,5 +1,3 @@
# Поддержать автора программы
If you feel that the software is helpful to you, welcome to become my [sponsor](https://patreon.com/HIllya51). Thank you ~
## Поддержка автора
Если вы считаете, что программа вам полезна, приглашаю вас стать моим [спонсором](https://patreon.com/HIllya51). Спасибо ~

115
docs/ru/textprocess.md Normal file
View File

@ -0,0 +1,115 @@
## Функции и использование различных методов обработки текста
> Обычно в режиме HOOK иногда считывается неправильный текст, например, повторяющийся текст или другие беспорядочные тексты, в этом случае необходимо использовать обработку текста для решения проблемы.
> Если есть очень сложные формы ошибок, можно активировать несколько методов обработки и настроить их порядок выполнения, чтобы получить богатый набор методов обработки.
**1. Фильтрация символов, не входящих в японский набор символов в тексте**
Иногда считывается текст с глифами. Поскольку эта проблема обычно возникает в японских играх, этот метод заранее фильтрует **символы, которые не могут быть закодированы с использованием набора символов shift-jis**, например:
`エマさんԟのイԠラストは全部大好き!` будет обработан в `エマさんのイラストは全部大好き!`
**2. Фильтрация управляющих символов**
Этот метод фильтрует управляющие символы ASCII в тексте, такие как `` и т.д.
**3. Фильтрация пунктуации на английском языке**
Этот метод фильтрует ```!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~``` в тексте.
**4. Фильтрация других глифов**
Это требует настройки разрешенных кодировок символов или диапазонов Unicode в настройках. Символы, которые не разрешены, будут отфильтрованы.
**5. Фильтрация символов вне「」**
Например: `こなみ「ひとめぼれってやつだよね……」` будет обработан в `「ひとめぼれってやつだよね……」`
**6. Удаление фигурных скобок {}**
Это не совсем соответствует буквальному значению, на самом деле это в основном используется для фильтрации японского фуриганы. Многие игровые сценарии используют {} и некоторые другие символы для добавления фуриганы к иероглифам. Поддерживаются два формата фуриганы: `{汉字/注音}` и `{汉字:注音}`, например:
`「{恵麻/えま}さん、まだ{起き/おき}てる?」` или `「{恵麻:えま}さん、まだ{起き:おき}てる?」` будет обработан в `「恵麻さん、まだ起きてる?」`
**7. Фильтрация текста по указанному количеству слов**
Этот метод определяет, как обрабатывать, в зависимости от количества слов в текущем тексте.
Если длина текста меньше минимального количества слов, текст будет отфильтрован. Например, некоторые игры непрерывно обновляют один символ в виде перевернутого треугольника в статическом состоянии, это можно использовать для фильтрации.
Если длина текста превышает максимальное количество слов, если активирована опция **обрезать вместо фильтрации при превышении**, то будет обрезана указанная длина текста; если не активирована, текст будет полностью отфильтрован.
**8. Фильтрация текста по указанному количеству строк**
Это похоже на вышеупомянутое, но определяется по количеству строк текста. Например, можно использовать для обрезки первых 3 строк текста.
**9. Удаление повторяющихся символов _AAAABBBBCCCC->ABC**
Это самый часто используемый фильтр.
Из-за того, что игры иногда рисуют текст, затем тень, затем контур и т.д., режим HOOK может несколько раз извлекать повторяющиеся символы. Например, `恵恵恵麻麻麻さささんんんははは再再再びびび液液液タタタブブブへへへ視視視線線線ををを落落落とととすすす。。。` будет обработан в `恵麻さんは再び液タブへ視線を落とす。`. По умолчанию количество повторений равно `1`, автоматически анализирует количество повторяющихся символов, но также есть случаи неточного анализа, рекомендуется указать определенное количество повторений.
**10. Фильтрация исторических повторений LRU**
Иногда способ повторного рисования игры не по одному символу, а по строкам, и, что еще более извращенно, в статическом состоянии непрерывно перерисовывается текущий отображаемый текст. Например, предположим, что текущий отображаемый текст - две строки `你好` и `哈哈`, если не использовать этот метод, будет повторяться вывод `你好哈哈你好哈哈你好哈哈你好哈哈……`. Используя этот метод, кэшируется несколько недавно выведенных текстов, когда кэш заполнен и появляется новый текст, удаляется самая старая запись в кэше, чтобы недавний текст не повторялся.
**11. Удаление повторяющихся строк _ABCDABCDABCD->ABCD**
Это тоже довольно распространено, похоже на вышеупомянутое, но обычно не повторяется, а быстро обновляется несколько раз. Эффект: `恵麻さんは再び液タブへ視線を落とす。恵麻さんは再び液タブへ視線を落とす。恵麻さんは再び液タブへ視線を落とす。` станет `恵麻さんは再び液タブへ視線を落とす。`. Аналогично, по умолчанию количество повторений равно `1`, автоматически анализирует количество повторяющихся символов, но также есть случаи неточного анализа, рекомендуется указать определенное количество повторений.
**12. Удаление повторяющихся строк _S1S1S1S2S2S2->S1S2**
Это относительно сложно, иногда количество обновлений каждого предложения не одинаково, в этом случае только программа может полностью решить, как удалить дубликаты. Например, `恵麻さん……ううん、恵麻ははにかむように私の名前を呼ぶ。恵麻さん……ううん、恵麻ははにかむように私の名前を呼ぶ。恵麻さん……ううん、恵麻ははにかむように私の名前を呼ぶ。なんてニヤニヤしていると、恵麻さんが振り返った。私は恵麻さんの目元を優しくハンカチで拭う。私は恵麻さんの目元を優しくハンカチで拭う。`, где `恵麻さん……ううん、恵麻ははにかむように私の名前を呼ぶ。` повторяется 3 раза, `なんてニヤニヤしていると、恵麻さんが振り返った。` не повторяется, `私は恵麻さんの目元を優しくハンカチで拭う。` повторяется 2 раза, в конечном итоге анализ даст `恵麻さん……ううん、恵麻ははにかむように私の名前を呼ぶ。なんてニヤしていると、恵麻さんが振り返った。私は恵麻さんの目元を優しくハンカチで拭う。`, где из-за сложности может быть небольшая ошибка анализа, это неизбежно, но обычно можно получить правильный результат.
**13. Фильтрация угловых скобок <>**
Это на самом деле фильтрация HTML-тегов, название написано так, чтобы избежать путаницы для новичков. Например, `<div>`, `</div>` и `<div id="dsds">` и т.д. будут отфильтрованы. Это в основном используется в играх TyranoScript, где извлеченный текст - innerHTML, обычно содержит много таких тегов.
**14. Фильтрация символов новой строки**
Первоначально называлось **Фильтрация символов новой строки адаптивная к языку**, старая версия **Фильтрация символов новой строки** была упразднена.
Если исходный язык не японский, то при фильтрации символов новой строки они будут заменены на пробелы, а не отфильтрованы, чтобы избежать соединения нескольких слов вместе.
**15. Фильтрация цифр**
Пропущено
**16. Фильтрация английских букв**
Пропущено
**17. Удаление повторяющихся строк _ABCDBCDCDD->ABCD**
Это тоже довольно распространено. Причина этого в том, что иногда функция HOOK для отображения текста имеет параметр текста для отображения, эта функция вызывается каждый раз при отображении символа, и каждый раз параметр строки указывает на следующий символ, что приводит к тому, что первый вызов уже получил полный текст, а последующие вызовы выводят оставшуюся подстроку до тех пор, пока длина не уменьшится до 0. Например, `恵麻さんは再び液タブへ視線を落とす。麻さんは再び液タブへ視線を落とす。さんは再び液タブへ視線を落とす。んは再び液タブへ視線を落とす。は再び液タブへ視線を落とす。再び液タブへ視線を落とす。び液タブへ視線を落とす。液タブへ視線を落とす。タブへ視線を落とす。ブへ視線を落とす。へ視線を落とす。視線を落とす。線を落とす。を落とす。落とす。とす。す。。` анализ определит, что реальный текст должен быть `恵麻さんは再び液タブへ視線を落とす。`
**18. Удаление повторяющихся строк _AABABCABCD->ABCD**
Это тоже довольно распространено. Причина этого в том, что каждый раз при рисовании символа, а затем при рисовании следующего символа, все предыдущие символы рисуются снова. Например, `恵麻恵麻さ恵麻さん恵麻さんは恵麻さんは再恵麻さんは再び恵麻さんは再び液恵麻さんは再び液タ恵麻さんは再び液タブ恵麻さんは再び液タブへ恵麻さんは再び液タブへ視恵麻さんは再び液タブへ視線恵麻さんは再び液タブへ視線を恵麻さんは再び液タブへ視線を落恵麻さんは再び液タブへ視線を落と恵麻さんは再び液タブへ視線を落とす恵麻さんは再び液タブへ視線を落とす。` анализ определит, что реальный текст должен быть `恵麻さんは再び液タブへ視線を落とす。`
**19. Удаление повторяющихся строк _AABABCABCDEEFEFG->ABCDEFG**
Это похоже на вышеупомянутое, но когда есть несколько строк текста, каждая строка обрабатывается отдельно по вышеупомянутой логике, что приводит к большей сложности. Из-за сложности эта обработка часто не может быть правильно обработана, если встретите, рекомендуется написать пользовательскую обработку на python для решения.
**20. Пользовательская обработка на python**
Напишите скрипт на python для более сложной обработки, когда скрипт обработки не существует, он автоматически сгенерирует файл `mypost.py` и следующий шаблон в каталоге userconfig:
```
def POSTSOLVE(line):
return line
```
**21. Замена строки**
Не только замена, но и в основном можно использовать для фильтрации. Например, можно отфильтровать фиксированные несколько глифов, повторяющиеся символы в виде перевернутого треугольника и т.д., заменив их на пустоту.
Можно одновременно активировать опции `Регулярное выражение` и `Экранирование`, или выбрать только одну из них, или не активировать ни одну.
Если ни одна из них не активирована, будет использоваться обычная замена строки.
При активации `Экранирование`, вводимое содержимое будет рассматриваться как экранированная строка, а не буквальная строка. Например, можно использовать `\n` для представления символа новой строки, чтобы можно было фильтровать символы, появляющиеся только до или после символа новой строки.
При активации `Регулярное выражение`, будет использоваться замена регулярного выражения.

View File

@ -0,0 +1,11 @@
## Как использовать отладочный браузер для перевода
!> Требуется установка Chrome/Edge на компьютере или использование портативной версии.
Если Chrome/Edge установлен по умолчанию, то не нужно указывать путь вручную, иначе нужно указать путь установки/портативной версии.
!> После открытия интерфейса появится окно браузера, не закрывайте это окно.
При переводе текст будет автоматически заполнен в поле ввода на странице браузера, а затем результат перевода будет прочитан и передан обратно в LunaTranslator.
?> При первом использовании некоторых интерфейсов может потребоваться вход в систему. При втором использовании вход в систему не потребуется.

View File

@ -1,60 +0,0 @@
# Панель инструментов
>Наведите указатель мыши на панель инструментов, чтобы увидеть описание кнопок. Функции кнопок описаются одна за другой слева направо.
## Общие кнопки (В режиме буфера обмена)
![img](https://image.lunatranslator.org/ru/toolbar1_ru.png)
&emsp;&emsp;**Повторный перевод** По умолчанию программа не будет переводить некоторые очень короткие тексты, используйте эту кнопку для принудительного перевода; иногда некоторые переводчики сообщают об ошибке, используйте эту кнопку, чтобы заставить программу перевести ещё раз.
&emsp;&emsp;**Автоматический перевод** Переводчик будет автоматически распознавать и переводить текст. Розовый цвет кнопки означает, что функция включена.
&emsp;&emsp;**Открыть настройки** После нажатия этой кнопки откроется окно настроек.
&emsp;&emsp;**Копировать в буфер обмена** Нажмите, чтобы скопировать в буфер обмена последний текст, извлеченный OCR/HOOK.
&emsp;&emsp;**Показать/скрыть исходный текст** При включении функции распознанный текст показывается, при выключении - не показывается. Розовый цвет кнопки означает, что функция включена.
&emsp;&emsp;**Показать историю переводов** При нажатии откроется окно истории переводов, в котором будут все исходные тексты и их переводы, сохраненные во время последней сессии.
&emsp;&emsp;**Чтение вслух** Когда функция включена, исходный текст, извлеченный из буфера обмена/OCR/HOOK, будет прочитан вслух. Розовый цвет кнопки означает, что функция включена.
&emsp;&emsp;**Мышь проникает в окно перевода** Когда функция включена, окно перевода становится полностью прозрачным. Щелчок по нему приведет к прямому щелчку внутри игры. Розовый цвет кнопки означает то, что функция включена.
&emsp;&emsp;**Блокировка панели инструментов** Когда функция включена, панель инструментов будет автоматически скрываться. Розовый цвет кнопки означает, что функция включена.
&emsp;&emsp;**Открыть сохраненную игру** После нажатия этой кнопки появится окно со списком игр, в котором Вы можете выбрать игру, которую хотите запустить.
&emsp;&emsp;**Свернуть в трей** Нажмите эту кнопку, чтобы скрыть программу. Она будет отображена иконкой в трее.
&emsp;&emsp;**Выход ** Нажмите, чтобы закрыть программу.
## Кнопки в режиме OCR
![img](https://image.lunatranslator.org/ru/toolbar2_ru.png)
> В режиме OCR будет на три кнопки больше, чем в режиме буфера обмена.
&emsp;&emsp;**Выбрать диапазон OCR** После нажатия этой кнопки нужно будет выбрать диапазон распознавания текста.
&emsp;&emsp;**Скрыть поле диапазона** Включение данной функции скрывает окно распознавание текста, давая возможность управлять игрой сквозь него. Также окно закрепляется на месте. Розовый цвет кнопки означает, что функция включена.
&emsp;&emsp;**Привязка окна** Нажмите на кнопку, а затем нажмите на окно игры, чтобы заставить окно распознавания текста захватывать текста ТОЛЬКО из выбранного окна. Розовый цвет кнопки означает, что функция включена. Двойной щелчок по кнопке убирает привязку к окну.
## HOOK模式按钮
![img](https://image.lunatranslator.org/ru/toolbar3_ru.png)
> В режиме HOOK будет на три кнопки больше, чем в режиме буфера обмена.
&emsp;&emsp;**Выбрать игру** После нажатия этой кнопки, откроется окно выбора игры, в котором вы сможете выбрать игру для привязки HOOK.
&emsp;&emsp;**Выбрать текст** После нажатия этой кнопки, откроется окно выбора текста, и вы сможете выбрать нужную текстовую строку из игры для привязки HOOK.

47
docs/ru/transoptimi.md Normal file
View File

@ -0,0 +1,47 @@
## Роль различных методов оптимизации перевода
#### **1. Перевод собственных названий - Прямое замещение**
Этот метод заменяет исходный текст на перевод непосредственно перед переводом. Поддерживает использование `регулярных выражений` и `экранирования` для более сложных замен.
Когда игра загружает метаданные из VNDB, информация о персонажах игры извлекается для использования в качестве предустановленного словаря. Однако переводы, по причине VNDB, находятся на английском языке и могут быть отредактированы на китайский.
<details>
<summary>Пример</summary>
<img src="https://image.lunatranslator.org/zh/transoptimi/1.png">
</details>
#### **2. Перевод собственных названий**
Если использовать `сакура большое модель` и установить формат prompt на `v0.10pre1 (поддерживает словарь gpt)`, то будет преобразовано в формат словаря gpt, в противном случае будет применен метод VNR, заменив исходный текст на заполнители `ZX?Z` (примечание: я также не знаю, что это значит), источник перевода после перевода, как правило, не разрушает заполнители, а затем заполнители заменяются переводом.
Для специализированных терминов игры рекомендуется не добавлять их в раздел `Обработка текста -> Оптимизация перевода`. Раньше для различения терминов из разных игр использовался md5-хеш игры, но такой подход оказался не очень хорошим и был отменен. Теперь рекомендуется добавлять специализированные термины игры в настройках `Оптимизация перевода` в разделе `Настройки игры`.
Последний столбец `Комментарий` предназначен только для использования с `сакура большой моделью`, другие переводы проигнорируют этот столбец.
<details>
<summary>Настройка специализированных терминов игры</summary>
Рекомендуется использовать:
<img src="https://image.lunatranslator.org/zh/transoptimi/2.png">
а не:
<img src="https://image.lunatranslator.org/zh/transoptimi/3.png">
</details>
<details>
<summary>Настройка sakura большого модель формата prompt на v0.10pre1 (поддерживает словарь gpt)</summary>
<img src="https://image.lunatranslator.org/zh/transoptimi/4.png">
</details>
#### **3. Исправление результатов перевода**
Этот метод позволяет внести некоторые коррективы в результаты перевода после его завершения и использовать целые выражения для более сложных исправлений.
#### **4. Общий словарь VNR**
Поддерживается формат общего словаря VNR, но его использование не рекомендуется.
## Оптимизация перевода, специфичная для игры
В разделе `Настройки игры -> Оптимизация перевода`, если отключить `Следовать по умолчанию`, то будут использоваться специализированные настройки оптимизации перевода для игры.
Если активировать `Наследовать по умолчанию`, то помимо словаря оптимизации перевода, специфичного для игры, также будут использоваться общие глобальные настройки словаря.

View File

@ -1,9 +0,0 @@
# Иконка на панели задач
![img](https://image.lunatranslator.org/ru/trayicon_ru.png)
Щелкните на значок левой кнопкой мыши, чтобы **отобразить окно программы**, щелкните еще раз, чтобы **скрыть его**.
Щелкните правой кнопкой мыши по значку, чтобы вызвать всплывающее меню, где можно зайти в **настройки** программы или **выйти** из нее.

61
docs/ru/ttsofname.md Normal file
View File

@ -0,0 +1,61 @@
## Синтез речи с использованием разных голосов для разных персонажей
Во-первых, если текущий текст не содержит имени или другой идентифицирующей информации, то в селекторе текста можно дополнительно выбрать текст имени. Отображаемый текст будет расположен в порядке выбора.
Затем, в настройках игры -> `Голос` (или в интерфейсе настроек `Настройки голоса`, но это будут глобальные настройки, не рекомендуется делать глобальные настройки) отключите `Следовать по умолчанию`, затем активируйте `Указание голоса`, добавьте строку в его настройках, установите `Условие` на `Содержит`, введите имя в `Цель`, а затем выберите голос в `Указать как`.
![img](https://image.lunatranslator.org/zh/tts/1.png)
Однако, поскольку дополнительно выбрали текст имени, отображаемый и переведенный текст содержит дополнительную информацию об имени, и голос также будет произносить имя. Чтобы решить эту проблему, активируйте `Исправление голоса`, используя регулярные выражения, чтобы отфильтровать имя и его символы.
Если также активировано `Применить к переводу`, то это исправление голоса также удалит имя из отображаемого и переведенного текста, что сделает отображаемый текст таким же, как и при невыбранных элементах имени.
![img](https://image.lunatranslator.org/zh/tts/3.png)
## Подробное объяснение указания голоса
Когда текущий текст соответствует условиям, выполняется действие, указанное в `Указать как`.
#### Условия
1. Регулярное выражение
Использовать ли регулярное выражение для определения.
1. Условие
**Начало/Конец** Когда установлено на Начало/Конец, условие выполняется только тогда, когда цель находится в начале или конце текста.
**Содержит** Условие выполняется, если цель появляется в тексте. Это более мягкое определение.
Когда одновременно активировано `Регулярное выражение`, регулярное выражение автоматически обрабатывается для совместимости с этим параметром.
1. Цель
Текст для определения, обычно **имя**.
Когда активировано `Регулярное выражение`, его содержимое будет использоваться как регулярное выражение для более точного определения.
#### Указать как
1. Пропустить
Когда определено, что условие выполнено, пропустить чтение текущего текста.
1. По умолчанию
Использовать голос по умолчанию для содержимого, соответствующего условиям. Обычно, когда используется очень мягкое определение, легко вызвать ошибки. Перемещение определения для этого действия перед более мягким определением может избежать ошибок.
1. Выбрать голос
После выбора появится окно для выбора голосового движка и голоса. При выполнении условия будет использоваться этот голос для чтения.
## Некоторые проблемы с исправлением голоса
Весь процесс:
1. Извлечение текста
1. Обработка текста - Предварительная обработка текста
1. Указание голоса
1. Исправление голоса
1. -> Выполнение синтеза речи
1. Отображение оригинального текста (не обновлять при получении перевода)
1. Оптимизация перевода - Предварительная обработка
1. Перевод
1. Оптимизация перевода - Постобработка
1. Отображение перевода
Если хотите читать по имени и не хотите отображать имя в оригинальном тексте и переводе, то необходимо вставить действие перед отображением оригинального текста и выполнением синтеза речи.
Учитывая, что в большинстве случаев цель исправления и цель исправления голоса совпадают, введен параметр `Применить к переводу`, чтобы текст, переданный для перевода, совпадал с текстом после исправления голоса.
Конечно, если используется большая модель для перевода, сохранение имени в оригинальном тексте также является хорошим решением, поэтому этот параметр по умолчанию не активирован.
Конечно, если не хотите сохранять имя в переводе, можно также рассмотреть фильтрацию имени в `Оптимизации перевода`, но в этом случае оригинальный текст все равно будет отображаться, и мне это не нравится.

15
docs/ru/update.md Normal file
View File

@ -0,0 +1,15 @@
## Обновление программы
### Ручное обновление
#### Примечание
После загрузки распакуйте и замените в предыдущей директории, не удаляйте папку userconfig, иначе вы потеряете предыдущие настройки!!!
Или скопируйте предыдущую папку userconfig в новую распакованную директорию!!!
### Автоматическое обновление
В настройках -> обновлении версии можно включить автоматическое обновление. Автоматическое обновление иногда может вызывать ошибки, пожалуйста, обновите вручную, чтобы исправить!
![img](https://image.lunatranslator.org/zh/update.png)

View File

@ -0,0 +1,39 @@
## Некоторые полезные функции
#### Выключение звука игры, быстрое отключение звука для текущей игры
![img](https://image.lunatranslator.org/zh/usefulsmalltools/2.png)
После привязки окна игры (не только в режиме HOOK, но и в режиме OCR или буфера обмена, главное, что окно игры привязано), можно мгновенно выключить звук игры одним нажатием, избавившись от необходимости переключения звука в системном микшере.
#### Изменение масштаба окна, мгновенное изменение масштаба окна игры
![img](https://image.lunatranslator.org/zh/usefulsmalltools/1.png)
Можно мгновенно изменить масштаб окна игры (по умолчанию используется встроенный Magpie, также можно настроить на использование скачанного Magpie и т. д.). Это позволяет взаимодействовать с Magpie более эффективно и избавляет от необходимости нажимать горячие клавиши (я предпочитаю использовать мышь, и если могу кликнуть мышью, то не хочу касаться клавиатуры, не знаю, есть ли кто-то такой же).
#### Заметки, удобный инструмент для записи впечатлений от игры и стратегий
![img](https://image.lunatranslator.org/zh/usefulsmalltools/4.png)
Для текущей игры открывается окно заметок. Для каждой игры есть отдельный файл заметок. Можно использовать для записи временных заметок или для копирования стратегий для игры и редактирования их по мере игры, очень удобно, избавляет от необходимости открытия веб-страниц или отдельного файла txt, очень практично.
#### Снимок окна и галерея, захватывая каждый важный момент
![img](https://image.lunatranslator.org/zh/usefulsmalltools/6.png)
Можно делать скриншоты привязанных окон (по умолчанию создаются два вида снимков, GDI и Winrt, оба с некоторой вероятностью могут сбоить). Самым большим преимуществом является то, что если в данный момент используется Magpie для масштабирования, также будет сделан скриншот увеличенного окна.
Галерея по умолчанию автоматически включает картинки, загружаемые из сети на основе метаданных, а затем сделанные скриншоты автоматически добавляются в галерею, что облегчает управление скриншотами текущей игры. Также для каждой картинки в галерее можно добавить короткие заметки и запись голоса, что очень удобно для записи каждого важного момента в игре.
![img](https://image.lunatranslator.org/zh/usefulsmalltools/3.png)
![img](https://image.lunatranslator.org/zh/usefulsmalltools/8.png)
#### Связанные страницы, удобная учетная игра-related веб-страниц
![img](https://image.lunatranslator.org/zh/usefulsmalltools/5.png)
Это аналог небольшого браузера, который позволяет для каждой игры создать отдельную коллекцию закладок. Автоматически собирает страницы с метаданными игр vndb/bangumi/dlsite/ и т. д., также можно вручную добавить некоторые веб-страницы, связанные с игрой (например, веб-страницы с гайдами по игре, помимо использования блокнота, можно использовать эту функцию для хранения закладок), что облегчает просмотр. Избавляет от необходимости создавать закладки в браузере и управлять ими.
![img](https://image.lunatranslator.org/zh/usefulsmalltools/7.png)

17
docs/ru/windowsocr.md Normal file
View File

@ -0,0 +1,17 @@
## Как установить дополнительную поддержку языков для WindowsOCR?
> WindowsOCR поддерживает только операционные системы Windows 10 и Windows 11
1. Откройте настройки
1. Откройте раздел "Время и язык"
![img](https://image.lunatranslator.org/zh/windowsocr/3.png)
1. Откройте "Язык и регион", выберите "Языки по умолчанию" -> "Добавить язык"
![img](https://image.lunatranslator.org/zh/windowsocr/2.png)
1. Установите необходимый язык
![img](https://image.lunatranslator.org/zh/windowsocr/1.png)

View File

@ -65,7 +65,6 @@
**仅在OCR模式下可用**<br>
当未选择任何OCR范围时使用该快捷键显示OCR范围会自动设置OCR范围为上一次选择的OCR。
1. #### 选取OCR范围——立即
**仅在OCR模式下可用**<br>
和`选取OCR范围`的区别仅是少按一次鼠标

View File

@ -18,7 +18,6 @@
2. **当游戏窗口移动时OCR区域会跟随游戏窗口同步移动**。这样当有时需要移动游戏窗口时不需要移动OCR范围框了尤其是当你隐藏了范围框时不需要显示-移动-再隐藏了。
也就是说当选择OCR区域后**绑定游戏窗口**,再**隐藏范围框**就能做到接近Hook模式的体验的8成了
除此之外,当绑定了游戏窗口后,还有一些别的好处是:

View File

@ -49,6 +49,14 @@
**model** https://deepbricks.ai/pricing
### **Mistral AI**
**API接口地址** `https://api.mistral.ai/v1/chat/completions`
**API Key** https://console.mistral.ai/api-keys/
**model** https://docs.mistral.ai/getting-started/models/
### **Azure**
https://learn.microsoft.com/en-us/azure/ai-services/openai/reference#completions
@ -169,6 +177,8 @@ https://learn.microsoft.com/en-us/azure/ai-services/openai/reference#completions
### **腾讯混元大模型**
**SecretId** & **SecretKey** https://console.cloud.tencent.com/cam/capi
**model** https://cloud.tencent.com/document/product/1729/97731
### **百度千帆大模型**

View File

@ -1,5 +0,0 @@
## 各种API对比
<div id="manytables">
</div>

View File

@ -21,7 +21,7 @@
在宿主机中运行LunaTranslator将文本输入从`HOOK`切换到`剪贴板`
![img](https://image.lunatranslator.org/zh/playonxp/host.png)
<hr>
---
最终效果如下:
![img](https://image.lunatranslator.org/zh/playonxp/effect.png)

View File

@ -18,16 +18,15 @@
填入数字,重启 anki
<hr>
---
在 luna 这边,点击查词后。
![img](https://image.lunatranslator.org/zh/anki/336451202-a2dd54c0-e4ee-4c27-9183-8b4ab05c4819.png)
![img](https://image.lunatranslator.org/zh/anki/336451442-7887d600-8c44-4256-9020-1d85e0f6184a.png)
<hr>
---
Reference: [asukaminato0721](https://github.com/HIllya51/LunaTranslator/issues/796)

View File

@ -87,14 +87,12 @@
**17. 去除重复行_ABCDBCDCDD->ABCD**
这个也比较常见。这个出现的原因是有时HOOK的某个显示文本的函数其参数是显示的文本这个函数会再每显示一个字符时都会调用且每次会把参数的字符串指向下一个字符从而导致其实第一次调用其实就已经得到完整的文本了后续每次又输出了剩下的子串直到长度递减为0。例如`恵麻さんは再び液タブへ視線を落とす。麻さんは再び液タブへ視線を落とす。さんは再び液タブへ視線を落とす。んは再び液タブへ視線を落とす。は再び液タブへ視線を落とす。再び液タブへ
視線を落とす。び液タブへ視線を落とす。液タブへ視線を落とす。タブへ視線を落とす。ブへ視線を落とす。へ視線を落とす。視線を落とす。線を落とす。を落とす。落とす。とす。す。。` 经过分析将判断真实的文本应该是`恵麻さんは再び液タブへ視線を落とす。`
这个也比较常见。这个出现的原因是有时HOOK的某个显示文本的函数其参数是显示的文本这个函数会再每显示一个字符时都会调用且每次会把参数的字符串指向下一个字符从而导致其实第一次调用其实就已经得到完整的文本了后续每次又输出了剩下的子串直到长度递减为0。例如`恵麻さんは再び液タブへ視線を落とす。麻さんは再び液タブへ視線を落とす。さんは再び液タブへ視線を落とす。んは再び液タブへ視線を落とす。は再び液タブへ視線を落とす。再び液タブへ視線を落とす。び液タブへ視線を落とす。液タブへ視線を落とす。タブへ視線を落とす。ブへ視線を落とす。へ視線を落とす。視線を落とす。線を落とす。を落とす。落とす。とす。す。。` 经过分析将判断真实的文本应该是`恵麻さんは再び液タブへ視線を落とす。`
**18. 去除重复行_AABABCABCD->ABCD**
这个也比较常见,出现的原因是,每次绘制一个字符,然后绘制下一个字符时都会把前面的字符都再绘制一遍。例如`恵麻恵麻さ恵麻さん恵麻さんは恵麻さんは再恵麻さんは再び恵麻さんは再び液恵麻さんは再び液タ恵麻さんは再び液タブ恵麻さんは再び液タブへ恵麻さんは再び液タブへ視恵麻さんは再び液
タブへ視線恵麻さんは再び液タブへ視線を恵麻さんは再び液タブへ視線を落恵麻さんは再び液タブへ視線を落と恵麻さんは再び液タブへ視線を落とす恵麻さんは再び液タブへ視線を落とす。`经过分析将判断真实的文本应该是`恵麻さんは再び液タブへ視線を落とす。`
这个也比较常见,出现的原因是,每次绘制一个字符,然后绘制下一个字符时都会把前面的字符都再绘制一遍。例如`恵麻恵麻さ恵麻さん恵麻さんは恵麻さんは再恵麻さんは再び恵麻さんは再び液恵麻さんは再び液タ恵麻さんは再び液タブ恵麻さんは再び液タブへ恵麻さんは再び液タブへ視恵麻さんは再び液タブへ視線恵麻さんは再び液タブへ視線を恵麻さんは再び液タブへ視線を落恵麻さんは再び液タブへ視線を落と恵麻さんは再び液タブへ視線を落とす恵麻さんは再び液タブへ視線を落とす。`经过分析将判断真实的文本应该是`恵麻さんは再び液タブへ視線を落とす。`
**19. 去除重复行_AABABCABCDEEFEFG->ABCDEFG**

View File

@ -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 36)
set(VERSION_PATCH 9)
set(VERSION_MINOR 37)
set(VERSION_PATCH 0)
add_library(pch pch.cpp)
target_precompile_headers(pch PUBLIC pch.h)