名 字
po4a - 一 次 性 更 新 PO 文 件 和 翻 译 文 档
简 介
po4a [options] config_file
描 述
po4a( PO
代 表 任 何 东 西
) 使 用 经 典 的
gettext 工 具 简 化 了
文 档 翻 译 的 维
护 。 po4a 的 主 要 特
点 是 将 内 容 的
翻 译 与 文 档 结
构 分 离 。 请 参
阅 po4a(7) 页 了 解 本
项 目 的 详 细 介
绍 。 当 您 第 一
次 运 行 po4a 程 序
时 , 只 有 一 个
配 置 文 件 和 要
翻 译 的 文 档 (
称 为 主 文 档 )
, 它 会 生 成 一
个 POT 文 件 (
也 称 为 翻 译 模
板 ) , 其 中 包
含 文 档 中 的 所
有 可 翻 译 字 符
串 , 格 式 可 以
简 化 翻 译 器 的
工 作 。 这 些
POT 文 件 可 以
使 用 特 定 的 编
辑 器 ( 如 GNOME
Translation editor、 KDE 的 Lokalize
或 poedit) 进 行 翻
译 , 也 可 以 集
成 到 在 线 本 地
化 平 台 ( 如 weblate
或 pootle) 中 。 翻
译 结 果 是 一 组
PO 文 件 , 每
种 语 言 一 个 。
当 您 使 用 主 文
档 和 PO 文 件
运 行 po4a 程 序 时
, 它 通 过 将 内
容 的 翻 译 ( 在
PO 文 件 中 找
到 ) 注 入 到 原
始 主 文 档 的 结
构 中 来 生 成 翻
译 后 的 文 档 。
如 果 主 文 档 同
时 发 生 了 变 化
, po4a 将 相 应 地 更
新 PO 和 POT
文 件 , 以 便 翻
译 人 员 能 够 轻
松 地 检 测 到 修
改 并 更 新 他 们
的 工 作 。 根 据
您 的 设 置 , 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 始 终 生 成
POT 和 PO 文
件 , 即 使 po4a 认
为 没 有 必 要 。
默 认 行 为 (未 指
定 --force 时 )如 下 :
如 果 POT 文 件
已 经 存 在 , 则
如 果 主 文 档 或
配 置 文 件 较 新
(除 非 提 供 了
--no-update), 则 会 重
新 生 成 该 文 件
。 POT 文 件 也 写 入
临 时 文 档 中 ,
po4a 验 证 是 否 确
实 需 要 更 改 。
此 外 , 只 有 当
翻 译 的 主 文 档
、 PO 文 件 、 其 中
一 个 附 录 或 配
置 文 件 更 新 时
, 才 会 重 新 生
成 翻 译 。 要 避
免 尝 试 重 新 生
成 未 通 过 阈 值
测 试 的 翻 译 (请
参 见 --KEEP), 可 以
创 建 扩 展 名 为
.po4a-stamp 的 文 件 (请
参 见 --STAMP)。 如 果
主 文 档 包 含 文
件 , 则 应 使 用
--force 标 志 , 因 为
不 会 考 虑 这 些
包 含 文 件 的 修
改 时 间 。
PO 文 件 总 是 基 于 带 有 msgmerge-U 的 POT 重 新 生 成 。
--stamp 告
诉 po4a 在 由 于 未
达 到 阈 值 而 未
生 成 翻 译 时 创
建 标 记 文 件 。
这 些 戳 记 文 件
根 据 预 期 的 翻
译 文 档 命 名 ,
扩 展 名 为 .po4a
stamp。 注 意 : 这
只 会 激 活 .po4a stamp
文 件 的 创 建 。
如 果 存 在 戳 记
文 件 , 则 始 终
使 用 它 们 , 并
使 用 --rm translations 或 在
最 终 翻 译 文 件
时 删 除 它 们 。
--no-translations 不 生 成 翻
译 的 文 档 , 只
更 新 POT 和
PO 文 件 。
--no-update 不 要 更 改
POT 和 PO 文
件 , 只 能 更 新
翻 译 。
--keep-translations 即 使 翻 译
不 符 合 --keep 指 定
的 阈 值 , 也 保
留 现 有 翻 译 文
件 。 此 选 项 不
会 创 建 内 容 很
少 的 新 翻 译 文
件 , 但 会 保 存
由 于 主 文 件 更
改 而 衰 减 的 现
有 翻 译 。 警 告
: 此 标 志 以 一
种 相 当 剧 烈 的
方 式 更 改 po4a 行 为
: 在 翻 译 改 进
之 前 , 您 的 翻
译 文 件 根 本 不
会 更 新 。 仅 当
您 希 望 传 送 过
时 的 翻 译 文 档
而 不 是 只 传 送
准 确 的 未 翻 译
文 档 时 , 才 使
用 此 标 志 。
--rm-translations 删 除 翻 译
的 文 件 ( 意 味
着 --no translations) 。
--no-backups 此 标 志 自 0.41
起 不 起 作 用 ,
可 能 会 在 以 后
的 版 本 中 删 除
。
--rm-backups 此 标 志 自 0.41
起 不 起 作 用 ,
可 能 会 在 以 后
的 版 本 中 删 除
。
--translate-only translated-file 只
翻 译 指 定 的 文
件 。 如 果 配 置
文 件 包 含 大 量
文 件 , 则 加 快
处 理 速 度 可 能
会 很 有 用 。 请
注 意 , 此 选 项
不 更 新 PO 和
POT 文 件 。 此
选 项 可 以 多 次
使 用 。
--variable var=value 定
义 将 在 po4a 配 置
文 件 中 展 开 的
变 量 。 每 次 出
现 $(var) 都 将 被
value 替 换 。 此 选
项 可 以 多 次 使
用 。
--srcdir SRCDIR 为
po4a 配 置 文 件 中
指 定 的 所 有 输
入 文 档 设 置 基
本 目 录 。 如 果
同 时 指 定 了 destdir
和 srcdir, 则 按 顺
序 在 以 下 目 录
中 搜 索 输 入 文
件 : destdir、 当 前
目 录 和 srcdir。 如
果 指 定 , 输 出
文 件 将 写 入 destdir
或 当 前 目 录 。
--destdir DESTDIR 为
po4a 配 置 文 件 中
指 定 的 所 有 输
出 文 档 设 置 基
本 目 录 ( 请 参
见 上 面 的 --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 string 在
POT 标 头 中 设
置 版 权 所 有 者
。 默 认 值 为 “自
由 软 件 基 金 会
有 限 公 司 。 ”
--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 文 件 的 路 径 和 项 目 中 存 在 的 语 言 列 表 ; |
|||
• |
可 选 地 , 一 些 全 局 选 项 和 所 谓 的 配 置 别 名 , 用 作 配 置 单 个 主 文 件 的 模 板 ;
• 要 转 换 的 每 个 主 文 件 的 列 表 以 及 特 定 参 数 。 所 有 行 在 方 括 号 之 间 都 包 含 一 个 命 令 , 后 跟 其 参 数 。 注 释 以 字 符 |
’#’ 开 头 , 并 一 |
直 运 行 到 行 的 末 尾 。 您 可 以 转 义 行 尾 , 将 命 令 分 散 到 几 行 。 查 找 PO 和 POT 文 件 最 简 单 的 解 决 方 案 是 提 供 包 含 翻 译 项 目 的 目 录 的 路 径 , 如 下 所 示 。
[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 模 式 下 , po4a 在 PO 更 新 期 间 构 建 一 个 临 时 概 要 , 以 便 在 所 有 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.po 和 pt.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.po, de.po 和 de.po, 并 且 man/po4a/add_de/ 目 录 将 包 括 de.add. 注 意 修 饰 语 ? 的 用 法 , 因 为 只 有 德 语 翻 译 (de.po)附 有 附 录 。 要 实 际 构 建 翻 译 后 的 手 册 页 , 您 需 要 (只 需 一 次 ! )。 在 相 应 Makefile 的 build 目 标 中 添 加 以 下 行 :
po4a
po4a.cfg 设 置 好 后 ,
当 新 的 翻 译 版
本 到 达 时 , 您
不 需 要 创 建
Makefile, 也 就 是 说
, 如 果 法 国 团
队 向 您 发 送 fr.po
和 fr.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 条 款 重 新 分 发 和 /或 修 改 它 (请 参 阅 复 制 文 件 )。