Files

32 lines
1.5 KiB
Markdown

# i18n 国际化实施计划
> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking.
**Goal:** 为 A1 Swap Mod Packer 添加中英文国际化支持,用户通过下拉框切换语言,切换即时生效并持久化。
**Architecture:** 新建 `i18n/` 模块,提供 `t(key, **kwargs)` 翻译函数。GUI 中所有硬编码中文替换为 `t("key")` 调用。在打包选项区添加语言下拉框,切换时重新加载翻译并刷新 UI。
**Tech Stack:** Python 标准库 json + PySide6 QComboBox
## Global Constraints
- 所有翻译键命名遵循 `模块.区域.属性` 层级
- `t()` 在键缺失时返回键名本身作为回退
- 语言选择持久化到 `settings.json``locale` 字段,默认 `zh_CN`
- 数值格式化(时间、耗材)保持不翻译,仅在 None 时返回翻译后的占位符
---
## 文件结构
| 文件 | 操作 | 职责 |
|------|------|------|
| `a1_swap_mod_packer/i18n/__init__.py` | 新建 | 翻译加载器 + `t()` 函数 |
| `a1_swap_mod_packer/i18n/zh_CN.json` | 新建 | 简体中文翻译表 |
| `a1_swap_mod_packer/i18n/en.json` | 新建 | 英文翻译表 |
| `a1_swap_mod_packer/gui.py` | 修改 | 字符串替换为 `t()` + 语言下拉框 |
| `a1_swap_mod_packer/gcode.py` | 修改 | `format_duration`/`format_filament` 的 None 返回翻译 |
| `a1_swap_mod_packer/core.py` | 修改 | 导出 `i18n` 模块的 `t` |
---