mirror of
https://github.com/danielmiessler/fabric.git
synced 2026-09-10 07:36:44 -04:00
- Reject unsafe cross-platform storage names and traversal attempts. - Confine symlink targets within configured filesystem storage directories. - Require API keys for every non-loopback server binding. - Authenticate Ollama routes and securely forward configured credentials. - Validate chat pattern, context, and session names early. - Sanitize client errors to hide internal filesystem details. - Default REST server binding to loopback port 8080. - Add regression coverage for traversal, symlinks, and authentication.
771 lines
57 KiB
JSON
771 lines
57 KiB
JSON
{
|
||
"abacus_models_endpoint_status": "Abacus 模型端点返回了状态码 %d",
|
||
"additional_yt_dlp_args": "传递给 yt-dlp 的其他参数(例如 '--cookies-from-browser brave')",
|
||
"address_to_bind_rest_api": "绑定 REST API 的地址",
|
||
"anthropic_stream_error": "流式传输错误:%v",
|
||
"api_key_secure_server_routes": "用于保护服务器路由的 API 密钥",
|
||
"application_options_header": "应用选项:",
|
||
"apply_variables_to_input": "将变量应用于用户输入",
|
||
"attachment_could_not_determine_mimetype": "无法确定 URL 的 MIME 类型",
|
||
"attachment_file_not_exist": "文件 %s 不存在",
|
||
"attachment_no_content_available": "没有可用内容",
|
||
"attachment_no_type_no_content": "附件既没有类型也没有内容可供推导",
|
||
"attachment_path_or_url_help": "附件路径或 URL(例如用于 OpenAI 图像识别消息)",
|
||
"audio_output_file_specified_but_not_tts_model": "指定了音频输出文件 '%s',但模型 '%s' 不是 TTS 模型。请使用 TTS 模型,例如 gemini-2.5-flash-preview-tts",
|
||
"audio_video_file_transcribe": "要转录的音频或视频文件",
|
||
"available_models_header": "可用模型:",
|
||
"available_transcription_models": "可用的转录模型:",
|
||
"available_vendors_header": "可用供应商:",
|
||
"azure_api_key_required": "Azure API 密钥是必需的",
|
||
"azure_api_version_question": "请输入 Azure API 版本(留空使用默认值)",
|
||
"azure_base_url_question": "API 基础 URL",
|
||
"azure_base_url_required": "Azure 基础 URL 是必需的",
|
||
"azure_credential_failure": "Azure 凭据创建失败",
|
||
"azure_deployments_question": "请输入您的 Azure 部署名称(用逗号分隔)",
|
||
"azure_deployments_required": "至少需要一个 Azure 部署名称",
|
||
"azure_failed_extract_deployment": "无法从请求中提取部署名称",
|
||
"azure_model_field_empty": "请求正文中的模型字段为空",
|
||
"azure_request_body_nil": "请求正文为空",
|
||
"azureaigateway_aoai_no_choices": "Azure OpenAI 响应中没有选项",
|
||
"azureaigateway_aoai_parse_response_failed": "解析 Azure OpenAI 响应失败:%w",
|
||
"azureaigateway_api_version_question": "Azure OpenAI API 版本(默认:2025-04-01-preview,留空使用默认值)",
|
||
"azureaigateway_backend_not_initialized": "后端未初始化 — 请运行 'fabric --setup' 进行配置",
|
||
"azureaigateway_backend_type_question": "选择后端类型(bedrock、azure-openai、vertex-ai)",
|
||
"azureaigateway_bedrock_no_text_blocks": "Bedrock 响应中没有文本内容块",
|
||
"azureaigateway_bedrock_parse_response_failed": "解析 Bedrock 响应失败:%w",
|
||
"azureaigateway_failed_create_request": "AzureAIGateway:创建请求失败:%w",
|
||
"azureaigateway_failed_read_response": "AzureAIGateway:读取响应失败:%w",
|
||
"azureaigateway_gateway_url_https_required": "网关 URL 必须使用 HTTPS 协议",
|
||
"azureaigateway_gateway_url_question": "输入您的 Azure APIM 网关基础 URL(例如 https://gateway.company.com)",
|
||
"azureaigateway_gateway_url_required": "Azure APIM 网关 URL 是必需的",
|
||
"azureaigateway_http_error": "AzureAIGateway:HTTP %d:%s",
|
||
"azureaigateway_http_request_failed": "AzureAIGateway:HTTP 请求失败:%w",
|
||
"azureaigateway_invalid_gateway_url": "无效的网关 URL:%w",
|
||
"azureaigateway_no_valid_messages": "过滤空内容后没有有效消息",
|
||
"azureaigateway_prepare_request_failed": "AzureAIGateway:%w",
|
||
"azureaigateway_response_too_large": "AzureAIGateway:响应过大 (>%d 字节)",
|
||
"azureaigateway_subscription_key_question": "输入您的 Azure APIM 订阅密钥",
|
||
"azureaigateway_subscription_key_required": "Azure APIM 订阅密钥是必需的",
|
||
"azureaigateway_unsupported_backend": "不支持的后端:%s(有效选项:bedrock、azure-openai、vertex-ai)",
|
||
"azureaigateway_vertexai_no_content": "Vertex AI 响应中没有内容",
|
||
"azureaigateway_vertexai_parse_response_failed": "解析 Vertex AI 响应失败:%w",
|
||
"background_type_help": "背景类型:opaque、transparent(默认:opaque,仅适用于 PNG/WebP)",
|
||
"bedrock_api_key_label": "输入您的 Bedrock API 密钥 / ABSK 令牌(留空则使用 AWS 凭证)",
|
||
"bedrock_aws_access_key_label": "输入您的 AWS Access Key ID(留空则使用 AWS 凭证链)",
|
||
"bedrock_aws_region_label": "AWS 区域",
|
||
"bedrock_aws_secret_key_label": "输入您的 AWS Secret Access Key(留空则使用 AWS 凭证链)",
|
||
"bedrock_client_not_initialized": "Bedrock 客户端未初始化 — 请运行 'fabric --setup' 进行配置",
|
||
"bedrock_converse_failed": "模型 %s 的 Bedrock 会话失败:%w",
|
||
"bedrock_conversestream_failed": "模型 %s 的 Bedrock 流式会话失败:%w",
|
||
"bedrock_empty_response_content": "响应内容为空",
|
||
"bedrock_failed_list_foundation_models": "无法列出基础模型:%w",
|
||
"bedrock_failed_list_inference_profiles": "无法列出推理配置文件:%w",
|
||
"bedrock_fetch_regions_bad_status": "botocore 端点返回了异常状态",
|
||
"bedrock_fetch_regions_failed": "从 botocore 获取 Bedrock 区域失败",
|
||
"bedrock_fetch_regions_parse_failed": "解析 botocore endpoints.json 失败",
|
||
"bedrock_invalid_aws_region": "无效的 AWS 区域:%s",
|
||
"bedrock_listmodels_fallback": "Bedrock ListModels API 失败,使用静态备选列表",
|
||
"bedrock_panic_sendstream": "SendStream 中出现 Panic:%v",
|
||
"bedrock_setup_auth_option_accesskey": " [2] AWS Access Key + Secret Key",
|
||
"bedrock_setup_auth_option_apikey": " [1] Bedrock API Key / ABSK 令牌(推荐 — 与 Claude Code 相同)",
|
||
"bedrock_setup_auth_prompt": "请输入 1 或 2",
|
||
"bedrock_setup_choose_auth_method": " 请选择身份验证方法:",
|
||
"bedrock_setup_choose_model": " 请选择默认模型(不带前缀的 ID 适用于任何区域;us./eu./ap. 为区域特定):",
|
||
"bedrock_setup_choose_region": " 请选择 AWS 区域:",
|
||
"bedrock_setup_header": "[Bedrock]",
|
||
"bedrock_setup_invalid_auth_selection": "无效选择:%s(请输入 1 或 2)",
|
||
"bedrock_setup_model_custom_prompt": "请输入模型 ID(例如 anthropic.claude-opus-4-6-v1)",
|
||
"bedrock_setup_model_option_custom": " [0] 输入其他模型 ID",
|
||
"bedrock_setup_model_prompt": "输入模型编号,或输入 0 自定义输入",
|
||
"bedrock_setup_region_custom_prompt": "请输入自定义 AWS 区域(例如 us-east-1)",
|
||
"bedrock_setup_region_option_custom": " [0] 输入其他区域",
|
||
"bedrock_setup_region_prompt": "输入区域编号,或输入 0 自定义",
|
||
"bedrock_setup_selected_model": " ✓ 已选择模型:%s",
|
||
"bedrock_setup_use_with": " ℹ 使用方法:fabric -m %s -V Bedrock",
|
||
"bedrock_unable_load_aws_config": "无法加载 AWS 配置:%w",
|
||
"bedrock_unable_load_aws_config_with_region": "无法加载区域 %s 的 AWS 配置:%w",
|
||
"bedrock_unexpected_content_block_type": "意外的内容块类型:%T",
|
||
"bedrock_unexpected_response_type": "意外的响应类型:%T",
|
||
"bedrock_unknown_stream_event_type": "未知的流事件类型:%T",
|
||
"cannot_convert_string": "无法将字符串 %q 转换为 %v",
|
||
"change_default_model": "更改默认模型",
|
||
"chat_error_content_fields_misused": "不能同时使用 Content 和 MultiContent 属性",
|
||
"chatter_error_empty_response": "响应为空",
|
||
"chatter_error_find_context": "找不到上下文 %s:%v",
|
||
"chatter_error_find_session": "找不到会话 %s:%v",
|
||
"chatter_error_get_pattern": "无法获取模式 %s:%v",
|
||
"chatter_error_load_strategy": "无法加载策略 %s:%v",
|
||
"chatter_error_no_messages_provided": "未提供消息",
|
||
"chatter_error_no_session_pattern_user_messages": "未提供会话、模式或用户消息",
|
||
"chatter_error_stream_update": "更新流时出错:%s",
|
||
"chatter_help_review_changes_with_git_diff": "如果您正在使用 git,可以使用 'git diff' 查看这些更改。",
|
||
"chatter_info_file_changes_applied_successfully": "文件更改已成功应用。",
|
||
"chatter_log_stream_usage_metadata": "[元数据] 输入:%d | 输出:%d | 总计:%d",
|
||
"chatter_prompt_enforce_response_language": "%s\n\n重要:首先,请使用用户输入执行此提示中提供的指令。其次,请确保您的整个最终回复(包括执行指令时生成的任何章节标题或标题)仅使用 %s 语言撰写。",
|
||
"chatter_warning_apply_file_changes_failed": "警告:应用文件更改失败:%v",
|
||
"chatter_warning_get_current_directory_failed": "警告:获取当前目录失败:%v",
|
||
"chatter_warning_parse_file_changes_failed": "警告:解析文件更改失败:%v",
|
||
"choose_context_from_available": "从可用上下文中选择一个上下文",
|
||
"choose_model": "选择模型",
|
||
"choose_pattern_from_available": "从可用模式中选择一个模式",
|
||
"choose_session_from_available": "从可用会话中选择一个会话",
|
||
"choose_strategy_from_available": "从可用策略中选择一个策略",
|
||
"codex_api_base_url_question": "请输入您的 Codex API 基础 URL",
|
||
"codex_auth_base_url_invalid": "Codex 认证基础 URL 无效:%w",
|
||
"codex_auth_base_url_question": "请输入您的 Codex OAuth 基础 URL",
|
||
"codex_browser_open_fallback": "如果浏览器未打开,请导航到此 URL 进行身份验证:",
|
||
"codex_decode_models_response_failed": "解码 Codex 模型响应失败:%w",
|
||
"codex_decode_refresh_response_failed": "解码刷新的 Codex 令牌响应失败:%w",
|
||
"codex_decode_token_response_failed": "解码 Codex 令牌交换响应失败:%w",
|
||
"codex_image_file_not_supported": "Codex 供应商不支持 --image-file。请改用图片附件。",
|
||
"codex_login_account_changed": "Codex 登录关联的 ChatGPT 账户与保存的配置不同。请重新运行 'fabric --setup'。",
|
||
"codex_login_completed": "Codex 登录完成",
|
||
"codex_login_failed": "Codex 登录失败:%s",
|
||
"codex_login_invalid": "您的 Codex 登录已失效。请重新运行 'fabric --setup'。",
|
||
"codex_login_missing_account_claim": "Codex 登录未包含 ChatGPT 账户 ID。此登录状态不受支持。",
|
||
"codex_login_missing_auth_code": "Codex 登录未返回授权码。",
|
||
"codex_login_missing_tokens": "Codex 登录未返回所需的访问令牌和刷新令牌。",
|
||
"codex_login_refresh_failed": "无法刷新 Codex 登录。请重新运行 'fabric --setup'。",
|
||
"codex_login_return_to_fabric": "返回 Fabric。",
|
||
"codex_login_revoked": "Codex 登录已过期或被撤销。请重新运行 'fabric --setup'。",
|
||
"codex_login_server_stopped": "Codex 登录回调服务器在身份验证完成前停止。",
|
||
"codex_login_state_mismatch": "由于 OAuth 状态不匹配,无法验证 Codex 登录。",
|
||
"codex_login_timed_out": "Codex 登录在身份验证完成前超时。",
|
||
"codex_oauth_missing_auth_code": "缺少授权码",
|
||
"codex_oauth_random_state_failed": "生成安全随机 OAuth 状态失败:%w",
|
||
"codex_oauth_server_start_failed": "启动本地 OAuth 回调服务器失败:%w",
|
||
"codex_oauth_state_mismatch": "状态不匹配",
|
||
"codex_provider_error": "Codex 供应商错误(状态 %d):%s",
|
||
"codex_refresh_failed_status": "刷新 Codex 登录失败(状态 %d)",
|
||
"codex_refresh_login_failed": "刷新 Codex 登录失败:%w",
|
||
"codex_refresh_token_required": "需要 Codex 刷新令牌。请重新运行 'fabric --setup'。",
|
||
"codex_replay_body_unavailable": "请求正文无法重放用于 Codex 重新认证重试",
|
||
"codex_request_failed": "Codex 请求失败:%w",
|
||
"codex_request_failed_status": "Codex 请求失败,状态 %d",
|
||
"codex_starting_browser_login": "正在启动基于浏览器的 OpenAI 登录以连接 Codex。",
|
||
"codex_token_exchange_failed": "Codex 令牌交换失败:%w",
|
||
"codex_token_persist_failed": "无法保存 Codex 登录:%w",
|
||
"codex_token_refresh_missing_access_token": "Codex 令牌刷新未返回访问令牌。",
|
||
"codex_usage_limit_reached": "已达到 Codex 使用限制",
|
||
"command_completed_successfully": "命令执行成功",
|
||
"compression_level_jpeg_webp": "JPEG/WebP 格式的压缩级别 0-100(默认:未设置)",
|
||
"config_file_not_found": "找不到配置文件:%s",
|
||
"convert_html_readability": "将 HTML 输入转换为清洁、可读的视图",
|
||
"copilot_debug_created_conversation": "已创建 Copilot 对话:%s",
|
||
"copilot_debug_failed_parse_sse_event": "解析 SSE 事件失败:%v",
|
||
"copilot_error_chat_request": "聊天请求失败:%s - %s",
|
||
"copilot_error_create_conversation": "创建对话失败:%s - %s",
|
||
"copilot_error_reading_stream": "读取流时出错:%w",
|
||
"copilot_error_stream_request": "流请求失败:%s - %s",
|
||
"copilot_failed_create_conversation": "创建对话失败:%w",
|
||
"copilot_failed_send_message": "发送消息失败:%w",
|
||
"copilot_failed_stream_message": "流式传输消息失败:%w",
|
||
"copilot_tenant_client_id_required": "需要租户 ID 和客户端 ID",
|
||
"copy_to_clipboard": "复制到剪贴板",
|
||
"could_not_copy_to_clipboard": "无法复制到剪贴板:%v",
|
||
"could_not_create_config_dir": "无法创建配置目录:%w",
|
||
"could_not_create_env_file": "无法创建 .env 文件:%w",
|
||
"could_not_determine_home_dir": "无法确定用户主目录:%w",
|
||
"could_not_stat_env_file": "无法获取 .env 文件状态:%w",
|
||
"custom_notification_command": "用于通知的自定义命令(覆盖内置通知)",
|
||
"custom_patterns_directory_question": "请输入您的自定义模式目录路径",
|
||
"custom_patterns_label": "自定义模式",
|
||
"custom_patterns_setup_description": "自定义模式 - 设置您的自定义模式目录",
|
||
"custom_patterns_warning_create_directory": "警告:无法创建自定义模式目录 %s:%v\n",
|
||
"db_error_loading_env_file": "加载 .env 文件错误:%w",
|
||
"db_error_updating_env_file": "更新 .env 文件错误:%w",
|
||
"defaults_model_context_length_question": "请输入模型上下文长度",
|
||
"defaults_model_question": "请输入您的默认模型的索引或名称",
|
||
"defaults_setup_description": "默认 AI 提供商和模型",
|
||
"digitalocean_failed_parse_control_plane_url": "解析 DigitalOcean 控制面板 URL 失败:%w",
|
||
"digitalocean_model_list_unavailable": "DigitalOcean 模型列表不可用。请设置 DIGITALOCEAN_TOKEN 以从控制面板获取模型",
|
||
"digitalocean_model_list_unavailable_with_error": "DigitalOcean 模型列表不可用:%w。请设置 DIGITALOCEAN_TOKEN 以从控制面板获取模型",
|
||
"digitalocean_models_request_failed_read_error": "DigitalOcean 模型请求失败,状态码 %d:%w",
|
||
"digitalocean_models_request_failed_with_status": "DigitalOcean 模型请求失败,状态码 %d:%s",
|
||
"disable_openai_responses_api": "禁用 OpenAI 响应 API(默认:false)",
|
||
"disable_pattern_variable_replacement": "禁用模式变量替换",
|
||
"enable_web_search_tool": "为支持的模型启用网络搜索工具(Anthropic、OpenAI、Gemini、Grok)",
|
||
"end_tag_thinking_sections": "思考部分的结束标签",
|
||
"error_creating_audio_file": "创建音频文件时出错:%v",
|
||
"error_creating_file": "创建文件时出错:%v",
|
||
"error_fetching_playlist_videos": "获取播放列表视频时出错:%w",
|
||
"error_parsing_config_file": "解析配置文件时出错:%w",
|
||
"error_reading_config_file": "读取配置文件时出错:%w",
|
||
"error_reading_piped_message": "从 stdin 读取管道消息时出错:%w",
|
||
"error_writing_audio_data": "写入音频数据到文件时出错:%v",
|
||
"error_writing_to_file": "写入文件时出错:%v",
|
||
"extension_cmd_template_required": "操作 %s 需要命令模板",
|
||
"extension_command_template_label": " 命令模板:%s\n",
|
||
"extension_config_hash_mismatch": "%s 的配置文件哈希不匹配",
|
||
"extension_config_path_label": " 配置路径:%s\n\n",
|
||
"extension_description_label": " 描述:%s\n",
|
||
"extension_empty_command": "格式化后命令为空",
|
||
"extension_executable_hash_mismatch": "%s 的可执行文件哈希不匹配",
|
||
"extension_executable_label": " 可执行文件:%s\n",
|
||
"extension_executable_not_found": "未找到可执行文件:%w",
|
||
"extension_executable_required": "可执行文件路径为必填项",
|
||
"extension_executing_command": "正在执行命令:%s\n",
|
||
"extension_execution_failed_err": "执行失败:%w\n错误:%s",
|
||
"extension_execution_failed_stderr": "执行失败:%w\nstderr:%s",
|
||
"extension_execution_timed_out": "执行在 %v 后超时",
|
||
"extension_failed_format_command": "格式化命令失败:%w",
|
||
"extension_failed_get_absolute_path": "获取绝对路径失败:%w",
|
||
"extension_failed_get_extension": "获取扩展失败:%w",
|
||
"extension_failed_get_output_path": "获取输出路径失败:%w\n错误:%s",
|
||
"extension_failed_hash_executable": "计算可执行文件哈希失败:%w",
|
||
"extension_failed_marshal_registry": "序列化扩展注册表失败:%w",
|
||
"extension_failed_parse_config": "解析配置文件失败:%w",
|
||
"extension_failed_parse_registry": "解析扩展注册表失败:%w",
|
||
"extension_failed_read_config": "读取配置文件失败:%w",
|
||
"extension_failed_read_output_file": "读取输出文件失败:%w",
|
||
"extension_failed_read_registry": "读取扩展注册表失败:%w",
|
||
"extension_failed_register": "注册扩展失败:%w",
|
||
"extension_failed_remove": "删除扩展失败:%w",
|
||
"extension_failed_verify_executable": "验证可执行文件失败:%w",
|
||
"extension_file_config_label": " 文件配置:\n",
|
||
"extension_invalid_config_path": "无效的配置路径:%w",
|
||
"extension_invalid_definition": "无效的扩展定义:%w",
|
||
"extension_invalid_timeout": "无效的超时值 '%s':必须是 '30s' 或 '1m' 等时间格式:%w",
|
||
"extension_invalid_timeout_format": "无效的超时格式:%w",
|
||
"extension_name_contains_spaces": "扩展名称 '%s' 包含空格 - 名称不能包含空格",
|
||
"extension_name_detail_label": "名称:%s\n",
|
||
"extension_name_empty": "扩展名称不能为空",
|
||
"extension_name_label": "扩展:%s\n",
|
||
"extension_name_required": "扩展名称为必填项",
|
||
"extension_no_file_config": "未找到文件配置",
|
||
"extension_no_output_file": "配置中未指定输出文件",
|
||
"extension_not_found": "未找到扩展 %s",
|
||
"extension_operation_not_found": "扩展 %s 中未找到操作 %s",
|
||
"extension_operation_required": "必须定义至少一个操作",
|
||
"extension_operations_label": " 操作:\n",
|
||
"extension_registered_success": "扩展注册成功:\n",
|
||
"extension_registry_not_initialized": "扩展注册表未初始化",
|
||
"extension_status_disabled": " 状态:已禁用 — 哈希验证失败:%v\n",
|
||
"extension_status_enabled": " 状态:已启用\n",
|
||
"extension_timeout_label": " 超时:%s\n",
|
||
"extension_type_label": " 类型:%s\n",
|
||
"extension_type_required": "扩展类型为必填项",
|
||
"extension_version_label": " 版本:%s\n",
|
||
"extension_warning_load_registry": "警告:无法加载扩展注册表:%v\n",
|
||
"fabric_command_complete": "Fabric 命令完成",
|
||
"fabric_command_complete_with_pattern": "Fabric:%s 完成",
|
||
"fetch_content_exceeds_limit": "fetch:内容过大:超过 %d 字节",
|
||
"fetch_content_not_utf8": "fetch:内容不是有效的 UTF-8 文本",
|
||
"fetch_content_null_bytes": "fetch:内容包含空字节",
|
||
"fetch_content_too_large": "fetch:内容过大:%d 字节(最大 %d 字节)",
|
||
"fetch_error_create_request": "fetch:创建请求时出错:%v",
|
||
"fetch_error_fetching_url": "fetch:获取 URL 时出错:%v",
|
||
"fetch_error_reading_response": "fetch:读取响应时出错:%v",
|
||
"fetch_http_error": "fetch:HTTP 错误:%d - %s",
|
||
"fetch_unknown_operation": "fetch:未知操作 %q(支持:get)",
|
||
"fetch_unsupported_content_type": "fetch:不支持的内容类型 %q - 仅允许文本内容",
|
||
"file_already_exists_choose_different": "文件 %s 已存在。请选择不同的文件名或删除现有文件",
|
||
"file_already_exists_not_overwriting": "文件 %s 已存在,不会覆盖。请重命名现有文件或选择其他名称",
|
||
"file_manager_applied_operation": "已将 %s 操作应用于 %s",
|
||
"file_manager_empty_path": "文件更改 %d 的空路径",
|
||
"file_manager_failed_create_directory": "为文件更改 %d 创建目录 %s 失败:%w",
|
||
"file_manager_failed_parse_json": "解析 %s JSON 失败:%w",
|
||
"file_manager_failed_write_file": "为文件更改 %d 写入文件 %s 失败:%w",
|
||
"file_manager_file_content_too_large": "文件更改 %d 的文件内容太大:%d 字节",
|
||
"file_manager_invalid_format_no_json_array": "无效的 %s 格式:未找到 JSON 数组",
|
||
"file_manager_invalid_format_unbalanced_brackets": "无效的 %s 格式:括号不平衡",
|
||
"file_manager_invalid_operation": "文件更改 %d 的无效操作:%s",
|
||
"file_manager_suspicious_path": "文件更改 %d 的可疑路径:%s",
|
||
"gemini_audio_data_too_small": "音频数据太小:%d 字节,最少需要:%d",
|
||
"gemini_empty_pcm_data": "提供了空的 PCM 数据",
|
||
"gemini_invalid_location_format": "无效的搜索位置格式 %q:必须是时区(例如 'America/Los_Angeles')或语言代码(例如 'en-US')",
|
||
"gemini_invalid_voice": "无效的语音 '%s'。有效的语音有:%v",
|
||
"gemini_no_audio_data": "未从 TTS 模型收到音频数据",
|
||
"gemini_no_text_for_tts": "未找到用于 TTS 生成的文本内容",
|
||
"gemini_pcm_data_too_large": "PCM 数据太大:%d 字节,最大允许:%d",
|
||
"gemini_stream_error": "错误:%v",
|
||
"gemini_tts_failed": "TTS 生成失败:%w",
|
||
"gemini_unexpected_data_type": "意外的数据类型:%s,预期为音频数据",
|
||
"gemini_voice_not_found": "未找到语音 '%s'",
|
||
"gemini_wav_data_invalid": "生成的 WAV 数据无效:%d 字节,最少需要:%d",
|
||
"gemini_wav_generation_failed": "生成 WAV 文件失败:%w",
|
||
"githelper_failed_clone_repository": "克隆仓库失败:%w",
|
||
"githelper_failed_create_dest_directory": "创建目标目录失败:%w",
|
||
"githelper_failed_create_temp_directory": "创建临时目录失败:%w",
|
||
"githelper_failed_get_commit": "获取提交失败:%w",
|
||
"githelper_failed_get_head": "获取仓库 HEAD 失败:%w",
|
||
"githelper_failed_get_tree": "获取树失败:%w",
|
||
"githelper_failed_git_cli_clone": "git 克隆失败:%w:%s",
|
||
"githelper_failed_git_cli_fallback": "%w;git CLI 备用方案也失败了:%v",
|
||
"grab_comments_from_youtube": "从 YouTube 视频获取评论并发送到聊天",
|
||
"grab_transcript_from_youtube": "从 YouTube 视频获取转录并发送到聊天(默认使用)。",
|
||
"grab_transcript_with_timestamps": "从 YouTube 视频获取带时间戳的转录并发送到聊天",
|
||
"groups_items_number_out_of_range": "编号 %d 超出范围",
|
||
"help_message": "显示此帮助消息",
|
||
"help_options_header": "帮助选项:",
|
||
"html_readability_error": "使用原始输入,因为无法应用 HTML 可读性处理",
|
||
"i18n_download_failed": "下载语言 '%s' 的翻译失败:%v",
|
||
"i18n_load_failed": "加载翻译文件失败:%v",
|
||
"image_compression_jpeg_webp_only": "图像压缩只能用于 JPEG 和 WebP 格式,不支持 %s",
|
||
"image_compression_range_error": "图像压缩必须在 0 到 100 之间,得到 %d",
|
||
"image_dimensions_help": "图像尺寸:1024x1024、1536x1024、1024x1536、auto(默认:auto)",
|
||
"image_file_already_exists": "图像文件已存在:%s",
|
||
"image_parameters_require_image_file": "图像参数(--image-size、--image-quality、--image-background、--image-compression)只能与 --image-file 一起使用",
|
||
"image_quality_help": "图像质量:low、medium、high、auto(默认:auto)",
|
||
"invalid_config_path": "无效的配置路径:%w",
|
||
"invalid_image_background": "无效的图像背景 '%s'。支持的背景:opaque、transparent",
|
||
"invalid_image_file_extension": "无效的图像文件扩展名 '%s'。支持的格式:.png、.jpeg、.jpg、.webp",
|
||
"invalid_image_quality": "无效的图像质量 '%s'。支持的质量:low、medium、high、auto",
|
||
"invalid_image_size": "无效的图像尺寸 '%s'。支持的尺寸:1024x1024、1536x1024、1024x1536、auto",
|
||
"jina_error_creating_request": "创建请求时出错:%v",
|
||
"jina_error_reading_response_body": "读取响应正文时出错:%v",
|
||
"jina_error_sending_request": "发送请求时出错:%v",
|
||
"jina_label": "Jina AI",
|
||
"jina_setup_description": "Jina AI 服务 - 将网页获取为干净、LLM 友好的文本",
|
||
"language_label": "语言",
|
||
"language_output_question": "请输入您的默认输出语言(例如:zh_CN)",
|
||
"language_setup_description": "语言 - AI 提供商的默认输出语言",
|
||
"list_all_available_models": "列出所有可用模型",
|
||
"list_all_contexts": "列出所有上下文",
|
||
"list_all_patterns": "列出所有模式",
|
||
"list_all_registered_extensions": "列出所有已注册的扩展",
|
||
"list_all_sessions": "列出所有会话",
|
||
"list_all_strategies": "列出所有策略",
|
||
"list_all_vendors": "列出所有供应商",
|
||
"list_gemini_tts_voices": "列出所有可用的 Gemini TTS 语音",
|
||
"list_transcription_models": "列出所有可用的转录模型",
|
||
"lmstudio_api_url_question": "请输入您的 %v URL(提醒一下,通常是 %v)",
|
||
"lmstudio_error_reading_response": "读取响应时出错:%w",
|
||
"lmstudio_failed_create_request": "创建请求失败:%w",
|
||
"lmstudio_failed_decode_response": "解码响应失败:%w",
|
||
"lmstudio_failed_marshal_payload": "序列化负载失败:%w",
|
||
"lmstudio_failed_send_request": "发送请求失败:%w",
|
||
"lmstudio_invalid_response_missing_choices": "无效的响应格式:选项缺失或为空",
|
||
"lmstudio_invalid_response_missing_content": "无效的响应格式:消息中的内容缺失或不是字符串",
|
||
"lmstudio_invalid_response_missing_message": "无效的响应格式:第一个选项中缺少消息",
|
||
"lmstudio_invalid_response_missing_text": "无效的响应格式:第一个选项中的文本缺失或不是字符串",
|
||
"lmstudio_no_embeddings_returned": "未返回嵌入向量",
|
||
"lmstudio_unexpected_status_code": "意外的状态码:%d",
|
||
"model_context_length_ollama": "模型上下文长度(仅影响 ollama)",
|
||
"model_for_transcription": "用于转录的模型(与聊天模型分离)",
|
||
"no_description_available": "没有可用描述",
|
||
"no_items_found": "没有 %s",
|
||
"no_notification_system_available": "没有可用的通知系统",
|
||
"notifications_no_provider_available": "没有可用的通知提供者",
|
||
"number_of_latest_patterns": "要列出的最新模式数量",
|
||
"ollama_cannot_parse_url": "无法解析 URL '%s':%v",
|
||
"ollama_chat_request_failed": "聊天请求失败:%v",
|
||
"ollama_empty_address": "地址为空",
|
||
"ollama_error_building_chat_url": "构建 /chat URL 时出错:%v",
|
||
"ollama_error_creating_chat_request": "创建 /chat 请求时出错:%v",
|
||
"ollama_error_endpoint": "测试端点时出错",
|
||
"ollama_error_getting_chat_body": "获取 /chat 正文时出错:%v",
|
||
"ollama_error_marshalling_body": "序列化正文时出错:%v",
|
||
"ollama_error_parse_upstream_response": "错误:无法解析上游响应",
|
||
"ollama_error_prefix": "错误:%s",
|
||
"ollama_error_reading_body": "读取正文时出错:%v",
|
||
"ollama_error_scanning_body": "扫描正文时出错:%v",
|
||
"ollama_error_unmarshalling_body": "解析正文时出错:%v",
|
||
"ollama_error_writing_response": "写入响应时出错:%v",
|
||
"ollama_failed_create_request": "创建请求失败",
|
||
"ollama_failed_decode_data_url": "解码数据 URL 失败:%v",
|
||
"ollama_failed_fetch_image": "从 %s 获取图像失败:%s",
|
||
"ollama_failed_scan_sse_stream": "扫描 SSE 响应流失败:%v",
|
||
"ollama_failed_unmarshal_fabric_response": "解析 Fabric 响应失败",
|
||
"ollama_http_timeout_question": "请输入 HTTP 超时时间(例如 20m, 60s)",
|
||
"ollama_invalid_address": "无效地址:%w",
|
||
"ollama_invalid_address_missing_host": "无效地址:缺少主机",
|
||
"ollama_invalid_address_missing_hostname": "无效地址:缺少主机名",
|
||
"ollama_invalid_address_path_not_allowed": "无效地址:简单地址中不允许路径组件",
|
||
"ollama_invalid_data_url_format": "无效的数据 URL 格式",
|
||
"ollama_invalid_http_timeout_using_default": "无效的 HTTP 超时时间 '%s':%v,使用默认值",
|
||
"ollama_invalid_num_ctx_in_request": "请求中的 num_ctx 无效:%v",
|
||
"ollama_invalid_request_body": "无效的请求正文",
|
||
"ollama_no_content_from_upstream": "未从上游 Fabric 服务器收到内容",
|
||
"ollama_num_ctx_exceeds_maximum": "num_ctx 超过允许的最大值 %d",
|
||
"ollama_num_ctx_invalid_type": "num_ctx 必须是数字,收到无效类型",
|
||
"ollama_num_ctx_must_be_finite": "num_ctx 必须是有限数",
|
||
"ollama_num_ctx_must_be_integer": "num_ctx 必须是整数,收到带小数部分的浮点数",
|
||
"ollama_num_ctx_must_be_positive": "num_ctx 必须为正数,收到:%d",
|
||
"ollama_num_ctx_must_be_valid_number": "num_ctx 必须是有效的数字",
|
||
"ollama_num_ctx_must_be_valid_number_got": "num_ctx 必须是有效的数字,收到:%s",
|
||
"ollama_num_ctx_value_out_of_range": "num_ctx 值超出范围",
|
||
"ollama_num_ctx_value_too_large": "num_ctx 值过大:%d",
|
||
"ollama_sse_buffer_limit": "SSE 行超过 1MB 缓冲区限制 - 数据行过大",
|
||
"ollama_upstream_non_2xx": "上游 Fabric 服务器返回非 2xx 状态 %d:%s",
|
||
"ollama_upstream_non_2xx_body_unreadable": "上游 Fabric 服务器返回非 2xx 状态 %d 且无法读取正文:%v",
|
||
"ollama_upstream_request_failed": "无法连接上游 Fabric 服务器",
|
||
"ollama_upstream_returned_status": "上游 Fabric 服务器返回状态 %d",
|
||
"ollama_warning_no_content": "警告:未从上游 Fabric 服务器收到内容",
|
||
"ollama_warning_parse_variables": "警告:无法将 options.variables 解析为 JSON:%v",
|
||
"openai_api_base_url_not_configured": "未为提供商 %s 配置 API 基础 URL",
|
||
"openai_audio_ffmpeg_failed": "ffmpeg 失败:%v:%s",
|
||
"openai_audio_ffmpeg_not_found_install": "未找到 ffmpeg:请安装",
|
||
"openai_audio_file_exceeds_limit_enable_split": "文件 %s 超过 25MB 限制;使用 --split-media-file 启用自动分割",
|
||
"openai_audio_file_exceeds_limit_splitting": "文件 %s 超过大小限制...正在分割...",
|
||
"openai_audio_model_not_supported_for_transcription": "模型 '%s' 不支持转录",
|
||
"openai_audio_running_ffmpeg_split_chunks": "正在运行 ffmpeg 将音频分割为 %d 秒的片段...",
|
||
"openai_audio_unable_to_split_acceptable_size_chunks": "无法将文件分割为可接受大小的片段",
|
||
"openai_audio_unsupported_audio_format": "不支持的音频格式 '%s'",
|
||
"openai_audio_using_model_to_transcribe_part": "使用模型 %s 转录第 %d 部分(文件名:%s)...",
|
||
"openai_compatible_unknown_static_model_list": "未知的静态模型列表:%s",
|
||
"openai_failed_to_create_models_url": "创建模型 URL 失败:%w",
|
||
"openai_image_failed_to_create_directory": "创建目录 %s 失败:%w",
|
||
"openai_image_failed_to_decode_image_data": "解码图像数据失败:%w",
|
||
"openai_image_failed_to_save_image": "保存图像到 %s 失败:%w",
|
||
"openai_image_saved_to": "图像已保存到:%s",
|
||
"openai_model_no_image_generation": "模型 '%s' 不支持图像生成。支持的模型:%s",
|
||
"openai_models_rate_limited": "从提供商 %s 获取模型时超出速率限制;请在 %s 秒后重试",
|
||
"openai_models_response_too_large": "来自提供商 %s 的模型响应过大(>%d 字节)",
|
||
"openai_unable_to_parse_models_response": "无法解析模型响应;原始响应:%s",
|
||
"openai_unexpected_status_code_read_error": "意外的状态码:来自提供商 %s 的 %d(读取响应主体失败:%v)",
|
||
"openai_unexpected_status_code_with_body": "意外的状态码:来自提供商 %s 的 %d,响应主体:%s",
|
||
"openai_warning_model_no_image_generation": "警告:模型 '%s' 不支持图像生成。支持的模型:%s。请考虑使用 -m gpt-5.2 进行图像生成。\n",
|
||
"optional_marker": "(可选)",
|
||
"options_placeholder": "[选项]",
|
||
"output_entire_session": "将整个会话(包括临时会话)输出到输出文件",
|
||
"output_full": "输出:%s",
|
||
"output_raw_list_shell_completion": "输出不带标题/格式的原始列表(用于 shell 补全)",
|
||
"output_to_file": "输出到文件",
|
||
"output_truncated": "输出:%s...",
|
||
"output_video_metadata": "输出视频元数据",
|
||
"path_to_yaml_config": "YAML 配置文件路径",
|
||
"pattern_not_found_list_available": "未找到模式 '%s'。运行 'fabric -l' 查看可用模式",
|
||
"pattern_invalid_name": "无效的模式名称:%q",
|
||
"pattern_not_found_no_patterns": "未找到模式 '%s'。\n\n未安装任何模式!要解决此问题:\n • 运行 'fabric --setup' 配置并下载模式\n • 或运行 'fabric -U' 直接下载/更新模式",
|
||
"pattern_variables_help": "模式变量的值,例如 -v=#role:expert -v=#points:30",
|
||
"patterns_cloning_repository": "正在克隆仓库 %s(至路径:%s)...\\n",
|
||
"patterns_debug_included_custom_directory": "📂 还包含了自定义目录中的模式:%s\\n",
|
||
"patterns_detected_old_path": "🔄 检测到旧的模式路径“patterns”,尝试迁移到“data/patterns”...",
|
||
"patterns_download_success": "✅ 已成功下载并安装模式到 %s\\n",
|
||
"patterns_downloaded_temp": "已将 %d 个模式下载到临时目录\\n",
|
||
"patterns_downloading": "正在下载模式并填充 %s...\\n",
|
||
"patterns_error_create_directory": "无法创建模式目录:%v",
|
||
"patterns_error_get_home_directory": "无法获取主目录:%v",
|
||
"patterns_error_load_from_file": "无法从文件 %s 加载模式:%w",
|
||
"patterns_error_read_pattern_file": "无法读取模式文件 %s:%v",
|
||
"patterns_error_read_unique_file": "无法读取唯一模式文件。请运行 --updatepatterns (%s)",
|
||
"patterns_error_resolve_file_path": "无法解析文件路径:%v",
|
||
"patterns_error_save_pattern": "无法保存模式:%v",
|
||
"patterns_failed_access_directory": "访问模式目录 '%s' 失败:%w",
|
||
"patterns_failed_create_temp_dir": "创建临时目录失败:%w",
|
||
"patterns_failed_create_temp_folder": "创建模式临时文件夹失败:%w",
|
||
"patterns_failed_download_from_git": "从 Git 仓库下载模式失败:%w",
|
||
"patterns_failed_download_from_repo": "从 %s 下载模式失败:%w",
|
||
"patterns_failed_loaded_marker": "创建标记文件 '%s' 失败:%w",
|
||
"patterns_failed_move_patterns": "将模式移动到配置目录失败:%w",
|
||
"patterns_failed_move_test_patterns": "将测试模式移动到临时文件夹失败:%w",
|
||
"patterns_failed_read_directory": "读取模式目录失败:%w",
|
||
"patterns_failed_read_temp_directory": "读取模式临时目录失败:%w",
|
||
"patterns_failed_unique_file": "创建唯一模式文件失败:%w",
|
||
"patterns_failed_write_unique_file": "写入唯一模式文件失败:%w",
|
||
"patterns_found_new_path": "✅ 在新路径“%s”找到 %d 个模式,正在更新配置...\\n",
|
||
"patterns_git_repo_folder_question": "请输入存储模式的 Git 仓库默认文件夹",
|
||
"patterns_git_repo_url_question": "请输入用于模式的默认 Git 仓库 URL",
|
||
"patterns_loader_label": "模式加载器",
|
||
"patterns_no_patterns_copied": "未能成功将模式复制到 %s",
|
||
"patterns_no_patterns_found_in_directories": "在目录 %s 和 %s 中未找到模式",
|
||
"patterns_no_patterns_found_in_directory": "在目录 %s 中未找到模式",
|
||
"patterns_no_patterns_migration_failed": "在仓库路径 %s 未找到模式且迁移失败:%w",
|
||
"patterns_not_found_header": "⚠️ 未找到模式!",
|
||
"patterns_option_run_setup": "选项 1(推荐):运行设置以下载模式",
|
||
"patterns_option_run_setup_command": "fabric --setup",
|
||
"patterns_option_run_update": "选项 2:直接下载/更新模式",
|
||
"patterns_option_run_update_command": "fabric -U",
|
||
"patterns_preserve_warning": "警告:未能保留自定义模式 '%s':%v\\n",
|
||
"patterns_preserved_custom_pattern": "已保留自定义模式:%s\\n",
|
||
"patterns_required_to_work": "Fabric 需要模式才能运行。要解决此问题:",
|
||
"patterns_saving_updated_configuration": "💾 正在保存更新的配置(路径从 '%s' 更改为 '%s')...\\n",
|
||
"patterns_setup_description": "模式 - 下载模式",
|
||
"patterns_unable_to_find_or_migrate": "在当前路径“%s”未找到模式,也无法迁移到新结构",
|
||
"patterns_unique_file_created": "📝 已创建包含 %d 个模式的唯一模式文件\\n",
|
||
"patterns_warning_custom_directory": "警告:无法读取自定义模式目录 %s:%v\\n",
|
||
"patterns_warning_remove_test_folder": "警告:无法删除测试临时文件夹 '%s':%v\\n",
|
||
"perplexity_api_key_not_configured": "%s 的 API 密钥未配置。设置环境变量 %s 或运行 'fabric --setup' 配置 %s",
|
||
"perplexity_api_request_failed": "Perplexity API 请求失败:%w",
|
||
"perplexity_citations_header": "\n\n**引用:**\n",
|
||
"perplexity_failed_configure": "Perplexity 配置失败:%w",
|
||
"perplexity_streaming_error": "Perplexity 流式传输错误:%v",
|
||
"plugin_configured": " ✓",
|
||
"plugin_enable_bool_question": "启用 %v %v(true/false)",
|
||
"plugin_enter_value": "请输入您的 %v %v",
|
||
"plugin_invalid_bool": "无效的 bool:%q",
|
||
"plugin_invalid_boolean_value": "无效的布尔值:%v",
|
||
"plugin_not_configured": " ⚠️ 未配置",
|
||
"plugin_question_bool": "%v%v(true/false,留空表示使用 '%s',或输入 '%v' 清除值):",
|
||
"plugin_question_optional": "%v%v(留空以跳过):",
|
||
"plugin_question_with_default": "%v%v(留空表示使用 '%s',或输入 '%v' 清除值):",
|
||
"plugin_registry_could_not_find_vendor": "找不到供应商",
|
||
"plugin_registry_error_configuring_custom_patterns": "配置 CustomPatterns 错误:%w",
|
||
"plugin_registry_model_not_available_for_vendor": "模型 %s 对供应商 %s 不可用",
|
||
"plugin_registry_run_setup_select_defaults": "请运行 'fabric --setup' 并选择默认模型 and 供应商",
|
||
"plugin_setting_not_valid": "%v=%v 无效",
|
||
"plugin_setup_configured": "[%v] 已配置",
|
||
"plugin_setup_skipped": "[%v] 已跳过\\n",
|
||
"prefer_playlist_over_video": "如果 URL 中同时存在两个 ID,则优先选择播放列表而不是视频",
|
||
"print_context": "打印上下文",
|
||
"print_current_version": "打印当前版本",
|
||
"print_metadata_to_stderr": "将元数据(输入/输出令牌)打印到 stderr",
|
||
"print_pattern_contents": "将指定模式的内容打印到终端",
|
||
"print_session": "打印会话",
|
||
"register_new_extension": "从配置文件路径注册新扩展",
|
||
"remove_registered_extension": "按名称删除已注册的扩展",
|
||
"required_marker": "(必需)",
|
||
"run_setup_for_reconfigurable_parts": "为 Fabric 的所有可重新配置部分运行设置",
|
||
"save_generated_image_to_file": "将生成的图像保存到指定文件路径(例如,'output.png')",
|
||
"scrape_website_url": "使用 Jina AI 将网站 URL 抓取为 Markdown",
|
||
"scraping_not_configured": "抓取功能未配置。请设置 Jina 以启用抓取功能",
|
||
"search_question_jina": "使用 Jina AI 搜索问题",
|
||
"seed_for_lmm_generation": "用于 LMM 生成的种子",
|
||
"send_desktop_notification": "命令完成时发送桌面通知",
|
||
"serve_fabric_api_ollama_endpoints": "提供带有 ollama 端点的 Fabric REST API 服务",
|
||
"serve_fabric_rest_api": "提供 Fabric REST API 服务",
|
||
"server_api_key_required": "拒绝在非回环地址 %s 上提供服务(未配置 API 密钥):请设置 --api-key 或 FABRIC_API_KEY,或绑定回环地址(如 127.0.0.1:8080)",
|
||
"server_chat_error": "错误:%v",
|
||
"server_error_marshaling_response": "序列化响应错误:%v",
|
||
"server_error_writing_response": "写入响应错误:%v",
|
||
"server_invalid_request_format": "无效的请求格式:%v",
|
||
"server_no_api_key_warning": "正在启动 REST API 服务器,未启用 API 密钥身份验证。这可能带来安全风险。",
|
||
"sessions_creating_new": "正在创建新会话:%s\n",
|
||
"set_debug_level": "设置调试级别(0=关闭,1=基本,2=详细,3=跟踪,4=wire)",
|
||
"set_frequency_penalty": "设置频率惩罚",
|
||
"set_location_web_search": "设置网络搜索结果的位置(例如,'America/Los_Angeles')",
|
||
"set_presence_penalty": "设置存在惩罚",
|
||
"set_reasoning_thinking_level": "设置推理/思考级别(例如,off、low、medium、high,或 Anthropic 或 Google Gemini 的数字令牌)",
|
||
"set_temperature": "设置温度",
|
||
"set_top_p": "设置 top P",
|
||
"setup_add_more_providers_later": "您可以稍后通过 'fabric --setup' 添加更多提供商",
|
||
"setup_ai_provider_required": "Fabric 需要至少一个 AI 提供商才能运行。",
|
||
"setup_available_ai_providers": "可用的 AI 提供商:",
|
||
"setup_available_plugins": "可用的插件:",
|
||
"setup_complete_header": "✅ 设置完成!您现在可以开始使用 Fabric 了。",
|
||
"setup_configure_more": "• 配置更多设置:fabric --setup",
|
||
"setup_enter_ai_provider_number": "AI 提供商编号",
|
||
"setup_failed_download_patterns": "下载模式失败:%w",
|
||
"setup_failed_download_strategies": "下载策略失败:%w",
|
||
"setup_failed_set_defaults": "设置默认提供商和模型失败:%w",
|
||
"setup_invalid_selection": "无效的选择:%s",
|
||
"setup_list_patterns": "• 列出可用模式:fabric -l",
|
||
"setup_next_steps": "下一步:",
|
||
"setup_no_ai_provider_selected": "未选择 AI 提供商 - 至少需要一个",
|
||
"setup_optional_configuration_header": "━━━ 可选配置 ━━━\n\n可选工具",
|
||
"setup_plugin_number": "插件编号",
|
||
"setup_plugin_prompt": "请输入要设置的插件编号",
|
||
"setup_required_configuration_header": "━━━ 必需配置 ━━━\n\nAI 提供商 [至少需要一个]",
|
||
"setup_required_tools": "必需工具",
|
||
"setup_step_configure_ai_provider": "🤖 步骤 3:配置 AI 提供商",
|
||
"setup_step_downloading_patterns": "📥 步骤 1:正在下载模式(Patterns,Fabric 运行所需)...",
|
||
"setup_step_downloading_strategies": "📥 步骤 2:正在下载策略(Fabric 运行所需)...",
|
||
"setup_step_setting_defaults": "⚙️ 步骤 4:正在设置默认提供商和模型...",
|
||
"setup_try_pattern": "• 尝试一个模式:echo '您的文本' | fabric --pattern summarize",
|
||
"setup_validation_ai_provider_configured": "✓ AI 提供商已配置",
|
||
"setup_validation_ai_provider_missing": "✗ AI 提供商未配置 - Fabric 运行所需",
|
||
"setup_validation_complete": "✓ 所有必需组件已配置!",
|
||
"setup_validation_defaults_configured": "✓ 默认提供商/模型已设置:%s/%s",
|
||
"setup_validation_defaults_missing": "✗ 默认提供商/模型未设置 - Fabric 运行所需",
|
||
"setup_validation_header": "配置状态:",
|
||
"setup_validation_incomplete_help": "再次运行 'fabric --setup' 配置缺失项,\n或运行 'fabric -U' 下载模式和策略。",
|
||
"setup_validation_incomplete_warning": "⚠️ 设置不完整!缺少必需组件。",
|
||
"setup_validation_patterns_configured": "✓ 模式已下载",
|
||
"setup_validation_patterns_missing": "✗ 未找到模式 - Fabric 运行所需",
|
||
"setup_validation_strategies_configured": "✓ 策略已下载",
|
||
"setup_validation_strategies_missing": "✗ 未找到策略 - Fabric 运行所需",
|
||
"setup_welcome_header": "🎉 欢迎使用 Fabric!让我们开始设置。",
|
||
"show_dry_run": "显示将发送给模型的内容而不实际发送",
|
||
"specify_language_code": "指定聊天的语言代码,例如 -g=en -g=zh -g=pt-BR -g=pt-PT",
|
||
"specify_vendor_for_model": "为所选模型指定供应商(例如,-V \"LM Studio\" -m openai/gpt-oss-20b)",
|
||
"split_media_files_ffmpeg": "使用 ffmpeg 分割大于 25MB 的音频/视频文件",
|
||
"spotify_api_request_failed": "API 请求失败:状态 %d,响应:%s",
|
||
"spotify_audio_preview_label": "**音频预览**:%s",
|
||
"spotify_client_id_question": "请输入您的 Spotify CLIENT ID",
|
||
"spotify_client_secret_question": "请输入您的 Spotify CLIENT SECRET",
|
||
"spotify_description_header": "## 描述",
|
||
"spotify_duration_label": "**时长**:%d 分钟",
|
||
"spotify_episode_header": "# Spotify 剧集",
|
||
"spotify_error_getting_metadata": "获取 Spotify 元数据时出错:%v",
|
||
"spotify_explicit_label": "**露骨内容**:%v",
|
||
"spotify_failed_create_request": "创建请求失败:%w",
|
||
"spotify_failed_create_token_request": "创建令牌请求失败:%w",
|
||
"spotify_failed_decode_token_response": "解码令牌响应失败:%w",
|
||
"spotify_failed_execute_request": "执行请求失败:%w",
|
||
"spotify_failed_get_access_token": "获取访问令牌失败:状态 %d,响应:%s",
|
||
"spotify_failed_get_show_episodes": "获取节目剧集失败:%w",
|
||
"spotify_failed_parse_episode_metadata": "解析剧集元数据失败:%w",
|
||
"spotify_failed_parse_episodes": "解析剧集失败:%w",
|
||
"spotify_failed_parse_search_results": "解析搜索结果失败:%w",
|
||
"spotify_failed_parse_show_metadata": "解析节目元数据失败:%w",
|
||
"spotify_failed_read_response_body": "读取响应正文失败:%w",
|
||
"spotify_failed_request_access_token": "请求访问令牌失败:%w",
|
||
"spotify_invalid_url": "无效的 Spotify URL,无法获取节目或剧集 ID:'%s'",
|
||
"spotify_label": "Spotify",
|
||
"spotify_language_field_label": "**语言**:%s",
|
||
"spotify_languages_label": "**语言**:%s",
|
||
"spotify_media_type_label": "**媒体类型**:%s",
|
||
"spotify_no_episode_found": "未找到 ID 为 %s 的剧集",
|
||
"spotify_no_show_found": "未找到 ID 为 %s 的节目",
|
||
"spotify_not_configured": "Spotify 未配置,请运行设置程序",
|
||
"spotify_publisher_label": "**出版商**:%s",
|
||
"spotify_release_date_label": "**发布日期**:%s",
|
||
"spotify_search_description_label": "- **描述**:%s",
|
||
"spotify_search_episodes_label": "- **剧集数**:%d",
|
||
"spotify_search_failed": "搜索失败:%w",
|
||
"spotify_search_publisher_label": "- **出版商**:%s",
|
||
"spotify_search_results_header": "# Spotify 搜索结果",
|
||
"spotify_search_url_label": "- **URL**:%s",
|
||
"spotify_setup_description": "Spotify - 从 Spotify 获取播客/节目元数据",
|
||
"spotify_show_header": "# Spotify 播客/节目",
|
||
"spotify_show_name_label": "**节目**:%s",
|
||
"spotify_title_label": "**标题**:%s",
|
||
"spotify_total_episodes_label": "**总剧集数**:%d",
|
||
"spotify_url_help": "Spotify 播客或单集 URL,用于获取元数据并发送到聊天",
|
||
"spotify_url_label": "**URL**:%s",
|
||
"start_tag_thinking_sections": "思考部分的开始标签",
|
||
"storage_error_delete": "无法删除 %s:%v",
|
||
"storage_error_load": "无法加载 %s:%v",
|
||
"storage_error_marshal": "无法序列化 %s:%s",
|
||
"storage_error_read_directory": "无法读取目录中的项目:%v",
|
||
"storage_error_rename": "无法将 %s 重命名为 %s:%v",
|
||
"storage_error_resolve_directory": "无法解析目录路径:%v",
|
||
"storage_error_save": "无法保存 %s:%v",
|
||
"storage_error_stat_entry": "无法获取条目 %s 的信息:%v",
|
||
"storage_error_unmarshal": "无法反序列化 %s:%s",
|
||
"storage_invalid_name": "无效的名称:%q",
|
||
"strategies_available_header": "可用的策略:",
|
||
"strategies_cloning_repository": "正在克隆仓库 %s(至路径:%s)...\\n",
|
||
"strategies_download_success": "✅ 已成功下载并安装策略到 %s\\n",
|
||
"strategies_downloaded_count": "已下载 %d 个策略\\n",
|
||
"strategies_downloading": "正在下载策略并填充 %s...\\n",
|
||
"strategies_failed_create_directory": "创建策略目录失败:%w",
|
||
"strategies_failed_download": "下载策略失败:%w",
|
||
"strategies_git_repo_folder_question": "请输入存储策略的 Git 仓库默认文件夹",
|
||
"strategies_git_repo_url_question": "请输入用于策略的默认 Git 仓库 URL",
|
||
"strategies_home_dir_error": "无法获取主目录:%v",
|
||
"strategies_home_dir_fallback": "无法获取主目录:%v,改用当前目录",
|
||
"strategies_label": "提示策略",
|
||
"strategies_none_found": "未找到任何策略。请运行 'fabric --setup' 下载策略",
|
||
"strategies_setup_description": "策略 - 下载提示策略(如 chain of thought)",
|
||
"strategy_not_found": "未找到策略 %s。运行 'fabric --liststrategies' 查看列表",
|
||
"strategy_path_traversal": "策略名称 %q 解析到策略目录之外",
|
||
"stream_help": "流式传输",
|
||
"suppress_thinking_tags": "抑制包含在思考标签中的文本",
|
||
"template_datetime_error_invalid_number": "相对时间中的数字无效:%q",
|
||
"template_datetime_error_invalid_relative_format": "无效的相对时间格式",
|
||
"template_datetime_error_invalid_unit": "无效的时间单位:%q",
|
||
"template_datetime_error_relative_requires_value": "相对时间需要一个值",
|
||
"template_datetime_error_unknown_operation": "datetime:未知操作 %q",
|
||
"template_extension_error": "扩展 %s 错误:%v",
|
||
"template_file_error_expand_home_dir": "file:无法展开主目录:%v",
|
||
"template_file_error_invalid_line_count": "file:无效的行数 %q",
|
||
"template_file_error_line_count_positive": "file:行数必须为正数",
|
||
"template_file_error_open_file": "file:无法打开:%v",
|
||
"template_file_error_path_contains_parent_ref": "file:路径不能包含 '..'",
|
||
"template_file_error_read_file": "file:无法读取:%v",
|
||
"template_file_error_scanner_read": "file:读取时出错:%v",
|
||
"template_file_error_size_exceeds_limit": "file:大小 %d 超过 %d 字节限制",
|
||
"template_file_error_stat_file": "file:无法获取文件状态:%v",
|
||
"template_file_error_stat_open_file": "file:无法获取状态:%v",
|
||
"template_file_error_tail_requires_path_lines": "file:tail 需要 path|lines 格式",
|
||
"template_file_error_unknown_operation": "file:未知操作 %q(支持:read, tail, exists, size, modified)",
|
||
"template_file_log_cleaned_path": "文件:清理后的路径 %q",
|
||
"template_file_log_exists_for_path": "文件:路径 %q 的 exists=%v",
|
||
"template_file_log_modified_for_path": "文件:路径 %q 的 modified=%q",
|
||
"template_file_log_operation_value": "文件:operation=%q value=%q",
|
||
"template_file_log_read_bytes": "文件:已读取 %d 字节",
|
||
"template_file_log_read_total_return_last": "文件:共读取 %d 行,返回最后 %d 行",
|
||
"template_file_log_reading_last_lines": "文件:正在从 %q 读取最后 %d 行",
|
||
"template_file_log_size_for_path": "文件:路径 %q 的 size=%d",
|
||
"template_file_log_tail_returning_lines": "文件:tail 返回 %d 行",
|
||
"template_file_log_validating_path": "文件:正在验证路径 %q",
|
||
"template_hash_open_file": "打开文件:%w",
|
||
"template_hash_read_file": "读取文件:%w",
|
||
"template_missing_required_variable": "缺少必需变量:%s",
|
||
"template_plugin_error": "插件 %s 错误:%v",
|
||
"template_processing_stuck": "模板处理卡住 - 可能存在无限循环",
|
||
"template_sys_error_env_requires_var": "env:需要变量名",
|
||
"template_sys_error_home": "获取主目录失败:%v",
|
||
"template_sys_error_hostname": "获取主机名失败:%v",
|
||
"template_sys_error_pwd": "获取工作目录失败:%v",
|
||
"template_sys_error_unknown_operation": "sys:未知操作 %q",
|
||
"template_sys_error_user": "获取当前用户失败:%v",
|
||
"template_text_empty_input": "文本:操作 %q 的输入为空",
|
||
"template_text_unknown_operation": "文本:未知文本操作 %q(支持:upper、lower、title、trim)",
|
||
"template_unknown_plugin_namespace": "未知的插件命名空间:%s",
|
||
"template_utils_failed_get_absolute_path": "获取绝对路径失败:%w",
|
||
"template_utils_failed_get_home_dir": "获取用户主目录失败:%w",
|
||
"template_utils_path_not_exist": "路径不存在:%w",
|
||
"transcription_model_required": "需要转录模型(使用 --transcribe-model)",
|
||
"transparent_background_png_webp_only": "透明背景只能用于 PNG 和 WebP 格式,不支持 %s",
|
||
"tts_audio_generated_successfully": "TTS 音频生成成功并保存到:%s\n",
|
||
"tts_model_requires_audio_output": "TTS 模型 '%s' 需要音频输出。请使用 -o 标志指定音频输出文件(例如,-o output.wav)",
|
||
"tts_voice_name": "支持模型的 TTS 语音名称(例如,Kore、Charon、Puck)",
|
||
"unsupported_conversion": "不支持从 %v 到 %v 的转换",
|
||
"update_patterns": "更新模式",
|
||
"usage_header": "用法:",
|
||
"use_model_defaults_raw_help": "在不发送聊天选项(temperature、top_p 等)的情况下使用模型默认值。仅影响兼容 OpenAI 的提供商。Anthropic 模型始终使用智能参数选择以满足特定模型的要求。",
|
||
"util_error_accessing_config_path": "访问默认配置路径错误:%w",
|
||
"util_error_determine_home_directory": "无法确定用户主目录:%w",
|
||
"util_error_get_absolute_path": "无法获取绝对路径",
|
||
"util_error_path_is_empty": "路径为空",
|
||
"util_error_resolve_home_directory": "无法解析主目录",
|
||
"util_error_resolve_symlinks": "无法解析符号链接:%w",
|
||
"vendor_no_transcription_support": "供应商 %s 不支持音频转录",
|
||
"vendor_not_configured": "供应商 %s 未配置",
|
||
"vendor_not_found": "未找到供应商 %s",
|
||
"vendors_no_ai_vendors_configured_read_models": "没有配置 AI 供应商来读取模型",
|
||
"vertexai_client_not_initialized": "VertexAI 客户端未初始化",
|
||
"vertexai_error_api_status": "API 返回状态 %d:%s",
|
||
"vertexai_error_create_request": "创建请求失败:%w",
|
||
"vertexai_error_parse_response": "解析响应失败:%w",
|
||
"vertexai_error_read_response": "读取响应失败:%w",
|
||
"vertexai_error_request_failed": "请求失败:%w",
|
||
"vertexai_error_response_too_large": "响应过大 (>%d 字节)",
|
||
"vertexai_failed_gemini_client": "创建 Gemini 客户端失败:%w",
|
||
"vertexai_failed_google_credentials": "获取 Google 凭据失败(请确保 ADC 已配置):%w",
|
||
"vertexai_no_content_in_response": "响应中没有内容",
|
||
"vertexai_no_conversational_models": "未找到对话模型",
|
||
"vertexai_no_models_found": "未从任何发布者找到模型",
|
||
"vertexai_no_valid_messages": "没有有效的消息可发送",
|
||
"vertexai_stream_error": "错误:%v",
|
||
"wipe_context": "清除上下文",
|
||
"wipe_session": "清除会话",
|
||
"youtube_api_key_required": "YouTube API 密钥用于评论 and 元数据。运行 'fabric --setup' 进行配置",
|
||
"youtube_auth_required_bot_detection": "YouTube 需要身份验证(机器人检测)。使用 --yt-dlp-args='--cookies-from-browser BROWSER',其中 BROWSER 可以是 chrome、firefox、brave 等。",
|
||
"youtube_empty_seconds_string": "秒数字符串为空",
|
||
"youtube_error_getting_comments": "获取评论时出错:%v",
|
||
"youtube_error_getting_metadata": "获取视频元数据时出错:%v",
|
||
"youtube_error_getting_video_details": "获取视频详情时出错:%v",
|
||
"youtube_error_parsing_duration": "解析视频时长时出错:%v",
|
||
"youtube_error_saving_csv": "将视频保存为 CSV 时出错:%v",
|
||
"youtube_extract_visual_data_help": "使用 OCR 和 FFmpeg 从视频中提取视觉数据",
|
||
"youtube_failed_create_temp_dir": "创建临时目录失败:%v",
|
||
"youtube_failed_fetch_comments": "获取评论失败:%v",
|
||
"youtube_failed_get_stream_url": "无法通过 yt-dlp 获取流 URL:%v",
|
||
"youtube_failed_parse_http_stream_url": "无法从 yt-dlp 输出中解析出有效的 HTTP 流 URL",
|
||
"youtube_failed_walk_directory": "遍历目录失败:%v",
|
||
"youtube_ffmpeg_frame_extraction_failed": "ffmpeg 提取帧失败:%v,输出:%s",
|
||
"youtube_ffmpeg_required_visual_extraction": "视觉提取需要 ffmpeg,但在 PATH 中未找到",
|
||
"youtube_invalid_duration_string": "无效的时长字符串:%s",
|
||
"youtube_invalid_seconds_format": "无效的秒数格式 %q:%w",
|
||
"youtube_invalid_timestamp_format": "无效的时间戳格式:%s",
|
||
"youtube_invalid_url": "无效的 YouTube URL,无法获取视频或播放列表 ID:'%s'",
|
||
"youtube_invalid_ytdlp_arguments": "无效的 yt-dlp 参数:%v",
|
||
"youtube_label": "YouTube",
|
||
"youtube_no_clear_text_visual_frames": "在视频视觉帧中未找到清晰文本",
|
||
"youtube_no_transcript_content": "在 VTT 文件中未找到转录内容",
|
||
"youtube_no_url_provided": "未提供 YouTube URL",
|
||
"youtube_no_video_found_with_id": "未找到 ID 为 %s 的视频",
|
||
"youtube_no_video_id_found": "在 URL 中未找到视频 ID",
|
||
"youtube_no_vtt_files_found": "在目录中未找到 VTT 文件",
|
||
"youtube_not_configured": "YouTube 未配置,请运行设置程序",
|
||
"youtube_playlist_header": "播放列表:%s",
|
||
"youtube_playlist_saved_to": "播放列表已保存到 %s",
|
||
"youtube_rate_limit_exceeded": "超过 YouTube 速率限制。请稍后重试,或使用不同的 yt-dlp 参数(如 '--sleep-requests 1')来减慢请求速度。",
|
||
"youtube_setup_description": "YouTube - 获取视频转录(通过 yt-dlp)和评论/元数据(通过 YouTube API)",
|
||
"youtube_tesseract_frame_failed": "tesseract 在第 %d 帧上失败:%v,stderr:%s",
|
||
"youtube_tesseract_required_visual_extraction": "视觉提取需要 tesseract,但在 PATH 中未找到",
|
||
"youtube_url_help": "YouTube 视频或播放列表 \"URL\",用于获取转录、评论并发送到聊天或打印到控制台并存储到输出文件",
|
||
"youtube_url_is_playlist_not_video": "URL 是播放列表,而不是视频",
|
||
"youtube_video_id_title_header": "视频 ID:标题",
|
||
"youtube_visual_fps_help": "按指定的每秒帧数提取画面,而不是使用场景检测",
|
||
"youtube_visual_frame_cue": "[视觉帧提示]",
|
||
"youtube_visual_sensitivity_help": "FFmpeg 场景检测的容差(0.0 - 1.0)",
|
||
"youtube_ytdlp_not_found": "在 PATH 中未找到 yt-dlp。请安装 yt-dlp 以使用 YouTube 转录功能",
|
||
"youtube_ytdlp_required_visual_extraction": "视觉提取需要 yt-dlp,但在 PATH 中未找到",
|
||
"youtube_ytdlp_stderr_error": "读取 yt-dlp stderr 时出错"
|
||
}
|