Difficult-Rocket/Difficult_Rocket/utils/translate.py

146 lines
4.1 KiB
Python
Raw Normal View History

2021-09-08 23:38:34 +08:00
# -------------------------------
# Difficult Rocket
2022-06-27 16:51:14 +08:00
# Copyright © 2021-2022 by shenjackyuanjie 3695888@qq.com
2021-09-08 23:38:34 +08:00
# All rights reserved
# -------------------------------
2021-09-02 22:47:10 +08:00
"""
writen by shenjackyuanjie
mail: 3695888@qq.com
github: @shenjackyuanjie
gitee: @shenjackyuanjie
"""
2022-07-01 13:59:08 +08:00
import inspect
import objprint
from typing import Union
2022-06-29 13:45:25 +08:00
from Difficult_Rocket.exception.language import *
2022-04-26 22:05:58 +08:00
from Difficult_Rocket.utils import tools
2022-07-01 13:59:08 +08:00
"""
这部分代码使用了中文编程why
你觉得呢
"""
2021-09-02 22:47:10 +08:00
2022-07-01 13:59:08 +08:00
class Tr:
"""
我不装了我就复刻tr
"""
def __init__(self):
self.frame = inspect.currentframe()
objprint.objprint(self.frame,
honor_existing=False,
depth=1)
objprint.objprint(self.frame.f_back,
honor_existing=False,
depth=1)
2021-09-02 22:47:10 +08:00
class Lang:
"""
用于创建一个对应语言的翻译类
感谢Fallen的MCDR提供idea
https://github.com/Fallen-Breath/MCDReforged
可以用
lang['language'] = 'abc'
lang['lang'] = 'abc'
的方式直接更改并刷新翻译
lang.lang(xxx, xxx)来获取翻译过的值
2021-09-02 22:47:10 +08:00
"""
2021-09-05 00:50:05 +08:00
def __init__(self, language: str = 'zh-CN') -> None:
2021-10-22 06:36:06 +08:00
self.语言 = language
self.翻译结果 = tools.load_file(f'configs/lang/{language}.toml')
self.默认翻译 = tools.load_file('configs/lang/zh-CN.toml')
2022-06-14 20:52:03 +08:00
self.直接返回原始数据 = True
2021-09-02 22:47:10 +08:00
def __str__(self) -> str:
2021-10-22 06:36:06 +08:00
return self.语言
2021-09-02 22:47:10 +08:00
2021-10-22 06:36:06 +08:00
def __getitem__(self, item) -> Union[int, str, list, dict]:
try:
return self.翻译结果[item]
except KeyError:
try:
return self.默认翻译[item]
except KeyError:
2022-06-29 13:45:25 +08:00
raise TranslateKeyNotFound(f'there\'s no key {item} in both {self.语言} and zh-CN')
2021-09-02 22:47:10 +08:00
def __setitem__(self, key, value) -> None:
if key == 'language' or key == 'lang':
try:
self.翻译结果 = tools.load_file(f'configs/lang/{value}.toml')
2021-10-22 06:36:06 +08:00
self.语言 = value
except FileNotFoundError:
2022-06-14 20:52:03 +08:00
if self.直接返回原始数据:
return None
2022-06-29 13:45:25 +08:00
raise TranslateKeyNotFound(f'{value}\'s language toml file not found')
else:
raise NotImplementedError
2021-10-22 06:36:06 +08:00
def set_language(self, language) -> None:
try:
self.翻译结果 = tools.load_file(f'configs/lang/{language}.toml')
2021-10-22 06:36:06 +08:00
self.语言 = language
except FileNotFoundError:
2022-07-01 13:59:08 +08:00
raise TranslateKeyNotFound(f'{language}\'s language toml file not found')
2021-10-22 06:36:06 +08:00
def lang(self, *args) -> Union[int, str, list, dict]:
2022-07-01 13:59:08 +08:00
frame = inspect.currentframe()
print("调用当前log的函数名:", frame.f_back.f_code.co_name)
# print("调用当前log的文件名:", frame.f_back.f_code.co_filename)
objprint.objprint(frame.f_back.f_code,
honor_existing=False,
depth=2)
try:
结果 = self.翻译结果
for 选项 in args:
结果 = 结果[选项]
return 结果
except KeyError:
try:
结果 = self.默认翻译
for 选项 in args:
结果 = 结果[选项]
return 结果
except KeyError:
2022-06-14 20:52:03 +08:00
if self.直接返回原始数据:
return args
2022-07-01 13:59:08 +08:00
raise TranslateKeyNotFound(f'there\'s no key {args} in both {self.语言} and zh-CN')
2021-10-22 06:36:06 +08:00
def 翻译(self, *args) -> Union[int, str, list, dict]:
return self.lang(args)
2021-10-01 23:12:01 +08:00
tr = Lang('zh-CN')
# font's value
HOS = 'HarmonyOS Sans'
HOS_S = 'HarmonyOS Sans SC'
HOS_T = 'HarmonyOS Sans TC'
HOS_C = 'HarmonyOS Sans Condensed'
2021-10-01 23:12:01 +08:00
鸿蒙字体 = HOS
鸿蒙简体 = HOS_S
鸿蒙繁体 = HOS_T
鸿蒙窄体 = HOS_C
2021-11-06 19:07:32 +08:00
CC = 'Cascadia Code'
CM = 'Cascadia Mono'
CCPL = 'Cascadia Code PL'
CMPL = 'Cascadia Mono PL'
微软等宽 = CC
微软等宽无线 = CM
微软等宽带电线 = CCPL
微软等宽带电线无线 = CMPL