Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/docs-parity.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,5 +13,5 @@ jobs:
with:
node-version: 22

- name: Check en/zh locale parity
- name: Check locale parity (en/zh/ja/ru)
run: node scripts/check-locale-parity.mjs
20 changes: 11 additions & 9 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,18 @@

This guide covers how documentation is structured, translated, and checked in this repository. A complete Chinese version follows at the bottom (中文对照).

## Keep the Two Locales in Lockstep
## Keep the Locales in Lockstep

- English pages live under `docs/`.
- Chinese pages live under `docs/zh/` with **identical paths**: `docs/guides/memory.md` mirrors to `docs/zh/guides/memory.md`.
- **Every content PR updates both locales.** English is the source of truth; the Chinese mirror lands **in the same PR**, never in a follow-up.
- Chinese, Japanese, and Russian pages live under `docs/zh/`, `docs/ja/`, and `docs/ru/` with **identical paths**: `docs/guides/memory.md` mirrors to `docs/zh/guides/memory.md`, `docs/ja/guides/memory.md`, and `docs/ru/guides/memory.md`.
- **Every content PR updates all locales.** English is the source of truth; the Chinese, Japanese, and Russian mirrors land **in the same PR**, never in a follow-up.

## Use the Terminology Glossary

Translate product terms exactly as listed. Where a term has a product UI key, the **bold UI label** in the docs must use the product's own locale string for that key — never a re-translation of the English value.

The table below lists English/Chinese; for Japanese, use the product's `ja.json` string for the same UI key (e.g. workspace tab = **Workspace**, Platforms tab = **プラットフォーム**, Supermarket = **マーケットプレイス**, Apps tab = **アプリ**, skill = スキル, connector = コネクター, dependencies = 依存関係). The product has **no Russian UI locale**: in Russian pages every bold UI label stays as the English UI string, with an optional Russian gloss in parentheses on first mention.

| English | 中文 | Product UI key |
|---------|------|----------------|
| Bot | Bot | - |
Expand Down Expand Up @@ -73,19 +75,19 @@ This keeps links stable across locales and rewordings.
node scripts/check-locale-parity.mjs
```

It must pass. It verifies that every page under `docs/` has its mirror under `docs/zh/` (and vice versa), and that the sidebars in `docs/.vitepress/en.ts` and `docs/.vitepress/zh.ts` link the same set of pages. CI runs the same script on every pull request.
It must pass. It verifies that every page under `docs/` has its mirror under `docs/zh/`, `docs/ja/`, and `docs/ru/` (and vice versa), and that the sidebars in `docs/.vitepress/en.ts`, `zh.ts`, `ja.ts`, and `ru.ts` link the same set of pages. CI runs the same script on every pull request.

---

# 中文对照

本指南说明这个仓库里文档怎么组织、怎么翻译、怎么检查。

## 两种语言同步走
## 多语言同步走

- 英文页面在 `docs/` 下。
- 中文页面在 `docs/zh/` 下,**路径完全一致**:`docs/guides/memory.md` 对应 `docs/zh/guides/memory.md`。
- **每个内容 PR 同时更新两种语言。** 英文是唯一事实来源;中文镜像**在同一个 PR 里**落地,不留到后续 PR。
- 中文、日文、俄文页面分别在 `docs/zh/`、`docs/ja/`、`docs/ru/` 下,**路径完全一致**:`docs/guides/memory.md` 对应 `docs/zh/guides/memory.md`、`docs/ja/guides/memory.md` 与 `docs/ru/guides/memory.md`。
- **每个内容 PR 同时更新所有语言。** 英文是唯一事实来源;中文、日文、俄文镜像**在同一个 PR 里**落地,不留到后续 PR。

## 按术语表翻译

Expand Down Expand Up @@ -127,7 +129,7 @@ It must pass. It verifies that every page under `docs/` has its mirror under `do

## 给可深链的标题加显式锚点

FAQ 条目和所有要被深链的标题带显式 ASCII `{#id}`,**两种语言完全相同**:
FAQ 条目和所有要被深链的标题带显式 ASCII `{#id}`,**所有语言完全相同**:

