mirror of
https://github.com/TriM-Organization/Linglun-Converter.git
synced 2024-12-01 09:34:53 +08:00
191 lines
6.6 KiB
Python
191 lines
6.6 KiB
Python
# -*- coding:utf-8 -*-
|
||
"""对于伶伦的语言支持兼语言文件编辑器"""
|
||
|
||
"""
|
||
Copyright © 2023 all the developers of LinglunStudio
|
||
"""
|
||
|
||
|
||
DEFAULTLANGUAGE = "ZH-CN"
|
||
|
||
LANGUAGELIST = {
|
||
# 第一个是语言的中文名称和地区
|
||
# 第二个是语言的英文名称和地区
|
||
# 第三个是语言的本地名称和地区
|
||
"ZH-CN": (
|
||
"简体中文 中国大陆",
|
||
"Simplified Chinese - China Mainland",
|
||
"简体中文 中国大陆",
|
||
),
|
||
"ZH-TW": (
|
||
"繁体中文 中国台湾",
|
||
"Traditional Chinese - Taiwan Province, China",
|
||
"正體中文,中国台灣省",
|
||
),
|
||
# 'ZH-HK': (
|
||
# "繁体中文 香港",
|
||
# "Traditional Chinese - Hong Kong SAR",
|
||
# "繁體中文,香港特別行政區",
|
||
# ),
|
||
# 'ZH-MO': (
|
||
# "繁体中文 澳门",
|
||
# "Traditional Chinese - Macau SAR",
|
||
# "繁體中文,澳門特別行政區",
|
||
# ),
|
||
"EN-GB": (
|
||
"英语 英国",
|
||
"British English - the United Kingdom",
|
||
"British English - the United Kingdom",
|
||
),
|
||
"ZH-ME": ("喵喵文 中国大陆", "Meow Catsnese - China Mainland" "喵喵喵~ 种花家~"),
|
||
}
|
||
|
||
languages = {
|
||
"ZH-CN": {
|
||
"MSCT": "音·创",
|
||
"ChooseLang": "选择语言",
|
||
"LangChd": "当前语言已经切换为",
|
||
"ZH-CN": "简体中文",
|
||
"ZH-TW": "繁体中文(台湾)",
|
||
"EN-GB": "英语(英国)",
|
||
"EN-US": "英语(美国)",
|
||
":": ":",
|
||
",": ",",
|
||
".": "。",
|
||
"ChoosePath": "请输入MIDI路径或所在文件夹",
|
||
"ChooseFileFormat": "请输入输出格式[BDX(1) 或 MCPACK(0)]",
|
||
"EnterMethod": "请输入转换算法[{}~{}]",
|
||
"MethodRangeErr": "输入的转换算法应为 [{},{}](首尾皆含)之间的一个整数。",
|
||
"ChoosePlayer": "请选择播放方式[红石(2) 或 计分板(1) 或 延迟(0)]",
|
||
"WhetherArgEntering": "是否为文件夹内文件的转换统一参数[是(1) 或 否(0)]",
|
||
"EnterArgs": "请输入转换参数",
|
||
"noteofArgs": "注:文件夹内的全部midi将统一以此参数转换",
|
||
"EnterVolume": "请输入音量大小(0~1)",
|
||
"EnterSpeed": "请输入速度倍率",
|
||
"WhetherPgb": "是否自动生成进度条[是(1) 或 否(0)]",
|
||
"WhetherCstmProgressBar": "是否自定义进度条[是(1) 或 否(0)]",
|
||
"EnterProgressBarStyle": "请输入进度条样式",
|
||
"EnterSbName": "请输入计分板名称",
|
||
"EnterSelecter": "请输入播放者选择器",
|
||
"WhetherSbReset": "是否自动重置计分板[是(1) 或 否(0)]",
|
||
"EnterAuthor": "请输入作者",
|
||
"EnterMaxHeight": "请输入指令结构最大生成高度",
|
||
"ErrEnter": "输入错误",
|
||
"Re-Enter": "请重新输入",
|
||
"Dealing": "正在处理",
|
||
"FileNotFound": "文件(夹)不存在",
|
||
"ChooseOutPath": "请输入结果输出路径",
|
||
"Saying": "言·论",
|
||
"Failed": "失败",
|
||
"CmdLength": "指令数量",
|
||
"MaxDelay": "曲目时间(游戏刻)",
|
||
"PlaceSize": "结构占用大小",
|
||
"LastPos": "最末方块坐标",
|
||
"PressEnterExit": "请按下回车键退出。",
|
||
}
|
||
}
|
||
|
||
|
||
class Lang:
|
||
def __init__(self, lang: str = "ZH-CN", debug: bool = False) -> None:
|
||
self.local = lang
|
||
self.debug = debug
|
||
|
||
def __load_language(self, language_file_name: str):
|
||
global logger
|
||
with open(language_file_name, "r", encoding="utf-8") as languageFile:
|
||
_text = {}
|
||
for line in languageFile:
|
||
if line.startswith("#"):
|
||
continue
|
||
line = line.split(" ", 1)
|
||
_text[line[0]] = line[1].replace("\n", "")
|
||
langkeys = _text.keys()
|
||
with open(
|
||
language_file_name.replace(language_file_name[-10:-5], "ZH-CN"),
|
||
"r",
|
||
encoding="utf-8",
|
||
) as defaultLangFile:
|
||
for line in defaultLangFile:
|
||
if line.startswith("#"):
|
||
continue
|
||
line = line.split(" ", 1)
|
||
if not line[0] in langkeys:
|
||
_text[line[0]] = line[1].replace("\n", "")
|
||
logger.warning(
|
||
f"丢失对于 {line[0]} 的本地化文本",
|
||
)
|
||
langkeys = _text.keys()
|
||
# print(_text)
|
||
return _text
|
||
|
||
|
||
# 这个函数是不被加载的
|
||
def passbt():
|
||
|
||
from utils.io import logger
|
||
try:
|
||
from utils.io import requests
|
||
except ImportError:
|
||
pass
|
||
|
||
def __loadLanguage(languageFilename: str):
|
||
with open(languageFilename, "r", encoding="utf-8") as languageFile:
|
||
_text = {}
|
||
for line in languageFile:
|
||
if line.startswith("#"):
|
||
continue
|
||
line = line.split(" ", 1)
|
||
_text[line[0]] = line[1].replace("\n", "")
|
||
langkeys = _text.keys()
|
||
with open(
|
||
languageFilename.replace(languageFilename[-10:-5], "ZH-CN"),
|
||
"r",
|
||
encoding="utf-8",
|
||
) as defaultLangFile:
|
||
for line in defaultLangFile:
|
||
if line.startswith("#"):
|
||
continue
|
||
line = line.split(" ", 1)
|
||
if not line[0] in langkeys:
|
||
_text[line[0]] = line[1].replace("\n", "")
|
||
logger.warning(
|
||
f"丢失对于 {line[0]} 的本地化文本",
|
||
)
|
||
langkeys = _text.keys()
|
||
# print(_text)
|
||
return _text
|
||
|
||
if DEFAULTLANGUAGE in LANGUAGELIST.keys():
|
||
_TEXT = __loadLanguage("./languages/" + DEFAULTLANGUAGE + ".lang")
|
||
else:
|
||
logger.error(f"无法打开当前本地化文本{DEFAULTLANGUAGE}")
|
||
raise KeyError(f"无法打开默认语言{DEFAULTLANGUAGE}")
|
||
|
||
def wordTranslate(singleWord: str, debug: bool = False):
|
||
try:
|
||
return (
|
||
requests.post(
|
||
"https://fanyi.baidu.com/sug", data={"kw": f"{singleWord}"}
|
||
)
|
||
.json()["data"][0]["v"]
|
||
.split("; ")[0]
|
||
)
|
||
except:
|
||
logger.warning(
|
||
f"无法翻译文本{singleWord}",
|
||
)
|
||
return None
|
||
|
||
def _(text: str, debug: bool = False):
|
||
try:
|
||
return _TEXT[text]
|
||
except:
|
||
if debug:
|
||
raise KeyError(f"无法找到本地化文本{text}")
|
||
else:
|
||
logger.warning(
|
||
f"无法找到本地化文本{text}",
|
||
)
|
||
return ""
|