Manpages

名 字

po4a - 一 次 性 更 新 PO 文 件 和 翻 译 文 档

简 介

po4a [options] config_file

描 述

po4a( PO 代 表 任 何 东 西 ) 使 用 经 典 的 gettext 工 具 简 化 了 文 档 翻 译 的 维 护 。 po4a 的 主 要 特 点 是 将 内 容 的 翻 译 与 文 档 结 构 分 离 。 请 参 阅 po4a(7) 页 了 解 本 项 目 的 详 细 介 绍 。 当 您 第 一 次 运 行 po4a 程 序 时 , 只 有 一 个 配 置 文 件 和 要 翻 译 的 文 档 ( 称 为 主 文 档 ) , 它 会 生 成 一 个 POT 文 件 ( 也 称 为 翻 译 模 板 ) , 其 中 包 含 文 档 中 的 所 有 可 翻 译 字 符 串 , 格 式 可 以 简 化 翻 译 器 的 工 作 。 这 些 POT 文 件 可 以 使 用 特 定 的 编 辑 器 ( 如 GNOME Translation editor、 KDE 的 Lokalizepoedit) 进 行 翻 译 , 也 可 以 集 成 到 在 线 本 地 化 平 台 ( 如 weblatepootle) 中 。 翻 译 结 果 是 一 组 PO 文 件 , 每 种 语 言 一 个 。 当 您 使 用 主 文 档 和 PO 文 件 运 行 po4a 程 序 时 , 它 通 过 将 内 容 的 翻 译 ( 在 PO 文 件 中 找 到 ) 注 入 到 原 始 主 文 档 的 结 构 中 来 生 成 翻 译 后 的 文 档 。 如 果 主 文 档 同 时 发 生 了 变 化 , po4a 将 相 应 地 更 新 POPOT 文 件 , 以 便 翻 译 人 员 能 够 轻 松 地 检 测 到 修 改 并 更 新 他 们 的 工 作 。 根 据 您 的 设 置 , po4a 将 丢 弃 部 分 翻 译 的 文 档 , 或 者 生 成 一 个 混 合 了 英 语 ( 对 于 新 的 或 修 改 过 的 段 落 ) 和 目 标 语 言 ( 对 于 翻 译 已 经 在 PO 文 件 中 的 段 落 ) 的 文 档 。 默 认 情 况 下 , 翻 译 后 的 文 档 在 至 少 80% 的 内 容 被 翻 译 时 生 成 ( 请 参 见 下 面 的 --keep 选 项 ) 。 在 翻 译 不 到 100% 时 立 即 丢 弃 译 文 可 能 会 让 译 者 感 到 沮 丧 , 而 显 示 太 不 完 整 的 “译 文 ”可 能 会 让 最 终 用 户 感 到 不 安 。 图 形 概 述 主 文 档 ---+---->-------->---------+ ( 文 档 编 写 )
| |
V ( po4a 执 行 ) >----+--> 翻 译
| | | 现 有 的
PO 文 件 -->--> 更 新 的 PO 文 件 > -+|
^ | |
| V |
+----<------<------+ ^ ( 人 工 翻 译 过 程 )
|
| 附 录
-->--------------------------- ------+
主 文 档 由 文 档 作 者 编 写 。 任 何 更 改 都 会 由 po4a 自 动 反 映 在 PO 文 件 中 , 然 后 由 翻 译 人 员 进 行 更 新 。 对 采 购 订 单 文 件 的 所 有 更 改 ( 手 动 或 通 过 po4a) 都 会 自 动 反 映 在 翻 译 的 文 档 中 。 您 可 以 使 用 makefile 中 的 "po4a updatepo( 1) " 和 po4a translate( 1) 脚 本 模 拟 此 行 为 , 但 这 很 快 就 会 变 得 麻 烦 和 重 复 ( 请 参 见 po4a( 7) ) 。 强 烈 建 议 在 构 建 过 程 中 使 用 po4a程 序 。

选 项

