Files
openhuman/scripts/i18n-doc-scan.sh
T
JAYcodrGitHubagent:skill-master <skill-master@openclaw>Steven Enamakel
0f439fe1e1 docs(i18n): add zh-CN translations for integrations, mascot, model-routing, privacy, and tools
## Summary
- 添加第二批核心功能模块的中文翻译(8 个文件):隐私与安全、第三方集成、吉祥物、模型路由、编码器、语音、定时任务、系统与工具
- 修复批次 A 遗留的 12 处未本地化内部链接(因第二批新增目标 `.zh-CN` 文件,之前保留的英文链接现在可指向中文版)
- 修复第二批翻译中的 12 处质量问题:错别字、过直译、中英混杂、指向不存在的 `.zh-CN` 链接
- 修复隐私与安全文档中指向 `local-ai.zh-CN.md` 和 `triggers.zh-CN.md` 等尚未翻译文件的错误链接
- 统一 mascot、integrations 等跨模块链接指向,确保中文读者在 zh-CN 文档间流转
- 所有修改仅涉及 `.md` 文档,无代码变更

## Problem
- OpenHuman 中文用户阅读英文文档存在语言障碍
- 第一批汉化(overview + lightweight features)完成后,核心功能模块(integrations、model-routing、native-tools 等)仍无中文版
- 批次 A 的部分链接因目标文件当时未翻译而保留英文版,随着第二批新增 zh-CN 文件,这些链接已过时

## Solution
- 基于英文原文逐文件翻译,遵循术语统一表(vault→存储库、Agent→智能体、LLM/Token 保留英文等)
- 翻译完成后运行审计脚本扫描,修复所有未本地化链接、MD040 代码块标识、术语一致性问题
- 对于目标 `.zh-CN.md` 不存在的链接(如 triggers、subconscious、local-ai、agent-coordination),保持指向英文原文,在 Related 中标记后续批次覆盖计划

## Submission Checklist


- [x] I have read the Codex PR Checklist
- [x] I have confirmed Type Check passes (`pnpm typecheck`) (N/A: Markdown docs only)
- [x] I have confirmed the app builds locally (`pnpm build`) (N/A: Markdown docs only)
- [x] I have added tests for this change (N/A: i18n docs do not affect testable logic)
- [x] I have updated documentation (N/A: this PR is documentation-only)
- [x] I have confirmed no feature flags are required (N/A: no code changes)
- [x] I have confirmed Prettier passes (`pnpm format:check`) (N/A: Markdown docs only)

## Impact
- Runtime/platform impact: None
- Performance/security/migration/compatibility: None

## Related
- Follow-up PR(s)/TODOs:
  - Batch C: subconscious.zh-CN.md, triggers.zh-CN.md, local-ai.zh-CN.md, agent-coordination.zh-CN.md
  - Batch C: memory-tools.zh-CN.md, meeting-agents.zh-CN.md, developing/cef.zh-CN.md

---

## AI Authored PR Metadata

### Linear Issue
- Key: N/A
- URL: N/A

### Commit & Branch
- Branch: `docs/i18n-batch-b-core-features`
- Commit SHA: see PR commits

### Validation Run
- [x] `pnpm --filter openhuman-app format:check` — N/A: no code changed
- [x] `pnpm typecheck` — N/A: no code changed
- [x] Focused tests: N/A
- [x] Rust fmt/check: N/A
- [x] Tauri fmt/check: N/A

### Validation Blocked
- N/A

### Behavior Changes
- Intended behavior change: None
- User-visible effect: Chinese users can now read core feature docs in zh-CN

### Parity Contract
- Legacy behavior preserved: N/A
- Guard/fallback/dispatch parity checks: N/A

### Duplicate / Superseded PR Handling
- N/A


<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit

* **Localization**
  * Updated Simplified Chinese UI strings for vault operations and MCP server/settings.

* **Documentation**
  * Added extensive Chinese documentation covering integrations, mascot/meeting agents, model routing, native tools (voice, web search/scraper, coder, cron, system/tools), memory tree, obsidian wiki, token compression, platform, privacy/security, and subconscious/agent coordination.

* **Chores**
  * Updated ignore rules to exclude AI assistant progress tracking.
  * Added documentation maintenance and validation scripts.

<!-- review_stack_entry_start -->