```md
<!-- docs/guides/sessions.md -->
Expand All @@ -152,4 +154,4 @@ FAQ 条目和所有要被深链的标题带显式 ASCII `{#id}`,**两种语言
node scripts/check-locale-parity.mjs
```

必须通过。它检查 `docs/` 下每个页面在 `docs/zh/` 下都有镜像(反之亦然),并且 `docs/.vitepress/en.ts` 与 `docs/.vitepress/zh.ts` 两份侧栏链接同一组页面。CI 会在每个 pull request 上跑同一个脚本。
必须通过。它检查 `docs/` 下每个页面在 `docs/zh/`、`docs/ja/`、`docs/ru/` 下都有镜像(反之亦然),并且 `docs/.vitepress/en.ts`、`zh.ts`、`ja.ts`、`ru.ts` 各份侧栏链接同一组页面。CI 会在每个 pull request 上跑同一个脚本。
26 changes: 17 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ The product source code lives in [`felinics/Memoh`](https://github.com/felinics/
- **Guides** for SaaS/product usage: bots, workspaces, sessions, memory, MCP, email, scheduled tasks, and slash commands.
- **Integrations** for channels and providers, including messaging platforms, LLMs, memory providers, TTS, and web search.
- **Self-hosted** docs for Desktop, Server Deploy, workspace backends, Kata, and SQLite.
- **English and Chinese docs** under `docs/` and `docs/zh/`.
- **English, Chinese, Japanese, and Russian docs** under `docs/`, `docs/zh/`, `docs/ja/`, and `docs/ru/`.
- **Static assets** under `docs/public/`, including screenshots and logos.
- **VitePress config** under `docs/.vitepress/`.

Expand All @@ -35,26 +35,25 @@ The current VitePress site is organized around three primary navigation roots:

- `docs/guides/` for product usage guides.
- `docs/integrations/` for channels, providers, memory providers, TTS, and web search.
- `docs/self-hosted/` for Desktop, Server Deploy, workspace backends, Kata, and SQLite.
- `docs/self-hosted/` for Desktop, Server Deploy, workspace backends, and connectors (Connect-It).

The Simplified Chinese mirror uses the same structure under `docs/zh/`:
The Simplified Chinese, Japanese, and Russian mirrors use the same structure under `docs/zh/`, `docs/ja/`, and `docs/ru/`:

- `docs/zh/guides/`
- `docs/zh/integrations/`
- `docs/zh/self-hosted/`
- `docs/zh/guides/`, `docs/ja/guides/`, `docs/ru/guides/`
- `docs/zh/integrations/`, `docs/ja/integrations/`, `docs/ru/integrations/`
- `docs/zh/self-hosted/`, `docs/ja/self-hosted/`, `docs/ru/self-hosted/`

Legacy paths still exist for old external links, but they are redirect pages instead of the main content source:

- `docs/getting-started/`
- `docs/installation/`
- `docs/channels/`
- `docs/tts-providers/`
- `docs/memory-providers/`
- Matching Chinese redirects under `docs/zh/`

When updating content, edit the primary paths above first. Only touch a legacy redirect page when the redirect target itself changes.

Keep the English and Simplified Chinese docs mirrored. If you add, rename, remove, or move a page in one language, make the matching change in the other language and update both VitePress sidebar files.
Keep the English, Simplified Chinese, Japanese, and Russian docs mirrored. If you add, rename, remove, or move a page in one language, make the matching change in the other languages and update every VitePress sidebar file.

Do not edit `docs/.vitepress/dist/` by hand. It is generated build output and should not be treated as source documentation.

Expand Down Expand Up @@ -97,17 +96,26 @@ pnpm preview
│ ├── getting-started/ # Legacy redirects to guides
│ ├── installation/ # Legacy redirects to self-hosted
│ ├── channels/ # Legacy redirects to integrations/channels
│ ├── tts-providers/ # Legacy redirects to integrations/providers/tts
│ ├── memory-providers/ # Legacy redirects to integrations/providers/memory
│ ├── public/ # Static images and logo
│ ├── zh/ # Simplified Chinese documentation and redirects
│ ├── ja/ # Japanese documentation and redirects
│ ├── ru/ # Russian documentation and redirects
│ └── *.md # Landing and compatibility pages
├── package.json
└── pnpm-lock.yaml
```

## Changelog

### 2026-10

- **Client-first corrections round**: top nav is now Guides / Help Center (Integrations and About removed); the Deployment sidebar group is back (Server Deploy, Workspace Backends, Connectors).
- **Apps model**: Supermarket and Skills pages rewritten around the unified App concept (an App bundles Skills, dependencies, and connectors); Skills now documents workspace directories instead of a removed management UI; Connectors moved to the Deployment section.
- **Cloud-baseline Workspace page**: open-source backend configuration and CDI/GPU passthrough moved to Workspace Backends; Preferences page removed; Memory provider entries consolidated into one; TTS: Edge removed.
- **Use Cases removed**: the AI-drafted Use Cases section is gone from nav, sidebar, and pages; it will return as human-written chapters with real screenshots and recordings.
- **Japanese and Russian locales**: full ja and ru translations under `docs/ja/` and `docs/ru/` with their own navs and sidebars. Japanese terminology is aligned with the product's Japanese UI strings; Russian keeps UI labels in English because the product has no Russian UI. The parity script now checks en/zh/ja/ru.

### 2026-09

- **Navigation restructure**: docs are now organized under a single **References** tree — Getting Started (with Deployment and Channels), Advanced (with Providers → Memory / TTS Providers), and Use Cases. The version selector moved to the header right, and edit links were added to every page.
Expand Down
24 changes: 16 additions & 8 deletions README_CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
- **教程**:面向 SaaS/产品使用,覆盖机器人、workspace、会话、记忆、MCP、邮件、计划任务和斜杠命令。
- **集成**:渠道和提供方,包括消息平台、LLM、记忆提供方、TTS 和网页搜索。
- **自托管**:Desktop、Server Deploy、workspace backend、Kata 和 SQLite 等开源部署文档。
- 英文和中文文档,分别位于 `docs/` 和 `docs/zh/`。
- 英文、中文、日文和俄文文档,分别位于 `docs/`、`docs/zh/`、`docs/ja/` 和 `docs/ru/`。
- 截图、logo 等静态资源,位于 `docs/public/`。
- VitePress 配置,位于 `docs/.vitepress/`。

Expand All @@ -35,20 +35,19 @@

- `docs/guides/`:产品使用教程。
- `docs/integrations/`:渠道、提供方、记忆提供方、TTS 和网页搜索。
- `docs/self-hosted/`:Desktop、Server Deploy、workspace backend、Kata 和 SQLite。
- `docs/self-hosted/`:Desktop、Server Deploy、workspace backend 和连接器(Connect-It)。

简体中文文档使用相同结构,位于 `docs/zh/` 下:
简体中文、日文与俄文文档使用相同结构,分别位于 `docs/zh/`、`docs/ja/` 与 `docs/ru/` 下:

- `docs/zh/guides/`
- `docs/zh/integrations/`
- `docs/zh/self-hosted/`
- `docs/zh/guides/`、`docs/ja/guides/`、`docs/ru/guides/`
- `docs/zh/integrations/`、`docs/ja/integrations/`、`docs/ru/integrations/`
- `docs/zh/self-hosted/`、`docs/ja/self-hosted/`、`docs/ru/self-hosted/`

旧路径仍然保留,用于兼容外部旧链接,但它们是重定向页面,不是主要内容源:

- `docs/getting-started/`
- `docs/installation/`
- `docs/channels/`
- `docs/tts-providers/`
- `docs/memory-providers/`
- `docs/zh/` 下对应的中文重定向路径

Expand Down Expand Up @@ -97,17 +96,26 @@ pnpm preview
│ ├── getting-started/ # 到 guides 的旧路径重定向
│ ├── installation/ # 到 self-hosted 的旧路径重定向
│ ├── channels/ # 到 integrations/channels 的旧路径重定向
│ ├── tts-providers/ # 到 integrations/providers/tts 的旧路径重定向
│ ├── memory-providers/ # 到 integrations/providers/memory 的旧路径重定向
│ ├── public/ # 静态图片和 logo
│ ├── zh/ # 中文文档和重定向页面
│ ├── ja/ # 日文文档和重定向页面
│ ├── ru/ # 俄文文档和重定向页面
│ └── *.md # 入口和兼容页面
├── package.json
└── pnpm-lock.yaml
```

## 更新日志

### 2026-10

- **客户端优先修正**:顶栏改为 教程 / 帮助中心(移除 集成 与 关于);侧边栏恢复自部署分组(Server Deploy、Workspace 后端、连接器)。
- **应用(App)模型**:应用市场与技能页面按统一的 App 概念重写(一个 App 打包 Skills、依赖和连接器);技能页改为说明工作区目录,不再描述已移除的管理界面;连接器移入自部署章节。
- **工作区页面以 Cloud 为基准**:开源后端配置与 CDI/GPU 透传移至 Workspace 后端;移除用户偏好页;记忆提供方条目合并为一个;移除 TTS: Edge。
- **移除使用场景**:AI 起草的使用场景章节已从导航、侧边栏和页面中移除;将来以人工撰写、配真实截图与录屏的形式回归。
- **日语版与俄语版**:`docs/ja/`、`docs/ru/` 下完整翻译,各自独立导航与侧边栏。日文术语对齐产品日文 UI 文案;俄文因产品无俄语界面,UI 名词保留英文。对齐脚本现在检查 en/zh/ja/ru 四语。

### 2026-09

- **导航结构重组**:文档统一收入单一的 **References(参考文档)** 树——快速开始(内含部署与渠道)、进阶教程(内含提供方 → 记忆/TTS 提供方)、使用场景。版本选择器移到页头右侧,并为每个页面加上编辑链接。
Expand Down
28 changes: 24 additions & 4 deletions docs/.vitepress/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@ import { defineConfig } from 'vitepress'
import llmstxt from 'vitepress-plugin-llms'
import { en } from './en'
import { zh } from './zh'
import { ja } from './ja'
import { ru } from './ru'

// https://vitepress.vuejs.org/config/app-configs
export default defineConfig({
Expand All @@ -21,9 +23,7 @@ export default defineConfig({
themeConfig: {
nav: [
{ text: 'Guides', link: '/guides/' },
{ text: 'Integrations', link: '/integrations/' },
{ text: 'Help Center', link: 'https://memoh.ai/help' },
{ text: 'About', link: '/about.md' },
],
},
},
Expand All @@ -33,9 +33,27 @@ export default defineConfig({
themeConfig: {
nav: [
{ text: '教程', link: '/zh/guides/' },
{ text: '集成', link: '/zh/integrations/' },
{ text: '帮助中心', link: 'https://memoh.ai/help' },
{ text: '关于', link: '/zh/about.md' },
],
},
},
ja: {
label: '日本語',
lang: 'ja',
themeConfig: {
nav: [
{ text: 'ガイド', link: '/ja/guides/' },
{ text: 'ヘルプセンター', link: 'https://memoh.ai/help' },
],
},
},
ru: {
label: 'Русский',
lang: 'ru',
themeConfig: {
nav: [
{ text: 'Руководства', link: '/ru/guides/' },
{ text: 'Центр помощи', link: 'https://memoh.ai/help' },
],
},
}
Expand All @@ -46,6 +64,8 @@ export default defineConfig({
sidebar: {
...en,
...zh,
...ja,
...ru,
},


Expand Down
16 changes: 7 additions & 9 deletions docs/.vitepress/en.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ const references = [
{ text: 'Overview', link: '/guides/overview.md' },
{ text: 'Quick Start', link: '/guides/quick-start.md' },
{ text: 'Working with Bots', link: '/guides/working-with-bots.md' },
{ text: 'Preferences', link: '/guides/preferences.md' },
{ text: 'Sessions', link: '/guides/sessions.md' },
{ text: 'Files', link: '/guides/files.md' },
{ text: 'Slash Commands', link: '/guides/slash-commands.md' },
Expand Down Expand Up @@ -45,25 +44,24 @@ const references = [
{ text: 'Browser / Computer Use', link: '/guides/browser-computer-use.md' },
{ text: 'Skills', link: '/guides/skills.md' },
{ text: 'Supermarket', link: '/guides/supermarket.md' },
{ text: 'Connectors', link: '/guides/connectors.md' },
{ text: 'Hooks', link: '/guides/hooks.md' },
{ text: 'MCP', link: '/guides/mcp.md' },
{ text: 'Memory', link: '/guides/memory.md' },
{ text: 'Long-term Memory', link: '/guides/memory.md' },
{ text: 'Compaction', link: '/guides/compaction.md' },
{ text: 'Scheduled Tasks', link: '/guides/schedule.md' },
{ text: 'LLM Providers', link: '/integrations/providers/llm.md' },
{ text: 'Web Search Providers', link: '/integrations/providers/web-search.md' },
{ text: 'Video Providers', link: '/integrations/providers/video.md' },
{ text: 'Memory: Built-in', link: '/integrations/providers/memory/builtin.md' },
{ text: 'Memory: Mem0', link: '/integrations/providers/memory/mem0.md' },
{ text: 'Memory: OpenViking', link: '/integrations/providers/memory/openviking.md' },
{ text: 'TTS: Edge', link: '/integrations/providers/tts/edge.md' },
{ text: 'Memory', link: '/integrations/providers/memory/builtin.md' },
],
},
{
text: 'Use Cases',
text: 'Deployment',
items: [
{ text: 'Use Cases', link: '/guides/use-cases.md' },
{ text: 'Overview', link: '/self-hosted/' },
{ text: 'Server Deploy', link: '/self-hosted/docker.md' },
{ text: 'Workspace Backends', link: '/self-hosted/workspace-backends.md' },
{ text: 'Connectors (Connect-It)', link: '/self-hosted/connectors.md' },
],
},
]
Expand Down
Loading
Loading