Skip to content

Commit 297f4c6

Browse files
committed
feat(i18n): align docs and ui locales
1 parent c85ff84 commit 297f4c6

56 files changed

Lines changed: 9366 additions & 61 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/control-ui-locale-refresh.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ jobs:
4949
run: |
5050
set -euo pipefail
5151
52-
all_locales_json='["zh-CN","zh-TW","pt-BR","de","es","ja-JP","ko","fr","tr","uk","id","pl","th"]'
52+
all_locales_json='["zh-CN","zh-TW","pt-BR","de","es","ja-JP","ko","fr","ar","it","tr","uk","id","pl","th","vi","nl","fa"]'
5353
5454
if [ "$EVENT_NAME" != "push" ]; then
5555
echo "has_locales=true" >> "$GITHUB_OUTPUT"

.github/workflows/docs-translate-trigger-release.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ jobs:
2020
set -euo pipefail
2121
for event_type in \
2222
translate-zh-cn-release \
23+
translate-zh-tw-release \
2324
translate-ja-jp-release \
2425
translate-es-release \
2526
translate-pt-br-release \
@@ -28,6 +29,9 @@ jobs:
2829
translate-fr-release \
2930
translate-ar-release \
3031
translate-it-release \
32+
translate-vi-release \
33+
translate-nl-release \
34+
translate-fa-release \
3135
translate-tr-release \
3236
translate-uk-release \
3337
translate-id-release \

docs/.i18n/README.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ Generated locale trees and live translation memory now live in the publish repo:
1111

1212
- English docs are authored in `openclaw/openclaw`.
1313
- The source docs tree lives under `docs/`.
14-
- The source repo no longer keeps committed generated locale trees such as `docs/zh-CN/**`, `docs/ja-JP/**`, `docs/es/**`, `docs/pt-BR/**`, `docs/ko/**`, `docs/de/**`, `docs/fr/**`, `docs/ar/**`, `docs/it/**`, `docs/tr/**`, `docs/uk/**`, `docs/id/**`, or `docs/pl/**`.
14+
- The source repo no longer keeps committed generated locale trees such as `docs/zh-CN/**`, `docs/zh-TW/**`, `docs/ja-JP/**`, `docs/es/**`, `docs/pt-BR/**`, `docs/ko/**`, `docs/de/**`, `docs/fr/**`, `docs/ar/**`, `docs/it/**`, `docs/vi/**`, `docs/nl/**`, `docs/fa/**`, `docs/tr/**`, `docs/uk/**`, `docs/id/**`, `docs/pl/**`, or `docs/th/**`.
1515

1616
## End-to-end flow
1717

@@ -20,8 +20,8 @@ Generated locale trees and live translation memory now live in the publish repo:
2020
3. `openclaw/openclaw/.github/workflows/docs-sync-publish.yml` mirrors the docs tree into `openclaw/docs`.
2121
4. The sync script rewrites the publish `docs/docs.json` so the generated locale picker blocks exist there even though they are no longer committed in the source repo.
2222
5. `openclaw/docs/.github/workflows/translate-zh-cn.yml` refreshes `docs/zh-CN/**` once a day, on demand, and after source-repo release dispatches.
23-
6. `openclaw/docs/.github/workflows/translate-ja-jp.yml` does the same for `docs/ja-JP/**`.
24-
7. `openclaw/docs/.github/workflows/translate-es.yml`, `translate-pt-br.yml`, `translate-ko.yml`, `translate-de.yml`, `translate-fr.yml`, `translate-ar.yml`, `translate-it.yml`, `translate-tr.yml`, `translate-uk.yml`, `translate-id.yml`, and `translate-pl.yml` do the same for `docs/es/**`, `docs/pt-BR/**`, `docs/ko/**`, `docs/de/**`, `docs/fr/**`, `docs/ar/**`, `docs/it/**`, `docs/tr/**`, `docs/uk/**`, `docs/id/**`, and `docs/pl/**`.
23+
6. `openclaw/docs/.github/workflows/translate-zh-tw.yml` and `translate-ja-jp.yml` do the same for `docs/zh-TW/**` and `docs/ja-JP/**`.
24+
7. `openclaw/docs/.github/workflows/translate-es.yml`, `translate-pt-br.yml`, `translate-ko.yml`, `translate-de.yml`, `translate-fr.yml`, `translate-ar.yml`, `translate-it.yml`, `translate-vi.yml`, `translate-nl.yml`, `translate-fa.yml`, `translate-tr.yml`, `translate-uk.yml`, `translate-id.yml`, `translate-pl.yml`, and `translate-th.yml` do the same for `docs/es/**`, `docs/pt-BR/**`, `docs/ko/**`, `docs/de/**`, `docs/fr/**`, `docs/ar/**`, `docs/it/**`, `docs/vi/**`, `docs/nl/**`, `docs/fa/**`, `docs/tr/**`, `docs/uk/**`, `docs/id/**`, `docs/pl/**`, and `docs/th/**`.
2525

