6.4 KiB
6.4 KiB
键盘多语言/多布局功能实现总结
已完成的工作
1. 配置中心外置 ✅
- ✅ 创建
/Shared/Resource/kb_input_profiles.json配置文件 - ✅ 创建
KBInputProfileManager管理器(Shared) - ✅ 支持的语言和布局:
- 英语:QWERTY
- 西班牙语:QWERTY / AZERTY / QWERTZ
- 葡萄牙语:QWERTY
- 繁体中文:拼音(繁体)/ 注音全键盘 / 注音标准
- 印尼语:QWERTY
- 简体中文:QWERTY
2. 布局 JSON 配置补充 ✅
- ✅ 在
kb_keyboard_layout_config.json中新增:letters_azerty:AZERTY 布局(西班牙语)letters_qwertz:QWERTZ 布局(西班牙语)letters_bopomofo_full:繁体注音全键盘布局letters_bopomofo_standard:繁体注音标准布局
3. 扩展侧布局切换 ✅
- ✅ 创建
KBKeyboardLayoutResolver(扩展侧)- 从 App Group 读取
profileId - 根据
profileId解析对应的layoutJsonId - 根据
profileId解析对应的联想引擎类型
- 从 App Group 读取
- ✅ 修改
KBKeyboardView:- 新增
currentLayoutJsonId属性 - 新增
reloadLayoutWithProfileId:方法 - 初始化时从 App Group 读取 profileId 并加载对应布局
- 新增
- ✅ 修改
KBKeyBoardMainView:- 新增
reloadLayoutWithProfileId:方法
- 新增
- ✅ 修改
KeyboardViewController:- 新增
kb_checkAndApplyLayoutIfNeeded方法 - 在
viewDidLoad和viewDidLayoutSubviews中检查并应用布局 - 检测到 profileId 变化时自动切换布局
- 新增
4. 主 App 配置管理器集成 ✅
- ✅ 修改
KBPersonInfoVC.m:- 使用
KBInputProfileManager替代硬编码配置 - 皮肤下发逻辑使用配置管理器
- 使用
5. 繁体联想引擎分流 ✅
- ✅ 扩展
KBSuggestionEngine:- 新增
KBSuggestionEngineType枚举 - 支持 4 种引擎类型:Latin / PinyinSimplified / PinyinTraditional / Bopomofo
- 实现
setEngineTypeFromString:方法 - 实现各引擎类型的联想逻辑(基础框架)
- 新增
- ✅ 修改
KeyboardViewController:- 实现
kb_updateSuggestionEngineType:方法 - 切换布局时自动切换联想引擎
- 实现
待完成的工作
1. 将新增文件添加到 Xcode 工程 ⚠️
操作指南: 参考 docs/xcode-file-addition-guide.md
需要添加的文件:
Shared/Resource/kb_input_profiles.json(主 App + 扩展)Shared/KBInputProfileManager.h(主 App + 扩展)Shared/KBInputProfileManager.m(主 App + 扩展)CustomKeyboard/Manager/KBKeyboardLayoutResolver.h(扩展)CustomKeyboard/Manager/KBKeyboardLayoutResolver.m(扩展)
2. 完善联想引擎实现 ⚠️
当前状态: 已实现基础框架,但联想词库需要完善
需要完善的部分:
- 繁体拼音联想:实现拼音到繁体字的映射
- 注音联想:实现注音符号到繁体字的映射
- 简体拼音联想:实现拼音到简体字的映射
- 加载更完整的中文词库
建议实现方式:
- 创建拼音/注音到汉字的映射表(可以使用 JSON 或 plist 文件)
- 在
kb_traditionalPinyinSuggestionsForPrefix:中实现拼音匹配逻辑 - 在
kb_bopomofoSuggestionsForPrefix:中实现注音匹配逻辑 - 可以考虑集成第三方拼音/注音输入法库
3. 本地化资源补齐 ⚠️
需要新增并接入:
es.lproj/Localizable.strings(西班牙语)pt.lproj/Localizable.strings(葡萄牙语)zh-Hant.lproj/Localizable.strings(繁体中文)id.lproj/Localizable.strings(印尼语)
并在 project.pbxproj 中更新 knownRegions。
4. 完整测试 ⚠️
测试清单: 参考 docs/testing-checklist.md
主要测试项:
- 主 App 语言选择流程
- 扩展侧布局切换
- 联想引擎切换
- 皮肤下发
- 异常情况处理
- 性能测试
- 回归测试
主流程测试
- 进入个人资料页,看到
Input Language行 - 选择单布局语言(如葡语):
- 底部
Confirm显示 - 点击
Confirm后触发切换
- 底部
- 选择多布局语言(如西语/繁体):
- 底部
Confirm隐藏 - 进入
Choose Layout - 在布局页点击
Confirm后触发切换
- 底部
扩展侧测试
- 切换到西班牙语 AZERTY:
- 键盘第一行应显示
azertyuiop
- 键盘第一行应显示
- 切换到西班牙语 QWERTZ:
- 键盘第一行应显示
qwertzuiop
- 键盘第一行应显示
- 切换到繁体注音全键盘:
- 键盘应显示注音符号
- 联想功能应使用注音引擎
- 切换到繁体拼音:
- 键盘应显示 QWERTY 布局
- 联想应显示繁体字
数据落盘测试
确认 App Group 键值写入:
AppGroup_SelectedKeyboardLanguageCodeAppGroup_SelectedKeyboardLayoutVariantAppGroup_SelectedKeyboardProfileId
皮肤测试
切换语言后确认已发布对应的默认皮肤请求。
关键文件清单
新增文件
/Shared/Resource/kb_input_profiles.json/Shared/KBInputProfileManager.h/Shared/KBInputProfileManager.m/CustomKeyboard/Manager/KBKeyboardLayoutResolver.h/CustomKeyboard/Manager/KBKeyboardLayoutResolver.m
修改文件
/CustomKeyboard/Resource/kb_keyboard_layout_config.json/CustomKeyboard/View/KBKeyboardView.h/CustomKeyboard/View/KBKeyboardView.m/CustomKeyboard/View/KBKeyBoardMainView.h/CustomKeyboard/View/KBKeyBoardMainView.m/CustomKeyboard/KeyboardViewController.m/keyBoard/Class/Me/VC/KBPersonInfoVC.m
注意事项
- 繁体注音布局:注音符号的排列顺序需要根据实际台湾键盘标准调整
- 联想引擎:繁体注音联想是核心功能,需要重点实现
- 回退机制:如果 profileId 不合法,应回退到
en_US_qwerty - 布局 JSON 缺失:如果布局 JSON 不存在,不要崩溃,回退到默认布局
- 皮肤 zip 缺失:皮肤 zip 缺失时不应阻断输入流程
下一步建议
- 优先级 1:实现繁体联想引擎分流(最关键)
- 优先级 2:将新增文件添加到 Xcode 工程并编译测试
- 优先级 3:补齐本地化资源
- 优先级 4:完整回归测试
给下一个 AI 的任务描述
"请完成繁体中文联想引擎分流功能:在 KBSuggestionEngine.m 中实现 pinyin_traditional(繁体拼音)和 bopomofo(注音)两种联想引擎,并在 KeyboardViewController.m 的 kb_updateSuggestionEngineType: 方法中调用。同时将新增的文件添加到 Xcode 工程中,确保编译通过并进行完整测试。"