尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Ghostty 国际化与本地化完整指南:从验证工具链到提交翻译

Ghostty 国际化与本地化完整指南:从验证工具链到提交翻译 Ghostty 国际化与本地化完整指南从验证工具链到提交翻译【免费下载链接】ghostty Ghostty is a fast, feature-rich, and cross-platform terminal emulator that uses platform-native UI and GPU acceleration.项目地址: https://gitcode.com/GitHub_Trending/gh/ghosttyGhostty 是跨平台终端模拟器它基于 gettext 框架实现国际化po/目录保存全部翻译条目src/os/i18n_locales.zig注册了 32 种语言。本文带你走通 Ghostty 本地化的完整流程从验证工具链到新增一门语言。真实痛点界面语言把用户卡在哪里Ghostty 的菜单、对话框和提示信息都来自 GTK 平台层src/apprt/gtk/。想象两个场景系统更新失败终端弹出一个你逐字也读不懂的对话框或者你在非英文环境下想找到Reload Configuration却只能靠截图比对菜单项。这些字符串都集中在翻译模板po/com.mitchellh.ghostty.pot从代码自动生成的源字符串清单里。你要做的只是把对应语言的msgstr填上。快速上手确认 gettext 工具链并切换界面语言先安装 gettext开源翻译工具集msgfmt、msginit都来自它三选一sudo apt install gettext # Debian / Ubuntu brew install gettext # macOS scoop install gettext # Windows (Scoop)用一条命令确认工具链可用$ gettext -V gettext (GNU gettext-runtime) 0.21.1翻译文件全部在po/下每门语言一个.po文件gettext 格式的翻译条目清单模板文件是po/com.mitchellh.ghostty.pot。官方文档明确写着模板由代码自动生成不要手改。想看某门语言的界面效果把LANGUAGE环境变量设为 locale 名即可例如$ LANGUAGEja zig build run预期结果终端窗口的菜单与对话框以日语显示。注意 po/README_TRANSLATORS.md 里说明macOS 的本地化系统尚未实现请在 Linux 上验证。读懂 gettext 的 .po 文件一个条目的完整解剖下面是一个符合 gettext 规范的条目示例#. Translators: the category in the right-click context menu that contains #: src/apprt/gtk/ui/1.0/menu-surface-context-menu.blp:38 # 译注其他终端程序对 Split 皆有不同翻译此处采取最直观的翻译方式 msgctxt Context menu msgid Split msgstr 分屏逐行看每行面向不同的读者#.开发者注释说明字符串的使用语境。这里提示Split指终端分屏不是切分文件。#:源码位置标记指向代码库中的文件与行号帮你自查一般翻译时无需理会。#译者注释留给同语言的其他翻译者。中文译者留下的这条译注就记录了取舍理由。msgctxt上下文标识用来区分英文相同、场景不同的字符串。msgid英文原文是查找的键。msgstr你的译文真正要填的就是它。po/zh_CN.po 里的msgid Split正是译为分屏。3 步完成现有语言翻译 第一步在你的工作副本中编辑对应语言的.po文件填好msgstr并顺手更新文件头元数据里的PO-Revision-Date和Last-Translator这两个字段最容易漏。第二步编译校验文件格式msgfmt --check po/zh_CN.po -o /dev/null没有任何输出即通过报错会直接指出行号。第三步提交前自查占位符与转义msgstr里的%s、%d数量与位置必须与原文一致英文用省略号字符…时译文也用它而不是三个句号...删掉编辑器自动写入的X-Generator字段。进阶操作为 Ghostty 添加新语言第一步用msginit从模板初始化新翻译文件X替换为 locale 名两字母语言码可再加两字母地区码如es_ARmsginit -i po/com.mitchellh.ghostty.pot -l X -o po/X.po工具会提示填写邮箱等信息照实填即可。第二步在 src/os/i18n_locales.zig 的locales数组里注册你的 locale 名。顺序有讲究常用语言在前其余按字母序拿不准就放列表末尾。第三步在 CODEOWNERS 的# Localization段落加一行/po/X.po ghostty-org/yy_ZZyy 语言码、ZZ 地区码并保持列表按字母序排列。还有一条硬规则每门语言至少需要两名维护者新语言的 PR 要等至少两人加入才会合并。细节决定质量占位符、上下文与术语占位符与单复数%d的数量与位置必须和原文对齐。若某语言对单复数有不同表达占位符要留在译文相应位置否则数字渲染不出来。上下文区分同形词字符串集里 Split 出现多处——独立的菜单分类、Split Up、New Split。遇到拿不准的短词先读#.注释再看相邻msgid判断场景。术语风格本地化表达优先于直译Split 译分屏而非分裂。po/README_TRANSLATORS.md 的风格指南要求语气专业且具指导性并参考同语言既有译文保持一致。完整工作流、风格指南与常见问题清单都在 po/README_TRANSLATORS.md。翻译完成后按文档约定提交 PR 即可新语言记得同步更新CODEOWNERS与 locale 列表。【免费下载链接】ghostty Ghostty is a fast, feature-rich, and cross-platform terminal emulator that uses platform-native UI and GPU acceleration.项目地址: https://gitcode.com/GitHub_Trending/gh/ghostty创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表