{
"forms": {
"upload_dir_error": "创建上传目录时出错",
"file_create_error": "创建文件时出错",
"multipart_stream_error": "多部分流错误",
"file_write_error": "写入文件时出错",
"required": "此项为必填项",
"too_short": "长度过短(最少 {} 个字符)",
"too_long": "长度过长(最多 {} 个字符)",
"email_invalid": "邮箱地址格式不正确",
"url_invalid": "请输入有效的网址",
"phone_invalid": "无效的电话号码(允许数字、+、空格、连字符,7-15位数字)",
"hash_error": "哈希计算错误:{}",
"password_empty": "密码不能为空",
"filter_invalid_value": "static/media 过滤器接收到无效值({}),应为文件路径",
"number_invalid": "数字格式无效",
"number_required": "此项必填",
"integer_required": "必须为整数",
"decimal_required": "必须为小数格式",
"min_value": "最小值应为 {}",
"max_value": "最大值不能超过 {}",
"precision_max": "小数点后最多 {} 位",
"precision_min": "小数点后至少 {} 位",
"color_invalid": "颜色格式无效(格式:#RRGGBB 或 #RGB)",
"color_no_hash": "颜色值必须以 # 开头",
"color_bad_hex": "包含非十六进制字符",
"slug_invalid": "Slug 格式无效",
"slug_no_dash": "Slug 不能以连字符开头或结尾",
"uuid_invalid": "UUID 格式无效(应为:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)",
"json_invalid": "JSON 格式无效:{}",
"ipv4_only": "仅支持 IPv4 地址",
"ipv6_only": "仅支持 IPv6 地址",
"ip_invalid": "IP 地址无效",
"date_invalid": "日期格式无效",
"date_too_old": "日期过早(最早:{})",
"date_too_far": "日期过晚(最晚:{})",
"time_invalid": "时间格式无效",
"file_required": "请至少选择一个文件",
"data_invalid": "“{}”的值无效",
"data_required": "“{}”为必填项",
"data_password": "无法对“{}”的密码进行哈希处理,未保存任何内容",
"file_extension_blocked": "文件 '{}' 类型不允许。允许的扩展名:{}",
"finalize_error": "字段 '{}' 处理出错:{}",
"template_missing": "缺少模板:{}",
"render_js_error": "JavaScript 渲染出错:{}",
"tera_not_configured": "Tera 模板引擎未配置",
"config_not_found": "配置未在扩展中找到",
"hint_slug": "格式示例:字母-数字-连字符",
"hint_uuid": "格式示例:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"hint_json": "需要有效的 JSON 格式",
"hint_ip_v4": "IPv4 格式示例:192.168.1.1",
"hint_ip_v6": "IPv6 格式示例:2001:0db8:85a3::8a2e:0370:7334",
"hint_ip": "IPv4 或 IPv6 格式均可",
"validation_overflow": "检测到栈溢出:验证过程中出现无限递归",
"choice_invalid": "选项无效",
"choice_invalid_value": "无效选项:{}",
"select_required": "请选择一个选项",
"checkbox_required": "请至少选择一个选项",
"multipart_error": "多部分表单上传出错",
"body_error": "读取请求体时出错",
"aegis_query_error": "解析查询字符串失败: {}",
"aegis_urlencoded_error": "解析URL编码正文失败: {}",
"aegis_json_error": "解析JSON正文失败: {}",
"auth_required": "需要进行身份验证",
"role_insufficient": "权限不足",
"unknown_group": "GuardRules:roles([...]) 中存在不存在的组:{}",
"time_too_old": "时间过早(最早:{})",
"time_too_far": "时间过晚(最晚:{})",
"datetime_too_old": "日期时间过早(最早:{})",
"datetime_too_far": "日期时间过晚(最晚:{})",
"duration_invalid": "持续时间格式无效(应为秒数)",
"duration_too_short": "持续时间过短(最短:{} 秒)",
"duration_too_long": "持续时间过长(最长:{} 秒)",
"file_max_count": "最多允许上传 {} 个文件",
"file_too_large": "文件 '{}' 过大({}MB > 最大限制 {}MB)",
"file_unreadable": "无法读取上传的文件,请重新发送",
"file_invalid_image": "文件 '{}' 不是有效的图片",
"image_too_wide": "图片 '{}' 宽度过大({}px > {}px)",
"image_too_tall": "图片 '{}' 高度过大({}px > {}px)",
"boolean_required": "必须勾选此项",
"slug_unicode_invalid": "只能使用字母、数字、连字符和下划线",
"unique_field_taken": "此 {} 已被占用",
"unique_value_taken": "字段 '{}' 的值已被占用",
"unique_constraint_violated": "违反了唯一性约束",
"db_error": "数据库错误:{}",
"text_field_too_large": "文本字段过大(最大1MB)",
"upload_too_large": "文件上传过大(最大{}MB)"
},
"csrf": {
"missing": "缺少 CSRF 令牌",
"invalid": "CSRF 令牌无效",
"invalid_or_missing": "CSRF 令牌无效或缺失",
"forbidden": "CSRF 验证失败",
"session_write_error": "会话写入失败"
},
"error": {
"source": "来源:{}",
"AppError": "应用错误",
"build": "构建出错:{}",
"internal": "内部错误",
"forbidden": "访问被拒绝",
"not_found": "未找到资源",
"validation": "验证失败:{}",
"database": "数据库出错:{}",
"io": "输入/输出错误:{}",
"template": "模板出错:{}",
"custom": "自定义错误:{}",
"title": {
"bad_request": "错误的请求",
"not_found": "页面不存在",
"forbidden": "访问被拒绝",
"validation": "验证失败",
"database": "数据库错误",
"template": "模板渲染错误",
"internal": "服务器内部错误"
},
"invalid_query": "查询参数无效:{}",
"path_not_found": "请求路径 '{}' 不存在",
"internal_occurred": "发生内部错误",
"context_occurred": "发生应用错误"
},
"title": {
"template": "'{}' 的模板错误"
},
"build": {
"subscriber_already_installed": "tracing subscriber 已安装;Runique 的日志配置无效(RUST_LOG / with_log 不起作用)",
"external_outputs_ignored": "`with_log(|l| l.external())` 已设置;已配置的日志输出将被忽略(应用程序拥有该 subscriber)",
"validation_failed": "构建验证失败:{}",
"check_failed": "构建检查失败,共 {} 个错误",
"template_failed": "模板加载失败:{}",
"driver_not_enabled": "{} 驱动未启用:Runique 编译时未启用 '{}' feature。\n\n在项目的 Cargo.toml 中:\nrunique = { version = \"{}\", features = [\"{}\"] }\n\n对于 runique CLI:\ncargo install runique --features {} --locked --force\n\n如需支持所有数据库,请使用 'all-databases' feature。",
"db_missing": "启用 'orm' 功能时需要数据库连接",
"component_not_ready": "组件 '{}' 尚未就绪",
"check": {
"db_required": "需要数据库连接或配置(已启用 `orm` feature)",
"db_required_hint": "请在构建链中添加 .with_database(db) 或 .with_database_config(config)",
"admin_prefix_empty": "管理后台的路由前缀不能为空",
"admin_prefix_empty_hint": "请使用 .prefix(\"/admin\") 或保留默认值",
"extra_route_unknown": "附加路由 `{}` 指向的资源 `{}` 未注册",
"extra_route_unknown_hint": "请使用在 admin!{} 中声明的资源键",
"cache_control_invalid": "无效的 Cache-Control 头值:'{}'",
"cache_control_invalid_hint": "只能使用可见的 ASCII 字符(不能有控制字符或换行)。",
"media_root_unusable": "无法创建或访问 MEDIA_ROOT 目录 '{}':{}",
"media_root_unusable_hint": "请在 .env 中将 MEDIA_ROOT 设为可写的绝对路径(例如 MEDIA_ROOT=/var/www/myapp/media),并确保进程有写入权限。",
"secret_key_weak": "SECRET_KEY 缺失、为空、为默认值或少于 32 个字符",
"secret_key_weak_hint": "请在 .env 中将 SECRET_KEY 设为至少 32 个字符的随机字符串(`runique` CLI 可以生成)",
"public_url_missing": "没有公开 URL:重置链接将根据请求的 Host 头生成",
"public_url_missing_hint": "请在 builder 中设置:.with_public_url(\"https://mysite.com\")",
"acme_domain_missing": "ACME_ENABLED=true 但未设置 ACME_DOMAIN",
"acme_domain_missing_hint": "请在 .env 中将 ACME_DOMAIN 设为你的生产域名",
"acme_email_missing": "ACME_ENABLED=true 但未设置 ACME_EMAIL",
"acme_email_missing_hint": "请在 .env 中将 ACME_EMAIL 设为你的 Let's Encrypt 联系邮箱",
"suggestion": "建议",
"context": "上下文"
}
},
"server": {
"operational": "Runique 正在运行",
"launched": "服务器已启动于 {}",
"connected_db": "已连接到数据库 {} -> {}",
"stop_hint": "按 Ctrl + C 停止",
"shutting_down": "正在关闭 Runique 服务器...",
"acme_not_compiled": "ACME_ENABLED=true,但未编译 `acme` 功能。",
"acme_add_feature": "请在你的 Cargo.toml 中添加 `acme` 功能。",
"test_utils_feature_enabled": "此构建中已编译 `test-utils` 特性 — 部署到生产环境前,请确保它位于 [dev-dependencies] 而非 [dependencies] 中。"
},
"middleware": {
"bad_request": "请求格式错误",
"slot_collision": "Runique 中间件插槽冲突:'{}' 和 '{}' 都占用了插槽 {}。请减少自定义中间件的数量,或为其指定一个明确的插槽。"
},
"html": {
"400_title": "400",
"400_text": "错误的请求:地址参数无效。",
"404_title": "404",
"404_text": "页面不存在",
"500_title": "500",
"500_text": "服务器内部错误",
"500_notice": "我们的团队已收到通知,正在处理此问题。",
"429_title": "429",
"429_text": "请求过多,请稍后再试。",
"503_title": "503",
"503_text": "服务因负载过高暂时不可用,请稍后再试。",
"back_home": "返回首页",
"critical_error_title": "严重错误",
"critical_error_text": "错误处理系统本身发生了错误。",
"critical_error_contact": "这种情况不应发生,请联系系统管理员。"
},
"debug": {
"stack_trace_title": "详细错误堆栈",
"stack_trace_tip": "最上方的错误(层级 0)通常是根本原因,后续错误显示错误在代码中的传播路径。"
},
"flash": {
"welcome": "欢迎 {},您的账号已创建成功!",
"fix_errors": "请修正以下错误",
"success_demo": "这是一条成功提示。",
"info_demo": "这是一条信息提示。",
"warning_demo": "这是一条警告提示。",
"error_demo": "这是一条错误提示。"
},
"cli": {
"creating_project": "正在创建项目 '{}'……",
"admin_detected": "检测到 admin → 正在生成 admin 代码",
"add_admin_hint": "请在构建器中添加 .with_admin(...) 以启用管理后台。",
"daemon_error": "[守护进程] 错误:{}",
"cargo_run_failed": "应用服务器启动失败(cargo run)",
"file_not_found": "未找到文件:{}\n请确保您在 Runique 项目的根目录下运行此命令。",
"admin_not_found": "未找到 Admin 文件:{}\n请使用 admin!{} 宏创建 src/admin.rs 文件。",
"name_empty": "项目名称不能为空",
"name_invalid": "项目名称只能包含字母、数字、下划线或连字符",
"name_dash": "项目名称不能以连字符开头",
"folder_exists": "文件夹 '{}' 已存在",
"cargo_run_expect": "启动 cargo run 失败",
"project_created": "项目 '{}' 创建成功!",
"getting_started": "开始使用:",
"cd_hint": "cd {}",
"cargo_run_hint": "cargo run",
"fmt_failed": "cargo fmt 失败 — 已跳过格式化:{}"
},
"daemon": {
"unable_read": "无法读取:{}",
"parse_error": "解析错误:{}",
"no_resource": "admin!{} 中未定义任何资源 — 无需生成",
"operational": "守护进程运行中 → src/admins/admin.rs",
"generation_error": "生成代码时出错:{}",
"generated_header": "自动生成 — 请勿手动修改",
"generated_notice": "由 `runique start` 从 src/admin.rs 生成。任何修改都将被覆盖。"
},
"macro": {
"named_fields_only": "仅支持具名字段的结构体",
"structs_only": "仅适用于结构体",
"forms_field_required": "结构体 '{}' 必须包含 'Forms' 字段",
"field_no_name": "字段缺少名称",
"model_form_named_only": "DeriveModelForm:仅支持具名字段的结构体",
"model_form_structs_only": "DeriveModelForm:仅适用于结构体"
},
"parser": {
"multiple_admin_blocks": "admin!: 每个文件只允许一个 admin! 块(第一个在第 {} 行,第二个在第 {} 行)— 请合并它们",
"title_required": "admin!: 'title' 是必填项",
"list_display_exclude_exclusive": "admin!: 'list_display' 和 'list_exclude' 互斥"
},
"TemplateMessage": {
"debug_info_title": "调试信息",
"debug_field_title": "标题",
"debug_field_count": "字段数量",
"debug_error_count": "错误数量",
"debug_main_message": "主要信息",
"debug_root_cause": "根本原因",
"debug_details": "附加详情",
"debug_request_info": "请求信息",
"debug_http_method": "HTTP 方法",
"debug_path": "路径",
"debug_query_params": "查询参数",
"debug_http_headers": "HTTP 请求头",
"debug_template_info": "模板信息",
"debug_template_name": "模板名称",
"debug_error_line": "错误行号",
"debug_template_source": "模板源代码",
"debug_available_templates": "可用模板",
"debug_stack_trace_title": "详细错误追踪",
"debug_stack_trace_tip": "最顶层的错误(层级 0)通常是根本原因。后续错误显示错误在代码中的传播路径。",
"debug_environment": "环境",
"debug_debug_mode": "调试模式",
"debug_enabled": "已启用",
"debug_disabled": "已禁用",
"debug_rust_version": "Rust 版本",
"debug_app_version": "应用版本",
"debug_status_code": "状态码",
"debug_header_name": "名称",
"debug_header_value": "值"
},
"admin": {
"group": "组",
"groups": "组",
"resource": "资源",
"resources": "资源",
"can_create": "创建",
"can_read": "读取",
"can_update": "修改",
"can_delete": "删除",
"can_update_own": "修改",
"can_delete_own": "删除",
"name": "名称",
"username": "用户名",
"email": "电子邮箱",
"staff": "工作人员",
"superuser": "超级用户",
"active": "激活",
"user": {
"username_too_short": "用户名太短(最少3个字符)",
"invalid_email": "邮箱地址格式不正确",
"not_activated": "该账户尚未被其用户激活:用户通过收到的邮件设置密码后即会激活。"
},
"login": {
"title": "登录",
"subtitle": "请登录以访问管理面板",
"label_username": "用户名",
"label_password": "密码",
"btn_submit": "登录",
"error_session": "打开会话时出错。",
"error_credentials": "凭据不正确或权限不足。",
"error_locked": "尝试次数过多。账户已被临时锁定。请在{}秒后重试。"
},
"logout": {
"success": "已成功登出。"
},
"access": {
"insufficient_rights": "访问管理权限不足",
"superuser_only": "只有超级用户才能修改超级用户的账户"
},
"dashboard": {
"title": "仪表板",
"subtitle": "应用程序概览",
"card_resources": "资源",
"th_resource": "资源",
"th_key": "键",
"th_permissions": "权限",
"th_actions": "操作",
"btn_list": "列表",
"btn_create": "创建",
"see_list": "查看列表 →",
"empty_title": "未注册资源",
"empty_desc": "在src/admin.rs中使用admin!{{}}宏声明您的资源,然后运行runique start",
"kpi_resources": "资源",
"kpi_entries": "条目总数",
"kpi_largest": "最大",
"th_count": "条目"
},
"list": {
"breadcrumb_admin": "管理",
"entries_count_one": "条目",
"entries_count_many": "条目",
"btn_create": "创建",
"th_id": "id",
"th_actions": "操作",
"bool_true": "是",
"bool_false": "否",
"btn_detail": "详情",
"btn_edit": "编辑",
"btn_delete": "删除",
"confirm_delete": "确定要删除吗?",
"empty_title": "无条目",
"empty_desc": "请先创建一个项目。",
"btn_create_first": "创建第一个",
"search_placeholder": "搜索..."
},
"create": {
"title": "创建",
"breadcrumb": "创建",
"card_info": "信息",
"no_fields": "当前没有可用字段。",
"btn_cancel": "取消",
"btn_submit": "创建",
"success": "条目创建成功!"
},
"edit": {
"title": "编辑",
"breadcrumb": "编辑",
"card_info": "信息",
"no_fields": "当前没有可用字段。",
"btn_cancel": "取消",
"btn_submit": "保存",
"success": "条目更新成功!"
},
"detail": {
"title": "详情",
"breadcrumb": "详情",
"entry_label": "条目",
"btn_list": "← 列表",
"btn_edit": "编辑",
"btn_delete": "删除",
"confirm_delete": "删除此条目?",
"btn_reset_password": "重置密码",
"btn_reset_password_short": "重置"
},
"reset_password": {
"btn": "重置密码",
"success_email": "Reset link sent to {}.",
"success_link": "Reset link (mailer not configured): {}",
"error_no_email": "No email field found for this user.",
"error_unavailable": "此项目无法重置密码。",
"error_send": "Error sending email: {}",
"email_subject": "重置您的密码",
"email_title": "密码重置",
"email_greeting": "您好,",
"email_body": "请点击下方链接重置您的密码(有效期1小时):",
"email_btn": "重置我的密码",
"email_ignore": "如果您没有请求此重置,请忽略此消息。"
},
"user_created": {
"email_subject": "欢迎 — 请设置您的密码",
"email_sent": "欢迎邮件已发送至 {}。",
"email_greeting": "欢迎,",
"email_body": "已为您创建账户。请点击下方链接设置您的密码:",
"email_btn": "设置我的密码",
"email_validity": "此链接有效期为1小时。如果您未期待此消息,请忽略。"
},
"delete": {
"title": "删除",
"breadcrumb": "删除",
"heading": "确认删除",
"btn_cancel": "← 取消",
"btn_confirm": "是,永久删除",
"warning": {
"title": "警告!",
"desc": "您即将删除条目",
"of": "来自资源",
"irreversible": "此操作不可撤销。"
},
"success": "条目删除成功!",
"not_found": "资源未找到。"
},
"bulk": {
"no_selection": "未选择任何项目。",
"no_field_selected": "未修改任何字段。",
"delete_success": "个项目已删除。",
"update_success": "个项目已更新。"
},
"base": {
"title": "管理",
"breadcrumb": "管理",
"toggle": "收起菜单",
"logout_title": "登出",
"theme_toggle": "切换主题",
"back_to_site": "← 网站"
},
"superuser_wizard": {
"title": "=== 创建超级用户 ===",
"algo_prompt": "[1/5] 哈希算法",
"algo_argon2": "Argon2(推荐)",
"algo_bcrypt": "Bcrypt",
"algo_scrypt": "Scrypt",
"algo_custom": "自定义提供者",
"provider_path": "提供者路径",
"invalid_path": "无效路径。",
"username_prompt": "[2/5] 用户名",
"username_empty": "用户名不能为空。",
"username_taken": "该用户名已被使用。",
"email_prompt": "[3/5] 邮箱",
"email_invalid": "无效的邮箱地址。",
"email_taken": "该邮箱已被使用。",
"password_prompt": "[4/5] 密码",
"password_too_short": "密码至少需要12个字符。",
"password_weak": "密码必须至少包含一个小写字母、一个大写字母、一个数字和一个特殊字符。",
"confirm_prompt": "[5/5] 确认密码",
"password_mismatch": "密码不匹配,请重试。",
"review_algo": " 算法 : {}",
"review_username": " 用户名 : {}",
"review_email": " 邮箱 : {}",
"review_password": " 密码 : ••••••••",
"review_action": "操作",
"confirm_create": "确认并创建",
"change_algo": "更改算法",
"modify_password": "修改密码",
"success": "✓ 超级用户创建成功!",
"id_line": " ID : {}",
"username_line": " 用户名 : {}",
"email_line": " 邮箱 : {}"
},
"builtin": {
"invalid_id": "无效的标识符。",
"droit_resource_required": "请至少选择一个资源。",
"droit_exists": "权限 \"{}\" 已存在。",
"groupe_exists": "名为 \"{}\" 的组已存在。",
"user_username_exists": "用户名「{}」已被占用。",
"user_email_exists": "邮箱「{}」已被注册。"
},
"bulk_create": {
"all_exist": "所有值均已存在:未创建任何内容"
}
},
"makemigrations": {
"destructive_detected": "检测到破坏性更改:",
"destructive_require_force": "使用 --force 应用这些破坏性更改。",
"long_identifier_detected": "生成的 SQL 标识符过长(MariaDB/MySQL 限制:64 个字符):",
"long_identifier_rename_required": "请缩短相关的表名/列名 — Runique 不会自动截断标识符。",
"files_ready": "{}个文件已准备好迁移。",
"snapshots_upgraded": "已更新 {} 个快照以记录列长度(无迁移)。"
},
"migrate": {
"applying": "正在从'{}'应用迁移...",
"complete_up": "迁移完成。",
"crate_missing": "未找到迁移 crate:'{}' 中没有 Cargo.toml。"
},
"reset": {
"forgot_title": "忘记密码",
"reset_title": "新密码",
"success_title": "密码已重置",
"email_label": "电子邮件地址",
"new_password_label": "新密码",
"confirm_label": "确认密码",
"email_mismatch": "电子邮件地址与链接不匹配。",
"invalid_link": "无效链接。",
"invalid_or_expired": "重置链接无效或已过期。",
"password_min_length": "密码必须至少包含{}个字符。",
"password_weak": "密码必须包含至少一个大写字母、一个小写字母、一个数字和一个特殊字符(!@#$%...)。",
"password_mismatch": "两次输入的密码不一致。",
"check_inbox": "如果该地址关联了账户,您将收到一封包含操作说明的邮件。",
"blocked_subject": "您的账户已被封禁",
"blocked_body": "<p>{},您好:</p><p>有人为您的账户申请了密码重置,但该账户已被封禁。请联系网站管理员解除封禁。</p><p>如果这不是您本人的操作,请忽略此邮件。</p>",
"email_subject": "密码重置请求",
"email_body": "<p>您好 {},</p><p>请点击以下链接重置您的密码(有效期1小时):</p><p><a href=\"{}\">{}</a></p>"
},
"permission": {
"col": {
"id": "ID",
"can_create": "创建",
"can_delete": "删除",
"can_delete_own": "删除(自己的)",
"can_read": "读取",
"can_update": "修改",
"can_update_own": "修改(自己的)",
"groupes": "组",
"resource_key": "资源",
"actions": "操作"
}
},
"runique_test": {
"connect_failed": "无法连接:{}",
"begin_failed": "无法开启测试事务:{}",
"env_read_failed": "无法读取 {}:{}",
"env_parse_failed": "无法解析 {}:{}",
"env_line_malformed": "无法解析 {}:某一行在第 {} 个字符处格式错误(该行可能包含密码,因此不予显示)",
"no_panic_message": "无消息",
"query_failed": "失败",
"panicked": "panic:{}",
"rollback_failed": "回滚:{}",
"test_failed": "{} 失败,请查看上方输出",
"clone_outlived": "测试连接的一个克隆比处理函数存活得更久;该克隆被释放时事务才会回滚",
"not_a_transaction": "测试未在事务中运行,因此无法回滚任何内容",
"nested": "runique_test 不能在另一个 runique_test 内部运行:它会永远等待自己的调用者",
"timed_out": "处理函数未在 {} 秒内完成:是死锁,还是某行被另一个连接锁住?可通过 env 文件中的 RUNIQUE_TEST_TIMEOUT 修改上限",
"bad_timeout": "{} 必须是大于 0 的整数秒数,实际收到 \"{}\"",
"transaction_ended": "测试的事务在测试内部被结束(COMMIT,或 MariaDB/MySQL 上的 DDL):此前写入的所有内容现在都留在数据库中",
"swallowed_failures": "失败的查询:{},但处理函数仍返回了 Ok:某处吞掉了错误(请用 expect_db_error 包裹预期的失败)",
"rollback_timed_out": "回滚未在 {} 秒内完成",
"expected": "预期",
"not_refused": "数据库接受了测试预期它会拒绝的操作",
"no_db_config": "env 文件既没有设置 DATABASE_URL 也没有设置 DB_ENGINE:测试数据库必须在其中明确指定,不会从 shell 读取任何内容",
"in_memory": "内存数据库:每个测试都从空数据库开始"
},
"test_runner": {
"no_cargo_toml": "此处没有 Cargo.toml:请在您的项目根目录运行 `runique test`。",
"test_utils_missing": "Cargo.toml 中未为 runique 启用 `test-utils` 特性。\n请将其添加为 dev-dependency,确保它永远不会进入发布构建:\n cargo add --dev runique --features test-utils",
"test_utils_shipped": "Cargo.toml 在 [dev-dependencies] 之外启用了 `test-utils`,测试构建器将进入您的发布构建。\n请从 [dependencies](以及所有 [features] 条目)中移除它,然后仅作为 dev-dependency 添加:\n cargo add --dev runique --features test-utils",
"no_mod_file": "缺少 src/runique_test/mod.rs:请创建它,并在其中声明每个测试文件(`mod user;`)。",
"module_not_declared": "src/main.rs 未声明测试模块。请添加:\n #[cfg(test)]\n mod runique_test;",
"module_not_gated": "runique_test 模块没有放在 `cfg(test)` 之后,因此会进入每一次构建。\n请在 src/main.rs 中 `mod runique_test;` 的正上方加上 `#[cfg(test)]`。",
"file_not_declared_warning": "警告:src/runique_test/{}.rs 未在 mod.rs 中声明,其测试不会运行。请在 mod.rs 中添加 `mod {};`。",
"no_test_file": "没有 src/runique_test/{}.rs。测试文件:{}",
"file_not_declared": "src/runique_test/{}.rs 未在 mod.rs 中声明:请添加 `mod {};`。",
"cargo_spawn_failed": "无法运行 cargo。",
"output_failed": "无法显示 cargo 的输出。",
"cargo_wait_failed": "cargo test 未正常结束。",
"tests_failed": "cargo test 失败,请查看上方输出。",
"build_failed": "cargo 无法编译测试,请查看上方错误。",
"no_such_test": "测试 \"{}\" 不在 {}.rs 中。可用的测试:{}",
"dir_read_failed": "无法读取 {}"
},
"auth": {
"login_cannot_sign_in": "此账户无法登录:账户未启用或从未激活。",
"login_session_failed": "无法保存会话:{}"
}
}