mirror of
https://github.com/krau/SaveAny-Bot.git
synced 2026-08-29 04:06:42 +08:00
The #228 progress redesign dropped the total size that the old batch progress message displayed. Add a TotalSize data field (actual known sizes, formatted via dlutil.FormatSize) to the batch status header template in both locales.
439 lines
27 KiB
YAML
439 lines
27 KiB
YAML
lifetime:
|
||
initing: 正在启动
|
||
initfailed: 初始化失败
|
||
exiting: 正在退出
|
||
user_login_failed: "用户登录失败: {{.Error}}"
|
||
cleaning_cache: "正在清理缓存 {{.Path}}"
|
||
bye: 已退出
|
||
config:
|
||
err:
|
||
invalid_cache_dir: "无效的缓存目录: {{.Path}},请检查配置文件"
|
||
duplicate_storage_name: "存储名称 '{{.Name}}' 重复,请检查配置文件"
|
||
err:
|
||
get_workdir_failed: "获取工作目录失败: {{.Error}}"
|
||
get_cache_abs_path_failed: "获取缓存绝对路径失败: {{.Error}}"
|
||
clean_cache_failed: "清理缓存失败: {{.Error}}"
|
||
parser:
|
||
plugin:
|
||
load_failed: 加载解析器插件失败
|
||
loaded_dir: 解析器插件已加载
|
||
bot:
|
||
msg:
|
||
help_text_fmt: |
|
||
Save Any Bot - 转存你的 Telegram 文件
|
||
版本: %s , 提交: %s
|
||
|
||
命令:
|
||
/start - 开始使用
|
||
/help - 显示帮助
|
||
/silent - 开关静默模式
|
||
/storage - 设置默认存储位置
|
||
/save [自定义文件名] - 保存文件
|
||
/dl <链接1> <链接2> ... - 下载给定链接的文件
|
||
/import <存储名> <目录路径> [频道ID] [过滤器] - 从存储端导入文件到 Telegram
|
||
/dir - 管理存储目录
|
||
/rule - 管理规则
|
||
/config - 修改配置
|
||
/fnametmpl - 设置文件自定义命名模板
|
||
/parser - 管理解析器插件
|
||
/task - 管理任务队列
|
||
/watch - 监听聊天并自动保存 (UserBot)
|
||
/unwatch - 取消监听聊天 (UserBot)
|
||
/lswatch - 列出正在监听的聊天 (UserBot)
|
||
/syncpeers - 同步对话列表 (UserBot)
|
||
/update - 检查更新并升级
|
||
|
||
使用帮助: https://sabot.unv.app/usage
|
||
cmd:
|
||
start: "开始使用"
|
||
silent: "切换静默模式"
|
||
storage: "设置默认存储端"
|
||
dir: "管理存储文件夹"
|
||
rule: "管理自动存储规则"
|
||
save: "保存文件"
|
||
dl: "下载给定链接的文件"
|
||
aria2dl: "使用 Aria2 下载给定链接的文件"
|
||
ytdlp: "使用 yt-dlp 下载视频/音频"
|
||
import: "从存储端导入文件到 Telegram"
|
||
transfer: "在存储端之间传输文件"
|
||
task: "管理任务队列"
|
||
cancel: "取消任务"
|
||
watch: "监听聊天(UserBot)"
|
||
unwatch: "取消监听聊天(UserBot)"
|
||
lswatch: "列出监听的聊天(UserBot)"
|
||
syncpeers: "同步对话列表(UserBot)"
|
||
config: "修改配置"
|
||
fnametmpl: "设置文件命名模板"
|
||
help: "显示帮助"
|
||
parser: "管理解析器"
|
||
update: "检查更新"
|
||
save_help_text: |
|
||
使用方法:
|
||
|
||
1. 使用该命令回复要保存的文件, 可选文件名参数.
|
||
示例:
|
||
/save custom_file_name.mp4
|
||
|
||
2. 设置默认存储后, 发送 /save <频道ID/用户名> <消息ID范围> 来批量保存文件. 遵从存储规则, 若未匹配到任何规则则使用默认存储.
|
||
示例:
|
||
/save @acherkrau 114-514
|
||
watch_help_text: |
|
||
使用 /watch 命令监听一个聊天的消息, 并自动保存到默认存储中, 遵从存储规则.
|
||
|
||
命令语法:
|
||
/watch <chat_id> [filter]
|
||
|
||
参数:
|
||
- <chat_id>: 聊天的 ID 或用户名
|
||
- [filter]: 可选, 格式为 过滤器类型:表达式 , 所有支持类型的过滤器请查看文档
|
||
|
||
命令示例:
|
||
/watch -1002229835658 msgre:.*plana.*
|
||
|
||
这将监听 ID 为 -1002229835658 的聊天, 并转存所有包含 "plana" 的媒体消息
|
||
common:
|
||
cancel_button_text: "取消任务"
|
||
error_invalid_regex: "无效的正则表达式: {{.Error}}"
|
||
error_invalid_msg_id_range: "无效的消息ID范围: {{.Error}}"
|
||
error_invalid_id_or_username: "无效的ID或用户名: {{.Error}}"
|
||
error_get_messages_failed: "获取消息失败: {{.Error}}"
|
||
info_fetching_messages: "正在获取消息..."
|
||
error_no_messages_in_range: "没有找到指定范围内的消息"
|
||
error_no_savable_messages_in_range: "没有找到指定范围内的可保存消息"
|
||
error_build_storage_select_message_failed: "构建存储选择消息失败: {{.Error}}"
|
||
error_build_storage_select_keyboard_failed: "构建存储选择键盘失败: {{.Error}}"
|
||
info_found_files_select_storage: "找到 {{.Count}} 个文件, 请选择存储位置"
|
||
error_get_user_failed: "获取用户失败"
|
||
error_get_user_with_err_failed: "获取用户失败: {{.Error}}"
|
||
error_default_storage_not_set: "请先设置默认存储, 使用 /storage 命令"
|
||
error_no_available_storage: "无可用的存储"
|
||
error_get_storage_failed: "获取存储失败: {{.Error}}"
|
||
prompt_select_default_storage: "请选择要设为默认的存储位置"
|
||
error_data_expired: "数据已过期或无效"
|
||
error_task_add_failed: "任务添加失败: {{.Error}}"
|
||
info_task_added: "任务已添加"
|
||
info_batch_tasks_added: "已添加批量任务, 共 {{.Count}} 个文件"
|
||
info_batch_tasks_added_with_skipped: "已添加批量任务, 共 {{.Count}} 个文件\n已跳过同名文件:\n{{.Skipped}}"
|
||
info_all_conflict_files_skipped: "全部同名文件已跳过:\n{{.Skipped}}"
|
||
info_conflict_files_skipped: "已跳过同名文件:\n{{.Skipped}}"
|
||
error_task_create_failed: "任务创建失败: {{.Error}}"
|
||
error_get_dir_failed: "获取目录失败: {{.Error}}"
|
||
prompt_select_dir: "请选择要存储到的目录"
|
||
prompt_select_conflict_strategy: "检测到同名文件, 请选择保存策略:\n{{.Files}}"
|
||
prompt_conflict_more_files: "...还有 {{.Count}} 个文件"
|
||
button_conflict_rename: "重命名"
|
||
button_conflict_overwrite: "覆盖"
|
||
button_conflict_skip: "跳过"
|
||
prompt_select_default_dir: "请选择要保存到的默认文件夹"
|
||
info_default_storage_set: "已将默认存储位置设为: {{.Name}}"
|
||
info_default_storage_with_dir_set: "已将默认存储位置设为: {{.Name}}:/{{.Dir}}"
|
||
error_get_user_info_failed: "获取用户信息失败: {{.Error}}"
|
||
error_update_user_info_failed: "更新用户信息失败: {{.Error}}"
|
||
info_silent_mode_on: "已开启静默模式"
|
||
info_silent_mode_off: "已关闭静默模式"
|
||
error_get_file_failed: "获取文件失败: {{.Error}}"
|
||
info_fetching_file_info: "正在获取文件信息..."
|
||
error_no_savable_files_found: "没有找到可保存的文件"
|
||
error_parse_telegraph_path_failed: "解析 telegraph 路径失败: {{.Error}}"
|
||
info_fetching_telegraph_page: "正在获取 telegraph 页面..."
|
||
error_get_telegraph_page_failed: "获取 telegraph 页面失败: {{.Error}}"
|
||
error_no_images_in_telegraph_page: "在 telegraph 页面中未找到图片"
|
||
error_build_dir_select_keyboard_failed: "构建目录选择键盘失败: {{.Error}}"
|
||
error_no_permission: |
|
||
您不在白名单中, 无法使用此 Bot.
|
||
您可以部署自己的实例: https://github.com/krau/SaveAny-Bot
|
||
save:
|
||
error_invalid_id_or_username: "无效的ID或用户名: {{.Error}}"
|
||
watch:
|
||
error_filter_format_invalid: "过滤器格式错误, 请使用 <过滤器类型>:<表达式>"
|
||
error_filter_type_unsupported: "不支持的过滤器类型, 请参阅文档"
|
||
error_watch_chat_failed: "监听聊天失败: {{.Error}}"
|
||
info_watch_chat_started: "已开始监听聊天: {{.Chat}}"
|
||
info_already_watching_chat: "已经在监听此聊天"
|
||
info_watch_list_empty: "当前没有监听任何聊天"
|
||
info_watch_list_header: "当前监听的聊天:\n"
|
||
info_watch_list_filter_prefix: " (过滤器: "
|
||
error_unwatch_no_chat_provided: "请提供要取消监听的聊天ID或用户名"
|
||
error_unwatch_chat_failed: "取消监听聊天失败: {{.Error}}"
|
||
info_watch_chat_stopped: "已取消监听聊天: {{.Chat}}"
|
||
tasks:
|
||
usage_cancel: "用法: /tasks cancel <task_id>"
|
||
usage: "用法: /tasks [running|queued|cancel <task_id>]"
|
||
cancel_failed: "取消任务失败: {{.Error}}"
|
||
cancel_requested_prefix: "已请求取消任务: "
|
||
running_empty: "当前没有正在运行的任务"
|
||
running_title: "当前正在运行的任务:"
|
||
total_prefix: "总数: {{.Count}}\n"
|
||
field_id: "ID: "
|
||
field_title: "名称: "
|
||
field_created: "创建时间: "
|
||
field_status: "状态: "
|
||
status_running: "运行中"
|
||
status_queued: "排队中"
|
||
status_cancel_requested: "已请求取消"
|
||
queued_empty: "当前没有排队中的任务"
|
||
queued_title: "当前排队中的任务:"
|
||
truncated_note: "...\n只显示前 10 个任务, 共 {{.Count}} 个任务"
|
||
info_added_to_queue_full: "已添加到任务队列\n文件名: {{.Filename}}\n当前排队任务数: {{.QueueLength}}"
|
||
info_added_to_queue_prefix: "已添加到任务队列\n"
|
||
info_filename_prefix: "文件名: "
|
||
info_queue_length_prefix: "\n当前排队任务数: "
|
||
rule:
|
||
error_get_user_rules_failed: "获取用户规则失败"
|
||
error_update_user_failed: "更新用户失败"
|
||
info_rule_mode_enabled: "已启用规则模式"
|
||
info_rule_mode_disabled: "已禁用规则模式"
|
||
error_invalid_rule_type: "无效的规则类型: {{.Type}}\n可用: {{.Available}}"
|
||
error_create_rule_failed: "创建规则失败"
|
||
info_create_rule_success: "创建规则成功"
|
||
prompt_provide_rule_id: "请提供规则ID"
|
||
error_invalid_rule_id: "无效的规则ID"
|
||
error_delete_rule_failed: "删除规则失败"
|
||
info_delete_rule_success: "删除规则成功"
|
||
help_usage: "使用方法: /rule <操作> <参数...>"
|
||
help_current_mode_enabled: "\n当前已启用规则模式"
|
||
help_current_mode_disabled: "\n当前已禁用规则模式"
|
||
help_available_ops: "\n\n可用操作:\n"
|
||
help_switch_suffix: " - 开关规则模式\n"
|
||
help_add_suffix: " <类型> <数据> <存储名> <路径> - 添加规则\n"
|
||
help_del_suffix: " <规则ID> - 删除规则\n"
|
||
help_preset_suffix: " <存储名> [基础路径] - 导入内置文件类型分类规则(视频/图片/音频/文档/压缩包)\n"
|
||
help_existing_rules_prefix: "\n当前已添加的规则:\n"
|
||
prompt_provide_storage_name: "请提供存储名称"
|
||
error_storage_not_found: "未找到存储: {{.Storage}}"
|
||
info_preset_imported: "已导入 {{.Count}} 条内置分类规则到存储 {{.Storage}}"
|
||
dir:
|
||
error_get_user_dirs_failed: "获取用户文件夹失败"
|
||
error_get_user_failed: "获取用户失败"
|
||
error_create_dir_failed: "创建文件夹失败"
|
||
info_create_dir_success: "文件夹添加成功"
|
||
error_invalid_dir_id: "文件夹ID无效"
|
||
error_delete_dir_failed: "删除文件夹失败"
|
||
info_delete_dir_success: "文件夹删除成功"
|
||
error_unknown_operation: "未知操作"
|
||
help_usage: "使用方法: /dir <操作> <参数...>"
|
||
help_available_ops: "\n\n可用操作:\n"
|
||
help_add_suffix: " <存储名> <路径> - 添加路径\n"
|
||
help_del_suffix: " <路径ID> - 删除路径\n"
|
||
help_add_example_prefix: "\n添加路径示例:\n"
|
||
help_add_example_cmd: "/dir add local1 path/to/dir"
|
||
help_del_example_prefix: "\n\n删除路径示例:\n"
|
||
help_del_example_cmd: "/dir del 3"
|
||
help_existing_dirs_prefix: "\n\n当前已添加的路径:\n"
|
||
button_default: "默认"
|
||
parser:
|
||
help_text: |
|
||
用法:
|
||
|
||
/parser install <回复一个文件> - 安装解析器
|
||
plugin_not_enabled: "解析器插件功能未启用"
|
||
prompt_reply_with_parser_file: "请回复一个包含解析器文件的消息"
|
||
error_no_valid_file_in_reply: "回复的消息不包含有效的文件"
|
||
error_wrong_file_type: "错误的文件类型"
|
||
error_file_too_large: "文件过大"
|
||
error_get_filename_failed: "无法获取文件名"
|
||
error_only_js_supported: "仅支持 .js 文件作为解析器"
|
||
error_download_file_failed: "文件下载失败: {{.Error}}"
|
||
error_install_plugin_failed: "插件安装失败: {{.Error}}"
|
||
info_install_plugin_success: "插件安装成功: {{.Name}}"
|
||
parse:
|
||
info_parsing: "正在解析..."
|
||
error_parse_text_failed: "解析文本失败: {{.Error}}"
|
||
error_build_storage_select_keyboard_failed: "构建存储选择键盘失败: {{.Error}}"
|
||
error_build_parsed_text_entity_failed: "构建解析文本实体失败: {{.Error}}"
|
||
info_link_prefix: "\n链接: "
|
||
info_author_prefix: "\n作者: "
|
||
info_description_prefix: "\n描述: "
|
||
info_file_count_prefix: "\n文件数量: "
|
||
info_total_size_prefix: "\n预计总大小: "
|
||
info_prompt_select_storage: "\n请选择存储位置"
|
||
telegraph:
|
||
error_build_storage_select_keyboard_failed: "构建存储选择键盘失败: {{.Error}}"
|
||
info_title_prefix: "标题: "
|
||
info_pic_count_prefix: "\n图片数量: "
|
||
info_prompt_select_storage: "\n请选择存储位置"
|
||
update:
|
||
error_version_var_invalid: "当前处于开发版本或版本信息注入失败: {{.Error}}"
|
||
error_check_latest_failed: "检测最新版本失败: {{.Error}}"
|
||
error_no_release_found: "没有找到版本信息"
|
||
info_major_upgrade_required: "检测到大版本更新: {{.Current}} -> {{.Latest}} , 请前往 GitHub 手动下载最新版本并查看迁移指南"
|
||
info_already_latest: "当前已经是最新版本: {{.Version}}"
|
||
info_new_version_in_docker: |-
|
||
发现新版本: {{.Latest}}
|
||
当前版本: {{.Current}}
|
||
发布时间: {{.PublishedAt}}
|
||
由于您正在使用 Docker 部署, 请自行在部署平台上执行更新命令
|
||
info_new_version_prompt_upgrade: |-
|
||
发现新版本: {{.Latest}}
|
||
当前版本: {{.Current}}
|
||
|
||
文件大小: {{.SizeMB}} MB
|
||
下载链接: {{.URL}}
|
||
发布时间: {{.PublishedAt}}
|
||
|
||
升级将重启 Bot , 是否升级?
|
||
info_upgrading_with_version: "正在升级中, 当前版本: {{.Current}}"
|
||
error_upgrade_failed: "升级失败: {{.Error}}"
|
||
info_upgrade_success: "已升级至版本 {{.Version}}\n若 Bot 未自动重启请手动启动"
|
||
button_upgrade: "升级"
|
||
config:
|
||
prompt_select_option: "请选择要配置的选项"
|
||
button_filename_strategy: "文件名策略"
|
||
button_conflict_strategy: "重名文件保存策略"
|
||
error_invalid_callback_data: "无效的回调数据"
|
||
error_invalid_template: "无效的模板, 请检查语法\n{{.Error}}"
|
||
info_filename_strategy_set: "已将文件名策略设置为: {{.Strategy}}"
|
||
info_conflict_strategy_set: "已将重名文件保存策略设置为: {{.Strategy}}"
|
||
prompt_select_filename_strategy: "请选择文件名策略, 当前策略: {{.Strategy}}"
|
||
prompt_select_conflict_strategy: "请选择重名文件保存策略, 当前策略: {{.Strategy}}"
|
||
conflict_strategy_rename: "始终重命名"
|
||
conflict_strategy_ask: "每次询问"
|
||
conflict_strategy_overwrite: "始终覆盖"
|
||
conflict_strategy_skip: "始终跳过"
|
||
fnametmpl_help: |-
|
||
使用该命令设置文件名模板, 示例:
|
||
/fnametmpl 图片_{{"{{.msgid}}"}}_{{"{{.msgdate}}"}}.jpg
|
||
|
||
可用变量:
|
||
- {{"{{.msgid}}"}}: 消息ID
|
||
- {{"{{.msgtags}}"}}: 消息中的标签, 将以下划线分隔输出
|
||
- {{"{{.msggen}}"}}: 根据消息生成的文件名
|
||
- {{"{{.msgdate}}"}}: 消息日期, 格式 YYYY-MM-DD_HH-MM-SS
|
||
- {{"{{.msgraw}}"}}: 消息的原始文本内容 (不经任何处理)
|
||
- {{"{{.origname}}"}}: 媒体的原始文件名 (如果有)
|
||
- {{"{{.chatid}}"}}: 消息的聊天ID
|
||
|
||
模板仅在文件名策略设置为 '自定义模板' 时生效,
|
||
且模板解析错误时会回退到默认文件名
|
||
info_template_updated: "已更新文件名模板"
|
||
info_current_template_prefix: "当前模板: {{.Template}}"
|
||
dl:
|
||
usage: "用法: /dl <链接1> <链接2> ..."
|
||
error_no_valid_links: "没有有效的链接可供下载"
|
||
info_files_select_storage: "共 {{.Count}} 个文件, 请选择存储位置"
|
||
ytdlp:
|
||
usage: "用法: /ytdlp [选项] <URL1> [URL2] ...\n示例:\n /ytdlp https://example.com/video\n /ytdlp --format best https://example.com/video\n /ytdlp --extract-audio --audio-format mp3 https://example.com/video"
|
||
error_no_valid_urls: "没有有效的 URL"
|
||
info_urls_select_storage: "共 {{.Count}} 个链接, 请选择存储位置"
|
||
info_downloading: "正在通过 yt-dlp 下载..."
|
||
error_download_failed: "yt-dlp 下载失败: {{.Error}}"
|
||
transfer:
|
||
usage: |
|
||
用法: /transfer <source_storage>:/<source_path> [filter]
|
||
示例:
|
||
/transfer local1:/downloads
|
||
/transfer alist1:/media/photos
|
||
/transfer webdav1:/files ".*\.mp4$"
|
||
error_invalid_source: "源路径格式无效,应为: storage_name:/path"
|
||
error_invalid_target: "目标路径格式无效,应为: storage_name:/path"
|
||
error_storage_not_found: "存储端 '{{.StorageName}}' 不存在或您无权访问: {{.Error}}"
|
||
error_storage_not_listable: "存储端 '{{.StorageName}}' 不支持列举文件功能"
|
||
error_storage_not_readable: "存储端 '{{.StorageName}}' 不支持读取文件功能"
|
||
error_target_not_found: "目标存储端 '{{.StorageName}}' 不存在或您无权访问: {{.Error}}"
|
||
info_fetching_files: "正在获取文件列表..."
|
||
error_list_files_failed: "获取文件列表失败: {{.Error}}"
|
||
error_invalid_regex: "正则表达式无效: {{.Error}}"
|
||
error_no_files_to_transfer: "目录中没有可传输的文件"
|
||
error_add_task_failed: "添加任务失败: {{.Error}}"
|
||
info_task_added: "已添加 {{.Count}} 个文件到传输队列\n总大小: {{.SizeMB}} MB\n任务 ID: {{.TaskID}}"
|
||
start_stats: "总文件数: {{.Count}}\n总大小: {{.SizeMB}} MB"
|
||
info_files_select_storage: "共 {{.Count}} 个文件 (总大小: {{.SizeMB}} MB),请选择目标存储位置"
|
||
error_build_storage_select_keyboard_failed: "构建存储选择键盘失败: {{.Error}}"
|
||
cancel:
|
||
usage: "用法: /cancel <task_id>"
|
||
error_cancel_failed: "取消任务失败: {{.Error}}"
|
||
info_cancel_requested: "已请求取消任务: {{.TaskID}}"
|
||
info_cancelling_task: "正在取消任务..."
|
||
media_group:
|
||
info_saving_files: "正在保存文件..."
|
||
error_build_storage_select_keyboard_failed: "构建存储选择键盘失败: {{.Error}}"
|
||
info_group_found_files_select_storage: "共 {{.Count}} 个文件, 请选择存储位置"
|
||
storage:
|
||
info_filename_prefix: "文件名: "
|
||
info_prompt_select_storage: "\n请选择存储位置"
|
||
progress:
|
||
batch_status_header: "<b>📦 正在处理</b>\n\n文件:<code>{{.Total}}</code> | 总大小:<code>{{.TotalSize}}</code>\n状态:✅ <code>{{.Completed}}</code> | 📥 <code>{{.Downloaded}}</code> | ⏳ <code>{{.Waiting}}</code>\n总速度:⬇️ <code>{{.DownloadSpeed}}</code> | ⬆️ <code>{{.UploadSpeed}}</code>"
|
||
batch_item_downloading: "<blockquote><b>⬇️ {{.Index}}/{{.Total}} 下载中</b>\n<code>{{.Name}}</code>\n{{.Bar}} <code>{{.Progress}}%</code>\n速度:<code>{{.Speed}}</code>\n大小:<code>{{.Current}}</code> / <code>{{.Size}}</code></blockquote>"
|
||
batch_item_downloading_unknown: "<blockquote><b>⬇️ {{.Index}}/{{.Total}} 下载中</b>\n<code>{{.Name}}</code>\n速度:<code>{{.Speed}}</code>\n大小:<code>{{.Current}}</code> / 未知</blockquote>"
|
||
batch_item_transferring: "<blockquote><b>↕️ {{.Index}}/{{.Total}} 传输中</b>\n<code>{{.Name}}</code>\n{{.Bar}} <code>{{.Progress}}%</code>\n速度:<code>{{.Speed}}</code>\n大小:<code>{{.Current}}</code> / <code>{{.Size}}</code></blockquote>"
|
||
batch_item_transferring_unknown: "<blockquote><b>↕️ {{.Index}}/{{.Total}} 传输中</b>\n<code>{{.Name}}</code>\n速度:<code>{{.Speed}}</code>\n大小:<code>{{.Current}}</code> / 未知</blockquote>"
|
||
batch_item_uploading: "<blockquote><b>⬆️ {{.Index}}/{{.Total}} 上传中</b>\n<code>{{.Name}}</code>\n{{.Bar}} <code>{{.Progress}}%</code>\n速度:<code>{{.Speed}}</code>\n大小:<code>{{.Current}}</code> / <code>{{.Size}}</code></blockquote>"
|
||
batch_item_retrying: "<blockquote><b>🔁 {{.Index}}/{{.Total}} 上传重试</b>\n<code>{{.Name}}</code>\n{{.Bar}} <code>{{.Progress}}%</code>\n重试次数:<code>{{.Attempt}}/{{.Limit}}</code>\n失败前速度:<code>{{.Speed}}</code>\n大小:<code>{{.Current}}</code> / <code>{{.Size}}</code>\n原因:<code>{{.Reason}}</code></blockquote>"
|
||
batch_item_confirming: "<blockquote><b>⏳ {{.Index}}/{{.Total}} 等待中</b>\n<code>{{.Name}}</code>\n{{.Bar}} <code>{{.Progress}}%</code>\n<i>文件已上传,正在等待远端确认</i></blockquote>"
|
||
batch_summary_hidden_active: "🔄 另有 <code>{{.Count}}</code> 个文件正在处理"
|
||
batch_summary_confirming: "☁️ 已上传,等待整组发送:<code>{{.Count}}</code>"
|
||
batch_summary_failed: "❌ 失败:<code>{{.Count}}</code>"
|
||
batch_summary_skipped: "⏭️ 已跳过:<code>{{.Count}}</code>"
|
||
batch_done: "<b>✅ 处理完成</b>\n\n文件数: <code>{{.Count}}</code>\n总大小: <code>{{.Size}}</code>"
|
||
batch_done_with_skipped: "<b>⚠️ 处理完成</b>\n\n成功: <code>{{.Success}}</code>\n已跳过: <code>{{.Skipped}}</code>\n总大小: <code>{{.Size}}</code>"
|
||
batch_canceled: "<b>🚫 任务已取消</b>\n\n文件数: <code>{{.Total}}</code>\n已完成: <code>{{.Completed}}</code>\n未完成: <code>{{.Incomplete}}</code>\n已跳过: <code>{{.Skipped}}</code>"
|
||
batch_failed_item: "<b>❌ 处理失败</b>\n\n失败文件: <code>{{.Index}}. {{.Name}}</code>\n失败阶段: <code>{{.Stage}}</code>\n失败进度: <code>{{.Progress}}</code>\n失败前速度: <code>{{.Speed}}</code>\n原因: <code>{{.Reason}}</code>\n\n✅ 已完成: <code>{{.Completed}}</code>\n❌ 失败: <code>{{.Failed}}</code>\n⏹️ 未完成: <code>{{.Incomplete}}</code>"
|
||
batch_failed_group: "<b>❌ 批量上传失败</b>\n\n受影响文件: <code>{{.Affected}} 个</code>\n原因: <code>{{.Reason}}</code>\n\n✅ 已完成: <code>{{.Completed}}</code>\n❌ 批次失败: <code>{{.Failed}}</code>\n⏹️ 未完成: <code>{{.Incomplete}}</code>"
|
||
batch_failed_task: "<b>❌ 处理失败</b>\n\n原因: <code>{{.Reason}}</code>\n\n✅ 已完成: <code>{{.Completed}}</code>\n⏹️ 未完成: <code>{{.Incomplete}}</code>"
|
||
batch_failure_stage_download: "下载"
|
||
batch_failure_stage_cache: "本地缓存"
|
||
batch_failure_stage_upload: "上传"
|
||
batch_failure_stage_confirm: "云端确认"
|
||
batch_failure_stage_batch_upload: "批量上传"
|
||
batch_failure_stage_internal: "任务内部"
|
||
single_status_header: "<b>📦 正在处理</b>"
|
||
single_downloading: "<blockquote><b>⬇️ 下载中</b>\n<code>{{.Name}}</code>\n{{.Bar}} <code>{{.Progress}}%</code>\n速度:<code>{{.Speed}}</code>\n大小:<code>{{.Current}}</code> / <code>{{.Size}}</code>\n保存至:<code>{{.Destination}}</code></blockquote>"
|
||
single_downloading_unknown: "<blockquote><b>⬇️ 下载中</b>\n<code>{{.Name}}</code>\n速度:<code>{{.Speed}}</code>\n大小:<code>{{.Current}}</code> / 未知\n保存至:<code>{{.Destination}}</code></blockquote>"
|
||
single_uploading: "<blockquote><b>⬆️ 上传中</b>\n<code>{{.Name}}</code>\n{{.Bar}} <code>{{.Progress}}%</code>\n速度:<code>{{.Speed}}</code>\n大小:<code>{{.Current}}</code> / <code>{{.Size}}</code>\n保存至:<code>{{.Destination}}</code></blockquote>"
|
||
single_upload_retrying: "<blockquote><b>🔁 上传重试</b>\n<code>{{.Name}}</code>\n{{.Bar}} <code>{{.Progress}}%</code>\n尝试次数:<code>{{.Attempt}}</code>\n速度:<code>{{.Speed}}</code>\n大小:<code>{{.Current}}</code> / <code>{{.Size}}</code>\n保存至:<code>{{.Destination}}</code></blockquote>"
|
||
single_done: "<b>✅ 处理完成</b>\n\n文件名:<code>{{.Name}}</code>\n总大小:<code>{{.Size}}</code>\n保存至:<code>{{.Destination}}</code>"
|
||
single_canceled: "<b>🚫 任务已取消</b>\n\n文件名:<code>{{.Name}}</code>"
|
||
single_failed: "<b>❌ 处理失败</b>\n\n文件名:<code>{{.Name}}</code>\n原因:<code>{{.Reason}}</code>"
|
||
downloading_prefix: "正在下载\n总大小: "
|
||
size_with_files: "{{.Size}} ({{.Count}} 个文件)"
|
||
size_with_resources: "{{.Size}} ({{.Count}} 个资源)"
|
||
processing_list_prefix: "\n正在处理:\n"
|
||
processing_none: " - 无"
|
||
avg_speed_prefix: "\n平均速度: "
|
||
current_progress_prefix: "\n当前进度: "
|
||
task_canceled_with_id: "处理已取消: {{.TaskID}}"
|
||
task_failed_with_error: "处理失败: {{.Error}}"
|
||
direct_done_prefix: "处理完成, 文件数量: "
|
||
parsed_start_prefix: "开始下载 {{.Site}} 的资源\n总大小: "
|
||
parsed_done_prefix: "处理完成, 资源数量: "
|
||
telegraph_start_prefix: "开始下载Telegraph\n图片数量: "
|
||
telegraph_progress_prefix: "正在下载\n当前进度: "
|
||
telegraph_done_prefix: "处理完成\n图片数量: "
|
||
save_path_prefix: "\n保存路径: "
|
||
total_size_prefix: "\n总大小: "
|
||
direct_start: "开始下载, 总大小: {{.SizeMB}} MB ({{.Count}} 个文件)"
|
||
error_prefix: "\n错误: "
|
||
aria2_start: "等待 Aria2 下载完成 (GID: {{.GID}})..."
|
||
aria2_downloading: "Aria2 正在下载 (GID: {{.GID}})\n"
|
||
aria2_done: "Aria2 下载完成并已转存 (GID: {{.GID}})\n"
|
||
ytdlp_start: "开始使用 yt-dlp 下载 ({{.Count}} 个链接)..."
|
||
ytdlp_downloading: "yt-dlp 正在下载 ({{.Count}} 个链接)\n"
|
||
ytdlp_done: "yt-dlp 下载完成并已转存 ({{.Count}} 个文件)\n"
|
||
downloaded_prefix: "\n已下载: "
|
||
current_speed_prefix: "\n当前速度: "
|
||
transfer_start_prefix: "正在转存: "
|
||
transfer_progress_prefix: "转存进度: "
|
||
transfer_uploaded_prefix: "\n已上传: "
|
||
transfer_speed_prefix: "\n速度: "
|
||
transfer_remaining_time_prefix: "\n剩余时间: "
|
||
transfer_processing_prefix: "\n正在处理:\n"
|
||
transfer_processing_more: "...和其他 {{.Count}} 个文件\n"
|
||
transfer_failed_prefix: "转存失败\n"
|
||
transfer_success_prefix: "转存完成\n"
|
||
transfer_total_files_prefix: "\n总文件数: "
|
||
transfer_total_size_prefix: "\n总大小: "
|
||
transfer_elapsed_time_prefix: "\n耗时: "
|
||
transfer_avg_speed_prefix: "\n平均速度: "
|
||
transfer_failed_files_prefix: "\n失败文件数: "
|
||
syncpeers:
|
||
start: "正在同步对话列表..."
|
||
success: "对话列表同步完成, 共同步 {{.Count}} 个对话"
|
||
failed: "对话列表同步失败: {{.Error}}"
|
||
aria2:
|
||
error_aria2_not_enabled: "Aria2 功能未启用, 请在配置文件中启用"
|
||
error_aria2_client_init_failed: "Aria2 客户端初始化失败: {{.Error}}"
|
||
info_adding_aria2_download: "正在添加 Aria2 下载任务..."
|
||
error_adding_aria2_download: "添加 Aria2 下载任务失败: {{.Error}}"
|
||
info_aria2_download_added: "Aria2 下载任务已添加, GID: {{.GID}}"
|
||
info_select_storage: "请选择存储位置, 选择后将添加到 Aria2 下载队列"
|