docs: move ja-JP output to publish repo

This commit is contained in:
Peter Steinberger 2026-04-05 11:32:46 +01:00
parent 495ebd28a4
commit dbfd96f4ec
No known key found for this signature in database
10 changed files with 70 additions and 423 deletions

View File

@ -24,3 +24,16 @@ jobs:
-f client_payload[release_tag]="${RELEASE_TAG}" \
-f client_payload[source_repository]="${GITHUB_REPOSITORY}" \
-f client_payload[source_sha]="${GITHUB_SHA}"
- name: Trigger ja-JP translate in publish repo
env:
GH_TOKEN: ${{ secrets.OPENCLAW_DOCS_SYNC_TOKEN }}
RELEASE_TAG: ${{ github.event.release.tag_name }}
run: |
set -euo pipefail
gh api repos/openclaw/docs/dispatches \
--method POST \
-f event_type='translate-ja-jp-release' \
-f client_payload[release_tag]="${RELEASE_TAG}" \
-f client_payload[source_repository]="${GITHUB_REPOSITORY}" \
-f client_payload[source_sha]="${GITHUB_SHA}"

View File

@ -81,13 +81,13 @@
- README (GitHub): keep absolute docs URLs (`https://docs.openclaw.ai/...`) so links work on GitHub.
- Docs content must be generic: no personal device names/hostnames/paths; use placeholders like `user@gateway-host` and “gateway host”.
## Docs i18n (zh-CN)
## Docs i18n (zh-CN / ja-JP)
- Simplified Chinese publish output lives in the sibling `openclaw-docs` repo; do not add or edit `docs/zh-CN/**` here.
- Pipeline: update English docs here → adjust glossary (`docs/.i18n/glossary.zh-CN.json`) → let the publish-repo sync + `scripts/docs-i18n` run in `openclaw-docs` → apply targeted fixes only if instructed.
- Generated publish output lives in the sibling `openclaw-docs` repo; do not add or edit `docs/zh-CN/**` or `docs/ja-JP/**` here.
- Pipeline: update English docs here → adjust glossary (`docs/.i18n/glossary.zh-CN.json`, `docs/.i18n/glossary.ja-JP.json`) → let the publish-repo sync + `scripts/docs-i18n` run in `openclaw-docs` → apply targeted fixes only if instructed.
- Before rerunning `scripts/docs-i18n`, add glossary entries for any new technical terms, page titles, or short nav labels that must stay in English or use a fixed translation (for example `Doctor` or `Polls`).
- `pnpm docs:check-i18n-glossary` enforces glossary coverage for changed English doc titles and short internal doc labels before translation reruns.
- Translation memory: `docs/.i18n/zh-CN.tm.jsonl` (generated).
- Translation memory: `docs/.i18n/zh-CN.tm.jsonl` and `docs/.i18n/ja-JP.tm.jsonl` (generated in the publish repo).
- See `docs/.i18n/README.md`.
- The pipeline can be slow/inefficient; if its dragging, ping @jospalmbier on Discord instead of hacking around it.

View File