-k, --keep 保 留 (即 写 入 )结 果 文 件 的 转 换 百 分 比 的 最 小 阈 值 (默 认 值 : 80)。 即 , 默 认 情 况 下 , 文 件 必 须 至 少 翻 译 80% 才 能 写 入 磁 盘 。
-h
, --help 显 示 简 短 的 帮 助 消 息 。
-M
, --master-charset 包 含 要 翻 译 的 文 档 的 文 件 字 符 集 。 请 注 意 , 所 有 主 文 档 必 须 使 用 相 同 的 字 符 集 。
-L
, --localized-charset 包 含 本 地 化 文 档 的 文 件 字 符 集 。 请 注 意 , 所 有 翻 译 的 文 档 将 使 用 相 同 的 字 符 集 。
-A
, --addendum-charset 附 录 的 字 符 集 。 请 注 意 , 所 有 附 录 应 使 用 相 同 的 字 符 集 。
-V
, --version 显 示 脚 本 的 版 本 并 退 出 。
-v
, --verbose 增 加 程 序 的 冗 长 程 度 。
-q
, --quiet 减 少 程 序 的 冗 长 。
-d
, --debug 输 出 一 些 调 试 信 息 。
-o
, --option 要 传 递 给 格 式 插 件 的 额 外 选 项 。 有 关 有 效 选 项 及 其 含 义 的 更 多 信 息 , 请 参 阅 每 个 插 件 的 文 档 。 例 如 , 您 可 以 将 ’-o tablecells’ 传 递 给 AsciiDoc 解 析 器 , 而 文 本 解 析 器 将 接 受 ’-o tabs=split’。
-f
, --force 始 终 生 成 POTPO 文 件 , 即 使 po4a 认 为 没 有 必 要 。 默 认 行 为 (未 指 定 --force 时 )如 下 : 如 果 POT 文 件 已 经 存 在 , 则 如 果 主 文 档 或 配 置 文 件 较 新 (除 非 提 供 了 --no-update), 则 会 重 新 生 成 该 文 件 。 POT 文 件 也 写 入 临 时 文 档 中 , po4a 验 证 是 否 确 实 需 要 更 改 。 此 外 , 只 有 当 翻 译 的 主 文 档 、 PO 文 件 、 其 中 一 个 附 录 或 配 置 文 件 更 新 时 , 才 会 重 新 生 成 翻 译 。 要 避 免 尝 试 重 新 生 成 未 通 过 阈 值 测 试 的 翻 译 (请 参 见 --KEEP), 可 以 创 建 扩 展 名 为 .po4a-stamp 的 文 件 (请 参 见 --STAMP)。 如 果 主 文 档 包 含 文 件 , 则 应 使 用 --force 标 志 , 因 为 不 会 考 虑 这 些 包 含 文 件 的 修 改 时 间 。

PO 文 件 总 是 基 于 带 有 msgmerge-UPOT 重 新 生 成 。

