Merge pull request #49 from EillesWan/main

完善翻译文本 & 优化状态缓存
This commit is contained in:
远野千束 2024-07-14 02:38:51 +08:00 committed by GitHub
commit 605dd035d4
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
16 changed files with 293 additions and 291 deletions

View File

@ -22,7 +22,7 @@ if get_config("debug", False):
"resources", "resources",
) )
nonebot.logger.info("Liteyuki Reload is enable, watching for file changes...") nonebot.logger.info("Liteyuki Reload enabled, watching for file changes...")
class CodeModifiedHandler(FileSystemEventHandler): class CodeModifiedHandler(FileSystemEventHandler):

View File

@ -67,73 +67,74 @@ status_card_cache = {} # lang -> bytes
# 60s刷新一次 # 60s刷新一次
# 之前写的什么鬼玩意,这么重要的功能这样写???
@scheduler.scheduled_job("cron", second="*/40") @scheduler.scheduled_job("cron", second="*/40")
async def refresh_status_card(): async def refresh_status_card():
nonebot.logger.debug("Refreshing status card cache...") nonebot.logger.debug("Refreshing status card cache.")
global status_card_cache global status_card_cache
bot_data = await get_bots_data() status_card_cache = {}
hardware_data = await get_hardware_data() # bot_data = await get_bots_data()
liteyuki_data = await get_liteyuki_data() # hardware_data = await get_hardware_data()
for lang in status_card_cache.keys(): # liteyuki_data = await get_liteyuki_data()
status_card_cache[lang] = await generate_status_card( # for lang in status_card_cache.keys():
bot_data, # status_card_cache[lang] = await generate_status_card(
hardware_data, # bot_data,
liteyuki_data, # hardware_data,
lang=lang, # liteyuki_data,
use_cache=False # lang=lang,
) # use_cache=False
# )
async def generate_status_card(bot: dict, hardware: dict, liteyuki: dict, lang="zh-CN", bot_id="0", # 获取状态卡片
use_cache=False # bot_id 参数已经是bot参数的一部分了不需要保留但为了“兼容性”……
) -> bytes: async def generate_status_card(
if not use_cache: bot: dict,
hardware: dict,
liteyuki: dict,
lang="zh-CN",
bot_id="0",
) -> bytes:
return await template2image( return await template2image(
get_path("templates/status.html", abs_path=True), get_path("templates/status.html", abs_path=True),
{ {
"data": { "data": {
"bot" : bot, "bot": bot,
"hardware" : hardware, "hardware": hardware,
"liteyuki" : liteyuki, "liteyuki": liteyuki,
"localization": get_local_data(lang) "localization": get_local_data(lang),
} }
}, },
) )
else:
if lang not in status_card_cache:
status_card_cache[lang] = await generate_status_card(bot, hardware, liteyuki, lang=lang, bot_id=bot_id)
return status_card_cache[lang]
def get_local_data(lang_code) -> dict: def get_local_data(lang_code) -> dict:
lang = Language(lang_code) lang = Language(lang_code)
return { return {
"friends" : lang.get("status.friends"), "friends": lang.get("status.friends"),
"groups" : lang.get("status.groups"), "groups": lang.get("status.groups"),
"plugins" : lang.get("status.plugins"), "plugins": lang.get("status.plugins"),
"bots" : lang.get("status.bots"), "bots": lang.get("status.bots"),
"message_sent" : lang.get("status.message_sent"), "message_sent": lang.get("status.message_sent"),
"message_received": lang.get("status.message_received"), "message_received": lang.get("status.message_received"),
"cpu" : lang.get("status.cpu"), "cpu": lang.get("status.cpu"),
"memory" : lang.get("status.memory"), "memory": lang.get("status.memory"),
"swap" : lang.get("status.swap"), "swap": lang.get("status.swap"),
"disk" : lang.get("status.disk"), "disk": lang.get("status.disk"),
"usage": lang.get("status.usage"),
"usage" : lang.get("status.usage"), "total": lang.get("status.total"),
"total" : lang.get("status.total"), "used": lang.get("status.used"),
"used" : lang.get("status.used"), "free": lang.get("status.free"),
"free" : lang.get("status.free"), "days": lang.get("status.days"),
"hours": lang.get("status.hours"),
"days" : lang.get("status.days"), "minutes": lang.get("status.minutes"),
"hours" : lang.get("status.hours"), "seconds": lang.get("status.seconds"),
"minutes" : lang.get("status.minutes"), "runtime": lang.get("status.runtime"),
"seconds" : lang.get("status.seconds"), "threads": lang.get("status.threads"),
"runtime" : lang.get("status.runtime"), "cores": lang.get("status.cores"),
"threads" : lang.get("status.threads"), "process": lang.get("status.process"),
"cores" : lang.get("status.cores"), "resources": lang.get("status.resources"),
"process" : lang.get("status.process"), "description": lang.get("status.description"),
"resources" : lang.get("status.resources"),
"description" : lang.get("status.description"),
} }
@ -143,7 +144,7 @@ async def get_bots_data(self_id: str = "0") -> dict:
""" """
result = { result = {
"self_id": self_id, "self_id": self_id,
"bots" : [], "bots": [],
} }
for bot_id, bot in nonebot.get_bots().items(): for bot_id, bot in nonebot.get_bots().items():
groups = 0 groups = 0
@ -181,15 +182,25 @@ async def get_bots_data(self_id: str = "0") -> dict:
else: else:
icon = None icon = None
bot_data = { bot_data = {
"name" : bot_name, "name": bot_name,
"icon" : icon, "icon": icon,
"id" : bot_id, "id": bot_id,
"protocol_name" : protocol_names.get(version_info.get("protocol_name"), "Online"), "protocol_name": protocol_names.get(
"groups" : groups, version_info.get("protocol_name"), "Online"
"friends" : friends, ),
"message_sent" : satori_counter.msg_sent if isinstance(bot, satori.Bot) else statistics.get("message_sent", 0), "groups": groups,
"message_received": satori_counter.msg_received if isinstance(bot, satori.Bot) else statistics.get("message_received", 0), "friends": friends,
"app_name" : app_name "message_sent": (
satori_counter.msg_sent
if isinstance(bot, satori.Bot)
else statistics.get("message_sent", 0)
),
"message_received": (
satori_counter.msg_received
if isinstance(bot, satori.Bot)
else statistics.get("message_received", 0)
),
"app_name": app_name,
} }
result["bots"].append(bot_data) result["bots"].append(bot_data)
@ -221,27 +232,27 @@ async def get_hardware_data() -> dict:
else: else:
brand = "Unknown" brand = "Unknown"
result = { result = {
"cpu" : { "cpu": {
"percent": psutil.cpu_percent(), "percent": psutil.cpu_percent(),
"name" : f"{brand} {cpuinfo.get_cpu_info().get('arch', 'Unknown')}", "name": f"{brand} {cpuinfo.get_cpu_info().get('arch', 'Unknown')}",
"cores" : psutil.cpu_count(logical=False), "cores": psutil.cpu_count(logical=False),
"threads": psutil.cpu_count(logical=True), "threads": psutil.cpu_count(logical=True),
"freq" : psutil.cpu_freq().current # MHz "freq": psutil.cpu_freq().current, # MHz
}, },
"memory": { "memory": {
"percent" : mem.percent, "percent": mem.percent,
"total" : mem.total, "total": mem.total,
"used" : mem.used, "used": mem.used,
"free" : mem.free, "free": mem.free,
"usedProcess": mem_used_process, "usedProcess": mem_used_process,
}, },
"swap" : { "swap": {
"percent": swap.percent, "percent": swap.percent,
"total" : swap.total, "total": swap.total,
"used" : swap.used, "used": swap.used,
"free" : swap.free "free": swap.free,
}, },
"disk" : [], "disk": [],
} }
for disk in psutil.disk_partitions(all=True): for disk in psutil.disk_partitions(all=True):
@ -249,13 +260,15 @@ async def get_hardware_data() -> dict:
disk_usage = psutil.disk_usage(disk.mountpoint) disk_usage = psutil.disk_usage(disk.mountpoint)
if disk_usage.total == 0: if disk_usage.total == 0:
continue # 虚拟磁盘 continue # 虚拟磁盘
result["disk"].append({ result["disk"].append(
"name" : disk.mountpoint, {
"name": disk.mountpoint,
"percent": disk_usage.percent, "percent": disk_usage.percent,
"total" : disk_usage.total, "total": disk_usage.total,
"used" : disk_usage.used, "used": disk_usage.used,
"free" : disk_usage.free "free": disk_usage.free,
}) }
)
except: except:
pass pass
@ -265,14 +278,15 @@ async def get_hardware_data() -> dict:
async def get_liteyuki_data() -> dict: async def get_liteyuki_data() -> dict:
temp_data: TempConfig = common_db.where_one(TempConfig(), default=TempConfig()) temp_data: TempConfig = common_db.where_one(TempConfig(), default=TempConfig())
result = { result = {
"name" : list(get_config("nickname", [__NAME__]))[0], "name": list(get_config("nickname", [__NAME__]))[0],
"version" : f"{__VERSION__}{'-' + commit_hash[:7] if (commit_hash and len(commit_hash) > 8) else ''}", "version": f"{__VERSION__}{'-' + commit_hash[:7] if (commit_hash and len(commit_hash) > 8) else ''}",
"plugins" : len(nonebot.get_loaded_plugins()), "plugins": len(nonebot.get_loaded_plugins()),
"resources": len(get_loaded_resource_packs()), "resources": len(get_loaded_resource_packs()),
"nonebot" : f"{nonebot.__version__}", "nonebot": f"{nonebot.__version__}",
"python" : f"{platform.python_implementation()} {platform.python_version()}", "python": f"{platform.python_implementation()} {platform.python_version()}",
"system" : f"{platform.system()} {platform.release()}", "system": f"{platform.system()} {platform.release()}",
"runtime" : time.time() - temp_data.data.get("start_time", time.time()), # 运行时间秒数 "runtime": time.time()
"bots" : len(nonebot.get_bots()) - temp_data.data.get("start_time", time.time()), # 运行时间秒数
"bots": len(nonebot.get_bots()),
} }
return result return result