@ -2,7 +2,7 @@
This folder stores translation config for the source docs repo.
Generated zh-CN pages and the live zh-CN translation memory live in the publish repo:
Generated locale trees and live translation memory now live in the publish repo:
- repo: `openclaw/docs`
- local checkout: `~/Projects/openclaw-docs`
@ -11,7 +11,7 @@ Generated zh-CN pages and the live zh-CN translation memory live in the publish
- English docs are authored in `openclaw/openclaw`.
- The source docs tree lives under `docs/`.
- The source repo no longer keeps committed `docs/zh-CN/**`.
- The source repo no longer keeps committed generated locale trees such as `docs/zh-CN/**` or `docs/ja-JP/**`.
## End-to-end flow
@ -20,20 +20,22 @@ Generated zh-CN pages and the live zh-CN translation memory live in the publish
3. `openclaw/openclaw/.github/workflows/docs-sync-publish.yml` mirrors the docs tree into `openclaw/docs`.
4. The sync script rewrites the publish `docs/docs.json` so `zh-Hans` navigation exists there even though it is no longer committed in the source repo.
5. `openclaw/docs/.github/workflows/translate-zh-cn.yml` refreshes `docs/zh-CN/**` once a day, on demand, and after source-repo release dispatches.
6. `openclaw/docs/.github/workflows/translate-ja-jp.yml` does the same for `docs/ja-JP/**`.
## Why the split exists
- Keep generated zh-CN output out of the main product repo.
- Keep generated locale output out of the main product repo.
- Keep Mintlify on a single published docs tree.
- Preserve the built-in language switcher by letting the publish repo own `docs/zh-CN/**`.
- Preserve the built-in language switcher by letting the publish repo own generated locale trees.
## Files in this folder
- `glossary.<lang>.json` — preferred term mappings used as prompt guidance.
- `ja-navigation.json` — the `ja` Mintlify nav block reinserted into the publish repo during sync.
- `zh-Hans-navigation.json` — the `zh-Hans` Mintlify nav block reinserted into the publish repo during sync.
- `<lang>.tm.jsonl` — translation memory keyed by workflow + model + text hash.
In this repo, `docs/.i18n/zh-CN.tm.jsonl` is intentionally no longer committed.
In this repo, generated locale TM files such as `docs/.i18n/zh-CN.tm.jsonl` and `docs/.i18n/ja-JP.tm.jsonl` are intentionally no longer committed.
## Glossary format
@ -57,11 +59,11 @@ Fields:
- `scripts/docs-i18n` still owns translation generation.
- Doc mode writes `x-i18n.source_hash` into each translated page.
- The publish workflow precomputes a pending file list by comparing the current English source hash to the stored zh-CN `x-i18n.source_hash`.
- Each publish workflow precomputes a pending file list by comparing the current English source hash to the stored locale `x-i18n.source_hash`.
- If the pending count is `0`, the expensive translation step is skipped entirely.
- If there are pending files, the workflow translates only those files.
- The publish workflow retries transient model-format failures, but unchanged files stay skipped because the same hash check runs on each retry.
- The source repo also dispatches a zh-CN refresh after published GitHub releases so release docs can catch up without waiting for the daily cron.
- The source repo also dispatches zh-CN and ja-JP refreshes after published GitHub releases so release docs can catch up without waiting for the daily cron.
## Operational notes

View File

@ -0,0 +1,18 @@
{
"language": "ja",
"tabs": [
{
"tab": "はじめに",
"groups": [
{
"group": "概要",
"pages": ["ja-JP/index"]
},
{
"group": "初回セットアップ",
"pages": ["ja-JP/start/getting-started", "ja-JP/start/wizard"]
}
]
}
]
}

View File

@ -1594,24 +1594,6 @@
]
}
]
},
{
"language": "ja",
"tabs": [
{
"tab": "はじめに",
"groups": [
{
"group": "概要",
"pages": ["ja-JP/index"]
},
{
"group": "初回セットアップ",
"pages": ["ja-JP/start/getting-started", "ja-JP/start/wizard"]
}
]
}
]
}
]
}

View File