--stamp 告 诉 po4a 在 由 于 未 达 到 阈 值 而 未 生 成 翻 译 时 创 建 标 记 文 件 。 这 些 戳 记 文 件 根 据 预 期 的 翻 译 文 档 命 名 , 扩 展 名 为 .po4a stamp。 注 意 : 这 只 会 激 活 .po4a stamp 文 件 的 创 建 。 如 果 存 在 戳 记 文 件 , 则 始 终 使 用 它 们 , 并 使 用 --rm translations 或 在 最 终 翻 译 文 件 时 删 除 它 们 。
--no-translations
不 生 成 翻 译 的 文 档 , 只 更 新 POTPO 文 件 。
--no-update
不 要 更 改 POTPO 文 件 , 只 能 更 新 翻 译 。
--keep-translations
即 使 翻 译 不 符 合 --keep 指 定 的 阈 值 , 也 保 留 现 有 翻 译 文 件 。 此 选 项 不 会 创 建 内 容 很 少 的 新 翻 译 文 件 , 但 会 保 存 由 于 主 文 件 更 改 而 衰 减 的 现 有 翻 译 。 警 告 : 此 标 志 以 一 种 相 当 剧 烈 的 方 式 更 改 po4a 行 为 : 在 翻 译 改 进 之 前 , 您 的 翻 译 文 件 根 本 不 会 更 新 。 仅 当 您 希 望 传 送 过 时 的 翻 译 文 档 而 不 是 只 传 送 准 确 的 未 翻 译 文 档 时 , 才 使 用 此 标 志 。
--rm-translations
删 除 翻 译 的 文 件 ( 意 味 着 --no translations) 。
--no-backups
此 标 志 自 0.41 起 不 起 作 用 , 可 能 会 在 以 后 的 版 本 中 删 除 。
--rm-backups
此 标 志 自 0.41 起 不 起 作 用 , 可 能 会 在 以 后 的 版 本 中 删 除 。
--translate-only
translated-file 只 翻 译 指 定 的 文 件 。 如 果 配 置 文 件 包 含 大 量 文 件 , 则 加 快 处 理 速 度 可 能 会 很 有 用 。 请 注 意 , 此 选 项 不 更 新 POPOT 文 件 。 此 选 项 可 以 多 次 使 用 。
--variable
var=value 定 义 将 在 po4a 配 置 文 件 中 展 开 的 变 量 。 每 次 出 现 $(var) 都 将 被 value 替 换 。 此 选 项 可 以 多 次 使 用 。
--srcdir
SRCDIRpo4a 配 置 文 件 中 指 定 的 所 有 输 入 文 档 设 置 基 本 目 录 。 如 果 同 时 指 定 了 destdirsrcdir, 则 按 顺 序 在 以 下 目 录 中 搜 索 输 入 文 件 : destdir、 当 前 目 录 和 srcdir。 如 果 指 定 , 输 出 文 件 将 写 入 destdir 或 当 前 目 录 。
--destdir
DESTDIRpo4a 配 置 文 件 中 指 定 的 所 有 输 出 文 档 设 置 基 本 目 录 ( 请 参 见 上 面 的 --srcdir) 。 选 项 修 改 POT
--porefs
type 指 定 引 用 格 式 。 参 数 type 可 以 是 以 下 值 之 一 : never 不 生 成 任 何 引 用 ; file 只 指 定 不 带 行 号 的 文 件 ; counter 用 递 增 的 计 数 器 替 换 行 号 ; full 包 含 完 整 引 用 ( 默 认 值 : full) 。
--wrap-po no
|newlines|number (default: 76) 指 定 应 如 何 包 装 po 文 件 。 这 使 我 们 可 以 选 择 包 装 良 好 但 可 能 导 致 git 冲 突 的 文 件 , 或 者 更 容 易 自 动 处 理 但 对 人 类 来 说 更 难 读 取 的 文 件 。 从 历 史 上 看 , gettext 套 件 已 经 重 新 格 式 化 了 第 77 列 化 妆 品 的 po 文 件 。 此 选 项 指 定 po4a 的 行 为 。 如 果 设 置 为 数 值 , po4a 将 在 内 容 中 的 此 列 和 换 行 之 后 包 装 po 文 件 。 如 果 设 置 为 newlines, po4a 将 只 在 内 容 中 的 新 行 之 后 拆 分 msgid 和 msgstr。 如 果 设 置 为 no, 则 po4a 根 本 不 会 包 装 po 文 件 。 引 用 注 释 总 是 由 我 们 在 内 部 使 用 的 gettext 工 具 包 装 。 请 注 意 , 此 选 项 对 msgid 和 msgstr 的 包 装 方 式 ( 即 , 将 换 行 符 添 加 到 这 些 字 符 串 的 内 容 中 ) 没 有 影 响 。
--master-language
包 含 要 翻 译 的 文 档 的 源 文 件 的 语 言 。 请 注 意 , 所 有 主 文 档 必 须 使 用 相 同 的 语 言 。
--msgid-bugs-address
email@address 设 置 msgid 错 误 的 报 告 地 址 。 默 认 情 况 下 , 创 建 的 POT 文 件 没 有 Report-Msgid-Bugs-To 字 段 。
--copyright-holder
stringPOT 标 头 中 设 置 版 权 所 有 者 。 默 认 值 为 “自 由 软 件 基 金 会 有 限 公 司 。 ”
--package-name
string 设 置 POT 标 头 的 程 序 包 名 称 。 默 认 值 为 “包 装 ”。
--package-version
string 设 置 POT 标 头 的 软 件 包 版 本 。 默 认 值 为 “版 本 ”。 修 改 PO 文 件 的 选 项
--msgmerge-opt
options