2626
## Why the split exists
2727

@@ -33,10 +33,10 @@ Generated locale trees and live translation memory now live in the publish repo:
3333

3434
- `glossary.<lang>.json` — preferred term mappings used as prompt guidance.
3535
- `zh-Hans-navigation.json` — curated zh-Hans Mintlify locale navigation reinserted into the publish repo during sync.
36-
- `ar-navigation.json`, `de-navigation.json`, `es-navigation.json`, `fr-navigation.json`, `id-navigation.json`, `it-navigation.json`, `ja-navigation.json`, `ko-navigation.json`, `pl-navigation.json`, `pt-BR-navigation.json`, `tr-navigation.json` — starter locale metadata kept alongside the source repo, but the publish sync now clones the full English nav tree for these locales so translated pages are visible in Mintlify without hand-maintaining per-locale nav JSON.
36+
- `ar-navigation.json`, `de-navigation.json`, `es-navigation.json`, `fr-navigation.json`, `id-navigation.json`, `it-navigation.json`, `ja-navigation.json`, `ko-navigation.json`, `pl-navigation.json`, `pt-BR-navigation.json`, and `tr-navigation.json` — starter locale metadata kept alongside the source repo, but the publish sync now clones the full English nav tree for clone-en locales so translated pages are visible in Mintlify without hand-maintaining per-locale nav JSON.
3737
- `<lang>.tm.jsonl` — translation memory keyed by workflow + model + text hash.
3838

39-
In this repo, generated locale TM files such as `docs/.i18n/zh-CN.tm.jsonl`, `docs/.i18n/ja-JP.tm.jsonl`, `docs/.i18n/es.tm.jsonl`, `docs/.i18n/pt-BR.tm.jsonl`, `docs/.i18n/ko.tm.jsonl`, `docs/.i18n/de.tm.jsonl`, `docs/.i18n/fr.tm.jsonl`, `docs/.i18n/ar.tm.jsonl`, `docs/.i18n/it.tm.jsonl`, `docs/.i18n/tr.tm.jsonl`, `docs/.i18n/uk.tm.jsonl`, `docs/.i18n/id.tm.jsonl`, and `docs/.i18n/pl.tm.jsonl` are intentionally no longer committed.
39+
In this repo, generated locale TM files such as `docs/.i18n/zh-CN.tm.jsonl`, `docs/.i18n/zh-TW.tm.jsonl`, `docs/.i18n/ja-JP.tm.jsonl`, `docs/.i18n/es.tm.jsonl`, `docs/.i18n/pt-BR.tm.jsonl`, `docs/.i18n/ko.tm.jsonl`, `docs/.i18n/de.tm.jsonl`, `docs/.i18n/fr.tm.jsonl`, `docs/.i18n/ar.tm.jsonl`, `docs/.i18n/it.tm.jsonl`, `docs/.i18n/vi.tm.jsonl`, `docs/.i18n/nl.tm.jsonl`, `docs/.i18n/fa.tm.jsonl`, `docs/.i18n/tr.tm.jsonl`, `docs/.i18n/uk.tm.jsonl`, `docs/.i18n/id.tm.jsonl`, `docs/.i18n/pl.tm.jsonl`, and `docs/.i18n/th.tm.jsonl` are intentionally no longer committed.
4040

4141
## Glossary format
4242