[![Review Change Stack](https://storage.googleapis.com/coderabbit_public_assets/review-stack-in-coderabbit-ui.svg)](https://app.coderabbit.ai/change-stack/tinyhumansai/openhuman/pull/2450?utm_source=github_walkthrough&utm_medium=github&utm_campaign=change_stack)

<!-- review_stack_entry_end -->
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

Co-authored-by: agent:skill-master <skill-master@openclaw>
Co-authored-by: Steven Enamakel <enamakel@tinyhumans.ai>
2026-05-22 13:06:20 -07:00

92 lines
2.9 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/bash
# i18n-doc-scan.sh - OpenHuman GitBook 中文文档问题扫描
set -e
echo "=== OpenHuman i18n 文档扫描 ==="
echo ""
# 1. 未本地化的内部链接
echo "【1/5】检查未本地化的 .md 链接..."
UNLOCALIZED=$(find gitbooks -name "*.zh-CN.md" -exec grep -l '\.md)' {} \; 2>/dev/null | while read f; do
grep '\.md)' "$f" 2>/dev/null | grep -v '\.zh-CN\.md)' | sed "s|^|$f:|" || true
done)
if [[ -n "$UNLOCALIZED" ]]; then
COUNT=$(echo "$UNLOCALIZED" | grep -c ':' || echo 0)
echo "❌ 发现未本地化链接(共 $COUNT 处):"
echo "$UNLOCALIZED" | head -30
else
echo "✅ 无未本地化链接"
fi
echo ""
# 2. MD040 - 代码块缺少语言标识(查找孤立的 ``` 行)
echo "【2/5】检查代码块语言标识(MD040..."
NO_LANG=$(find gitbooks -name "*.zh-CN.md" -exec sh -c '
for f; do
line_num=0
while IFS= read -r line; do
line_num=$((line_num + 1))
if [[ "$line" == "\`\`\`" ]]; then
# 检查前一行是否也是 ``` 或空(是代码块开始)
# 简单判断:当前行是 ``` 且下一行不是以 ``` 开头(结尾没有语言标识)
prev_line=$(sed "$((line_num - 1))q;d" "$f" 2>/dev/null || echo "")
next_line=$(sed "$((line_num + 1))q;d" "$f" 2>/dev/null || echo "")
if [[ ! "$line" =~ ^\`\`\`[a-zA-Z] ]]; then
echo "$f:$line_num: $line"
fi
fi
done < "$f"
done
' sh {} + 2>/dev/null || true)
if [[ -n "$NO_LANG" && ${#NO_LANG} -gt 10 ]]; then
echo "❌ 发现裸代码块:"
echo "$NO_LANG" | head -20
else
echo "✅ 所有代码块均有语言标识"
fi
echo ""
# 3. http:// 外部链接
echo "【3/5】检查 http:// 外部链接..."
HTTP_FILES=$(find gitbooks -name "*.zh-CN.md" -exec grep -l 'http://' {} \; 2>/dev/null || true)
if [[ -n "$HTTP_FILES" ]]; then
echo "❌ 发现 http:// 链接:"
find gitbooks -name "*.zh-CN.md" -exec grep -n 'http://' {} \; 2>/dev/null | head -10
else
echo "✅ 无 http:// 链接"
fi
echo ""
# 4. sidecar 术语
echo "【4/5】检查 sidecar 术语..."
SIDECAR_FILES=$(find gitbooks -name "*.zh-CN.md" -exec grep -l -i 'sidecar' {} \; 2>/dev/null || true)
if [[ -n "$SIDECAR_FILES" ]]; then
echo "❌ 发现 sidecar 提及:"
find gitbooks -name "*.zh-CN.md" -exec grep -n -i 'sidecar' {} \; 2>/dev/null | head -10
else
echo "✅ 无 sidecar 术语"
fi
echo ""
# 5. 末尾空行检查
echo "【5/5】检查文件末尾空行..."
MISSING_TRAILING=$(find gitbooks -name "*.zh-CN.md" -exec sh -c '
for f; do
if [[ -s "$f" ]]; then
last=$(tail -c1 "$f" 2>/dev/null | xxd -p | tr -d " ")
if [[ "$last" != "0a" ]]; then
echo "$f"
fi
fi
done
' sh {} + 2>/dev/null || true)
if [[ -n "$MISSING_TRAILING" ]]; then
echo "❌ 文件缺少末尾空行(共 $(echo "$MISSING_TRAILING" | wc -l) 个):"
echo "$MISSING_TRAILING" | head -10
else
echo "✅ 所有文件末尾有空行"
fi
echo ""
echo "=== 扫描完成 ==="