msgmerge(1) 的 其 他 选 项 。 注 意 : $lang 将 扩 展 为 当 前 语 言 。

--no-previous 此 选 项 从 传 递 给 msgmerge 的 选 项 中 删 除 -previous。 这 允 许 支 持 gettext 早 于 0.16 的 版 本 。
--previous
此 选 项 --previous 添 加 到 传 递 给 msgmerge 的 选 项 中 。 它 需 要 gettext 0.16 或 更 高 版 本 , 并 在 默 认 情 况 下 激 活 。

配 置 文 件

po4a 需 要 一 个 配 置 文 件 作 为 参 数 。 此 文 件 必 须 包 含 以 下 元 素 :

PO 文 件 的 路 径 和 项 目 中 存 在 的 语 言 列 表 ;

可 选 地 , 一 些 全 局 选 项 和 所 谓 的 配 置 别 名 , 用 作 配 置 单 个 主 文 件 的 模 板 ;

• 要 转 换 的 每 个 主 文 件 的 列 表 以 及 特 定 参 数 。 所 有 行 在 方 括 号 之 间 都 包 含 一 个 命 令 , 后 跟 其 参 数 。 注 释 以 字 符

’#’ 开 头 , 并 一

直 运 行 到 行 的 末 尾 。 您 可 以 转 义 行 尾 , 将 命 令 分 散 到 几 行 。 查 找 POPOT 文 件 最 简 单 的 解 决 方 案 是 提 供 包 含 翻 译 项 目 的 目 录 的 路 径 , 如 下 所 示 。

[po_directory] man/po/ 提 供 的 目 录 必 须 包 含 一 组 PO 文 件 , 每 个 文 件 名 为 XX .po 使 用 "XX" 此 文 件 中 使 用 的 语 言 的 ISO 639-1。 目 录 还 必 须 包 含 一 个 POT 文 件 , 其 扩 展 名 为 ".POT"。 如 果 愿 意 , 您 可 以 显 式 地 提 供 相 同 的 信 息 , 如 下 所 示 :

[po4a_paths] man/po/project.pot de:man/po/de.po fr:man/po/fr.po 首 先 指 定 POT 文 件 的 路 径 , 然 后 指 定 德 语 和 法 语 PO 文 件 的 路 径 。 最 后 , 同 样 的 信 息 可 以 写 成 如 下 :

 [po4a_langs] fr de
 [po4a_paths] man/po/project.pot $lang:man/po/$lang.po

$lang 组 件 使 用 提 供 的 语 言 列 表 自 动 展 开 , 减 少 了 添 加 新 语 言 时 出 现 复 制 /粘 贴 错 误 的 风 险 。 集 中 或 拆 分 PO 文 件 ? 默 认 情 况 下 , po4a 为 每 种 目 标 语 言 生 成 一 个 PO 文 件 , 其 中 包 含 翻 译 项 目 的 全 部 内 容 。 随 着 项 目 的 增 长 , 这 些 文 件 的 大 小 可 能 会 出 现 问 题 。 使 用 weblate 时 , 可 以 为 每 个 翻 译 段 ( 即 msgid) 指 定 优 先 级 , 以 便 首 先 翻 译 重 要 的 部 分 。 尽 管 如 此 , 一 些 翻 译 团 队 还 是 喜 欢 将 内 容 分 成 几 个 文 件 。 要 在 每 个 主 文 件 中 有 一 个 PO 文 件 , 只 需 在 "[po4a_paths]" 行 上 的 PO 文 件 名 中 使 用 字 符 串 $master, 如 下 所 示 。

[po4a_paths] doc/$master/$master.pot $lang:doc/$master/$lang.po 如 果 由 于 多 个 文 件 具 有 相 同 的 文 件 名 而 导 致 名 称 冲 突 , 则 可 以 通 过 添 加 "master:file="name 选 项 :

 [po4a_langs] de fr ja
 [po4a_paths] l10n/po/$master.pot $lang:l10n/po/$master.$lang.po
 [type: xml] foo/gui.xml $lang:foo/gui.$lang.xml master:file=foo-gui
 [type: xml] bar/gui.xml $lang:bar/gui.$lang.xml master:file=bar-gui在

split 模 式 下 , po4aPO 更 新 期 间 构 建 一 个 临 时 概 要 , 以 便 在 所 有 PO 文 件 之 间 共 享 翻 译 。 如 果 两 个 PO 文 件 对 同 一 字 符 串 有 不 同 的 翻 译 , po4a 将 此 字 符 串 标 记 为 fuzzy, 并 将 在 包 含 此 字 符 串 的 所 有 PO 文 件 中 提 交 两 个 翻 译 。 当 翻 译 人 员 解 除 困 惑 时 , 翻 译 将 自 动 用 于 每 个 PO 文 件 中 。 指 定 要 翻 译 的 文 档 您 还 必 须 列 出 应 翻 译 的 文 档 。 对 于 每 个 主 文 件 , 必 须 指 定 要 使 用 的 格 式 解 析 器 、 要 生 成 的 转 换 文 档 的 位 置 , 以 及 一 些 可 选 的 配 置 。 下 面 是 一 个 例 子 :

 [type: sgml] doc/my_stuff.sgml fr:doc/fr/mon_truc.sgml \
              de:doc/de/mein_kram.sgml
 [type: man] script fr:doc/fr/script.1 de:doc/de/script.1
 [type: docbook] doc/script.xml fr:doc/fr/script.xml \
             de:doc/de/script.xml但 同 样 , 这 些 复 杂 的 行 很 难 阅 读 和 修 改 , 例 如 在 添 加 新 语 言 时 。 使 用

$lang 模 板 重 新 组 织 内 容 要 简 单 得 多 , 如 下 所 示 :

 [type: sgml]    doc/my_stuff.sgml $lang:doc/$lang/my_stuff.sgml
 [type: man]     script.1          $lang:po/$lang/script.1
 [type: docbook] doc/script.xml    $lang:doc/$lang/script.xml指 定 选 项有 两 种 类 型 的 选 项 :

po4a options 是 po4a 命 令 行 选 项 的 默 认 值 , 而 format options 用 于 更 改 格 式 分 析 器 的 行 为 。 作 为 po4a options, 您 可 以 在 配 置 文 件 中 指 定 --keep 命 令 行 参 数 的 默 认 值 是 50%, 而 不 是 80%。 Format options 记 录 在 每 个 解 析 模 块 的 特 定 页 面 上 , 例 如 Locale::Po4a::Xml(3pm)。 例 如 , 您 可 以 将 nostrip 传 递 给 XML 解 析 器 , 以 不 除 去 提 取 的 字 符 串 周 围 的 空 格 。 您 可 以 为 特 定 主 文 件 传 递 这 些 选 项 , 甚 至 为 该 文 件 的 特 定 翻 译 传 递 这 些 选 项 , 使 用 "opt:""opt_XX:" 作 为 "XX" 语 言 。 在 下 面 的 示 例 中 , nostrip 选 项 被 传 递 给 XML 解 析 器 ( 对 于 所 有 语 言 ) , 而 对 于 法 语 翻 译 , 阈 值 将 降 低 到 0%( 因 此 始 终 保 持 ) 。

