from typing import Any, Dict, Optional WORDING : Dict[str, Any] =\ { 'conda_not_activated': 'Conda未激活', 'python_not_supported': 'Python版本不支持,请升级到{version}或更高版本', 'curl_not_installed': 'CURL未安装', 'ffmpeg_not_installed': 'FFMpeg未安装', 'creating_temp': '正在创建临时资源', 'extracting_frames': '以{resolution}的分辨率和每秒{fps}帧提取帧', 'extracting_frames_succeed': '帧提取成功', 'extracting_frames_failed': '帧提取失败', 'analysing': '分析中', 'extracting': '提取中', 'streaming': '流式传输中', 'processing': '处理中', 'merging': '合并中', 'downloading': '下载中', 'temp_frames_not_found': '未找到临时帧', 'copying_image': '复制分辨率为{resolution}的图像', 'copying_image_succeed': '图像复制成功', 'copying_image_failed': '图像复制失败', 'finalizing_image': '处理分辨率为{resolution}的图像', 'finalizing_image_succeed': '图像处理成功', 'finalizing_image_skipped': '跳过图像处理', 'merging_video': '合并分辨率为{resolution}并以每秒{fps}帧的视频', 'merging_video_succeed': '视频合并成功', 'merging_video_failed': '视频合并失败', 'skipping_audio': '跳过音频', 'replacing_audio_succeed': '音频替换成功', 'replacing_audio_skipped': '跳过音频替换', 'restoring_audio_succeed': '音频恢复成功', 'restoring_audio_skipped': '跳过音频恢复', 'clearing_temp': '清理临时资源', 'processing_stopped': '处理已停止', 'processing_image_succeed': '图像处理在{seconds}秒内成功完成', 'processing_image_failed': '图像处理失败', 'processing_video_succeed': '视频处理在{seconds}秒内成功完成', 'processing_video_failed': '视频处理失败', 'choose_image_source': '选择一个源图像', 'choose_audio_source': '选择一个源音频', 'choose_video_target': '选择一个目标视频', 'choose_image_or_video_target': '选择一个目标图像或视频', 'specify_image_or_video_output': '指定输出图像或视频的目录', 'match_target_and_output_extension': '匹配目标和输出扩展名', 'no_source_face_detected': '未检测到源面部', 'processor_not_loaded': '处理器{processor}无法加载', 'processor_not_implemented': '处理器{processor}未正确实现', 'ui_layout_not_loaded': 'UI布局{ui_layout}无法加载', 'ui_layout_not_implemented': 'UI布局{ui_layout}未正确实现', 'stream_not_loaded': '流{stream_mode}无法加载', 'stream_not_supported': '不支持的流', 'job_created': '作业{job_id}已创建', 'job_not_created': '作业{job_id}未创建', 'job_submitted': '作业{job_id}已提交', 'job_not_submitted': '作业{job_id}未提交', 'job_all_submitted': '所有作业已提交', 'job_all_not_submitted': '所有作业未提交', 'job_deleted': '作业 {job_id} 已删除', 'job_not_deleted': '作业 {job_id} 未删除', 'job_all_deleted': '所有作业已删除', 'job_all_not_deleted': '未删除任何作业', 'job_step_added': '步骤已添加到作业 {job_id}', 'job_step_not_added': '步骤未添加到作业 {job_id}', 'job_remix_step_added': '步骤 {step_index} 已从作业 {job_id} 重混', 'job_remix_step_not_added': '步骤 {step_index} 未从作业 {job_id} 重混', 'job_step_inserted': '步骤 {step_index} 已插入到作业 {job_id}', 'job_step_not_inserted': '步骤 {step_index} 未插入到作业 {job_id}', 'job_step_removed': '步骤 {step_index} 已从作业 {job_id} 移除', 'job_step_not_removed': '步骤 {step_index} 未从作业 {job_id} 移除', 'running_job': '正在运行排队作业 {job_id}', 'running_jobs': '正在运行所有排队作业', 'retrying_job': '正在重试失败的作业 {job_id}', 'retrying_jobs': '正在重试所有失败的作业', 'processing_job_succeed': '作业 {job_id} 处理成功', 'processing_jobs_succeed': '所有作业处理成功', 'processing_job_failed': '作业 {job_id} 处理失败', 'processing_jobs_failed': '所有作业处理失败', 'processing_step': '正在处理步骤 {step_current}/{step_total}', 'validating_hash_succeed': '验证哈希文件 {hash_file_name} 成功', 'validating_hash_failed': '验证哈希文件 {hash_file_name} 失败', 'validating_source_succeed': '验证源文件 {source_file_name} 成功', 'validating_source_failed': '验证源文件 {source_file_name} 失败', 'deleting_corrupt_source': '正在删除损坏的源文件 {source_file_name}', 'time_ago_now': '刚刚', 'time_ago_minutes': '{minutes}分钟前', 'time_ago_hours': '{hours}小时{minutes}分钟前', 'time_ago_days': '{days}天{hours}小时{minutes}分钟前', 'point': '。', 'comma': ',', 'colon': ':', 'question_mark': '?', 'exclamation_mark': '!', 'help': { 'install_dependency': '选择要安装的{dependency}版本', 'skip_conda': '跳过conda环境检查', 'config_path': '选择覆盖默认值的配置文件', 'temp_path': '指定临时文件目录', 'jobs_path': '指定存储作业的目录', 'source_paths': '选择单个或多个源图像或音频', 'target_path': '选择单个目标图像或视频', 'output_path': '指定输出图像或视频的目录', 'source_pattern': '选择图像或音频的模式', 'target_pattern': '选择图像或视频的模式', 'output_pattern': '指定图像或视频的模式', 'face_detector_model': '选择负责检测面部的模型', 'face_detector_size': '指定提供给面部检测器的帧大小', 'face_detector_angles': '指定在检测面部前旋转帧的角度', 'face_detector_score': '根据置信分过滤检测到的面部', 'face_landmarker_model': '选择负责检测面部标志点的模型', 'face_landmarker_score': '根据置信分过滤检测到的面部标志点', 'face_selector_mode': '使用基于参考的跟踪或简单匹配', 'face_selector_order': '指定检测到的面部顺序', 'face_selector_age_start': '根据起始年龄过滤检测到的面部', 'face_selector_age_end': '根据结束年龄过滤检测到的面部', 'face_selector_gender': '根据性别过滤检测到的面部', 'face_selector_race': '根据种族过滤检测到的面部', 'reference_face_position': '指定用于创建参考面部的位置', 'reference_face_distance': '指定参考面部与目标面部的期望相似度', 'reference_frame_number': '指定用于创建参考面部的帧', 'face_occluder_model': '选择负责遮挡掩码的模型', 'face_parser_model': '选择负责区域掩码的模型', 'face_mask_types': '混合和匹配不同的面部遮罩类型(选项:{choices})', 'face_mask_blur': '指定应用于框遮罩的模糊程度', 'face_mask_padding': '对框遮罩应用上下左右填充', 'face_mask_regions': '选择用于区域遮罩的面部特征(选项:{choices})', 'trim_frame_start': '指定目标视频的起始帧', 'trim_frame_end': '指定目标视频的结束帧', 'temp_frame_format': '指定临时资源格式', 'keep_temp': '处理后保留临时资源', 'output_image_quality': '指定图像质量,转换为压缩系数', 'output_image_resolution': '基于目标图像指定图像输出分辨率', 'output_audio_encoder': '指定用于音频输出的编码器', 'output_audio_quality': '指定音频质量,该参数决定了音频压缩程度', 'output_audio_volume': '根据目标视频指定音频音量', 'output_video_encoder': '指定用于视频输出的编码器', 'output_video_preset': '平衡快速视频处理和视频文件大小', 'output_video_quality': '指定视频质量,转换为压缩系数', 'output_video_resolution': '基于目标视频指定视频输出分辨率', 'output_video_fps': '基于目标视频指定视频输出帧率', 'skip_audio': '从目标视频中省略音频', 'processors': '加载一个或多个处理器。(选项:{choices},...)', 'age_modifier_model': '选择负责修改年龄的模型', 'age_modifier_direction': '指定修改年龄的方向', 'deep_swapper_model': '选择负责换脸的模型', 'deep_swapper_morph': '在源人脸和目标人脸之间进行变形融合', 'expression_restorer_model': '选择负责恢复表情的模型', 'expression_restorer_factor': '从目标面部恢复表情的恢复因子', 'face_debugger_items': '加载一个或多个处理器(选项:{choices})', 'face_editor_model': '选择负责编辑面部的模型', 'face_editor_eyebrow_direction': '指定眉毛方向', 'face_editor_eye_gaze_horizontal': '指定水平眼睛注视', 'face_editor_eye_gaze_vertical': '指定垂直眼睛注视', 'face_editor_eye_open_ratio': '指定眼睛打开的比例', 'face_editor_lip_open_ratio': '指定嘴唇打开的比例', 'face_editor_mouth_grim': '指定嘴部紧张程度', 'face_editor_mouth_pout': '指定嘴部嘟嘴程度', 'face_editor_mouth_purse': '指定嘴部抿嘴程度', 'face_editor_mouth_smile': '指定嘴部微笑程度', 'face_editor_mouth_position_horizontal': '指定嘴部水平位置', 'face_editor_mouth_position_vertical': '指定嘴部垂直位置', 'face_editor_head_pitch': '指定头部俯仰角', 'face_editor_head_yaw': '指定头部偏航角', 'face_editor_head_roll': '指定头部翻滚角', 'face_enhancer_model': '选择负责增强面部的模型', 'face_enhancer_blend': '将增强的部分混合到前一个面部', 'face_enhancer_weight': '指定应用于人脸的权重程度', 'face_swapper_model': '选择负责换脸的模型', 'face_swapper_pixel_boost': '选择换脸的像素增强分辨率', 'frame_colorizer_model': '选择负责为帧上色的模型', 'frame_colorizer_blend': '将上色部分混合到前一个帧', 'frame_colorizer_size': '指定提供给帧上色器的帧大小', 'frame_enhancer_model': '选择负责增强帧的模型', 'frame_enhancer_blend': '将增强部分混合到前一个帧', 'lip_syncer_model': '选择负责同步嘴唇的模型', 'open_browser': '程序准备好后打开浏览器', 'ui_layouts': '启动一个或多个UI布局(选项:{choices},...)', 'ui_workflow': '选择UI工作流', 'execution_device_id': '指定用于处理的设备', 'execution_providers': '使用不同的提供者加速模型推理(选项:{choices},...)', 'execution_thread_count': '指定处理时的并行线程数', 'execution_queue_count': '指定每个线程处理的帧数', 'download_providers': '使用不同的选项下载 (选项: {choices}, ...)', 'download_scope': 'specify the download scope', 'video_memory_strategy': '平衡快速处理和低显存使用', 'system_memory_limit': '限制处理时可用的RAM大小', 'log_level': '调整终端中显示的消息严重级别', 'run': '运行程序', 'headless_run': '以无头模式运行程序', 'batch_run': '以批处理模式运行程序', 'force_download': '强制自动下载并退出', 'job_id': '指定作业ID', 'job_status': '请指定工作状态', 'step_index': '指定步骤索引', 'job_list': '按状态列出作业', 'job_create': '创建一个草稿作业', 'job_submit': '将草稿作业提交为排队作业', 'job_submit_all': '将所有草稿作业提交为排队作业', 'job_delete': '删除草稿、排队、失败或完成的作业', 'job_delete_all': '删除所有草稿、排队、失败和完成的作业', 'job_add_step': '向草稿作业添加一个步骤', 'job_remix_step': '从草稿作业中重新混合以前的步骤', 'job_insert_step': '向草稿作业插入一个步骤', 'job_remove_step': '从草稿作业中删除一个步骤', 'job_run': '运行一个排队作业', 'job_run_all': '运行所有排队作业', 'job_retry': '重试一个失败的作业', 'job_retry_all': '重试所有失败的作业' }, 'about': { 'become_a_member': '文字教程', 'join_our_community': '文字教程', 'read_the_documentation': '文字教程' }, 'uis': { 'age_modifier_direction_slider': '年龄修饰器方向', 'age_modifier_model_dropdown': '年龄修饰器模型', 'apply_button': '应用', 'benchmark_cycles_slider': '基准周期', 'benchmark_runs_checkbox_group': '基准运行', 'clear_button': '清除', 'common_options_checkbox_group': '选项', 'download_providers_checkbox_group': '下载选项', 'deep_swapper_model_dropdown': 'DEEP SWAPPER 模型', 'deep_swapper_morph_slider': 'DEEP SWAPPER 变形', 'execution_providers_checkbox_group': '执行提供程序', 'execution_queue_count_slider': '执行队列数', 'execution_thread_count_slider': '执行线程数', 'expression_restorer_factor_slider': '表情恢复因子', 'expression_restorer_model_dropdown': '表情恢复模型', 'face_debugger_items_checkbox_group': '面部调试器项目', 'face_detector_angles_checkbox_group': '面部检测角度', 'face_detector_model_dropdown': '面部检测模型', 'face_detector_score_slider': '面部检测评分', 'face_detector_size_dropdown': '面部检测大小', 'face_editor_eyebrow_direction_slider': '面部编辑器眉毛方向', 'face_editor_eye_gaze_horizontal_slider': '面部编辑器眼睛视线水平', 'face_editor_eye_gaze_vertical_slider': '面部编辑器眼睛视线垂直', 'face_editor_eye_open_ratio_slider': '面部编辑器眼睛开合比', 'face_editor_head_pitch_slider': '面部编辑器头部俯仰', 'face_editor_head_roll_slider': '面部编辑器头部滚动', 'face_editor_head_yaw_slider': '面部编辑器头部偏航', 'face_editor_lip_open_ratio_slider': '面部编辑器嘴唇开合比', 'face_editor_model_dropdown': '面部编辑器模型', 'face_editor_mouth_grim_slider': '面部编辑器嘴巴紧张', 'face_editor_mouth_position_horizontal_slider': '面部编辑器嘴巴水平位置', 'face_editor_mouth_position_vertical_slider': '面部编辑器嘴巴垂直位置', 'face_editor_mouth_pout_slider': '面部编辑器嘴巴撅嘴', 'face_editor_mouth_purse_slider': '面部编辑器嘴巴抿嘴', 'face_editor_mouth_smile_slider': '面部编辑器嘴巴微笑', 'face_enhancer_blend_slider': '面部增强器混合', 'face_enhancer_model_dropdown': '面部增强器模型', 'face_enhancer_weight_slider': '面部增强权重', 'face_landmarker_model_dropdown': '面部标记器模型', 'face_landmarker_score_slider': '面部标记器评分', 'face_mask_blur_slider': '面部遮罩模糊', 'face_mask_padding_bottom_slider': '面部遮罩底部填充', 'face_mask_padding_left_slider': '面部遮罩左侧填充', 'face_mask_padding_right_slider': '面部遮罩右侧填充', 'face_mask_padding_top_slider': '面部遮罩顶部填充', 'face_mask_regions_checkbox_group': '面部遮罩区域', 'face_mask_types_checkbox_group': '面部遮罩类型', 'face_selector_age_range_slider': '面部选择器年龄', 'face_selector_gender_dropdown': '面部选择器性别', 'face_selector_mode_dropdown': '面部选择器模式', 'face_selector_order_dropdown': '面部选择器顺序', 'face_selector_race_dropdown': '面部选择器种族', 'face_swapper_model_dropdown': '面部交换器模型', 'face_swapper_pixel_boost_dropdown': '面部交换器像素增强', 'face_occluder_model_dropdown': '面部遮挡模型', 'face_parser_model_dropdown': '人脸解析器模型', 'frame_colorizer_blend_slider': '帧着色器混合', 'frame_colorizer_model_dropdown': '帧着色器模型', 'frame_colorizer_size_dropdown': '帧着色器大小', 'frame_enhancer_blend_slider': '帧增强器混合', 'frame_enhancer_model_dropdown': '帧增强器模型', 'job_list_status_checkbox_group': '作业状态', 'job_manager_job_action_dropdown': '作业操作', 'job_manager_job_id_dropdown': '作业 ID', 'job_manager_step_index_dropdown': '步骤索引', 'job_runner_job_action_dropdown': '作业操作', 'job_runner_job_id_dropdown': '作业 ID', 'lip_syncer_model_dropdown': '唇形同步器模型', 'log_level_dropdown': '日志级别', 'output_audio_encoder_dropdown': '输出音频编码器', 'output_audio_quality_slider': '输出音频质量', 'output_audio_volume_slider': '输出音频音量', 'output_image_or_video': '输出', 'output_image_quality_slider': '输出图像质量', 'output_image_resolution_dropdown': '输出图像分辨率', 'output_path_textbox': '输出路径', 'output_video_encoder_dropdown': '输出视频编码器', 'output_video_fps_slider': '输出视频帧率', 'output_video_preset_dropdown': '输出视频预设', 'output_video_quality_slider': '输出视频质量', 'output_video_resolution_dropdown': '输出视频分辨率', 'preview_frame_slider': '预览帧', 'preview_image': '预览', 'processors_checkbox_group': '处理器', 'reference_face_distance_slider': '参考面部距离', 'reference_face_gallery': '参考面部', 'refresh_button': '刷新', 'source_file': '源文件', 'start_button': '开始', 'stop_button': '停止', 'system_memory_limit_slider': '系统内存限制', 'target_file': '目标文件', 'temp_frame_format_dropdown': '临时帧格式', 'terminal_textbox': '终端', 'trim_frame_slider': '剪裁帧', 'ui_workflow': 'UI 工作流', 'video_memory_strategy_dropdown': '视频内存策略', 'webcam_fps_slider': '摄像头帧率', 'webcam_image': '摄像头图像', 'webcam_device_id_dropdown': '网络摄像头设备ID', 'webcam_mode_radio': '摄像头模式', 'webcam_resolution_dropdown': '摄像头分辨率' } } def get(notation : str) -> Optional[str]: current = WORDING for fragment in notation.split('.'): if fragment in current: current = current.get(fragment) if isinstance(current, str): return current return None