openSUSE:用户手册翻译
目录
XML ↔ PO
转换方法
- 首先你需要安装 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
- 官方 svn 地址:http://svn.opensuse.org/svn/opensuse-doc/trunk/documents/distribution/zh_CN/po/ 注:没有 svn 上传权限无法上传。
翻译
直接进入 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 都不能识别,必须分别将每个词汇写入到词汇表中。