Linglun-Converter/languages/lang.py
2023-09-10 19:26:19 +08:00

191 lines
6.6 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# -*- 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 ""