mirror of
https://github.com/tinyhumansai/openhuman.git
synced 2026-07-27 21:08:00 +00:00
0f439fe1e1
## 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 --> [](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>
92 lines
2.9 KiB
Bash
Executable File
92 lines
2.9 KiB
Bash
Executable File
#!/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 "=== 扫描完成 ===" |