Skip to content

统一处理后端用户可见错误信息的本地化 #20

Description

@LRainner

背景

在 PR #19 的 review 中发现,desktop 后端会直接向 overlay/frontend 传递中文用户可见错误信息,例如:

show_overlay_error(&app, 没有识别到可输出文本);

这不是单点问题。目前录音、音频处理、转写、pipeline 等流程里还有多处中文硬编码错误文案。由于 TypeX 已经支持 English / zh-CN,本地化逻辑如果继续分散在 Rust 后端,会导致英文界面下仍然出现中文错误。

需要处理的问题

  • 后端不应该直接决定用户界面语言。
  • 后端传给 frontend/overlay 的用户可见错误应改为结构化信息,例如 error code / message key / optional detail。
  • frontend/overlay 根据当前 UI language 做本地化展示。
  • 动态错误详情仍可作为 detail 附加显示,例如底层错误字符串、设备名、provider 返回信息等。

建议方向

  • 定义统一的错误 payload,例如:
{
  code: no_output_text,
  detail: null
}
  • frontend 使用 i18n key 映射:
    • error.no_output_text
    • error.microphone_unavailable
    • error.recording_start_failed
    • error.pipeline_failed
    • 等等
  • overlay 和主窗口共用同一套错误 key。
  • 保留后端日志中的详细错误,避免丢失调试信息。

验收标准

  • English UI 下不会再出现中文硬编码错误。
  • zh-CN UI 下仍显示自然中文错误文案。
  • 后端用户可见错误输出集中使用 error code / translation key。
  • 动态错误详情不会泄露敏感信息,例如 API key。

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions