feat: 国际化(i18n) en/ja/ko + App 内语言切换
主体:多语言支持(简体中文源 + 英/日/韩)
- 基础设施:Localizable.xcstrings(String Catalog,sourceLanguage=zh-Hans)
+ pbxproj developmentRegion/knownRegions 注册 en/ja/ko
- 全部硬编码 Locale("zh_CN") → Locale.current;中文 dateFormat → Date.FormatStyle(跟随系统)
- UI 中文字面量统一为 String(appLoc:)(显式绑定所选语言 bundle+locale,即时切换)
Text 字面量走环境 \.locale + Bundle 重定向
- 549 个 catalog key 全部 en/ja/ko 翻译完成(0 未翻译)
- App 内语言切换:我的 → 语言(LanguageManager + 即时生效,无需重启)
- 双用预设(症状/监测指标/慢病)本地化:static→computed 避免缓存
注:本提交为 WIP,一并打包了并行进行的功能模块
(HealthExport 健康导出、Security/Face ID 锁、DiaryAssist 日记 AI 辅助)
及 App 图标、CLAUDE.md、docs/scripts。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -30,18 +30,27 @@ enum ModelManifest {
|
||||
ModelFile(path: "added_tokens.json", bytes: 707),
|
||||
]
|
||||
case .vl:
|
||||
// Qwen3-VL-4B-Instruct-4bit:字节数取自 mlx-community 仓库实际 blob 大小
|
||||
// (HF API blobs=true,2026-05 核对),用于总进度计算与下载后大小校验。
|
||||
// 策略:完整镜像仓库的全部运行文件(仅排除 README.md / .gitattributes),
|
||||
// 与标准 mlx-vlm 加载环境保持一致,避免漏文件导致 VLMModelFactory 加载失败。
|
||||
// 同时带两份 chat_template(.json 旧约定 + .jinja 新约定)与 video 预处理配置,
|
||||
// 以兼容不同版本 swift-transformers / Qwen3VLProcessor 的读取路径。
|
||||
return [
|
||||
ModelFile(path: "config.json", bytes: 1_659),
|
||||
ModelFile(path: "model.safetensors", bytes: 3_073_720_461),
|
||||
ModelFile(path: "model.safetensors.index.json", bytes: 108_307),
|
||||
ModelFile(path: "tokenizer.json", bytes: 11_421_896),
|
||||
ModelFile(path: "tokenizer_config.json", bytes: 7_256),
|
||||
ModelFile(path: "config.json", bytes: 7_137),
|
||||
ModelFile(path: "model.safetensors", bytes: 3_093_767_283),
|
||||
ModelFile(path: "model.safetensors.index.json", bytes: 64_742),
|
||||
ModelFile(path: "tokenizer.json", bytes: 11_422_654),
|
||||
ModelFile(path: "tokenizer_config.json", bytes: 5_445),
|
||||
ModelFile(path: "vocab.json", bytes: 2_776_833),
|
||||
ModelFile(path: "merges.txt", bytes: 1_671_853),
|
||||
ModelFile(path: "special_tokens_map.json", bytes: 613),
|
||||
ModelFile(path: "added_tokens.json", bytes: 605),
|
||||
ModelFile(path: "chat_template.json", bytes: 1_050),
|
||||
ModelFile(path: "preprocessor_config.json", bytes: 350),
|
||||
ModelFile(path: "added_tokens.json", bytes: 707),
|
||||
ModelFile(path: "generation_config.json", bytes: 269),
|
||||
ModelFile(path: "chat_template.json", bytes: 5_502),
|
||||
ModelFile(path: "chat_template.jinja", bytes: 5_292),
|
||||
ModelFile(path: "preprocessor_config.json", bytes: 782),
|
||||
ModelFile(path: "video_preprocessor_config.json", bytes: 817),
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user