@ -1,186 +0,0 @@
---
read_when:
- 新規ユーザーにOpenClawを紹介するとき
summary: OpenClawは、あらゆるOSで動作するAIエージェント向けのマルチチャネルgatewayです。
title: OpenClaw
x-i18n:
generated_at: "2026-02-08T17:15:47Z"
model: claude-opus-4-6
provider: pi
source_hash: fc8babf7885ef91d526795051376d928599c4cf8aff75400138a0d7d9fa3b75f
source_path: index.md
workflow: 15
---
# OpenClaw 🦞
<p align="center">
<img
src="/assets/openclaw-logo-text-dark.png"
alt="OpenClaw"
width="500"
class="dark:hidden"
/>
<img
src="/assets/openclaw-logo-text.png"
alt="OpenClaw"
width="500"
class="hidden dark:block"
/>
</p>
> _「EXFOLIATE! EXFOLIATE!」_ — たぶん宇宙ロブスター
<p align="center">
<strong>WhatsApp、Telegram、Discord、iMessageなどに対応した、あらゆるOS向けのAIエージェントgateway。</strong><br />
メッセージを送信すれば、ポケットからエージェントの応答を受け取れます。プラグインでMattermostなどを追加できます。
</p>
<Columns>
<Card title="はじめに" href="/start/getting-started" icon="rocket">
OpenClawをインストールし、数分でGatewayを起動できます。
</Card>
<Card title="ウィザードを実行" href="/start/wizard" icon="sparkles">
`openclaw onboard`とペアリングフローによるガイド付きセットアップ。
</Card>
<Card title="Control UIを開く" href="/web/control-ui" icon="layout-dashboard">
チャット、設定、セッション用のブラウザダッシュボードを起動します。
</Card>
</Columns>
OpenClawは、単一のGatewayプロセスを通じてチャットアプリをPiのようなコーディングエージェントに接続します。OpenClawアシスタントを駆動し、ローカルまたはリモートのセットアップをサポートします。
## 仕組み
```mermaid
flowchart LR
A["チャットアプリ + プラグイン"] --> B["Gateway"]
B --> C["Piエージェント"]
B --> D["CLI"]
B --> E["Web Control UI"]
B --> F["macOSアプリ"]
B --> G["iOSおよびAndroidード"]
```
Gatewayは、セッション、ルーティング、チャネル接続の信頼できる唯一の情報源です。
## 主な機能
<Columns>
<Card title="マルチチャネルgateway" icon="network">
単一のGatewayプロセスでWhatsApp、Telegram、Discord、iMessageに対応。
</Card>
<Card title="プラグインチャネル" icon="plug">
拡張パッケージでMattermostなどを追加。
</Card>
<Card title="マルチエージェントルーティング" icon="route">
エージェント、ワークスペース、送信者ごとに分離されたセッション。
</Card>
<Card title="メディアサポート" icon="image">
画像、音声、ドキュメントの送受信。
</Card>
<Card title="Web Control UI" icon="monitor">
チャット、設定、セッション、ノード用のブラウザダッシュボード。
</Card>
<Card title="モバイルノード" icon="smartphone">
Canvas対応のiOSおよびAndroidードをペアリング。
</Card>
</Columns>
## クイックスタート
<Steps>
<Step title="OpenClawをインストール">
```bash
npm install -g openclaw@latest
```
</Step>
<Step title="オンボーディングとサービスのインストール">
```bash
openclaw onboard --install-daemon
```
</Step>
<Step title="WhatsAppをペアリングしてGatewayを起動">
```bash
openclaw channels login
openclaw gateway --port 18789
```
</Step>
</Steps>
完全なインストールと開発セットアップが必要ですか?[クイックスタート](/start/quickstart)をご覧ください。
## ダッシュボード
Gatewayの起動後、ブラウザでControl UIを開きます。
- ローカルデフォルト: [http://127.0.0.1:18789/](http://127.0.0.1:18789/)
- リモートアクセス: [Webサーフェス](/web)および[Tailscale](/gateway/tailscale)
<p align="center">
<img src="/whatsapp-openclaw.jpg" alt="OpenClaw" width="420" />
</p>
## 設定(オプション)
設定は`~/.openclaw/openclaw.json`にあります。
- **何もしなければ**、OpenClawはバンドルされたPiバイナリをRPCモードで使用し、送信者ごとのセッションを作成します。
- 制限を設けたい場合は、`channels.whatsapp.allowFrom`と(グループの場合)メンションルールから始めてください。
例:
```json5
{
channels: {
whatsapp: {
allowFrom: ["+15555550123"],
groups: { "*": { requireMention: true } },
},
},
messages: { groupChat: { mentionPatterns: ["@openclaw"] } },
}
```
## ここから始める
<Columns>
<Card title="ドキュメントハブ" href="/start/hubs" icon="book-open">
ユースケース別に整理されたすべてのドキュメントとガイド。
</Card>
<Card title="設定" href="/gateway/configuration" icon="settings">
Gatewayのコア設定、トークン、プロバイダー設定。
</Card>
<Card title="リモートアクセス" href="/gateway/remote" icon="globe">
SSHおよびtailnetアクセスパターン。
</Card>
<Card title="チャネル" href="/channels/telegram" icon="message-square">
WhatsApp、Telegram、Discordなどのチャネル固有のセットアップ。
</Card>
<Card title="ノード" href="/nodes" icon="smartphone">
ペアリングとCanvas対応のiOSおよびAndroidード。
</Card>
<Card title="ヘルプ" href="/help" icon="life-buoy">
一般的な修正とトラブルシューティングのエントリーポイント。
</Card>
</Columns>
## 詳細
<Columns>
<Card title="全機能リスト" href="/concepts/features" icon="list">
チャネル、ルーティング、メディア機能の完全な一覧。
</Card>
<Card title="マルチエージェントルーティング" href="/concepts/multi-agent" icon="route">
ワークスペースの分離とエージェントごとのセッション。
</Card>
<Card title="セキュリティ" href="/gateway/security" icon="shield">
トークン、許可リスト、安全制御。
</Card>
<Card title="トラブルシューティング" href="/gateway/troubleshooting" icon="wrench">
Gatewayの診断と一般的なエラー。
</Card>
<Card title="概要とクレジット" href="/reference/credits" icon="info">
プロジェクトの起源、貢献者、ライセンス。
</Card>
</Columns>

View File

@ -1,125 +0,0 @@
---
read_when:
- ゼロからの初回セットアップ
- 動作するチャットへの最短ルートを知りたい
summary: OpenClawをインストールし、数分で最初のチャットを実行しましょう。
title: はじめに
x-i18n:
generated_at: "2026-02-08T17:15:16Z"
model: claude-opus-4-6
provider: pi
source_hash: 27aeeb3d18c495380e94e6b011b0df3def518535c9f1eee504f04871d8a32269
source_path: start/getting-started.md
workflow: 15
---
# はじめに
目標:ゼロから最小限のセットアップで最初の動作するチャットを実現する。
<Info>
最速のチャット方法Control UIを開くチャンネル設定は不要。`openclaw dashboard`を実行してブラウザでチャットするか、<Tooltip headline="Gatewayホスト" tip="OpenClaw Gatewayサービスを実行しているマシン。">Gatewayホスト</Tooltip>で`http://127.0.0.1:18789/`を開きます。
ドキュメント:[Dashboard](/web/dashboard)と[Control UI](/web/control-ui)。
</Info>
## 前提条件
- Node 22以降
<Tip>
不明な場合は`node --version`でNodeのバージョンを確認してください。
</Tip>
## クイックセットアップCLI
<Steps>
<Step title="OpenClawをインストール推奨">
<Tabs>
<Tab title="macOS/Linux">
```bash
curl -fsSL https://openclaw.ai/install.sh | bash
```
</Tab>
<Tab title="Windows (PowerShell)">
```powershell
iwr -useb https://openclaw.ai/install.ps1 | iex
```
</Tab>
</Tabs>
<Note>
その他のインストール方法と要件:[インストール](/install)。
</Note>
</Step>
<Step title="オンボーディングウィザードを実行">
```bash
openclaw onboard --install-daemon
```
ウィザードは認証、Gateway設定、およびオプションのチャンネルを構成します。
詳細は[オンボーディングウィザード](/start/wizard)を参照してください。
</Step>
<Step title="Gatewayを確認">
サービスをインストールした場合、すでに実行されているはずです:
```bash
openclaw gateway status
```
</Step>
<Step title="Control UIを開く">
```bash
openclaw dashboard
```
</Step>
</Steps>
<Check>
Control UIが読み込まれれば、Gatewayは使用可能な状態です。
</Check>
## オプションの確認と追加機能
<AccordionGroup>
<Accordion title="Gatewayをフォアグラウンドで実行">
クイックテストやトラブルシューティングに便利です。
```bash
openclaw gateway --port 18789
```
</Accordion>
<Accordion title="テストメッセージを送信">
構成済みのチャンネルが必要です。
```bash
openclaw message send --target +15555550123 --message "Hello from OpenClaw"
```
</Accordion>
</AccordionGroup>
## さらに詳しく
<Columns>
<Card title="オンボーディングウィザード(詳細)" href="/start/wizard">
完全なCLIウィザードリファレンスと高度なオプション。
</Card>
<Card title="macOSアプリのオンボーディング" href="/start/onboarding">
macOSアプリの初回実行フロー。
</Card>
</Columns>
## 完了後の状態
- 実行中のGateway
- 構成済みの認証
- Control UIアクセスまたは接続済みのチャンネル
## 次のステップ
- DMの安全性と承認[ペアリング](/channels/pairing)
- さらにチャンネルを接続:[チャンネル](/channels)
- 高度なワークフローとソースからのビルド:[セットアップ](/start/setup)

View File

@ -1,77 +0,0 @@
---
read_when:
- オンボーディングウィザードの実行または設定時
- 新しいマシンのセットアップ時
sidebarTitle: Wizard (CLI)
summary: CLIオンボーディングウィザードGateway、ワークスペース、チャンネル、Skillsの対話式セットアップ
title: オンボーディングウィザードCLI
x-i18n:
generated_at: "2026-02-08T17:15:18Z"
model: claude-opus-4-6
provider: pi
source_hash: 9a650d46044a930aa4aaec30b35f1273ca3969bf676ab67bf4e1575b5c46db4c
source_path: start/wizard.md
workflow: 15
---
# オンボーディングウィザードCLI
CLIオンボーディングウィザードは、macOS、Linux、WindowsWSL2経由でOpenClawをセットアップする際の推奨パスです。ローカルGatewayまたはリモートGateway接続に加えて、ワークスペースのデフォルト設定、チャンネル、Skillsを構成します。
```bash
openclaw onboard
```
<Info>
最速で初回チャットを開始する方法Control UI を開きます(チャンネル設定は不要)。`openclaw dashboard` を実行してブラウザでチャットできます。ドキュメント:[Dashboard](/web/dashboard)。
</Info>
## クイックスタート vs 詳細設定
ウィザードは**クイックスタート**(デフォルト設定)と**詳細設定**(完全な制御)のどちらかを選択して開始します。
<Tabs>
<Tab title="クイックスタート(デフォルト設定)">
- loopback上のローカルGateway
- 既存のワークスペースまたはデフォルトワークスペース
- Gatewayポート `18789`
- Gateway認証トークンは自動生成loopback上でも生成されます
- Tailscale公開はオフ
- TelegramとWhatsAppのDMはデフォルトで許可リスト電話番号の入力を求められる場合があります
</Tab>
<Tab title="詳細設定(完全な制御)">
- モード、ワークスペース、Gateway、チャンネル、デーモン、Skillsの完全なプロンプトフローを表示
</Tab>
</Tabs>
## CLIオンボーディングの詳細
<Columns>
<Card title="CLIリファレンス" href="/start/wizard-cli-reference">
ローカルおよびリモートフローの完全な説明、認証とモデルマトリックス、設定出力、ウィザードRPC、signal-cliの動作。
</Card>
<Card title="自動化とスクリプト" href="/start/wizard-cli-automation">
非対話式オンボーディングのレシピと自動化された `agents add` の例。
</Card>
</Columns>
## よく使うフォローアップコマンド
```bash
openclaw configure
openclaw agents add <name>
```
<Note>
`--json` は非対話モードを意味しません。スクリプトでは `--non-interactive` を使用してください。
</Note>
<Tip>
推奨:エージェントが `web_search` を使用できるように、Brave Search APIキーを設定してください`web_fetch` はキーなしで動作します)。最も簡単な方法:`openclaw configure --section web` を実行すると `plugins.entries.brave.config.webSearch.apiKey` に保存されます。旧 `tools.web.search.apiKey` パスは互換用に引き続き読み込まれますが、新しい設定では使用しないでください。ドキュメント:[Webツール](/tools/web)。
</Tip>
## 関連ドキュメント
- CLIコマンドリファレンス[`openclaw onboard`](/cli/onboard)
- macOSアプリのオンボーディング[オンボーディング](/start/onboarding)
- エージェント初回起動の手順:[エージェントブートストラップ](/start/bootstrapping)

