文件转换FREE

你的工具链说 gettext PO
译者只想要 Excel。

POXLSX复数形式、上下文、fuzzy 标记 —— 全部保留 · 把 .po 当表格发出去,再原样转回。
转换器· 本地处理
把 .po 拖进来
从本机选择 · 文件不会离开你的浏览器
01 · 这个工具究竟替你做了什么

把 gettext POPOT 目录变成译者或外包能编辑的 Excel 表,再原样转回 PO —— 复数形式、上下文、文件头、占位符与 fuzzy 标记全部保留,每个条目都以其上下文为键。不是通用的文本转表格 —— 而是 gettext 交接真正需要的那一步。

文件不离开你的设备浏览器内 · 零上传 · 适配 NDA
确定性转换相同输入永远得到相同输出
无损往返PO→Excel→PO 保留每个条目
02 · 两种格式,一次往返

PO 与 Excel 各擅其长

这个转换的存在,是让 gettext 工具链与译者各用自己顺手的格式 —— 而中间不丢任何东西。

gettext PO.po

GNU gettext 工具链与编辑器(Poedit、Lokalize、Weblate、Crowdin 等)使用的双语目录格式:每条字符串一个条目,带 msgidmsgstr,可选 msgctxt 消歧,由文件头 Plural-Forms 支配的 复数形式(msgid_plural + msgstr[0]msgstr[1] …),以及标记需复核的 fuzzy 标志。精确 —— 不是用来肉眼手改的。

Excel.xlsx

译者、审校与外包最自然的界面:一行一条字符串,原文与译文并排,便于筛选、批量编辑与批注。问题在于:直接用 Excel 打开 .po,复数形式会散开,上下文会混淆,fuzzy 标记会丢失,而且无法再载回工具链。

这个工具守的正是那个「载不回去」:导出时把每个复数条目展开为每形一行(Type 列标 plural:0plural:1 …),把每个上下文保在 Key 列,保留 fuzzy 标记让未复核的字符串仍被标记,并把文件头逐字符存进保留的 @@po.header 行 —— 于是表格能重建回有效的 PO 目录。少数无法在表格中存活的结构会被 报告,绝不静默丢弃:译者注释与提取注释、源引用、previous-msgid 提示、非 fuzzy 的格式标志(c-format 等)与废弃条目。已编译的 .mo 文件不支持(仅文本 PO/POT)。

03 · 常见问题

你大概想问

我的文件会被上传吗?+
不会。解析与转换全部在你的浏览器内完成(大文件由 Web Worker 处理),文件不离开你的机器,也不接触任何服务器。这是受 NDA 约束的本地化工作的硬性要求,所以本工具完全在客户端构建。
怎样把 PO 发给只用 Excel 的译者?+
在这里把 .po 转成 Excel 表发给译者或外包,改完再把表转回 PO —— 一行一条字符串,原文译文并排。复数形式、上下文、文件头与 fuzzy 标记都被保留,所以重建出的 PO 能原样载回你的 gettext 工具链。
复数形式怎么处理?+
每个复数条目按文件头 Plural-Forms 的 nplurals 数量展开为每形一行,Type 列标为 plural:0、plural:1 等。转回时这些行会重新归组为一个复数条目。引擎只数形数 —— 绝不改写你所用语言的复数规则。
fuzzy 标记会保留吗?注释呢?+
会 —— fuzzy 标记保在 Type 列并写回为 fuzzy 标志,需复核的字符串仍被标记(丢了它就会误放行未复核的译文)。注释、源引用与 previous-msgid 提示无法映射到翻译表,会在导出时报告,绝不静默丢弃。每次转换都附带一份保真报告。
支持 .pot 模板和 .mo 文件吗?免费吗?+
支持 .po 目录与 .pot 模板(模板就是译文全空的 PO)—— 同一文法。已编译的二进制 .mo 文件不支持,请先导出为 PO。此层级完全免费,无需账户,无使用上限。
04 · 谁做的 / 为什么

由真正做过这行的人打造

这不是大模型的薄包装,也不是开源库换层皮。它来自多年游戏本地化一线工作,以及随之而来的一堆「不出事没人注意」的细节。

工具链递出一个 PO 目录,译者只想在 Excel 里改 —— 中间的格式损耗,不该由人来吸收。

把 .po 交给外包,十次有九次回来时复数形式被压平,上下文被并掉,fuzzy 标记被抹掉 —— 然后载不回工具链。这些我们都踩过,所以工具默认就守住它们:按文件头展开复数形式、把上下文保在键里、保留并还原 fuzzy 标记。

免费、完全本地、即时。它是工作流里的一步,不是一个平台 —— 但它来自一个真正懂本地化的地方。