[type:xml] toto.xml $lang:toto.$lang.xml opt:"-o nostrip" opt_fr:"--keep 0" 无 论 如 何 , 这 些 配 置 块 必 须 位 于 行 的 末 尾 。 必 须 先 声 明 文 件 , 然 后 才 是 附 录 ( 如 有 ) ( 见 下 文 ) , 然 后 才 是 选 项 。 配 置 块 的 分 组 不 是 很 重 要 , 因 为 元 素 在 内 部 连 接 为 字 符 串 。 以 下 示 例 都 是 等 效 的 :

  [type:xml] toto.xml $lang:toto.$lang.xml opt:"--keep 20" opt:"-o nostrip" opt_fr:"--keep 0"
  [type:xml] toto.xml $lang:toto.$lang.xml opt:"--keep 20 -o nostrip" opt_fr:"--keep 0"
  [type:xml] toto.xml $lang:toto.$lang.xml opt:--keep opt:20 opt:-o opt:nostrip opt_fr:--keep opt_fr:0请 注 意 , 生 成

POT 文 件 时 不 使 用 特 定 于 语 言 的 选 项 。 例 如 , 仅 在 构 建 法 语 翻 译 时 , 不 可 能 将 nostrip 传 递 给 解 析 器 , 因 为 同 一 POT 文 件 用 于 更 新 每 种 语 言 。 因 此 , 唯 一 可 以 特 定 于 语 言 的 选 项 是 生 成 翻 译 时 使 用 的 选 项 , 如 "--keep" 选 项 。 配 置 别 名 要 将 相 同 的 选 项 传 递 给 多 个 文 件 , 最 好 的 方 法 是 按 如 下 所 示 定 义 类 型 别 名 。 在 下 一 个 示 例 中 , 使 用 此 "test" 类 型 ( 即 "man" 类 型 的 扩 展 ) 将 "--keep 0" 传 递 给 每 个 意 大 利 语 翻 译 。

  [po4a_alias:test] man opt_it:"--keep 0"
  [type: test] man/page.1 $lang:man/$lang/page.1还 可 以 对 现 有 类 型 进 行 扩 展 , 对 别 名 使 用 相 同 的 名 称 , 如 下 所 示 。 这 不 是 一 个 错误 的 递 归 定 义 。

  [po4a_alias:man] man opt_it:"--keep 0"
  [type: man] man/page.1 $lang:man/$lang/page.1全 局 默 认 选 项您 还 可 以 使 用

"[options]" 行 定 义 必 须 用 于 所 有 文 件 的 选 项 , 无 论 其 类 型 如 何 。

[options] --keep 20 --option nostrip 与 命 令 行 选 项 一 样 , 您 可 以 缩 写 配 置 文 件 中 传 递 的 参 数 :

[options] -k 20 -o nostrip 选 项 优 先 权 每 个 源 的 选 项 都 是 串 联 的 , 确 保 默 认 值 可 以 很 容 易 地 被 更 具 体 的 选 项 覆 盖 。 顺 序 如 下 :

"[options]" 行 提 供 可 由 任 何 其 他 源 重 写 的 默 认 值 。

然 后 使 用 类 型 别 名 。 特 定 于 语 言 的 设 置 将 覆 盖 适 用 于 所 有 语 言 的 设 置 。

• 特 定 于 给 定 主 文 件 的 设 置 将 同 时 覆 盖 默 认 设 置 和 来 自 类 型 别 名 的 设 置 。 在 这 种 情 况 下 , 特 定 于 语 言 的 设 置 也 会 覆 盖 全 局 设 置 。

• 最 后 ,