View File

@ -9,6 +9,8 @@ const HERE = path.dirname(fileURLToPath(import.meta.url));
const ROOT = path.resolve(HERE, "..");
const SOURCE_DOCS_DIR = path.join(ROOT, "docs");
const SOURCE_CONFIG_PATH = path.join(SOURCE_DOCS_DIR, "docs.json");
const JA_NAV_PATH = path.join(SOURCE_DOCS_DIR, ".i18n", "ja-navigation.json");
const JA_TM_PATH = path.join(SOURCE_DOCS_DIR, ".i18n", "ja-JP.tm.jsonl");
const ZH_NAV_PATH = path.join(SOURCE_DOCS_DIR, ".i18n", "zh-Hans-navigation.json");
const ZH_TM_PATH = path.join(SOURCE_DOCS_DIR, ".i18n", "zh-CN.tm.jsonl");
@ -69,6 +71,7 @@ function writeJson(filePath, value) {
function composeDocsConfig() {
const sourceConfig = readJson(SOURCE_CONFIG_PATH);
const jaNavigation = readJson(JA_NAV_PATH);
const zhNavigation = readJson(ZH_NAV_PATH);
const languages = sourceConfig?.navigation?.languages;
@ -76,19 +79,22 @@ function composeDocsConfig() {
throw new Error("docs/docs.json is missing navigation.languages");
}
const withoutZh = languages.filter((entry) => entry?.language !== "zh-Hans");
const jaIndex = withoutZh.findIndex((entry) => entry?.language === "ja");
if (jaIndex === -1) {
withoutZh.push(zhNavigation);
const withoutGenerated = languages.filter(
(entry) => entry?.language !== "zh-Hans" && entry?.language !== "ja",
);
const enIndex = withoutGenerated.findIndex((entry) => entry?.language === "en");
const generated = [zhNavigation, jaNavigation];
if (enIndex === -1) {
withoutGenerated.push(...generated);
} else {
withoutZh.splice(jaIndex, 0, zhNavigation);
withoutGenerated.splice(enIndex + 1, 0, ...generated);
}
return {
...sourceConfig,
navigation: {
...sourceConfig.navigation,
languages: withoutZh,
languages: withoutGenerated,
},
};
}
@ -101,17 +107,31 @@ function syncDocsTree(targetRoot) {
"-a",
"--delete",
"--filter",
"P ja-JP/",
"--filter",
"P zh-CN/",
"--filter",
"P .i18n/ja-JP.tm.jsonl",
"--filter",
"P .i18n/zh-CN.tm.jsonl",
"--exclude",
"ja-JP/",
"--exclude",
"zh-CN/",
"--exclude",
".i18n/ja-JP.tm.jsonl",
"--exclude",
".i18n/zh-CN.tm.jsonl",
`${SOURCE_DOCS_DIR}/`,
`${targetDocsDir}/`,
]);
const targetJaTmPath = path.join(targetDocsDir, ".i18n", "ja-JP.tm.jsonl");
if (!fs.existsSync(targetJaTmPath) && fs.existsSync(JA_TM_PATH)) {
ensureDir(path.dirname(targetJaTmPath));
fs.copyFileSync(JA_TM_PATH, targetJaTmPath);
}
const targetZhTmPath = path.join(targetDocsDir, ".i18n", "zh-CN.tm.jsonl");
if (!fs.existsSync(targetZhTmPath) && fs.existsSync(ZH_TM_PATH)) {
ensureDir(path.dirname(targetZhTmPath));