@@ -62,7 +62,7 @@ Fields:
6262
- If the pending count is `0`, the expensive translation step is skipped entirely.
6363
- If there are pending files, the workflow translates only those files.
6464
- The publish workflow retries transient model-format failures, but unchanged files stay skipped because the same hash check runs on each retry.
65-
- The source repo also dispatches zh-CN, ja-JP, es, pt-BR, ko, de, fr, ar, it, tr, uk, id, and pl refreshes after published GitHub releases so release docs can catch up without waiting for the daily cron.
65+
- The source repo also dispatches zh-CN, zh-TW, ja-JP, es, pt-BR, ko, de, fr, ar, it, vi, nl, fa, tr, uk, id, pl, and th refreshes after published GitHub releases so release docs can catch up without waiting for the daily cron.
6666

6767
## Operational notes
6868

docs/.i18n/glossary.fa.json

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
[
2+
{
3+
"source": "ACP",
4+
"target": "ACP"
5+
},
6+
{
7+
"source": "Active Memory",
8+
"target": "Active Memory"
9+
},
10+
{
11+
"source": "ClawHub",
12+
"target": "ClawHub"
13+
},
14+
{
15+
"source": "CLI",
16+
"target": "CLI"
17+
},
18+
{
19+
"source": "Compaction",
20+
"target": "Compaction"
21+
},
22+
{
23+
"source": "Cron",
24+
"target": "Cron"
25+
},
26+
{
27+
"source": "Dreaming",
28+
"target": "Dreaming"
29+
},
30+
{
31+
"source": "Gateway",
32+
"target": "Gateway"
33+
},
34+
{
35+
"source": "Heartbeat",
36+
"target": "Heartbeat"
37+
},
38+
{
39+
"source": "Mintlify",
40+
"target": "Mintlify"
41+
},
42+
{
43+
"source": "Node",
44+
"target": "Node"
45+
},
46+
{
47+
"source": "OpenClaw",
48+
"target": "OpenClaw"
49+
},
50+
{
51+
"source": "Pi",
52+
"target": "Pi"
53+
},
54+
{
55+
"source": "Plugin",
56+
"target": "Plugin"
57+
},
58+
{
59+
"source": "Skills",
60+
"target": "Skills"
61+
},
62+
{
63+
"source": "Tailscale",
64+
"target": "Tailscale"
65+
},
66+
{
67+
"source": "TaskFlow",
68+
"target": "TaskFlow"
69+
},
70+
{
71+
"source": "TUI",
72+
"target": "TUI"
73+
},
74+
{
75+
"source": "Webhook",
76+
"target": "Webhook"
77+
}
78+
]

docs/.i18n/glossary.nl.json

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
[
2+
{
3+
"source": "ACP",
4+
"target": "ACP"
5+
},
6+
{
7+
"source": "Active Memory",
8+
"target": "Active Memory"
9+
},
10+
{
11+
"source": "ClawHub",
12+
"target": "ClawHub"
13+
},
14+
{
15+
"source": "CLI",
16+
"target": "CLI"
17+
},
18+
{
19+
"source": "Compaction",
20+
"target": "Compaction"
21+
},
22+
{
23+
"source": "Cron",
24+
"target": "Cron"
25+
},
26+
{
27+
"source": "Dreaming",
28+
"target": "Dreaming"
29+
},
30+
{
31+
"source": "Gateway",
32+
"target": "Gateway"
33+
},
34+
{
35+
"source": "Heartbeat",
36+
"target": "Heartbeat"
37+
},
38+
{
39+
"source": "Mintlify",
40+
"target": "Mintlify"
41+
},
42+
{
43+
"source": "Node",
44+
"target": "Node"
45+
},
46+
{
47+
"source": "OpenClaw",
48+
"target": "OpenClaw"
49+
},
50+
{
51+
"source": "Pi",
52+
"target": "Pi"
53+
},
54+
{
55+
"source": "Plugin",
56+
"target": "Plugin"
57+
},
58+
{
59+
"source": "Skills",
60+
"target": "Skills"
61+
},
62+
{
63+
"source": "Tailscale",
64+
"target": "Tailscale"
65+
},
66+
{
67+
"source": "TaskFlow",
68+
"target": "TaskFlow"
69+
},
70+
{
71+
"source": "TUI",
72+
"target": "TUI"
73+
},
74+
{
75+
"source": "Webhook",
76+
"target": "Webhook"
77+
}
78+
]