po4a 命 令 行 上 提 供 的 参 数 会 覆 盖 配 置 文 件 中 的 任 何 设 置 。 示 例 下 面 是 一 个 示 例 , 演 示 如 何 引 用 空 格 和 引 号 :

 [po_directory] man/po/
 [options] --master-charset UTF-8
 [po4a_alias:man] man opt:"-o \"mdoc=NAME,SEE ALSO\""
 [type:man] t-05-config/test02_man.1 $lang:tmp/test02_man.$lang.1 \
            opt:"-k 75" opt_it:"-L UTF-8" opt_fr:--verbose附 录 : 在 译 文 中 增 加 额 外 内 容如 果 您 想 在 翻 译 中 添 加 一 个 额 外 的 部 分 , 例 如 给 翻 译 人 员 加 学 分 , 那 么 您 需 要 在定 义 主 文 件 的 行 中 定 义 一 个 附 录 。 有 关 附 录 文 件 语 法 的 更 多 详 细 信 息 , 请 参 阅 第

po4a(7) 页 。

 [type: pod] script fr:doc/fr/script.1 \
             add_fr:doc/l10n/script.fr.add您 还 可 以 使 用 语 言 模 板 , 如 下 所 示 :

 [type: pod] script $lang:doc/$lang/script.1 \
             add_$lang:doc/l10n/script.$lang.add如 果 补 遗 不 适 用 , 翻 译 将 被 丢 弃 。附 录 声 明 的 修 饰 符在 并 非 所 有 语 言 都 提 供 附 录 的 情 况 下 , 或 者 当 附 录 列 表 从 一 种 语 言 更 改 为 另 一 种语 言 时 , 附 录 修 饰 符 可 以 简 化 配 置 文 件 。 修 饰 符 是 位 于 文 件 名 之 前 的 单 个 字 符 。

? 如 果 此 文 件 确 实 存 在 , 请 包 括

appendment_path, 否 则 不 执 行 任 何 操 作 。

@

addendment_path 不 是 常 规 的 附 录 , 而 是 一 个 逐 行 包 含 附 录 列 表 的 文 件 。 每 个 附 录 前 面 都 可 以 加 上 修 饰 符 。

!

appendment_path 被 丢 弃 , 它 不 会 被 加 载 , 也 不 会 被 任 何 进 一 步 的 附 录 规 范 加 载 。

以 下 内 容 包 括 任 何 语 言 的 附 录 , 但 前 提 是 该 附 录 存 在 。 如 果 附 录 不 存 在 , 则 不 会 报 告 任 何 错 误 。

[type: pod] script $lang:doc/$lang/script.1 add_$lang:?doc/l10n/script.$lang.add 以 下 为 每 种 语 言 的 附 录 清 单 :

[type: pod] script $lang:doc/$lang/script.1 add_$lang:@doc/l10n/script.$lang.add 过 滤 翻 译 的 字 符 串 有 时 候 , 你 想 在 翻 译 过 程 中 隐 藏 一 些 字 符 串 。 为 此 , 可 以 为 主 文 件 指 定 一 个 "pot_in" 参 数 , 以 指 定 在 生 成 pot 文 件 时 要 使 用 的 文 件 名 , 而 不 是 实 际 的 主 文 件 名 。 下 面 是 一 个 例 子 :

  [type:docbook] book.xml          \
          pot_in:book-filtered.xml \
          $lang:book.$lang.xml使 用 此 设 置 , 将 从

book-filtered.xml ( 必 须 在 调 用 po4a 之 前 生 成 ) , 而 转 换 后 的 文 件 将 从 生 成 book.xml 文 件 . 因 此 , 任 何 属 于 F的 字 符 串 book.xml 文 件 但 不 在 book-filtered.xml 不 会 包 含 在 PO 文 件 中 , 从 而 阻 止 翻 译 人 员 为 其 提 供 翻 译 。 因 此 , 在 生 成 翻 译 的 文 档 时 , 这 些 字 符 串 将 保 持 不 变 。 这 自 然 会 降 低 翻 译 的 级 别 , 因 此 您 可 能 需 要 使 用 "--keep" 选 项 来 确 保 无 论 如 何 都 会 生 成 文 档 。 配 置 示 例 待 办 事 项 : 这 部 分 真 的 有 用 吗 ? 假 设 您 维 护 一 个 名 为 foo 的 程 序 , 该 程 序 有 一 个 手 册 页 man/foo.1, 该 手 册 页 自 然 只 以 英 语 维 护 。 现 在 , 作 为 上 游 或 下 游 维 护 者 , 您 需 要 创 建 和 维 护 转 换 。 首 先 , 需 要 创 建 POT 文 件 , 以 便 使 用 po4a-gettextize(1) 发 送 给 转 换 器 。 因 此 , 对 于 我 们 的 情 况 , 我 们 会 将 其 称 为

cd man && po4a-gettextize -f man -m foo.1 -p foo.pot 然 后 , 您 可 以 将 此 文 件 发 送 到 适 当 的 语 言 列 表 , 或 在 您 的 网 站 上 的 某 个 位 置 提 供 下 载 。 现 在 假 设 您 在 下 一 个 版 本 发 布 之 前 收 到 了 三 个 翻 译 : de.po( 包 括 附 录 de.po), sv.popt.po. 由 于 您 不 想 在 新 的 翻 译 到 达 时 更 改 Makefile, 因 此 可 以 在 Makefile 中 使 用 po4a 和 适 当 的 配 置 文 件 。 我 们 称 之 为 po4a.cfg。 在 我 们 的 示 例 中 , 如 下 所 示 :

 [po_directory] man/po4a/po/
 [type: man] man/foo.1 $lang:man/translated/$lang/foo.1 \
            add_$lang:?man/po4a/add_$lang/$lang.add opt:"-k 80"在 这 个 例 子 中 , 我 们 假 设 您 生 成 的 手 册 页 ( 以 及 所 有 的

PO 和 addenda 文 件 ) 应 该 存 储 在 当 前 目 录 下 的 man/translated/$lang/( 分 别 存 储 在 man/po4a/PO/man/po4a/add\$lang/) 中 。 在 我 们 的 示 例 中 , man/po4a/po/ 目 录 将 包 括 de.pode.pode.po, 并 且 man/po4a/add_de/ 目 录 将 包 括 de.add. 注 意 修 饰 语 ? 的 用 法 , 因 为 只 有 德 语 翻 译 (de.po)附 有 附 录 。 要 实 际 构 建 翻 译 后 的 手 册 页 , 您 需 要 (只 需 一 次 ! )。 在 相 应 Makefilebuild 目 标 中 添 加 以 下 行 :

po4a po4a.cfg 设 置 好 后 , 当 新 的 翻 译 版 本 到 达 时 , 您 不 需 要 创 建 Makefile, 也 就 是 说 , 如 果 法 国 团 队 向 您 发 送 fr.pofr.add, 那 么 您 只 需 将 它 们 分 别 放 在 man/po4a/po/man/po4a/add_fr/ 中 , 下 一 次 构 建 程 序 时 , 法 语 翻 译 也 会 自 动 在 F 中 构 建 。 请 注 意 , 您 仍 然 需 要 一 个 合 适 的 目 标 来 安 装 带 有 英 文 的 本 地 化 手 册 页 。 最 后 , 如 果 您 没 有 将 生 成 的 文 件 存 储 到 版 本 控 制 系 统 中 , 您 的 clean 目 标 中 也 需 要 一 行 :
-rm -rf man/translated

参 见

po4a-gettextize(1), po4a-normalize(1), po4a-translate(1), po4a-updatepo(1), po4a(7).

作 者

 Denis Barbier <barbier [AT] linuxfr.org>
 Nicolas François <nicolas.francois [AT] centraliens.net>
 Martin Quinson (mquinson#debian.org)

版 权 和 许 可

版 权 所 有 2002-2020, SPI, Inc. 此 程 序 是 自 由 软 件 ; 您 可 以 根 据 GPL 条 款 重 新 分 发 和 /或 修 改 它 (请 参 阅 复 制 文 件 )。