refactor(i18n): fragments 为唯一源,主包改为生成物

- 一次性回灌:主包最新内容(含 565 个未同步键)全量写回 6 个 fragment 文件,fragments 成为完整唯一源;新增 core fragment(common/docs/home 等 9 个此前仅存在于主包的命名空间)
- merge-i18n-fragments.mjs 改为从零重建主包(不再以主包为基础),重建结果与原主包语义零差异
- 主包 messages/{zh-CN,en}.json 移出跟踪并加入 .gitignore
- 生成接入入口:predev/prebuild/prebuild:embed/precheck:i18n 钩子 + Makefile code-check 与 checks.sh vitest 前置生成
- 修复既有漂移:configVersions.title 现以 fragments(Config versions)为准
This commit is contained in:
ryan
2026-08-16 22:38:50 +08:00
parent d7d510ec97
commit 497edfd564
17 changed files with 3822 additions and 8835 deletions
+2 -1
View File
@@ -25,7 +25,8 @@ function deepMerge(target, source) {
function mergeLocale(locale) {
const mainPath = resolve(root, `messages/${locale}.json`);
const data = JSON.parse(readFileSync(mainPath, 'utf8'));
// 主包是纯生成物:从空对象开始合并全部 fragment(fragments 为唯一源)
const data = {};
const suffix = `.${locale}.json`;
for (const name of readdirSync(fragmentsDir).sort()) {
if (!name.endsWith(suffix)) continue;