Skip to content

About

Resources

Stars

6 stars

Watchers

0 watching

Forks

Repository files navigation

LabelPlus Next logo

LabelPlus Next

跨平台的漫画翻译工作台:标注、翻译、协作与安全发布

Release Tests .NET 10 Avalonia Semi Design Platforms License: MIT

下载 · 文档站 · 快速上手 · 常见问题


LabelPlus Next 翻译工作区

翻译工作区:左侧看图打点,右侧逐条录入译文。界面自动跟随系统浅色 / 深色主题。

技术栈:.NET 10 · Avalonia 12.1 · Semi Design(Semi.Avalonia 12)· Ursa 2.2 · CommunityToolkit.Mvvm


✨ 特性

🖼️ 看图即标注

内置 PicViewer:缩放、平移、左右键分类打点、拖拽微调。选中的标签直接在图上显示译文提示。

⚡ 大图也流畅

图片在后台解码并预读下一页,翻页不卡界面;标注层复用画笔与文字排版,数百个标签也能流畅重绘。

🎨 现代界面

全面采用 Semi Design 设计语言:统一的 4px 间距节奏、圆角与阴影层级,自绘无边框标题栏,浅色 / 深色主题同步切换;按钮、数据表格与进度条均有平滑过渡,面板可拖动调整大小。

🤝 协作与同步

自动保存、远程同步、冲突检测与合并助手,多人翻译同一话也不怕覆盖。

☁️ 安全上传

流式直传,覆盖前自动备份旧版本并可回退;文件名自动解析“卷 / 番外 / 话数”生成规范目录。

🔄 可靠的自动更新

SHA256 强校验 + 分阶段安装,任一步失败自动回滚,下载中途可随时取消。

📸 截图

最近项目 设置(深色)
启动页:最近项目与只读预览 设置:标注显示与软件更新(深色主题)

📥 下载

前往 Releases 下载对应平台安装包;也可以使用免安装压缩包,解压后直接运行:

平台 安装包 免安装
Windows x64 / arm64 LabelPlus_Next-<ver>-win-*-setup.exe LabelPlus_Next.Desktop-win-*.zip
macOS Intel / Apple Silicon LabelPlus_Next-<ver>-macos-*.dmg LabelPlus_Next.Desktop-osx-*.zip
Linux x64 / arm64 labelplus-next_<ver>_*.deb / *.rpm / *.AppImage LabelPlus_Next.Desktop-linux-*.zip

Windows 安装包按当前用户安装、无需管理员权限;macOS 首次打开请右键 → 打开;Linux deb/rpm 用包管理器安装。安装后程序会自动检查更新(deb/rpm 请通过包管理器升级)。

⌨️ 快捷键

按键 作用 按键 作用
Q 浏览模式 Ctrl + S 保存
W Label 模式(打点) Ctrl + Shift + S 另存为
E 录入模式 Ctrl + O / N 打开 / 新建译文
R 审校模式 Ctrl + ↑ ↓ 上 / 下一个标签
1 / 2 所选标签设为框内 / 框外 Ctrl + ← → 上 / 下一张图片
Ctrl + Z 撤销删除标签

🛠️ 从源码构建

需要 .NET 10 SDK。

git clone https://github.com/SeaAndStars/LabelPlus_Next.git
cd LabelPlus_Next
dotnet run --project LabelPlus_Next.Desktop

发布单平台自包含版本:

dotnet publish LabelPlus_Next.Desktop -c Release -r win-x64 --self-contained
运行测试
# 仅本地测试(推荐)
dotnet test LabelPlus_Next.Test --filter "FullyQualifiedName!~Test1&FullyQualifiedName!~AuthApiTests"

# 全局异常处理测试仅在 Release 下有意义
dotnet test LabelPlus_Next.Test -c Release --filter "FullyQualifiedName!~Test1&FullyQualifiedName!~AuthApiTests"

[!WARNING] Test1 与 AuthApiTests 中的集成测试会用 LabelPlus_Next.Test/test.json 的账号真实访问并写入远程存储,请只在自己的测试服务器上运行;CI 默认已跳过这两组测试。

项目结构
项目 说明
LabelPlus_Next 主程序 UI 与业务逻辑(视图、ViewModel、自定义控件、API 客户端)
LabelPlus_Next.Desktop 桌面宿主(入口、平台清单、安装脚本)
LabelPlus_Next.Update 独立更新程序:等待主程序退出后下载并安装客户端更新
LabelPlus_Next.Tools 发布工具:打包各平台产物、计算 SHA256、生成并上传更新清单
LabelPlus_Next.ApiServer 可选的自托管 API 服务(鉴权、文件系统),支持 Docker
LabelPlus_Next.Test MSTest 单元测试与集成测试
Shared/UpdateKit.cs 客户端与更新程序共用的更新基础设施(链接编译进两个项目)

🔄 自动更新是如何工作的

sequenceDiagram
    autonumber
    participant C as 主程序
    participant S as 更新服务器 (AList)
    participant U as 更新程序
    C->>S: 读取 manifest.json
    alt 更新程序有新版本
        C->>S: 下载更新程序包
        C->>C: SHA256 校验 → 分阶段安装到 update/
    end
    alt 客户端有新版本
        C->>C: 自动保存未保存的译文
        C->>U: 启动更新程序后退出
        U->>S: 下载客户端包
        U->>U: SHA256 校验 → 分阶段安装(失败回滚)
        U->>C: 重新启动主程序
    end
Loading
  • 强校验:清单提供 sha256 时,下载文件必须完全一致,否则重试 3 次后放弃,绝不安装。
  • 分阶段安装:先完整解压到安装目录内的临时目录,再逐个替换;文件被占用、磁盘已满、压缩包条目越界等任何错误都会把已替换的文件恢复原样。
  • 语义化版本:支持 v1.2.3、1.3.0-beta.2 等写法,1.10.0 正确地新于 1.9.0。
清单格式(manifest.json)

默认位置 /OneDrive2/Update/manifest.json,可在 设置 → 软件更新 → 设置自定义更新服务器 中修改。

{
  "schema": "v1",
  "projects": {
    "LabelPlus_Next.Desktop": {
      "latest": "1.3.3",
      "releases": [{
        "version": "1.3.3",
        "notes": "更新说明(显示在设置页)",
        "files": [{
          "name": "LabelPlus_Next.Desktop-win-x64.zip",
          "url": "https://…/d/…",
          "sha256": "…",
          "size": 0
        }]
      }]
    },
    "LabelPlus_Next.Update": { "latest": "1.3.3", "releases": [ /* 同上 */ ] }
  }
}

发布新版本时用 LabelPlus_Next.Tools 打包各平台产物,它会计算 SHA256 并更新、上传清单。

🙏 鸣谢

  • UI:Avalonia 12 · Semi Design · Semi.Avalonia · Ursa · Avalonia DataGrid · Svg.Skia
  • 库:CommunityToolkit.Mvvm · ReactiveUI · Newtonsoft.Json · SharpCompress · RestSharp · WebDav.Client · Downloader · NLog · Antelcat.I18N

特别致谢 Ursa 及相关生态。

📄 许可协议

MIT © SeaAndStars

About

Resources

Stars

6 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages