博客

LunariaJS 本地化仪表板:一眼看懂翻译进度

详细介绍 LunariaJS 本地化仪表板的功能和使用方法,学会通过仪表板追踪翻译状态、识别过时翻译、发现缺失内容,提升本地化管理效率。

LibDoc Team 2026年3月6日 LunariaJS 专栏 47 分钟阅读
#LunariaJS #Dashboard #仪表板 #本地化

LunariaJS 本地化仪表板:一眼看懂翻译进度

在前面的文章中,我们学习了如何安装、配置和运行 LunariaJS。今天,让我们深入了解 LunariaJS 最强大的功能 —— 本地化仪表板,学会用它来高效管理多语言项目。

💡 官方文档LunariaJS 中文文档 - 仪表板

仪表板概述

什么是本地化仪表板?

本地化仪表板是一个可视化界面,用于展示项目的翻译状态。它回答了维护者最关心的几个问题:

  • 整体进度如何? 每种语言的翻译完成度是多少?
  • 哪些文件需要关注? 哪些翻译过时了?哪些还缺失?
  • 翻译质量如何? 翻译是否与源文档保持同步?

为什么需要仪表板?

在传统的本地化管理中,追踪翻译状态通常需要:

  • 手动维护一个电子表格
  • 在文件中添加各种 TODO 注释
  • 依赖贡献者自行报告进度

这些方法都有明显的问题:信息分散、更新不及时、难以维护

LunariaJS 仪表板通过自动化解决了这些问题:

  • 自动更新:每次构建时自动分析翻译状态
  • 集中展示:所有语言、所有文件的状态一目了然
  • 实时同步:与 Git 仓库状态完全同步

仪表板界面解析

主界面布局

访问仪表板后,你会看到一个清晰的界面:

┌─────────────────────────────────────────────────────────────┐
│  🌙 My Project - Localization Status                        │
├─────────────────────────────────────────────────────────────┤
│  [语言选择器]  [状态筛选器]                                   │
├─────────────────────────────────────────────────────────────┤
│  总体进度                                                    │
│  ┌─────────────────────────────────────────────────────────┐│
│  │  🇺🇸 English (source) ████████████████████ 100%         ││
│  │  🇨🇳 中文              ██████████████░░░░░░  85%         ││
│  │  🇯🇵 日本語            ████████████░░░░░░░░░░ 70%         ││
│  │  🇰🇷 한국어            ████████░░░░░░░░░░░░░░ 55%         ││
│  └─────────────────────────────────────────────────────────┘│
├─────────────────────────────────────────────────────────────┤
│  文件列表                                                    │
│  ┌─────────────────────────────────────────────────────────┐│
│  │  📄 index.md                    🟢 🟢 🟢 🟢             ││
│  │  📄 getting-started.md          🟢 🟢 🟡 🟢             ││
│  │  📄 configuration.md            🟢 🟢 🟢 🔴             ││
│  │  📄 api/overview.md             🟢 🔴 🔴 🔴             ││
│  └─────────────────────────────────────────────────────────┘│
└─────────────────────────────────────────────────────────────┘

区域说明

1. 顶部导航栏

  • 项目标题
  • 语言切换器(如果支持多语言界面)
  • 主题切换(明/暗模式)

2. 语言选择器

允许你按语言筛选显示内容:

[全部语言 ▼]  [English]  [中文]  [日本語]  [한국어]

3. 状态筛选器

按翻译状态筛选文件:

[全部状态 ▼]  [✅ 完成]  [⚠️ 过时]  [❌ 缺失]

4. 总体进度区域

显示每种语言的整体翻译完成度:

元素说明
语言旗帜/图标语言标识
语言名称语言全名
进度条可视化完成度
百分比具体完成比例

5. 文件列表区域

列出所有被追踪的文件及其翻译状态。

翻译状态详解

LunariaJS 使用三种状态来标识每个翻译文件的状态。

🟢 Done(完成)

含义:翻译已完成且与源文件同步。

判定条件

  • 翻译文件存在
  • 翻译文件的最后修改时间 ≥ 源文件的最后修改时间

示例

📄 getting-started.md
├── 源文件: en/getting-started.md (修改于 2026-02-28)
├── 翻译: zh-cn/getting-started.md (修改于 2026-02-28) ✅
└── 状态: 🟢 完成

行动建议:无需操作,翻译已是最新。

