openSUSE:用户手册翻译

跳转至: 导航, 搜索
本文教您如何将 opensuse-doc 的 xml 文档转换为 pot 和 po 以方便使用翻译工具辅助翻译,如何通过 Transifex 在线服务更轻松地翻译而无需了解技术细节,以及如何将 po 转换回 xml 并基于 xml 制作 html 在线文档和 pdf 离线文档。它适用于文档专题中的 XML 文档,即 openSUSE 用户手册的翻译。

XML ↔ PO

只有有 svn 上传权限的人才需要看这里。其他人即使转换好也无法上传更新,所以请使用 Transifex 贡献翻译

转换方法

  • 首先你需要安装 xml2po。
sudo zypper in xml2po
  • 其次你需要 50-pots、50-tools、完整的 zh_CN 和 en 文件夹:
svn co http://svn.opensuse.org/svn/opensuse-doc/trunk/documents/distribution/50-pot/
svn co http://svn.opensuse.org/svn/opensuse-doc/trunk/documents/distribution/50-tools/
svn co http://svn.opensuse.org/svn/opensuse-doc/trunk/documents/distribution/en/
svn co http://svn.opensuse.org/svn/opensuse-doc/trunk/documents/distribution/zh_CN/
  • 对 en 文件夹打格式补丁。该步骤不做最后生成的 PO 格式是乱掉的。

在根目录下,也就是 en 和 zh_CN 目录的上层目录运行:

patch -p1 < ./zh_CN/english-entity-decl-patch-to-fix-xml2po.patch

如果补丁打不上那就对照着补丁改下 en 文件夹下的目标文件。

  • 进入 50-tools 文件夹,执行:
./generate_POT.sh

生成 POT 模板文件

  • 接着执行:
./update_PO.sh zh_CN

在 ../zh_CN/po 中生成或更新 *.xml.zh_CN.po 的 po 文件。

转换好的 PO

翻译

直接进入 po 文件夹翻译即可,翻译方法及工具请对照 OpenSUSE 操作系统界面中文翻译

安装后续工作需要的工具:daps

请一定使用 YaST 而不是 zypper 安装 daps。

搜索 daps 并选中,这时不要点击下一步,因为有好多它推荐的东西都装上了,比如庞大的 emacs。

切换到「安装摘要」选项卡,取消选择 emacs,aspell 相关的软件包和 sazanami-fonts 这个日文字体。

另外它还建议了一个中文的方正字体,可以下载这个 RPM 安装。(hillwood 讨论 - 贡献从 sles 中提取的方正字体)

查看某本手册需要翻译的 po 文件

安装 daps 后可以使用 50-tools 下的 list_files.sh 查看完成某本手册具体需要的 po 文件:

./list_files.sh

将分手册显示需要的 po 文件,可以用来计划翻译。

要查看某一个特定用户手册下属的 xml 文件,可以运行:

daps -d ./DC-opensuse-startup projectfiles

生成 xml

在 50-tools 文件夹中

./generate_localized_xml.sh zh_CN

接着在 ../zh_CN/xml 文件夹中你就应该能够看到中文的 xml 文档。

校对

在 zh_CN 文件夹中:

daps --docconfig=DC-opensuse-startup bigfile

可以在 build/.tmp/ 下生成一个巨大的 xml,包含了所有之前拆分开的 xml 的内容。

xmllint --valid --noout build/.tmp/book.opensuse.startup.xml 2> validation-errors.txt

接着打开 validation-errors.txt 就能看到 xmllint 检查出来的错误,重点是行号:

build/.tmp/book.opensuse.startup.xml:37766: element menuchoice:

validity error : Element menuchoice content does not follow the DTD, expecting (shortcut? , guimenu+), got (guimenu CDATA guimenu) <guimenu>网络设备</guimenu>⏎ <guimenu>网络设置</guimenu></menuchoice>

然后打开 build/.tmp/ 下的 xml 文件,到那一行,比如:

<menuchoice><guimenu>网络设备</guimenu>⏎ <guimenu>网络设置</guimenu></menuchoice>

这是因为 guimenu 中间不能有东西,这里弄了个看上去像是回车实际是字符的东西。(transifex 带来的格式化 bug)

但是别在 .tmp 里修,去修原始的 po 文件。上下滚动一下打开的 xml,找到 "sec.nm.activate" 这样的 ID,接着到 zh_CN/xml 文件夹:

grep -r "<menuchoice><guimenu>网络设备" ./*.xml

会返回 nm.xml 这样的内容。然后到 zh_CN/po 文件夹,用 locale 打开 nm.zh_CN.xml.po,搜索出错的内容 “<menuchoice><guimenu>网络设备" 就能定位到具体的错误,相应修改。

之后提交 po 到 svn 和 transifex。

要想下次看不到错误,你还要基于修改了的 po 文件重新生成 xml 文件才行。

常见错误

错误本身都很简单,我修过的有以下几种:

人为错误:

  • 拼写错误,比如 <command> 写成了 <commnd>,同样还有 keycap 写成 keecap 等。
  • 忘记了关闭尖括号,比如 <keycap function="control"/> 忘记了那个”/“。或者成对的标签后面那个写错了,比如 <filename>1.xml<filename>。

transifex 转换错误:

  • 在 <guimenu> 中间来了个 "⏎ "
  • 在 <keycap function="control"/> 里给 control 加上了逃逸符变成了 <keycap function=\\"control\\"/>。

解决 fop 中文被替换为 # 的问题

因为 fop 默认没有中文字体,所以我们要先制作字体。(需要 xmlgraphics-fop 软件包)

首先我们需要在 zh_CN 文件夹下生成供 fop 使用的 metrics 文件:

  • 查看可用字体
$ fop-fontmetrics /usr/share/fonts/truetype/wqy-microhei.ttc zh_CN/wqy-micro-hei.xml
This is a TrueType collection file with 2 fonts
Containing the following fonts: 
WenQuanYi Micro Hei
WenQuanYi Micro Hei Mono
  • 分别生成常规字体的 metrics 和 Monospace 字体的 metrics
$ fop-fontmetrics --ttcname "WenQuanYi Micro Hei" /usr/share/fonts/truetype/wqy-microhei.ttc zh_CN/wqy-micro-hei.xml
$ fop-fontmetrics --ttcname "WenQuanYi Micro Hei Mono" /usr/share/fonts/truetype/wqy-microhei.ttc zh_CN/wqy-micro-hei.xml

然后 root 权限编辑 /etc/fop.xconf 加入中文字体:

搜索 <auto-detect/>,在它的上面加入:

        <font metrics-url="file:///home/marguerite/opensuse-doc/zh_CN/wqy-micro-hei.xml" kerning="yes" embed-url="file:///usr/share/fonts/truetype/wqy-microhei.ttc">
          <font-triplet name="WenQuanYi Micro Hei" style="normal" weight="normal"/>
          <font-triplet name="WenQuanYi Micro Hei" style="normal" weight="bold"/>
          <font-triplet name="WenQuanYi Micro Hei" style="italic" weight="normal"/>
          <font-triplet name="WenQuanYi Micro Hei" style="italic" weight="bold"/>
        </font>

        <font metrics-url="file:///home/marguerite/opensuse-doc/zh_CN/wqy-micro-hei-mono.xml" kerning="yes" embed-url="file:///usr/share/fonts/truetype/wqy-microhei.ttc">
          <font-triplet name="WenQuanYi Micro Hei Mono" style="normal" weight="normal"/>
          <font-triplet name="WenQuanYi Micro Hei Mono" style="normal" weight="bold"/>
          <font-triplet name="WenQuanYi Micro Hei Mono" style="italic" weight="normal"/>
          <font-triplet name="WenQuanYi Micro Hei Mono" style="italic" weight="bold"/>
        </font>


然后编辑 /usr/share/xml/docbook/stylesheet/suse/common/l10n/zh_cn.xml 样式表,加入我们的中文字体:

把同时带有 fop1 和 body/sans/monospace 字样的条目进行编辑,在 text= 中间,最前面加上相应的 WenQuanYi Micro Hei 或 WenQuanYi Micro Hei Mono。

生成最终版的 PDF 和 HTML

把 50-tools 下的相应脚本复制到 zh_CN 文件夹下再执行

  • 生成 PDF:
./generate_PDF.sh
  • 生成单本的手册:
daps --docconfig=DC-opensuse-startup color-pdf
  • 生成 HTML:
./generate_HTML.sh

最终打包

八字没一撇呢。

使用 Transifex 翻译

如何加入

Transifex 上注册一个新用户并登录。

前往 opensuse-manuals 项目。

在列出的语言列表中,点击 Chinese (China)。

现在你可以看到中文翻译的全部资源列表了,点击加入团队提交申请。

管理员会在一两日内审核你的申请。申请通过之后,你就可以点击打开一个翻译资源进行翻译了。

应该优先翻译的

你可以看到翻译资源数量庞大,经过两年多的努力也只翻译到 40% 而已。为了早日发布,我们将优先翻译那些用户最需要,比如如何安装软件,配置网络。而那些不常用的,比如 Apparmor,KVM,则暂缓翻译。

openSUSE 文档分成如下几本:openSUSE Startup, openSUSE Reference, openSUSE Tuning, openSUSE KVM, openSUSE Security. 现在优先翻译的是 openSUSE Startup 和 openSUSE Reference 两本。其所包含的翻译资源有:

opensuse-startup

  • 1_click_install_i 已审阅
  • MAIN.opensuse 已审阅
  • adm_shell 已审阅
  • art_gnome_quick 已翻译
  • art_kde_quick 已审阅
  • art_libreoffice_quick 已审阅
  • art_opensuse_install_quick 已审阅
  • book_opensuse_startup 已审阅
  • common_copyright_opensuse 已审阅
  • common_copyright_quick 已审阅
  • common_gfdl1.2_i 已翻译
  • common_intro_acknowl_i 已审阅
  • common_intro_available_doc_i 已翻译
  • common_intro_feedback_i 已审阅
  • common_intro_making_i 已审阅
  • common_intro_source_code_i 已审阅
  • common_intro_typografie_i 已审阅
  • fs_structure_i 已翻译
  • help_admin 已审阅
  • inst_pkg_internet 已审阅
  • newbie_bash 已翻译
  • newbie_bash_commands_i 已翻译
  • newbie_perm_i 已翻译
  • opensuse_startup_intro 已审阅
  • opensuse_update 已翻译
  • opensuseupdater 已翻译
  • printing 已翻译
  • rpm 已翻译
  • sw_managing_commandline 已审阅
  • system_repair 已翻译
  • troubleshooting 已翻译
  • x11_fonts 已审阅
  • yast2_hw 已审阅
  • yast2_lang 已审阅
  • yast2_ncurses 已翻译
  • yast2_printer 已翻译
  • yast2_scanner 已翻译
  • yast2_sound 已审阅
  • yast2_sw 已翻译
  • yast2_sw_addon 已审阅
  • yast2_sw_gtk 已翻译
  • yast2_sw_repo 已翻译
  • yast2_userman 已翻译
  • yast2_you 已翻译
  • zypper 已审阅
  • zypper_upgrade 已审阅

注意:带common_的是几本手册都包含的,会被重用,比如版权页,致谢,在线资源和反馈途径介绍等。后面的几本也包含这些时就略过不提了,不重复方便统计。

opensuse-reference

  • 64bit_issues 已翻译
  • advanced_disksetup 已翻译
  • apache2 未完成
  • apache2_yast_i 已翻译
  • book_opensuse_reference 已审阅
  • bootconcept 已翻译
  • common_gplv2_i 已翻译
  • common_legal 已审阅
  • deployment_remote 未完成
  • filetransfer 已翻译
  • grub 未完成
  • grub2 已翻译
  • grub2_yast_i 已翻译
  • grub_bootcd_i 未完成
  • grub_yast_i 未完成
  • inst_yast2 已翻译
  • lvm 未完成
  • mobile 未完成
  • net_config_files 未完成
  • net_dhcp 未完成
  • net_dns 未完成
  • net_general 未完成
  • net_lan 已翻译
  • net_nfs 未完成
  • net_samba 未完成
  • net_slp 已翻译
  • net_smpppd 已翻译
  • net_xntp 未完成
  • network_scheme 已翻译
  • networkmanager 已翻译
  • nm 未完成
  • nm_gnome 已翻译
  • nm_kde 已翻译
  • opensuse_reference_intro 已审阅
  • pcmcia_apm 未完成
  • raid 已翻译
  • snapper 未完成
  • suse_emacs 已翻译
  • suse_kb 已审阅
  • suse_l10n 已翻译
  • suse_linux 已审阅
  • suse_logfiles 已审阅
  • suse_sw_packages 未完成
  • suse_vc 已审阅
  • systemd 已翻译
  • tablet 已审阅
  • udev 未完成
  • vnc 已翻译
  • wlan 已审阅
  • yast2_ftp 已审阅
  • yast2_manpart 已翻译

如何翻译

点击一个翻译资源,会弹出一个对话框。点击开始翻译进入翻译界面。

翻译界面左侧是待翻译的字符串列表,右侧是当前字符串的原文和翻译。在翻译框中输入翻译,并点击保存即可。你也可以使用快捷键 Tab 保存翻译并跳转到下一条。

词汇表

原文部分有的词带有下划线,用鼠标放在它们上面会显示单词或词组的翻译。这些翻译是其他人预存在词汇表里的,以帮助记忆固定翻译。如果想添加词汇,在原文的下方或右侧有一个词汇表标签,打开它并点击打开词汇表,在新窗口中显示项目的翻译词汇表。点击添加一个术语就能新建词汇了。Transifex并不智能,它可以将大小开写头的词识别为同一个,比如只需要输入 Book 词汇,Book 和 book 都能被识别;而复数形式,过去时,被动,进行时都不能识别为同一个词,比如输入 Interest 词汇,Interests,Interesting,Interested 都不能识别,必须分别将每个词汇写入到词汇表中。

Transifex 词汇表 1.png

Transifex 词汇表 2.png

Transifex 词汇表 3.png

参考链接