【免费下载链接】ShichiZip
The 7-Zip derivative intended for macOS
ShichiZip 是一款为 macOS 打造的 7-Zip 衍生版压缩工具,其本地化体系直接继承自上游 7-Zip 的 90+ 种语言包生态。本文为新手整理了一套完整的 ShichiZip 本地化贡献指南:从翻译 7-Zip 语言文件、手动维护 App 层文案,到运行生成脚本与提交前检查,帮助你快速完成第一次翻译提交。
为什么值得参与 ShichiZip 翻译
- 影响力大:仓库 project/localization/Lang/ 目录下收录了 92 个上游 7-Zip 语言文件加 1 个英文模板(
en.ttt),覆盖 90+ 种语言,你的译文将随每个版本发布给所有 macOS 用户。 - 门槛低:不需要会写 Swift,绝大多数工作只是文本翻译 + 运行一个 Python 脚本。
- 机制透明:整个流程在 README.md 的 Contributing 一节中有官方说明,本文将其拆解为可执行的步骤。
先搞懂:ShichiZip 的三层本地化结构
ShichiZip 的文案分为三层,贡献前务必分清各自的归属:
| 层级 | 位置 | 维护方式 | 适用场景 |
|---|---|---|---|
| 上游 7-Zip 语言文件 | project/localization/Lang/ | 从上游导入,禁止修改 | 7-Zip 通用文案的翻译来源 |
Upstream.strings | ShichiZip/Resources/Localization/<locale>.lproj/ | 脚本生成,Git 忽略 | 由Lang/*.txt自动转换而来 |
App.strings | ShichiZip/Resources/Localization/zh-Hans.lproj/App.strings | 手动维护 | ShichiZip 特有文案、覆盖上游措辞 |
运行时查找顺序是「App.strings优先,Upstream.strings兜底」,这让应用层可以精准覆盖任何一条上游译文,核心逻辑见 SZL10n.swift。
💡 简单记忆:想翻译 7-Zip 的文案 → 改 Lang 文件再跑脚本;想改 ShichiZip 自己写的文案 → 直接改 App.strings。
准备工作:克隆仓库并配置环境
git clone --recurse-submodules https://gitcode.com/gh_mirrors/sh/ShichiZip cd ShichiZip依赖很简单:
- Python 3:用于运行 project/scripts/ 下的本地化脚本(见 BUILD.md 前置要求)。
- Xcode + xcodegen:仅在需要本地构建验证时使用。
翻译 7-Zip 语言文件:Lang 目录使用步骤
每个语言文件(如 project/localization/Lang/zh-cn.txt)采用「节号 + 逐行文本」的简单格式:
; 24.05 : 2024-05-16 : MagicGenius ← 分号开头是注释,记录译者与版本 0 7-Zip Chinese Simplified 简体中文 401 确定 取消翻译时的关键规则:
- 行号必须与英文模板一一对应:对照 project/localization/Lang/en.ttt,第 N 行的译文放在第 N 行;缺失的译文可留空行。
- 快捷键标记原样保留:上游用
&Yes、是(&Y)这类标记表示键盘快捷键,生成脚本会自动剥离,翻译时不要删掉它们。 - 不要为 ShichiZip 措辞去改这里:这些文件被视为上游输入,应用层的定制措辞应放到
App.strings。
一键生成 Upstream.strings
翻译完成后,在仓库根目录运行:
python3 project/scripts/generate_strings.py脚本会解析Lang/*.txt与en.ttt,把每个语言转换成 Apple 的.strings格式,输出到ShichiZip/Resources/Localization/<locale>.lproj/Upstream.strings(该输出由 Git 忽略,属于构建产物)。脚本还内置了校验:若某条非空上游字符串缺少语义键映射或键名重复,会直接报错退出,见 generate_strings.py。
📌 提示:脚本内的 LANG_FILE_TO_APPLE_LOCALE 定义了 7-Zip 语言代码到 Apple locale 的映射(如
zh-cn → zh-Hans),新增语言若未收录在此表中,需要在 PR 中一并补充。
手动维护 App.strings:ShichiZip 自有文案
ShichiZip 特有的 UI 文案(如「解压后将压缩包移到废纸篓」「排除 macOS 资源文件」)集中维护在各语言目录的App.strings中,例如 zh-Hans.lproj/App.strings 中的条目:
"app.extract.moveToTrash" = "解压后将压缩包移到废纸篓"; "app.compress.excludeMacResources" = "排除 macOS 资源文件";操作要点:
- 新增语言时,参照 en.lproj/App.strings 的完整键集合逐条翻译,键名(含
app.、app.archive.、app.extract.等前缀)原样保留。 - 保留
%@、%d等格式占位符,它们用于动态插入文件名或数量。 - 若某条上游译文在 ShichiZip 语境下需要换措辞,直接在
App.strings中用同名键覆盖即可,无需改上游。
保持键序整洁:运行格式化脚本
修改App.strings后,务必运行官方格式化脚本,它会按分区排序键并自动插入空行分组:
# 格式化全部语言 python3 project/scripts/format_app_strings.py # 或只格式化当前语言(推荐,避免误改他人文件) python3 project/scripts/format_app_strings.py ShichiZip/Resources/Localization/zh-Hans.lproj/App.strings该脚本还会检测重复键与非法语法并报错,实现见 format_app_strings.py。
别忘了 Quick Action 文本
macOS 的 Finder 快速操作(Quick Action)菜单文案独立存放于 project/localization/quick-actions/,目前提供英语、简中、繁中三份QuickActions.strings。以 zh-Hans.lproj/QuickActions.strings 为例,它定义了「压缩」「智能快速解压」等菜单名称。
这里同样采用「token + 模板」结构:generate_quick_action_strings.py会把共享词表和模板展开成各扩展目标的InfoPlist.strings(构建时由xcodegen generate触发,脚本源码见 generate_quick_action_strings.py)。翻译时只需维护词表条目,模板占位符{appName}、{action}等必须保留。
本地验证:在设置中切换语言
构建完成后(完整构建流程见 BUILD.md),可以在应用内验证翻译效果:
- 打开「设置 → 常规」,语言下拉框会列出
Resources/Localization下所有存在的.lproj语言,实现见 GeneralSettingsView.swift; - 选择目标语言(如「简体中文 – Chinese」)后,界面立即切换,无需重启;
- 重点检查三类文案:菜单与工具栏(来自
Upstream.strings)、ShichiZip 特有对话框(来自App.strings)、Finder 右键 Quick Action(来自InfoPlist.strings)。
提交前检查清单
提交 PR 前,逐项确认:
- Lang 文件行号与
en.ttt严格对齐,空行位置一致 python3 project/scripts/generate_strings.py无报错通过App.strings键集合与英文版一致,占位符%@/%d未丢失python3 project/scripts/format_app_strings.py通过且无文件被改动- Quick Action 词表模板占位符完整
- 在本地构建中实际切换语言,确认无显示错乱
常见问题
Q:改了 Lang 文件但应用里没生效?Upstream.strings是生成产物且被 Git 忽略,你需要重新运行generate_strings.py(或xcodegen generate)后重新构建。
Q:我的语言在 Lang 目录里不存在?直接新建<code>.txt,首行沿用;!@Lang2@!UTF-8!格式头,并在 generate_strings.py 中补充 locale 映射,然后跑一次生成脚本。
Q:想统一修改某条上游译文怎么办?优先在目标语言的App.strings中用同名键覆盖;只有当该措辞对所有语言都应调整时,才考虑向上游 7-Zip 项目反馈。
按照以上流程,你只需翻译文本、运行两个 Python 脚本、本地验证一遍,即可完成一次规范完整的 ShichiZip 本地化贡献。
【免费下载链接】ShichiZip
The 7-Zip derivative intended for macOS
相关推荐
高级用户指南:Qwopus3.6-27B-Coder-4bit API集成与自定义扩展开发
高级用户指南:Qwopus3.6 27B Coder 4bit API集成与自定义扩展开发 Qwopus3.6 27B Coder 4bit是一款基于MLX框架
DiffRhythm技术探索:基于潜在扩散模型的端到端全长歌曲生成实践指南
DiffRhythm技术探索:基于潜在扩散模型的端到端全长歌曲生成实践指南 技术架构解析 DiffRhythm(中文名:谛韵)是一款基于潜在扩散模型(Laten
人工智能深度学习基础模型媒体生成音乐生成音频Mos本地化贡献指南:如何提交新语言翻译
Mos本地化贡献指南:如何提交新语言翻译 你是否曾因使用非母语的软件而感到困扰?作为一款在全球拥有数万用户的macOS鼠标滚动增强工具,Mos已支持12种语言,
桌面应用
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考