🟡 Outdated(过时)

含义:翻译存在,但源文件已更新,翻译需要同步。

判定条件

  • 翻译文件存在
  • 翻译文件的最后修改时间 < 源文件的最后修改时间

示例

📄 configuration.md
├── 源文件: en/configuration.md (修改于 2026-02-28)
├── 翻译: ja/configuration.md (修改于 2026-02-20) ⚠️
└── 状态: 🟡 过时(落后 8 天)

行动建议

  1. 查看源文件的最新变更
  2. 更新翻译文件
  3. 提交更新后的翻译

🔴 Missing(缺失)

含义:翻译文件不存在。

判定条件

  • 翻译文件在预期路径不存在

示例

📄 api/overview.md
├── 源文件: en/api/overview.md (存在)
├── 翻译: ko/api/overview.md (不存在) ❌
└── 状态: 🔴 缺失

行动建议

  1. 创建翻译文件
  2. 翻译源文件内容
  3. 提交新翻译

文件状态追踪

单文件状态查看

点击文件名可以查看详细信息:

┌─────────────────────────────────────────────────────────────┐
│  📄 getting-started.md                                      │
├─────────────────────────────────────────────────────────────┤
│  源文件路径: docs/en/getting-started.md                      │
│  最后更新: 2026-02-28 14:30 (commit: abc1234)               │
│  文件大小: 4.2 KB                                            │
├─────────────────────────────────────────────────────────────┤
│  翻译状态                                                    │
│  ┌─────────────────────────────────────────────────────────┐│
│  │  🇺🇸 English (source)  ✅ 源文件                        ││
│  │  🇨🇳 中文              ✅ 完成 (2026-02-28)             ││
│  │  🇯🇵 日本語            ⚠️ 过时 8 天 (2026-02-20)        ││
│  │  🇰🇷 한국어            ❌ 缺失                          ││
│  └─────────────────────────────────────────────────────────┘│
├─────────────────────────────────────────────────────────────┤
│  [查看源文件]  [编辑翻译]                                    │
└─────────────────────────────────────────────────────────────┘

批量状态分析

仪表板提供批量分析视图,帮助你快速识别问题区域:

按语言分析

语言状态汇总
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
语言      完成    过时    缺失    总计
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
中文      38      3       1       42
日本語    30      8       4       42
한국어    25      10      7       42
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

按目录分析

目录状态汇总
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
目录              完成率    过时    缺失
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
docs/             85%       5       2
docs/api/         60%       8       4
docs/guide/       90%       2       1
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Git 提交关联

仪表板与 Git 历史深度集成,每个状态都关联到具体提交:

📄 configuration.md

变更历史:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📌 2026-02-28 abc1234 "Update configuration docs"
   修改者: @username
   变更: +15 -3 lines

📌 2026-02-20 def5678 "Add new config options"
   修改者: @another-user
   变更: +8 lines
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

此文件在 2026-02-28 更新,翻译落后 8 天。

筛选与搜索功能

按语言筛选

选择特定语言,只显示该语言相关的翻译状态:

// 筛选逻辑
filterByLanguage('zh-cn')  // 只显示中文翻译状态

使用场景

  • 中文翻译负责人只想查看中文翻译进度
  • 快速定位特定语言的缺失翻译

按状态筛选

快速筛选出需要处理的文件:

筛选选项显示内容使用场景
全部状态所有文件查看整体情况
只看完成🟢 绿色状态庆祝成果,确认完成项
只看过时🟡 黄色状态最常用 - 找出需要更新的翻译
只看缺失🔴 红色状态找出完全未翻译的文件

按文件路径搜索

支持文件路径模糊搜索:

搜索: [api___________]

结果:
📄 api/overview.md
📄 api/authentication.md
📄 api/endpoints/users.md
📄 api/endpoints/posts.md

组合筛选

可以组合多种筛选条件:

语言: [中文 ▼]  状态: [过时 ▼]  搜索: [guide]

结果:
📄 guide/installation.md      🟡 过时 3 天
📄 guide/configuration.md     🟡 过时 8 天

仪表板定制

自定义主题

通过 CSS 变量自定义仪表板外观:

