Linglun-Converter/languages/lang.py

189 lines
6.5 KiB
Python
Raw Normal View History

# -*- coding:utf-8 -*-
2023-02-12 01:21:43 +00:00
"""对于伶伦的语言支持兼语言文件编辑器"""
"""
Copyright © 2023 all the developers of LinglunStudio
"""
2023-02-12 01:21:43 +00:00
DEFAULTLANGUAGE = "ZH-CN"
LANGUAGELIST = {
# 第一个是语言的中文名称和地区
# 第二个是语言的英文名称和地区
# 第三个是语言的本地名称和地区
2023-02-12 01:21:43 +00:00
"ZH-CN": (
"简体中文 中国大陆",
"Simplified Chinese - China Mainland",
"简体中文 中国大陆",
),
2023-02-12 01:21:43 +00:00
"ZH-TW": (
2023-03-11 10:58:14 +00:00
"繁体中文 中国台湾",
"Traditional Chinese - Taiwan Province, China",
"正體中文,中国台灣省",
),
# 'ZH-HK': (
# "繁体中文 香港",
# "Traditional Chinese - Hong Kong SAR",
# "繁體中文,香港特別行政區",
# ),
# 'ZH-MO': (
# "繁体中文 澳门",
# "Traditional Chinese - Macau SAR",
# "繁體中文,澳門特別行政區",
# ),
2023-02-12 01:21:43 +00:00
"EN-GB": (
"英语 英国",
"British English - the United Kingdom",
"British English - the United Kingdom",
),
2023-02-12 01:21:43 +00:00
"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": "请选择播放方式[计分板(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": "请按下回车键退出。",
}
}
2023-03-11 10:58:14 +00:00
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):
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
2023-02-12 08:14:09 +00:00
# 这个函数是不被加载的
2023-02-12 01:21:43 +00:00
def passbt():
2023-02-12 08:14:09 +00:00
from utils.io import logger, requests
2023-03-11 10:58:14 +00:00
2023-02-05 09:45:58 +00:00
def __loadLanguage(languageFilename: str):
2023-02-12 01:21:43 +00:00
with open(languageFilename, "r", encoding="utf-8") as languageFile:
2023-02-05 09:45:58 +00:00
_text = {}
for line in languageFile:
2023-02-12 01:21:43 +00:00
if line.startswith("#"):
2023-02-05 09:45:58 +00:00
continue
2023-02-12 01:21:43 +00:00
line = line.split(" ", 1)
_text[line[0]] = line[1].replace("\n", "")
2023-02-05 09:45:58 +00:00
langkeys = _text.keys()
2023-02-12 01:21:43 +00:00
with open(
languageFilename.replace(languageFilename[-10:-5], "ZH-CN"),
"r",
encoding="utf-8",
) as defaultLangFile:
2023-02-05 09:45:58 +00:00
for line in defaultLangFile:
2023-02-12 01:21:43 +00:00
if line.startswith("#"):
2023-02-05 09:45:58 +00:00
continue
2023-02-12 01:21:43 +00:00
line = line.split(" ", 1)
2023-02-05 09:45:58 +00:00
if not line[0] in langkeys:
2023-02-12 01:21:43 +00:00
_text[line[0]] = line[1].replace("\n", "")
logger.warning(
f"丢失对于 {line[0]} 的本地化文本",
)
2023-02-05 09:45:58 +00:00
langkeys = _text.keys()
# print(_text)
return _text
if DEFAULTLANGUAGE in LANGUAGELIST.keys():
2023-02-12 01:21:43 +00:00
_TEXT = __loadLanguage("./languages/" + DEFAULTLANGUAGE + ".lang")
2023-02-05 09:45:58 +00:00
else:
logger.error(f"无法打开当前本地化文本{DEFAULTLANGUAGE}")
2023-02-12 01:21:43 +00:00
raise KeyError(f"无法打开默认语言{DEFAULTLANGUAGE}")
2023-02-05 09:45:58 +00:00
def wordTranslate(singleWord: str, debug: bool = False):
try:
2023-02-12 01:21:43 +00:00
return (
requests.post(
"https://fanyi.baidu.com/sug", data={"kw": f"{singleWord}"}
)
.json()["data"][0]["v"]
.split("; ")[0]
)
2023-02-05 09:45:58 +00:00
except:
2023-02-12 01:21:43 +00:00
logger.warning(
f"无法翻译文本{singleWord}",
)
2023-02-05 09:45:58 +00:00
return None
def _(text: str, debug: bool = False):
try:
return _TEXT[text]
except:
if debug:
2023-02-12 01:21:43 +00:00
raise KeyError(f"无法找到本地化文本{text}")
2023-02-05 09:45:58 +00:00
else:
2023-02-12 01:21:43 +00:00
logger.warning(
f"无法找到本地化文本{text}",
)
return ""