☰
为 Shelly 贡献你的力量:本地化、社区参与与开发者入门指南
2026/10/13 13:29:51 网站建设 项目流程

【免费下载链接】Shelly-ALPM

Pacman alternative for ArchLinux, designed with you in mind.

项目地址:https://gitcode.com/gh_mirrors/sh/Shelly-ALPM
点击查看免费下载

Shelly 是一个专为 Arch Linux 打造的现代化、用户友好的包管理器(pacman 替代方案)。这份 Shelly 贡献指南将带你走完 3 条参与路径:本地化翻译、社区协作与从零构建开发环境,无论你是否会写代码,都能快速上手为 Shelly 做贡献。

项目速览:Shelly 是什么?

Shelly 是 Arch Linux 上的下一代包管理工具,提供 GUI 与 CLI 双形态,核心特性包括:

  • 🖥️图形界面(shelly-ui):基于 GTK4 的 Wayland 原生体验
  • 💻现代 CLI(shelly):面向自动化与脚本,如shelly -Is firefox --needed
  • 📦AUR 支持:内置 PKGBUILD 构建与安全审查流程
  • 🧩可选 Flatpak / AppImage 管理:与原生包共存

项目以 Zig 为主语言,按组件拆分在独立目录中,完整架构说明见 CONTRIBUTING.md。

本地化贡献:把 Shelly 翻译成你的语言

本地化是门槛最低、价值最高的贡献方式。Shelly 的 UI 已覆盖 17 种语言(含简体中文),托盘通知服务覆盖 13 种语言。

找到语言文件(po 目录)

两个组件各自维护独立的 gettext 翻译目录:

组件目录
GTK 图形界面Shelly.Ui.Gtk/po/
托盘通知服务Shelly.Notifications.Zig/po/

每个<语言>.po文件就是翻译目录,例如 Shelly.Ui.Gtk/po/zh_CN.po,基本结构如下:

msgid "Enable AUR?" msgstr "启用 AUR?"

用 update-translations.sh 更新与合并

每个组件都提供了本地化维护脚本,可一键提取字符串、合并已有翻译并清理过期条目:

cd Shelly.Ui.Gtk ./update-translations.sh # 提取 + 合并所有已有 .po ./update-translations.sh --new es # 为新语言创建 po/es.po

托盘服务同理,脚本位于 Shelly.Notifications.Zig/update-translations.sh:

cd Shelly.Notifications.Zig ./update-translations.sh --new xx --compile # 新建语言并编译 .mo

脚本会自动运行msgfmt --statistics报告每种语言的翻译完成率,方便你挑选待翻译条目。

翻译 .desktop 菜单项

应用菜单的文案不在 po 目录中,而是写在桌面条目文件里:

  • com.shellyorg.shelly.desktop
  • com.shellyorg.shelly-notifications.desktop

在英文行旁添加Name[xx]=、Comment[xx]=、Keywords[xx]=即可(xx为语言代码)。注意:Keywords 中保留英文关键词,保证两种语言下搜索都能命中。提交前用desktop-file-validate校验两个.desktop文件。

验证并编译 .mo 文件

  1. 构建并启动应用
  2. 确认 UI 元素均已翻译、无意外回退到英文
  3. 托盘服务可用--compile将.po编译为.mo,再通过LANG=<lang>.UTF-8 TEXTDOMAINDIR=$(pwd)/build/locale ./zig-out/bin/shelly-notifications本地验证

验证通过后提交 Pull Request 即可。

开发者入门:从零构建 Shelly

环境准备

  • Arch Linux(或 Arch 系发行版)
  • zig 0.16.0(构建核心组件)
  • vala、libalpm(由 pacman 提供)
  • gettext(本地化工具链)

克隆仓库并构建

git clone https://gitcode.com/gh_mirrors/sh/Shelly-ALPM.git cd Shelly-ALPM

各组件可独立构建与测试:

(cd Shelly.Flatpak.Backend && zig build) (cd Shelly.Http && zig build) (cd Shelly.PackageManager && zig build) (cd Shelly.Cli.Zig && zig build) (cd Shelly.Ui.Gtk && zig build)

一键验证可选 Flatpak 后端边界、CLI 与核心冒烟测试:

scripts/test-flatpak-separation.sh

运行测试

(cd Shelly.PackageManager && zig build test) (cd Shelly.Cli.Zig && zig build test) (cd Shelly.Flatpak.Backend && zig build test abi-test integration-test)

了解项目结构:各组件如何协作

理解架构是深度贡献的前提。Shelly 由若干相互协作的项目组成:

组件职责
Shelly.Ui.GtkGTK4 图形前端
Shelly.Cli.Zig终端命令行工具,UI 通过它执行特权操作
Shelly.PackageManager核心库:libalpm/RLPM/AUR/AppImage 与 Flatpak 中立门面
Shelly.Flatpak.Backend可选的 ABI 版本化 Flatpak 后端共享库
Shelly.Notifications.Zig托盘服务与更新通知
Shelly.Http独立 HTTP 客户端与兼容 TLS 实现

关键规则:UI 绝不直接调用 PackageManager 库,所有安装、移除、升级操作都经由 CLI 完成。Flatpak 相关贡献的 ABI 版本升级与所有权规则详见 docs/flatpak-backend-abi.md;libalpm 与 RLPM 双后端切换指南见 docs/native-package-backends.md。

提交前的检查清单

  1. ✅ 新特性在对应测试项目中补充测试
  2. ✅ 遵循各组件既有代码风格
  3. ✅ 功能变更时同步更新文档
  4. ✅ 使用清晰、可描述的提交信息
  5. ✅ 涉及 Flatpak 变更时运行scripts/check-flatpak-separation.sh
  6. ✅ 手动验证项可参考 MANUAL_TESTING.md 的检查清单
  7. ✅ 修改 PKGBUILD 后为PKGBUILD、PKGBUILD-bin、PKGBUILD-git运行updpkgsums(见 PKGBUILD-git)

安全与社区协作

  • 报告安全漏洞请遵循 SECURITY.md 的流程
  • 有开发问题可提交 issue;本地构建细节参考各目录 README 与docs/下专题文档(如 docs/isolated-builds.md、docs/shellybuild.conf.md)

💡新手建议路径:先挑一个po/目录翻译 5 条字符串提交第一个 PR,再逐步尝试构建与测试,最终深入Shelly.PackageManager核心逻辑——这就是完整的社区贡献成长路线。

【免费下载链接】Shelly-ALPM

Pacman alternative for ArchLinux, designed with you in mind.

项目地址:https://gitcode.com/gh_mirrors/sh/Shelly-ALPM
点击查看免费下载

相关推荐

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询