/* lunaria-theme.css */
:root {
  --lunaria-color-primary: #6366f1;
  --lunaria-color-success: #22c55e;
  --lunaria-color-warning: #eab308;
  --lunaria-color-danger: #ef4444;

  --lunaria-bg-primary: #ffffff;
  --lunaria-bg-secondary: #f8fafc;
  --lunaria-text-primary: #1e293b;
  --lunaria-text-secondary: #64748b;
}

.dark {
  --lunaria-bg-primary: #0f172a;
  --lunaria-bg-secondary: #1e293b;
  --lunaria-text-primary: #f8fafc;
  --lunaria-text-secondary: #94a3b8;
}

配置定制

lunaria.config.json 中自定义仪表板:

{
  "dashboard": {
    "outputDir": "public/i18n-status",
    "title": "My Project Localization Status",
    "description": "Track the translation progress of our documentation",
    "uiLanguage": "zh-cn",
    "customCss": "./lunaria-theme.css",
    "favicon": "./public/favicon.ico"
  }
}

集成到现有站点

将仪表板嵌入到现有文档站点:

方式 1:作为子路径

// astro.config.mjs
export default defineConfig({
  integrations: [
    starlight({
      title: 'My Docs',
      // 仪表板在 /i18n-status 路径下
    }),
  ],
});

方式 2:导航链接

// 在文档站点导航中添加链接
{
  label: '翻译状态',
  link: '/i18n-status/',
  icon: 'translate',
}

添加自定义徽章

在仪表板中添加自定义徽章显示:

{
  "dashboard": {
    "badges": [
      {
        "label": "中文翻译",
        "status": "85%",
        "color": "green"
      },
      {
        "label": "日语翻译",
        "status": "70%",
        "color": "yellow"
      }
    ]
  }
}

实用技巧

1. 定期检查仪表板

建议在以下时机检查仪表板:

  • 每周团队会议前
  • 发布新版本前
  • 新增源文档后
  • 翻译贡献者提交 PR 后

2. 使用仪表板分配任务

将仪表板截图或链接分享给翻译团队:

## 本周翻译任务

请查看 [LunariaJS 仪表板](/i18n-status/)

优先级:
1. 🟡 过时的翻译(8 个文件)
2. 🔴 缺失的翻译(4 个文件)

目标:本周完成所有过时翻译的更新。

3. 设置进度目标

在仪表板标题中显示目标:

{
  "dashboard": {
    "title": "翻译进度 (目标: 3月底前达到 90%)"
  }
}

4. 使用仪表板数据

仪表板生成的 JSON 数据可用于其他用途:

// data/status.json
{
  "summary": {
    "total": 42,
    "zh-cn": { "done": 38, "outdated": 3, "missing": 1 },
    "ja": { "done": 30, "outdated": 8, "missing": 4 }
  }
}

可以用这些数据:

  • 生成自动化报告
  • 在 README 中显示徽章
  • 触发 CI/CD 条件

仪表板最佳实践

1. 保持仪表板更新

// package.json
{
  "scripts": {
    "build": "astro build && lunaria build",
    "dev": "concurrently \"astro dev\" \"lunaria build --watch\""
  }
}

2. 团队共享访问

  • 将仪表板部署到公开 URL
  • 在贡献指南中添加仪表板链接
  • 定期在社区渠道分享进度

3. 设置质量目标

指标目标检查频率
整体完成度≥ 90%每周
过时翻译≤ 5 个每次 PR
缺失翻译0发布前

4. 仪表板与 Issue 集成

在 GitHub Issue 中引用仪表板:

## 翻译任务

请翻译 `getting-started.md` 为中文。

参考:[仪表板状态](/i18n-status/#getting-started.md)

总结

LunariaJS 本地化仪表板的核心价值:

功能价值
可视化进度一眼看懂翻译完成度
状态追踪自动识别过时和缺失翻译
Git 集成翻译状态与代码历史同步
筛选搜索快速定位需要处理的文件
可定制适配项目品牌和工作流

关键要点

  • 三种状态:🟢 完成、🟡 过时、🔴 缺失
  • 利用筛选功能快速定位问题
  • 定期检查仪表板保持翻译同步
  • 与团队共享仪表板提高协作效率

下一步

下一篇文章,我们将深入探讨 LunariaJS 与 Git 的深度集成,学习如何:

  • 利用 Git 追踪本地化变更
  • 理解过时翻译检测原理
  • 设计高效的团队协作工作流
  • 解决分支策略中的翻译问题

敬请期待!


💡 推荐阅读