View File

@ -17,7 +17,7 @@ status_alc = on_alconna(
Subcommand( Subcommand(
"process", "process",
alias={"proc", "p", "进程"}, alias={"proc", "p", "进程"},
) ),
), ),
) )
@ -25,17 +25,15 @@ status_alc = on_alconna(
@status_alc.handle() @status_alc.handle()
async def _(event: T_MessageEvent, bot: T_Bot): async def _(event: T_MessageEvent, bot: T_Bot):
ulang = get_user_lang(event_utils.get_user_id(event)) ulang = get_user_lang(event_utils.get_user_id(event))
if ulang.lang_code in status_card_cache: if ulang.lang_code not in status_card_cache.keys():
image = status_card_cache[ulang.lang_code] status_card_cache[ulang.lang_code] = await generate_status_card(
else:
image = await generate_status_card(
bot=await get_bots_data(), bot=await get_bots_data(),
hardware=await get_hardware_data(), hardware=await get_hardware_data(),
liteyuki=await get_liteyuki_data(), liteyuki=await get_liteyuki_data(),
lang=ulang.lang_code, lang=ulang.lang_code,
bot_id=bot.self_id, bot_id=bot.self_id,
use_cache=True
) )
image = status_card_cache[ulang.lang_code]
await status_alc.finish(UniMessage.image(raw=image)) await status_alc.finish(UniMessage.image(raw=image))

View File

@ -103,7 +103,6 @@ npm.update_index=Plugin-Index aktualisieren
npm.list_plugins=Plugin-Liste npm.list_plugins=Plugin-Liste
npm.disable_session=Plugin für aktuelle Sitzung deaktivieren npm.disable_session=Plugin für aktuelle Sitzung deaktivieren
npm.enable_session=Plugin für aktuelle Sitzung aktivieren npm.enable_session=Plugin für aktuelle Sitzung aktivieren
npm.help=Hilfe
npm.search=Suche npm.search=Suche
user.profile.edit=Bearbeiten user.profile.edit=Bearbeiten

View File

@ -103,7 +103,6 @@ npm.update_index=Update Plugin Index
npm.list_plugins=Plugin List npm.list_plugins=Plugin List
npm.disable_session=Disable plugin for current session npm.disable_session=Disable plugin for current session
npm.enable_session=Enable plugin for current session npm.enable_session=Enable plugin for current session
npm.help=Help
npm.search=Search npm.search=Search
user.profile.edit=Edit user.profile.edit=Edit

View File

@ -103,7 +103,6 @@ npm.update_index=Actualizar el Índice del Plugin
npm.list_plugins=Lista de Plugins npm.list_plugins=Lista de Plugins
npm.disable_session=Desactivar sesión actual npm.disable_session=Desactivar sesión actual
npm.enable_session=Activar sesión actual npm.enable_session=Activar sesión actual
npm.help=Ayuda
npm.search=Búsqueda npm.search=Búsqueda
user.profile.edit=Editar user.profile.edit=Editar

View File

@ -103,7 +103,6 @@ npm.update_index=Mise à jour de l'index des plugins
npm.list_plugins=Liste des plugins npm.list_plugins=Liste des plugins
npm.disable_session=Désactivation des plugins pour cette session npm.disable_session=Désactivation des plugins pour cette session
npm.enable_session=Activation des plugins pour cette session npm.enable_session=Activation des plugins pour cette session
npm.help=Aide
npm.search=Recherche npm.search=Recherche
user.profile.edit=Modifier user.profile.edit=Modifier

View File

@ -103,7 +103,6 @@ npm.update_index=プラグインインデックスを更新
npm.list_plugins=プラグイン一覧 npm.list_plugins=プラグイン一覧
npm.disable_session=セッション中にプラグインを無効にしました npm.disable_session=セッション中にプラグインを無効にしました
npm.enable_session=セッション中にプラグインを有効にしました npm.enable_session=セッション中にプラグインを有効にしました
npm.help=ヘルプ
npm.search=検索 npm.search=検索
user.profile.edit=編集 user.profile.edit=編集

View File

@ -103,7 +103,6 @@ npm.update_index=플러그인 인덱스 업데이트
npm.list_plugins=플러그인 목록 npm.list_plugins=플러그인 목록
npm.disable_session=현재 세션에서 플러그인을 비활성화합니다. npm.disable_session=현재 세션에서 플러그인을 비활성화합니다.
npm.enable_session=현재 세션에서 플러그인을 활성화합니다. npm.enable_session=현재 세션에서 플러그인을 활성화합니다.
npm.help=도움말
npm.search=검색 npm.search=검색
user.profile.edit=수정 user.profile.edit=수정

View File

@ -103,7 +103,6 @@ npm.update_index=Обновить индекс плагинов
npm.list_plugins=Список плагинов npm.list_plugins=Список плагинов
npm.disable_session=Отключить плагины для текущей сессии npm.disable_session=Отключить плагины для текущей сессии
npm.enable_session=Включить плагины для текущей сессии npm.enable_session=Включить плагины для текущей сессии
npm.help=Помощь
npm.search=Поиск npm.search=Поиск
user.profile.edit=Редактировать user.profile.edit=Редактировать

View File

@ -103,7 +103,6 @@ npm.update_index=更新插件索引
npm.list_plugins=插件列表 npm.list_plugins=插件列表
npm.disable_session=当前会话停用插件 npm.disable_session=当前会话停用插件
npm.enable_session=当前会话启用插件 npm.enable_session=当前会话启用插件
npm.help=帮助
npm.search=搜索 npm.search=搜索
user.profile.edit=修改 user.profile.edit=修改

View File

@ -103,7 +103,6 @@ npm.update_index=更新插件索引
npm.list_plugins=插件列表 npm.list_plugins=插件列表
npm.disable_session=當前會話停用插件 npm.disable_session=當前會話停用插件
npm.enable_session=當前會話啟用插件 npm.enable_session=當前會話啟用插件
npm.help=幫助
npm.search=搜索 npm.search=搜索
user.profile.edit=修改 user.profile.edit=修改

View File

@ -103,7 +103,6 @@ npm.update_index=更新插件索引
npm.list_plugins=插件列表 npm.list_plugins=插件列表
npm.disable_session=当前会话停用插件 npm.disable_session=当前会话停用插件
npm.enable_session=当前会话启用插件 npm.enable_session=当前会话启用插件
npm.help=帮助
npm.search=搜索 npm.search=搜索
user.profile.edit=修改 user.profile.edit=修改

View File

@ -7,10 +7,10 @@ log.error=错误错了
log.success=成功达成 log.success=成功达成
liteyuki.restart=重新开始 liteyuki.restart=重新开始
liteyuki.restart_now=立即重 liteyuki.restart_now=立即重
liteyuki.update_restart=更完成,你可以{RESTART}或稍后手动重启以应用这些 liteyuki.update_restart=更完成,你可以{RESTART}或稍后手动重开来开启这些新的法术
liteyuki.current_config=当前构建来袭 liteyuki.current_config=当前构建来袭
liteyuki.static_config=静态设置 liteyuki.static_config=规则设置
liteyuki.stored_config=存储的神秘宝藏 liteyuki.stored_config=存储的神秘宝藏
liteyuki.config_set_success=配置项 {KEY}={VAL} 非常有趣地设定成功 liteyuki.config_set_success=配置项 {KEY}={VAL} 非常有趣地设定成功
liteyuki.stats.group=群组 liteyuki.stats.group=群组
@ -54,23 +54,23 @@ main.monitor.cpu=中国药科大学
main.monitor.memory=回忆 main.monitor.memory=回忆
main.monitor.swap=换个地方 main.monitor.swap=换个地方
main.monitor.disk=神秘碟片 main.monitor.disk=神秘碟片
main.monitor.usage=使用 main.monitor.usage=使用
main.monitor.total= main.monitor.total=
main.monitor.used=已经被用 main.monitor.used=已经被用
main.monitor.free=魔法保护中 main.monitor.free=魔法保护中
data_manager.migrate_success=数据模型{NAME}成功变身 data_manager.migrate_success=数据模型{NAME}成功变身
npm.loaded_plugins=魔法插件已经装载 npm.loaded_plugins=魔法插件已经装载
npm.total=总 {TOTAL} 件奇怪的魔法 npm.total=总 {TOTAL} 件奇怪的魔法
npm.help= npm.help=助我一臂之力
npm.usage=使用法术 npm.usage=使用法术
npm.description=描述 npm.description=说一说
npm.disable=关闭 npm.disable=停一停
npm.disable_global=全球关闭 npm.disable_global=全球都停
npm.enable=开启 npm.enable=用一用
npm.enable_global=全球开启 npm.enable_global=全球都用
npm.install= npm.install=装一
npm.uninstall=解除魔法 npm.uninstall=解除魔法
npm.installing=正在释放{name}的魔力 npm.installing=正在释放{name}的魔力
npm.cannot_uninstall=无法解除 npm.cannot_uninstall=无法解除
@ -91,9 +91,9 @@ npm.plugin_already_installed={NAME}已经附身,请勿重复释放
npm.author=法师 npm.author=法师
npm.homepage=魔法门 npm.homepage=魔法门
npm.pypi=PyPI npm.pypi=PyPI
npm.next_page=前进 npm.next_page==进!
npm.prev_page=后退 npm.prev_page=撤!
npm.update= npm.update=新
npm.plugin_cannot_be_toggled={NAME}咒语无法变化状态 npm.plugin_cannot_be_toggled={NAME}咒语无法变化状态
npm.plugin_already={NAME}已经是{STATUS}状态,无需再次操作 npm.plugin_already={NAME}已经是{STATUS}状态,无需再次操作
npm.toggle_failed=咒语 {NAME} {STATUS} 失败:{ERROR} npm.toggle_failed=咒语 {NAME} {STATUS} 失败:{ERROR}
@ -103,7 +103,6 @@ npm.update_index=更新法术索引
npm.list_plugins=咒语列表 npm.list_plugins=咒语列表
npm.disable_session=当前会话中的咒语被屏蔽 npm.disable_session=当前会话中的咒语被屏蔽
npm.enable_session=当前会话中的咒语被解除屏蔽 npm.enable_session=当前会话中的咒语被解除屏蔽
npm.help=帮助
npm.search=寻找黑暗中的宝藏 npm.search=寻找黑暗中的宝藏
user.profile.edit=改变命运 user.profile.edit=改变命运
@ -145,15 +144,16 @@ status.cpu=中国药科大学
status.memory=回忆 status.memory=回忆
status.swap=换个地方 status.swap=换个地方
status.disk=神秘碟片 status.disk=神秘碟片
status.usage=使用 status.usage=使用
status.total= status.total=
status.used=已经被用掉了 status.used=已经被用掉了
status.free=魔法保护中 status.free=魔法保护中
status.runtime=时间流逝 status.runtime=时间流逝
status.days=天 status.days=
status.hours=小时 status.hours=小时
status.minutes=分钟 status.minutes=分钟
status.seconds=秒 status.seconds=秒钟
status.cores=核心 status.cores=精髓
status.threads=线程 status.threads=螺纹
status.process=进程 status.process=工序
status.description=轻雪秘法展示塔

View File

@ -1,159 +1,159 @@
language.name=文言 language.name=文言
log.debug=觀其調 log.debug=试言
log.info=見其訊 log.info=讯文
log.warning=告之懼 log.warning=警示
log.error=惡之誤 log.error=查误
log.success=喜之 log.success=
liteyuki.restart=復其初 liteyuki.restart=复启
liteyuki.restart_now=即其初 liteyuki.restart_now=即复启
liteyuki.update_restart=更新既成,可{RESTART}或稍後手動復始以行是更新 liteyuki.update_restart=新服既成,或{RESTART}于此,或待后躬行
liteyuki.current_config=當前設之如左 liteyuki.current_config=今规制如左
liteyuki.static_config=靜態設之 liteyuki.static_config=机置规制
liteyuki.stored_config=存之設也 liteyuki.stored_config=所贮规制
liteyuki.config_set_success=設之 {KEY}={VAL} 成焉 liteyuki.config_set_success=乃令规制 {KEY} 为 {VAL} 而成焉
liteyuki.stats.group= liteyuki.stats.group=
liteyuki.stats.user=友 liteyuki.stats.user=友
liteyuki.stats.plugin= liteyuki.stats.plugin=
liteyuki.stats.sent= liteyuki.stats.sent=即传
liteyuki.stats.received=受 liteyuki.stats.received=
liteyuki.stats.run_time=進行時 liteyuki.stats.run_time=所启时分
liteyuki.stats.groups=羣 liteyuki.stats.groups=羣
liteyuki.stats.friends=友 liteyuki.stats.friends=友
liteyuki.stats.plugins= liteyuki.stats.plugins=
liteyuki.image_mode_on=開云標示式圖之術 liteyuki.image_mode_on=圖之術
liteyuki.image_mode_off=閉云標示式圖之術 liteyuki.image_mode_off=圖之術
liteyuki.invalid_command=無其可爲之語也 {TEXT} liteyuki.invalid_command=彼 {TEXT} 之言无所指
liteyuki.reload_resources=重載資 liteyuki.reload_resources=复誊件资
liteyuki.list_resources=資列表 liteyuki.list_resources=件资
liteyuki.reload_resources_success=資重載成,資數 {NUM} 也 liteyuki.reload_resources_success=件资所誊即成,其数有 {NUM}
liteyuki.loaded_resources=載資 {NUM},優先之次是 liteyuki.loaded_resources=誊件资 {NUM} 而循优先之次
liteyuki.unloaded_resources=資未載 liteyuki.unloaded_resources=件资已去
liteyuki.load_resource_success=資 {NAME} 載 liteyuki.load_resource_success=件资曰 {NAME} 者,方誊成
liteyuki.unload_resource_success=資 {NAME} 拔 liteyuki.unload_resource_success=件资曰 {NAME} 者,方去也
liteyuki.load_resource_failed=資 {NAME} 載失 liteyuki.load_resource_failed=件资曰 {NAME} 者,无以誊
liteyuki.unload_resource_failed=資 {NAME} 拔失 liteyuki.unload_resource_failed=件资曰 {NAME} 者,无以去
liteyuki.resource_not_found=資 {NAME} 不存或無爲 liteyuki.resource_not_found=件资曰 {NAME} 者,不可求
liteyuki.resource_already_loaded=資 {NAME} 已載,勿復 liteyuki.resource_already_loaded=件资曰 {NAME} 者,方誊
liteyuki.resource_already_unloaded=資 {NAME} 已拔,勿復 liteyuki.resource_already_unloaded=件资曰 {NAME} ,方去
liteyuki.need_reload=請{BTN}以行是更 liteyuki.need_reload=谨{BTN}复誊以
liteyuki.dont_repeat=勿 liteyuki.dont_repeat=勿
liteyuki.change_priority_success=資 {NAME} 優先成 liteyuki.change_priority_success=方变件资曰 {NAME} 者优先之次
liteyuki.change_priority_failed=資 {NAME} 優先不成 liteyuki.change_priority_failed=件资曰 {NAME} 者优先之次无以变
liteyuki.group_already=羣 {GROUP} 之狀已是 {STATUS} ,勿再 liteyuki.group_already=羣号曰 {GROUP} 者,已 {STATUS} ,勿复
liteyuki.group_success=羣 {GROUP} {STATUS} 成 liteyuki.group_success=羣号曰 {GROUP} 者,方 {STATUS} 成
liteyuki.permission_denied=不及也 liteyuki.permission_denied=不及也
liteyuki.config_remove_success=設 {KEY} 移 liteyuki.config_remove_success=规制 {KEY} 方去也
main.current_language=當前言 {LANG} 爲是 main.current_language=往复四海皆蛮夷,惟我华夏泱泱。行见闻之广,无可匹敌。故而此番作 {LANG} 之文,以彰圣朝大德。
main.enable_webdash=啟網监塔: {URL} main.enable_webdash=令 {URL} 为遥讯监司
main.monitor.title=輕雪監塔 main.monitor.title=轻雪监司
main.monitor.description=輕雪機之監塔 main.monitor.description=工造机巧曰轻雪者,今有司赏监察之大德,为其置一新衙,曰:轻雪监司
main.monitor.cpu=中药科大学 main.monitor.cpu=央核之机
main.monitor.memory= main.monitor.memory=机置所存
main.monitor.swap=易 main.monitor.swap=之区
main.monitor.disk= main.monitor.disk=贮形长存
main.monitor.usage=用 main.monitor.usage=
main.monitor.total= main.monitor.total=
main.monitor.used=所用 main.monitor.used=
main.monitor.free=閑也 main.monitor.free=
data_manager.migrate_success=模{NAME}易 data_manager.migrate_success=卷型曰 {NAME} 者,方易成
npm.loaded_plugins=載插 npm.loaded_plugins=所誊件
npm.total= {TOTAL} npm.total= {TOTAL}
npm.help= npm.help=
npm.usage=法用 npm.usage=
npm.description=其形 npm.description=
npm.disable= npm.disable=
npm.disable_global=宇斷 npm.disable_global=皆去
npm.enable= npm.enable=
npm.enable_global=宇啟 npm.enable_global=皆用
npm.install= npm.install=
npm.uninstall= npm.uninstall=
npm.installing=法 {NAME} 裝中 npm.installing=乃置 {NAME}
npm.cannot_uninstall=法遣 npm.cannot_uninstall=未消
npm.no_description=无 npm.no_description=无
npm.store_update_success=插庫成 npm.store_update_success=件阁方新
npm.store_update_failed=插庫敗 npm.store_update_failed=件阁无以新
npm.search_result=索 npm.search_result=索
npm.search_no_result=無索 npm.search_no_result=未果
npm.too_many_results=之多,{HIDE_NUM} 無現,審爲 npm.too_many_results=所得之多,为数 {HIDE_NUM} 尽隐,求则号精
npm.install_success={NAME} npm.install_success={NAME} 方置
npm.install_failed={NAME} 敗,語目以知,不知求于{HOMEPAGE} npm.install_failed={NAME} 无以置,求讯文观其始末,未解则取 {HOMEPAGE} 而从师
npm.uninstall_success={NAME} 遣,明{HOMEPAGE} npm.uninstall_success={NAME} 方消,次复启以毕功
npm.uninstall_failed={NAME} npm.uninstall_failed={NAME} 无以消
npm.load_failed={NAME} 載,求于{HOMEPAGE} npm.load_failed={NAME} 无以誊,或求讯文观始末,或查所依偏离否,未解则取{HOMEPAGE} 而从师
npm.plugin_not_found=無 {NAME} ,揭揭庫爲 npm.plugin_not_found=阁内无件曰 {NAME} 者
npm.plugin_not_installed={NAME} 未 npm.plugin_not_installed={NAME} 未
npm.plugin_already_installed={NAME} 已,勿復法 npm.plugin_already_installed={NAME} 已置,勿复行
npm.author= npm.author=
npm.homepage=揭 npm.homepage=揭
npm.pypi=PyPI npm.pypi=磐蛇件阁
npm.next_page=後 npm.next_page=进
npm.prev_page=前 npm.prev_page=返
npm.update=兵 npm.update=新
npm.plugin_cannot_be_toggled={NAME} 不兵 npm.plugin_cannot_be_toggled=不可变易件曰 {NAME} 者
npm.plugin_already=插 {NAME} 之狀已是 {STATUS} ,勿再行 npm.plugin_already=件曰 {NAME} 者,乃 {STATUS} ,勿复行
npm.toggle_failed=插 {NAME} {STATUS} 敗:{ERROR} npm.toggle_failed=因 {ERROR} 所误,良机尽失,{NAME} 无以 {STATUS}
npm.toggle_success=插 {NAME} {STATUS} 成 npm.toggle_success=件曰 {NAME} 者,方 {STATUS} 成
npm.page=第{PAGE}/{TOTAL} 節 npm.page=页第 {PAGE} 之于 {TOTAL}
npm.update_index=兵索 npm.update_index=阁引
npm.list_plugins=插目 npm.list_plugins=件目
npm.disable_session=在次斷 npm.disable_session=是处去
npm.enable_session=在次啟 npm.enable_session=是处用
npm.help=救
npm.search=索 npm.search=索
user.profile.edit= user.profile.edit=
user.profile.set= user.profile.set=
user.profile_manager.query=汝之訊 {ATTR} 爲 {VALUE} 也 user.profile_manager.query=君 {ATTR} 为 {VALUE}
user.profile_manager.set=汝之訊 {ATTR} 已設 {VALUE} 也 user.profile_manager.set=君 {ATTR} 設为 {VALUE} 也
user.profile.settings=設 user.profile.settings=設
user.profile.info= user.profile.info=私讯
user.profile.lang= user.profile.lang=语文
user.profile.lang.desc=言設 user.profile.lang.desc=凡语者,乃语言之所谓,掌人之音及思之习;凡文者,乃文字之所指,操人之德及行之法
user.profile.timezone= user.profile.timezone=时区
user.profile.timezone.desc=時設 user.profile.timezone.desc=所谓时区者,郑和西洋之学所成,乃由英吉利某天监司衙始,分天下为十二时辰之区,以令四海之时得以各循所便
user.profile.theme= user.profile.theme=色泽
user.profile.theme.desc=題設 user.profile.theme.desc=昔《周易》乃传阴阳之术,各色纷发而共赏诸方,乃决次色之设,为爱一方也
user.profile.location=所 user.profile.location=
user.profile.location.desc=所設 user.profile.location.desc=君子之所常居,道合山水之学。昔孟母三迁择邻里,为人有道成功名。
user.profile.nickname= user.profile.nickname=字号
user.profile.nickname.desc=設之之名 user.profile.nickname.desc=无名之辈无登大雅之堂,王侯将相皆各有名号,见此字号而辨君子。
user.profile.input_value=求 {ATTR} 之量 user.profile.input_value=求 {ATTR} 之量
user.profile.set_success={ATTR} 成 {VALUE} 也 user.profile.set_success=君 {ATTR} 方设 {VALUE} 而成
user.profile.set_failed={ATTR} 失,問求也 user.profile.set_failed={ATTR} 无以设,子阙否
rpm.move_up= rpm.move_up=右移
rpm.move_down= rpm.move_down=左移
rpm.move_top= rpm.move_top=归首
weather.city_not_found=城 {CITY} 不存也 weather.city_not_found=无城谓 {CITY} 者
weather.weather_not_found=城 {CITY} 之氣也不存也 weather.weather_not_found=无{CITY}城之天象
weather.no_key=未設氣金鑰也,爲請增于設也 weather.no_key=无天监司遥讯之玥,请于设增
status.friends=友 status.friends=友
status.groups=羣 status.groups=羣
status.plugins= status.plugins=
status.resources= status.resources=件资
status.bots= status.bots=工造机巧
status.message_sent=遣訊 status.message_sent=方传
status.message_received=受 status.message_received=
status.cpu=中药科大学 status.cpu=央核之机
status.memory= status.memory=机置所存
status.swap=易 status.swap=之区
status.disk= status.disk=贮形长存
status.usage=用 status.usage=
status.total= status.total=
status.used=所用 status.used=
status.free= status.free=
status.runtime= status.runtime=所启时分
status.days=日 status.days=日
status.hours= status.hours=小时
status.minutes=分 status.minutes=分
status.seconds=秒 status.seconds=秒
status.cores=核 status.cores=机轮核数
status.threads=縷 status.threads=机线条量
status.process=程 status.process=机行轨度
status.description=轻雪端司

View File

@ -1,3 +1,3 @@
name: 轻雪语言资源包 name: 轻雪语言资源包
description: 全局的语言资源包,不可卸载 description: 全局的语言资源包,不可卸载
version: 2024.4.26 version: 2024.7.14