Fedora 本地化工作指南(新的)
愿景
这个页面,描述了如何加入L10N本地化团队。作为一个新的翻译者,应该如何在Zanta上翻译。
如何成为一个Fedora翻译者
L10n项目显然不仅仅是为了翻译。不过,翻译却不妨成为一个不错的门槛来迈入本地化团队,下面是使您成为翻译者的一些基本步骤:
- 创建一个FAS账户
- 加入邮件列表
- 介绍你自己(您可以在您加入的邮件列表中做这个,并且创建Wiki中的User页面)
- 使用您的FAS账户登录Zanta
- 寻找适合于您的语言团队并加入
你的自我介绍很重要。 它有机会提高你的操作权限。 你可能还想创建一个Bugzilla帐户来处理用户反映的错误。
创建一个FAS账户
- 打开 https://admin.fedoraproject.org/accounts 并点击“New Account(新建账号)”链接。
- 填写所有项,然后单击“Sign up(注册)”。 密码将通过电子邮件发送给你,你可以稍后更改密码。
- 现在再次访问 https://admin.fedoraproject.org/accounts 并用你的密码登录。
- 帐户系统会提醒你CLA未完成。
签署CLA
要开始翻译前,你必须完成贡献者许可协议或CLA。
- 访问 https://admin.fedoraproject.org/accounts 并用你在上一过程中获得的用户名和密码登录你的帐户。
- 在欢迎页面中,单击完成CLA或转到https://admin.fedoraproject.org/accounts/user/edit。
- 如果你尚未提供电话号码和地址的信息,将出现编辑帐户(user_name)页面,你需要填写每一项。否则将显示"Fedora Contributor License Agreement"页面。仔细阅读协议,如果你愿意,请点击我同意。
- 现在点击“保存”! 在页面底部保存你的信息。
- 出现用户视图页面,CLA项:显示为“CLA 已验证”。
加入邮件列表
L10n 邮件列表
- 访问trans邮件列表订阅页面并订阅它。
- 在管理员批准之前,你将无法向列表发送邮件。 你将收到一封确认电子邮件,其中包含确认订阅的链接。 单击链接以确认。
你的team(团队)邮件列表
- 访问 https://fedoraproject.org/wiki/L10N/Teams 并找到你的语言团队。
- 订阅你的语言的邮件列表
介绍你自己
- 在 https://fedoraproject.org/wiki/User:Username 创建个人页面(可选).
- 对你订阅的邮件列表进行简短的自我介绍。 如果你不知道要介绍什么,这里有一个模板:https://fedoraproject.org/wiki/L10N_Self_introduction。
以上两个步骤对于Fedora贡献者相互了解和联系非常有用。 第二步还可以帮助你的语言管理员(协调员)认识你并批准你作为团队的翻译。
使用您的FAS账户登录Zanta
- 打开https://fedora.zanata.org/,然后单击页面右上角的蓝色“Log In(登录)”按钮。
- 然后它将跳转到FedOAuth页面,你可以使用你在上一节中注册的FAS帐户和密码登录。
- 然后,你将被重定向到认证页面,单击“Approve(批准)”。
- “new user(新用户)”页面会打开。
你应输入你的全名,用户名(FAS用户名)和你的电子邮件地址。 注意:请使用你的真实电子邮件地址,但不要使用你的Fedora项目别名(username@fedoraproject.org)。 完成后,单击“Save(保存)”按钮。 激活邮件将立即发送到你的邮件地址。 请在收件箱中找到邮件,然后打开邮件中显示的激活链接。 然后使用你的FAS用户名和密码登录。 下次登录时,你无需再次执行此步骤。 它只对新用户登录时是必要的。
寻找适合于你的语言团队并加入
- 访问https://fedora.zanata.org并点击顶部的语言,然后你将看到所有可用的语言(已过期需要登陆后才可查看)。
- 找到你要翻译的语言,然后单击语言编号。
- 单击页面左侧的蓝色按钮申请加入团队。
- 你可以选择你想要的角色,然后单击“Send Message(发送消息)”。 附加消息是可选的。 例子中,我使用南非荷兰语作为下面的截图。
- 团队管理员(协调员)将收到有关你请求的电子邮件通知。 只要他/她批准你的请求,你将成为团队成员。 但是,管理员(协调员)可能不会批准你的每个角色请求。 换句话说,如果你要求成为翻译,审稿人和协调员,他/她可能只会批准你担任翻译角色。
Translating
使用Zanata在线翻译
寻找你的项目
在Zanata上有三种查找翻译文件的方法:
方法一 : 项目搜索
如果你知道翻译项目的标题,可以通过项目搜索框查找它
然后选择合适的项目来查看可用的翻译版本。
方法二 : 项目主页
单击位于页面顶部的“Projects(项目)”链接,访问“Projects(项目)”页面上的所有项目。 通过单击列表字段名中的箭头,可以按名称,创建日期或当前活动状态对项目表进行排序。
单击项目名称以查看可用于翻译的版本。
方法三 : 用户仪表盘(控制台)
你也可以从用户仪表盘(控制台)访问你的翻译项目。
“Activity(活动)”部分列出了你的所有最新翻译。 如果要查找最近翻译的项目,请通过该列表信息查找项目的名称。 你可以通过单击列表信息中的相关链接文字来访问,文档信息,版本信息或整个项目。
开始翻译
找到并选择项目后,将打开以下编辑器:
1. Search(搜索 )
直接在搜索框中输入相关名称或选择筛选来进行搜索。 例如,如果你只想显示自己修改的字符串,请选择“last-modified-by”并输入你的用户名。
2. String details(文字简介)
允许你查看特定源文本的详细信息,包括注释。
3. Filtering(筛选)
字符串可以按状态筛选:Incomplete, Complete and Invalid(未完成,完成和无效)(包含警告或错误)。 例如,要显示所有未翻译(未完成),草稿和无效的字符,请选中“Incomplete(未完成)”框。 仅显示特定类型的未完成符串,请选中相应的框,例如 Fuzzy(草稿)。
4. Copy message from source language(从源语言复制消息)
当源文本包含标签,数字或产品名称时应与需要翻译的语言保持一致,此功能非常有用。
5. Profile icon(个人资料图标)
单击此图标可注销或访问仪表盘。 仪表盘的右上角显示当前日/周/月翻译的单词/消息/文档的数量。 仪表盘的底部显示你的活动状态,即你最后翻译的文件的时间和位置。
6. Document list(文档列表)
单击返回此项目的文档列表
7. Editor(编辑器)
This button allows you to revert to the editor from any other page you are in, e.g. from the Project-wide Search & Replace page.
8. Project-wide Search & Replace(整个项目的搜索与替换)
使用此选项可搜索并替换整个文件中的具体词或短句。 操作如下: 在搜索框中输入一个词,设置搜索筛选“search target(搜索目标)”,并检查“Case sensitive(区分大小写)”的情况(如果适用)。 在第二个文本框中,输入你要使用的词语。 然后选中“Select all(全选)”或选择要应用此更改的文字,然后单击“Replace(替换)”更改。
9. Available Keyboard Shortcuts(键盘快捷键)
在文本编辑器页面中,单击此按钮可查看所有可用快捷键的列表。
10. Notification(通知)
单击此按钮可查看最新通知,包括每个已修改文字的日期,行号,ID号。
11. Chat room(群聊)
使用此功能可与其他翻译人员进行交流
12. Options(设置)
此功能允许你修改自定义修改默认选项。 例如,选中“Enter key saves immediately(立即输入密钥保存)”框以使用Enter键保存字符串。
13. Validation options(验证设置)
此页面允许你选择不同的验证设置:
- HTML/XML tags:html/xml标签是检查源文本和目标文本之间是否一致。
- Java variables:检查 java style ({x}) 变量是否一致.
- Leading/trailing newline (\n)(行首、行尾的换行符): 检查行首和行尾随换行符是否一致 (\n).
- Positional printf (XSI extension): 检查位于printf style (%n$x) 变量是否一致.
- Tab characters (\t)(制表符):检查源文件与目标是否具有相同数量的制表符。
- XML entity reference: 检查整个XML的标记是否完整。
14. Save as translated(保存为已翻译)
保存可以通过单击此图标,或者单击旁边的文字,在或者按Ctrl + Enter或仅按Enter键(如果在编辑器选项中选中“Enter key saves immediately(立即保存输入键)”)来完成保存(参见10.)。
15. Save as fuzzy(保存为草稿)
你可以使用此按钮将当前文字保存为草稿,并设置它需要进一步的工作。
16. Cancel(取消)
如果要取消更改,请使用此按钮。
17. History(历史记录)
此按钮将跳转到翻译历史页面,你可以:
- 发表评论
- 查看此特定文字的翻译历史记录,包括修改日期和用户名
- 比较不同的版本,只需点击“Compare(比较)”,查看你要比较的两个字符,然后单击“Compare vers. X and X”选项查看比较。
18. Translation memory(翻译历史库)
Translation Memory(TM)是一种搜索与当前所选源字符串相等(100%)或类似(<100%)的翻译的工具。 Matches can be copied to the translation text box and used as-is or modified before saving. To copy TM matches to the selected text box, click the “Copy” button, or use Ctrl+Alt+1 to Ctrl+Alt+4 keyboard shortcuts to copy the first to fourth match in the list. 你还可以通过在TM文本框中输入并单击“Search”来搜索TM以查找其它短句。
19. Glossary(词汇表)
If a glossary has been uploaded for your language, each word in the currently selected row will be searched for a glossary entry.
离线翻译
有两种方法可以让你离线翻译:
方法一: Zanata-cli
1. 安装 zanata-cli
在 “Cli” - 选择 “Installing the client ”
你可以通过两种方式安装客户端:
sudo dnf install zanata-client sudo yum install zanata-client
- 或使用Ivy安装:
点击“Zanata Ivy Client on github(github上的Zanata Ivy客户端)” 链接
根据你使用的系统(Fedora,RHEL或其他系统)运行相应的命令
安装Ivy后,单击zanata-cli文件。
将可执行文件的内容复制并粘贴到文本编辑器中,并另存为“zanata-cli”。
2. 配置客户端
配置客户端需要两个操作:
2.1 配置用户:
首先在 ~/.config/ 中使用首选文本编辑器创建或打开“zanata.ini”。
2个步骤:
2.1.1. 创建API密钥
在Zanata帐户中,转到信息中心,然后点击“Settings(设置)”。
然后选择客户端
如果你没有,请生成API密钥。
2.1.2. 将标记为“Configuration [zanata.ini]”的文本框的内容复制到先前创建的zanata.ini文件中并保存该文件。
2.2 配置项目:
将项目版本配置添加到项目目录,navigate to your translation project in Zanata,,例如: Fedora安装指南 - f20 - 选择你的语言环境 - 在右上角,单击箭头并选择“Download config file(下载配置文件)”
将zanata.xml文件保存在首选位置。
3. 将文件下载到你的计算机
在命令行中运行以下命令前,make sure you are in the directory containing the zanata.xml file.
运行:
zanata-cli pull -s src -t trans -l <language code> --pull-type both
源文件和已翻译文件将创建到目录中的src(源)和trans(已翻译)文件中。
你现在可以使用首选编辑器打开文件并翻译项目。
4. 将文件上传到Zanata
将已翻译的文件推送回Zanata,请运行以下命令:
zanata-cli push -s src -t trans -l <language code> --push-type trans
你的翻译现已被推送Zanata,并且TM已根据你的更改进行了更新。
方法二:通过用户界面
登陆 https://translate.zanata.org/
搜索你的项目,例如 Fedora安装指南。
选择你的语言
要下载整个项目,请单击页面右上角的箭头(“sort(排序)”旁边),然后单击“Download All (zip)(全部下载)”。
仅下载一个文件,请单击文件名左侧的箭头,然后选择“Download Translated [.po].(下载已翻译的)”。
将文件保存到首选位置。
翻译文件。
完成后,将文件上传到Zanata,选择“Upload translation(上传翻译)”。
注意:虽然可以下载整个项目,但只能通过文件,通过单击文件名左侧的箭头,然后选择“Upload translation(上传翻译)”来上传。
校对
相对翻译人员来说很难在翻译的文字内找到拼写错误或轻微错误。 校对非常重要。 一般来说,校对仅涉及翻译的文字内容。 然而,PO文件通过L10n和i18n工作流程发挥了重要作用。 因此,翻译人员应在翻译过程中保持PO文件的有效性,以便其他翻译和维护人员可以正确地使用它们。
PO文件校对
Zanata提供的在线翻译编辑器具有检查每个字符串的校对功能。 如果你更喜欢在线翻译,此功能对你有所帮助。 校对选项位于在线编辑器的右侧。 它提供了几种验证方法。
在此示例中,结束标记
</command>
被写为
</comd>
,编辑器会发出警告,表示可能存在错误标签(</command>)。 当你使用在线翻译期间显示这样的警告时,最好再仔细检查你的翻译。
如果你希望离线翻译,应始终在提交前检查文件的有效性。 执行此操作的命令是:
msgfmt -cvo /dev/null po_file_to_check.po
确保没有错误信息。
翻译校对
验证工具仅用于检查与编码语言相关的东西,变量或某些内容的有效性。 你不能指望它检查你真正翻译的文字内容。 例如,我错误地将英文单词“He”翻译成中文“它”(右边是“他”),验证工具不会警告你存在错误。 你的目标和责任是毫无错误地进行翻译。 阅读你翻译的内容是检查错误的好习惯。
使用自动检查排版工具
Depending on your language, the verification of the compliance to some typographic rules may be difficult to do without the help of a specialized tool. This is specially the case with the various types of spaces that are not visible. A tool (which is still in an early development stage) is available and it is described in the L10N/Typo Purification of po Files page.
创建翻译文档(书)
为了更容易地进行校对,通常在最终的上下文中看到翻译的消息。 请参考 如何在Zanata上的翻译文件构建翻译的文档。
Testing
In fact, the directory
/usr/share/locale/your_LOCALE/LC_MESSAGES/
is the home of most of the localised files of system components and softwares.
So generally, if you want to the test translation of a software or a system component, the simplest way is:
- Backup the original file first,
sudo cp /usr/share/locale/your_LOCALE/LC_MESSAGES/example.mo /usr/share/locale/your_LOCALE/LC_MESSAGES/example.mo.old
- Put the new mo file into the directory,
sudo msgfmt -o new_example.po /usr/share/locale/your_LOCALE/LC_MESSAGES/new_example.mo
- Run that software/component/command.
(A demo is going to be made in future. An old demo is available here: https://www.youtube.com/watch?v=Hi-7QZrUR3k)
Sections below introduce two more advanced methods for testing.
Using permalinks
One of the benefits of using the Zanata's translation platform, it's the ability to pull a translation from a permalink and then you can install it on your system by using few commands. To obtain a permalink:
- go to translation project
- select the version, if there is more than one
- select the language
- click the Documents(YOUR_LOCALE) link in navigation bar
- copy the permalink (.po) in actions column
Once you have the permalink, you can test the translation on your system by running the following command:
su -c 'mv /usr/share/locale/ca/LC_MESSAGES/anaconda.mo /user/share/locale/ca/LC_MESSAGES/anaconda.mo.old; \ msgfmt <(curl -s https://fedora.zanata.org/rest/file/translation/anaconda/f23-branch/ca/po?docId=po%2Fanaconda &> /dev/stdout)\ -o /usr/share/locale/ca/LC_MESSAGES/anaconda.mo'
Build a rpm with permalinks and fedpkg
Sometimes, it is not so easy to simple msgfmt the po file and we should build a rpm including the translations to test. There is an example below:
su -c ‘dnf install -y fedpkg fedora-packager rpmdevtools’ fedpkg clone -a -B sssd cd sssd/f23 su -c 'dnf builddep -y sssd.spec' fedpkg prep export version=1.13.0 cp -rp sssd-$version sssd-${version}p curl -s https://fedora.zanata.org/rest/file/translation/sssd/master/ca/po?docId=po%2Fsssd > sssd-${version}p/po/ca.po curl -s https://fedora.zanata.org/rest/file/translation/sssd/master/ca/po?docId=src%2Fman%2Fpo%2Fsssd-docs > sssd-${version}p/src/man/po/ca.po diff -urN sssd-$version sssd-${version}p > my.patch
Edit sssd.spec file for including the patch (1st. Patch999: my.patch at the top; 2nd. %patch999 -p1 in the %prep section, just after %setup -q. The last step -2nd- it's not required if there is a for p in %patches ; do):
... ### Patches ### Patch9999: my.patch ... ... %prep ... %setup -q %patch9999 -p1 ...
Build & install the patched rpm:
fedpkg local su -c 'dnf install --nogpgcheck */*.rpm'
Credits
The following people contributed to this guide:
- Julie Carbone
- Robert Antoni Buj
- Tian Shixiong
However some of the contents in this guide are referenced from the Fedora Localization Guide for Transifex platform indirectly or directly, so the writers should be thanked here too.