Commit Graph

2 Commits

Author SHA1 Message Date
wangjia f76e3cdffd feat(i18n): l10n codegen — strings.json 单源生成 6 份 strings_*.dart
② 单源 codegen 落地:
- strings.json 补全 lists 段(days7/featsFree/featsPro/featsTeam),
  之前 extraction 漏了 4 个 List<String> getter;现 246 getter+4 list+5 method×6 语。
- design/codegen/gen_l10n_dart.mjs:strings.json → strings_{zh,en,ja,ko,ru,es}.dart,
  getter 转义 \$、method 保留 $var 插值,dart format 定型(保证漂移闸零 diff)。
- app_text.dart 保持手写(enum/abstract 声明/AppLangMisc 逻辑),编译器强制 concrete⊆abstract 兜底。
- 往返无损:生成的 Dart 重新抽取 == strings.json 逐字节一致;flutter analyze 0 issue、flutter test 244 全绿。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01A79VtQA1BwTuQN1ThpvYpo
2026-07-27 08:47:44 +08:00
wangjia 9ab550d398 feat(i18n): l10n 单源地基 — 6 份手写 Dart 抽成 design/i18n/strings.json
i18n 单源第一步(用户要求:原型与实际程序必须一份数据)。
- 246 getter + 5 带参方法 × 6 语(zh/en/ja/ko/ru/es),抽取校验 0 缺失
- 抓到真漂移:strings_en.dart 原缺 quotaExhaustedNotice/openAlipayFailed
  两个 key(双引号+EN漏维护),单源后六语强制对齐
- migrate_l10n_to_json.py 一次性迁移脚本(单/双引号 + getter/带参方法)

下一步:codegen(JSON→app_text.dart+strings_*.dart,替换手写)+ 原型读同源 + CI 漂移闸。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-27 02:48:39 +08:00