docs/.i18n/glossary.vi.json

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
[
2+
{
3+
"source": "ACP",
4+
"target": "ACP"
5+
},
6+
{
7+
"source": "Active Memory",
8+
"target": "Active Memory"
9+
},
10+
{
11+
"source": "ClawHub",
12+
"target": "ClawHub"
13+
},
14+
{
15+
"source": "CLI",
16+
"target": "CLI"
17+
},
18+
{
19+
"source": "Compaction",
20+
"target": "Compaction"
21+
},
22+
{
23+
"source": "Cron",
24+
"target": "Cron"
25+
},
26+
{
27+
"source": "Dreaming",
28+
"target": "Dreaming"
29+
},
30+
{
31+
"source": "Gateway",
32+
"target": "Gateway"
33+
},
34+
{
35+
"source": "Heartbeat",
36+
"target": "Heartbeat"
37+
},
38+
{
39+
"source": "Mintlify",
40+
"target": "Mintlify"
41+
},
42+
{
43+
"source": "Node",
44+
"target": "Node"
45+
},
46+
{
47+
"source": "OpenClaw",
48+
"target": "OpenClaw"
49+
},
50+
{
51+
"source": "Pi",
52+
"target": "Pi"
53+
},
54+
{
55+
"source": "Plugin",
56+
"target": "Plugin"
57+
},
58+
{
59+
"source": "Skills",
60+
"target": "Skills"
61+
},
62+
{
63+
"source": "Tailscale",
64+
"target": "Tailscale"
65+
},
66+
{
67+
"source": "TaskFlow",
68+
"target": "TaskFlow"
69+
},
70+
{
71+
"source": "TUI",
72+
"target": "TUI"
73+
},
74+
{
75+
"source": "Webhook",
76+
"target": "Webhook"
77+
}
78+
]

docs/.i18n/glossary.zh-TW.json

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
[
2+
{
3+
"source": "ACP",
4+
"target": "ACP"
5+
},
6+
{
7+
"source": "Active Memory",
8+
"target": "Active Memory"
9+
},
10+
{
11+
"source": "ClawHub",
12+
"target": "ClawHub"
13+
},
14+
{
15+
"source": "CLI",
16+
"target": "CLI"
17+
},
18+
{
19+
"source": "Compaction",
20+
"target": "Compaction"
21+
},
22+
{
23+
"source": "Cron",
24+
"target": "Cron"
25+
},
26+
{
27+
"source": "Dreaming",
28+
"target": "Dreaming"
29+
},
30+
{
31+
"source": "Gateway",
32+
"target": "Gateway"
33+
},
34+
{
35+
"source": "Heartbeat",
36+
"target": "Heartbeat"
37+
},
38+
{
39+
"source": "Mintlify",
40+
"target": "Mintlify"
41+
},
42+
{
43+
"source": "Node",
44+
"target": "Node"
45+
},
46+
{
47+
"source": "OpenClaw",
48+
"target": "OpenClaw"
49+
},
50+
{
51+
"source": "Pi",
52+
"target": "Pi"
53+
},
54+
{
55+
"source": "Plugin",
56+
"target": "Plugin"
57+
},
58+
{
59+
"source": "Skills",
60+
"target": "Skills"
61+
},
62+
{
63+
"source": "Tailscale",
64+
"target": "Tailscale"
65+
},
66+
{
67+
"source": "TaskFlow",
68+
"target": "TaskFlow"
69+
},
70+
{
71+
"source": "TUI",
72+
"target": "TUI"
73+
},
74+
{
75+
"source": "Webhook",
76+
"target": "Webhook"
77+
}
78+
]

scripts/check-docs-mdx.mjs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ const MINTLIFY_LANGUAGE_CODES = new Set([
3939
"nl",
4040
"uk",
4141
"vi",
42+
"fa",
4243
"pl",
4344
"uz",
4445
"he",

0 commit comments

Comments
 (0)