Merge pull request #49 from EillesWan/main

完善翻译文本 & 优化状态缓存
This commit is contained in:
Snowykami 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",
)
nonebot.logger.info("Liteyuki Reload is enable, watching for file changes...")
nonebot.logger.info("Liteyuki Reload enabled, watching for file changes...")
class CodeModifiedHandler(FileSystemEventHandler):

View File

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

View File

@ -17,7 +17,7 @@ status_alc = on_alconna(
Subcommand(
"process",
alias={"proc", "p", "进程"},
)
),
),
)
@ -25,17 +25,15 @@ status_alc = on_alconna(
@status_alc.handle()
async def _(event: T_MessageEvent, bot: T_Bot):
ulang = get_user_lang(event_utils.get_user_id(event))
if ulang.lang_code in status_card_cache:
image = status_card_cache[ulang.lang_code]
else:
image = await generate_status_card(
if ulang.lang_code not in status_card_cache.keys():
status_card_cache[ulang.lang_code] = await generate_status_card(
bot=await get_bots_data(),
hardware=await get_hardware_data(),
liteyuki=await get_liteyuki_data(),
lang=ulang.lang_code,
bot_id=bot.self_id,
use_cache=True
)
image = status_card_cache[ulang.lang_code]
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.disable_session=Plugin für aktuelle Sitzung deaktivieren
npm.enable_session=Plugin für aktuelle Sitzung aktivieren
npm.help=Hilfe
npm.search=Suche
user.profile.edit=Bearbeiten

View File

@ -103,7 +103,6 @@ npm.update_index=Update Plugin Index
npm.list_plugins=Plugin List
npm.disable_session=Disable plugin for current session
npm.enable_session=Enable plugin for current session
npm.help=Help
npm.search=Search
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.disable_session=Desactivar sesión actual
npm.enable_session=Activar sesión actual
npm.help=Ayuda
npm.search=Búsqueda
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.disable_session=Désactivation des plugins pour cette session
npm.enable_session=Activation des plugins pour cette session
npm.help=Aide
npm.search=Recherche
user.profile.edit=Modifier

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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