feat: add language support and onboard configuration wizard (v0.2.0)
- Add language code intelligent parsing module (internal/lang) - Support --lang parameter for target language specification - Support multiple language code formats (BCP47, aliases, Chinese names) - Implement interactive onboard configuration wizard - Update Config struct with language fields - Add survey library dependency for interactive UI - Improve CLI command interface - Add comprehensive unit tests for language module - Update documentation (AGENTS.md, changelog.md, taolun.md, memory.md) Supported language codes: - Standard: zh-CN, zh-TW, en-US, en-GB, ja, ko, es, fr, de - Aliases: cn, en, jp, kr, es, fr, de - Chinese names: chinese, english, japanese Commands: - yoyo "Hello world" - basic translation - yoyo --lang=cn "Hello world" - specify target language - yoyo onboard - start configuration wizard - yoyo onboard --force - force reconfiguration Version: 0.2.0
This commit is contained in:
67
memory.md
67
memory.md
@@ -188,4 +188,69 @@ func main() {
|
||||
1. 用户编辑why.md记录初衷
|
||||
2. AI编辑taolun.md记录讨论
|
||||
3. AI更新changelog.md记录版本
|
||||
4. AI更新memory.md记录经验
|
||||
4. AI更新memory.md记录经验
|
||||
|
||||
---
|
||||
|
||||
## 语言代码处理经验
|
||||
|
||||
### 语言代码标准化
|
||||
**问题**: 需要支持多种语言代码格式,但内部应使用标准格式
|
||||
**解决方案**:
|
||||
1. 使用BCP 47语言标签作为标准格式(如 `zh-CN`、`en-US`)
|
||||
2. 实现智能解析函数 `ParseLanguageCode()`
|
||||
3. 支持别名映射(如 `cn` → `zh-CN`、`en` → `en-US`)
|
||||
|
||||
**最佳实践**:
|
||||
- 语言代码小写,地区代码大写(如 `zh-CN`,不是 `zh-cn`)
|
||||
- 提供语言名称映射用于显示(如 `zh-CN` → "中文(简体)")
|
||||
- 支持模糊匹配和建议功能
|
||||
|
||||
### 交互式配置经验
|
||||
**问题**: 命令行工具需要友好的配置界面
|
||||
**解决方案**:
|
||||
1. 使用 `github.com/AlecAivazis/survey/v2` 库
|
||||
2. 实现分步配置流程
|
||||
3. 提供默认值和确认选项
|
||||
|
||||
**注意事项**:
|
||||
- 交互式库需要终端支持
|
||||
- 提供非交互式模式(如配置文件模板)
|
||||
- 错误处理要友好,避免程序崩溃
|
||||
|
||||
### 命令行参数解析经验
|
||||
**问题**: Go标准库 `flag` 包功能有限,需要支持子命令
|
||||
**解决方案**:
|
||||
1. 使用 `flag` 包解析选项参数
|
||||
2. 手动处理子命令(如 `onboard`)
|
||||
3. 提供清晰的帮助信息
|
||||
|
||||
**命名冲突处理**:
|
||||
- 避免变量名与包名冲突(如 `onboard` 变量与 `onboard` 包)
|
||||
- 使用后缀区分(如 `onboardFlag`)
|
||||
|
||||
## 配置文件管理经验
|
||||
|
||||
### 开发阶段配置策略
|
||||
**决策**: 开发阶段使用 `.env` + `configs/config.yaml`
|
||||
**原因**:
|
||||
1. 简化开发环境配置
|
||||
2. 符合12-factor应用原则
|
||||
3. 避免过早优化
|
||||
|
||||
**实施**:
|
||||
- `.env` 文件存储API密钥等敏感信息
|
||||
- `configs/config.yaml` 存储复杂配置结构
|
||||
- 使用环境变量替换 `${VAR}`
|
||||
|
||||
### 配置文件格式选择
|
||||
**决策**: 使用YAML格式
|
||||
**原因**:
|
||||
1. 人类可读性好
|
||||
2. 支持复杂数据结构
|
||||
3. Go生态支持良好
|
||||
|
||||
**注意事项**:
|
||||
- 使用 `gopkg.in/yaml.v3` 库
|
||||
- 注意缩进和格式
|
||||
- 提供配置验证
|
||||
Reference in New Issue
Block a user