惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Jina AI
Jina AI
Hugging Face - Blog
Hugging Face - Blog
博客园 - 三生石上(FineUI控件)
博客园 - 【当耐特】
大猫的无限游戏
大猫的无限游戏
IT之家
IT之家
宝玉的分享
宝玉的分享
WordPress大学
WordPress大学
有赞技术团队
有赞技术团队
Apple Machine Learning Research
Apple Machine Learning Research
酷 壳 – CoolShell
酷 壳 – CoolShell
阮一峰的网络日志
阮一峰的网络日志
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
爱范儿
爱范儿
小众软件
小众软件
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
The Cloudflare Blog
S
SegmentFault 最新的问题
博客园 - Franky
博客园_首页
T
Tailwind CSS Blog
雷峰网
雷峰网
罗磊的独立博客

Recent Commits to openclaw:main

test: merge chat side-result checks · openclaw/openclaw@ddd2c2a test: merge cron history checks · openclaw/openclaw@f7eb746 test: merge responsive navigation shell checks · openclaw/openclaw@c2e4b47 docs(changelog): add codex oauth fixes · openclaw/openclaw@628e6cd test: merge navigation routing cases · openclaw/openclaw@5d8cecb Tests: mock channel registry bundled fallback · openclaw/openclaw@2b08233 Secrets: avoid broad web search discovery for single plugin config · openclaw/openclaw@a464f59 test: merge config view browser checks · openclaw/openclaw@20cf511 fix(status): align oauth health with runtime · openclaw/openclaw@eed7116 feat: add macOS screen snapshots for monitor preview (#67954) thanks … · openclaw/openclaw@f377db1 fix: report shared auth scopes in hello-ok (#67810) thanks @BunsDev · openclaw/openclaw@0b6c39b Auto-reply: avoid eager bundled route fallback · openclaw/openclaw@3ea1bf4 Tests: narrow session binding contract setup · openclaw/openclaw@54e4e16 fix(macOS): enable undo/redo in webchat composer text input (#34962) · openclaw/openclaw@00951dc Tests: speed up channel setup promotion · openclaw/openclaw@82b529a Docs: refresh agent instructions · openclaw/openclaw@5775fe2 fix(auth): serialize OAuth refresh across agents to fix #26322 (#67876) · openclaw/openclaw@8e79080 test: allow ollama public surface boundary test · openclaw/openclaw@7d4f1a6 Docs: add test performance guardrails · openclaw/openclaw@89706d3 Tests: restore context-engine usage proof · openclaw/openclaw@e4c4f95 Tests: slim context engine runtime coverage · openclaw/openclaw@74c198f ci: retry failed custom checkouts · openclaw/openclaw@0ee5baf test: trim duplicate provider auth onboarding cases · openclaw/openclaw@1ffc02e matrix: fix sessions_spawn --thread subagent session spawning (#67643) · openclaw/openclaw@1ce2596 test: reduce auth choice fixture churn · openclaw/openclaw@857b9cd test: mock health status config boundaries · openclaw/openclaw@9d5ab4a test: mock onboard config io boundary · openclaw/openclaw@299694d test: mock legacy state plugin boundaries · openclaw/openclaw@2713089 test: mock channel install boundaries · openclaw/openclaw@b945248 test: mock doctor preview channel boundaries · openclaw/openclaw@b1a3ad4
docs: document aggregate translation workflow · openclaw/...
steipete · 2026-05-07 · via Recent Commits to openclaw:main

@@ -0,0 +1,103 @@

1+

# Translation workflow

2+3+

Internal note for the docs publish pipeline. This file is under `docs/.i18n`, which is ignored by the docs-site build and is not published.

4+5+

## Goals

6+7+

- English docs deploy quickly after every source docs sync.

8+

- Locale translation does not run for every hot `main` commit.

9+

- Translation work is debounced so a burst of docs commits becomes one translation wave.

10+

- Locale jobs translate only pages whose source hash changed since the last successful locale output.

11+

- Successful locale outputs are committed together, even if one or more locale jobs fail.

12+

- A weekly reconciliation reruns every locale/page path to repair missed or flaky translations.

13+14+

## Event flow

15+16+

1. `openclaw/openclaw` syncs English docs into `openclaw/docs`.

17+

2. GitHub Pages deploys English/source changes immediately from the sync commit.

18+

3. `Translate All` is triggered by the sync commit, release dispatch, manual dispatch, or weekly schedule.

19+

4. The coordinator waits a short cooldown window before starting translation.

20+

5. After the cooldown, the coordinator reads the current `origin/main` source metadata.

21+

6. If a newer docs sync arrived during cooldown, the coordinator uses the newer source state.

22+

7. Per-locale translation jobs run in parallel with `fail-fast: false`.

23+

8. Each locale job uploads an artifact for the requested source SHA.

24+

9. The finalizer downloads available artifacts, ignores stale or failed payloads, and pushes one aggregate i18n commit.

25+26+

## Debounce policy

27+28+

The coordinator waits 5 minutes after a docs sync or release dispatch, then re-reads `origin/main`.

29+30+

If `.openclaw-sync/source.json` changed during the wait, it waits again from the newer state. If `main` keeps moving, the wait is capped at 20 minutes and the newest observed state is translated.

31+32+

Manual and weekly runs do not wait by default.

33+34+

## Incremental translation

35+36+

Each translated page stores `x-i18n.source_hash`. Locale jobs compare the current English page hash with the stored locale hash.

37+38+

Normal runs translate only:

39+40+

- missing locale pages

41+

- locale pages with stale `x-i18n.source_hash`

42+

- pages affected by source deletion/pruning

43+44+

If a locale job fails, its artifact is marked failed and carries no payload. The finalizer still commits successful locales. The failed locale remains stale and is picked up by the next incremental run because its source hashes still do not match.

45+46+

## Artifact contract

47+48+

Each locale job uploads one artifact named with locale and source SHA:

49+50+

```text

51+

i18n-zh-cn-<source-sha>

52+

```

53+54+

Artifact contents:

55+56+

```text

57+

metadata.json

58+

changed-files.txt

59+

deleted-files.txt

60+

payload/docs/<locale>/**

61+

payload/docs/.i18n/<locale>.tm.jsonl

62+

```

63+64+

`metadata.json` includes the locale, locale slug, source SHA, pending count, changed count, and any failure reason. The finalizer rejects artifacts whose `source_sha` does not match the current `.openclaw-sync/source.json`.

65+66+

The source repo release workflow dispatches one `translate-all-release` event. The coordinator still accepts old per-locale release events for compatibility, but those are only a fallback.

67+68+

## Aggregate commit

69+70+

The finalizer owns the only locale push in the normal path.

71+72+

Commit message:

73+74+

```text

75+

chore(i18n): refresh translations

76+

```

77+78+

The commit may contain a partial locale set. The job summary lists applied locales, locales with no changes, missing or failed locales, stale artifacts, and invalid artifacts.

79+80+

## Weekly reconciliation

81+82+

The weekly run uses `full` mode. It forces a full reconciliation across every locale and every source page instead of relying only on changed source hashes.

83+84+

Glossary changes also force full reconciliation because glossary guidance can affect pages whose source hashes did not change.

85+86+

Expected behavior:

87+88+

- regenerate or verify every locale page

89+

- prune stale locale pages

90+

- refresh translation memory as needed

91+

- still use parallel locale jobs

92+

- still commit one aggregate result

93+

- still tolerate individual locale failures

94+95+

The weekly run is the repair mechanism for LLM flakiness, partial failures, and missed incremental updates.

96+97+

## Deployment policy

98+99+

English deploys from source sync commits.

100+101+

Translations deploy from the aggregate i18n commit. A hot docs day should produce many fast English deploys, but only a small number of locale deploys.

102+103+

If external deploy providers such as Mintlify watch every push, the aggregate i18n commit is the load reducer. Avoid restoring per-locale pushes to `main`.