2014年3月11日星期二

Summary about Translation Work

I am so not good at summary, because it is so hard to make it meaningful and worth sharing. But looking back, review the condition of our translation work, will be at least helpful to help newer like me get involved more easily.

我非常不擅长总结,这个工作要做到有意义值的分享很有难度。但是回顾一下,理清现在中文翻译的情况,特别是从新人的角度,希望帮助其他加入者了解怎样成长更快,怎样对用户使用中文 GNOME 帮助更大。

After reading another intern who also works on translation, JuditGyimesi, whose blog is in different style. I changed my mind to share statics and skills. Maybe because I am a Chinese who was educated from a young age that every share need to give reader knowledge. From her blog I have learnt sharing when translating the translator feel happy still make sense.

在我参考了另外一位翻译实习生 JuditGyimesi 的博客 以后,把这篇文章的风格修改了一下,不知道是不是因为自己是中国人的原因,过于希望在博客里分享知识,怎样做,能学会什么,或者简简单单的分享自己做了些什么,觉得很开心就好了。

Talk about the growth in the translation program, the most important must be understanding the important or urgent situation of each program need translated. And finding out the parts you prefer and good at. Find a part that every update of it , you could not wait to translate. For me like release-note. That is what I learnt from these 3 months.

提到在翻译项目中的成长,或许莫过于了解哪些需要做,哪些是自己更热爱的,愿意持续的贡献,比如说翻译clutter,看 API 也仍然难以用中文表达出很容易理解的意思,但是到了网站和发行注记,倒是很喜欢成天和 improvement enhancement,polish,之类的词扯皮。

After translating GNOME, I changed from normal user to watching user, watching every part metioned in release note, activity overview,accessible tool, wayland, headbar, notification...

对 GNOME 以前仅仅停留在使用,翻译了发行注记以后,已经开始更多的关注活动概览(activity overview 膜拜定下这个翻译的大神),顶栏,通知功能每次的变化。

Here is some news about Gnome 3.12, I wrote here and I hope won't be blamed:) The release note has not been frozen, still changing.

我要剧透刚刚翻译了一点 3.12 的发行注记吗,因为还在写,所以会有很大变数,但是已经可以用来剧透啦。

GNOME 3.12 includes a reimagined Videos application. Keywords are Pocket, video channel,I leave the detail in Chinese :)

 GNOME 3.12 包括一个重新构想的 Videos 应用程序。风格和执行现代化,新应用允许您既可以浏览您本机的视频,也可以收看线上影视频道,包括 Rai.tv,Guardian 影视频道,Blip.tv和 Apple Movie Trailers。这些影视频道可以被轻易扩展,列表会越来越长。整合了当前流行的 Pocket 服务,允许您访问您保存以备以后收看的视频。

For developers : 
New GTK+ Widgets
GtkActionBar: A new container, which has a centered child like GtkHeaderBar.
GtkPopover: A new widget that is can be used for transient views, as an alternative to menus or dialogs
GtkFlowBox: A container that its children in a reflowing grid, which can be oriented horizontally or vertically
New Notifications API
GNotification: Notification support in GApplication
Powerful New Process Launching API

开发者的惊喜:
新的 GTK+ 部件
GtkActionBar:新的容器,和 GtkHeaderBar 一样带有中心子对象.
GtkPopover: 新的部件可以用于过渡效果视图,作为菜单或者对话框的替换。
GtkFlowBox: 子对象处于回流方格的容器,可以水平或竖直定向。
新的 Notifications API
GNotification: GApplication 中的 Notification 支持
强大的新进程启动 API




Useful Gvim Skills for translation work

As I use linux as normal operating system, and prefer gvim very much. I would like to share some skills to help keep your hands away from mouse bracing the high efficient way of working. Especially for the survive stage vim newbees. I hope the article will help you get into the translation work faster than spending long time learning vim from 0.

因为日常使用linux系统,翻译工作的工具又比较偏爱gvim,所以分享一些小技巧,希望帮助大家远离“鼠标+键盘”的低效工作模式,特别是刚刚处于survive阶段的vim轻度用户。快速在翻译工作中高效使用vim。

1.MOVE
   移动

1.1 move between msgstr
      msgstr间移动

The basic item of .po file is msgstr, when whose state is untranslated and fuzzy need working on. So jump between the msgstr is very simple:

在翻译中基本单位是msgstr,需要翻译的状态是:未翻译和fuzzy,在这两种状态直接的跳跃方法很简单:

In both normal and insert state, SHIFT+F1, next untranslated,  SHIFT+F2, pre untranslated
 SHIFT+F5, next fuzzy, SHIFT+F6, pre fuzzy.

两种状态下,SHIFT+F1,下一条未翻译,SHIFT+F2,上一条未翻译。
SHIFT+F5,下一条fuzzy,SHIFT+F6,上一条fuzzy。

If you would like to find a pre msgstr which you just finished to modify, command "`." is a good choice, right back to the specific location you edited.

这里有个小的技巧是如果想要找到上一条翻译的,打算修改,可以使用“`.”命令,直接跳回上次编辑的位置。

1.2 move inside msgstr
      msgstr 内移动

Facing a long sentence or changing a fuzzy translation may need us jump inside a msgstr. It is obvious to be stupid if we just use "jkhl" to jump one step a time. So we could jump a word forth or back by using "WwBb". In other situation, when words mixed with tag or other items using f(find in next) or F(find in pre) will be better. We take an example:

当一个比较长的句子,或者是要对 fuzzy 状态的句子进行修改时,句子中间的跳跃如何更方便,可以预见,用jkhl来一个一个单词的跳跃太麻烦了,所以,以单词为单位的 WwBb 就非常方便。在其他情况下,当单词掺杂符号,例如含有标签的更好的方式是f(向后查找)F(向前查找)某个特殊的字母或者符号。例如:


---copy the original text --- (insert mode) SHIFT-F3
---delete from tag to end --- fi(to the word 'is') ct"

--- after translate first line to next line
--- delete the context in second line --- ci"
















--- delete text before tag --f<h dT"





Just to show the skill, it is not the best.

BTW, gvim under windows has better experience for the input methods. For example, I use fcitx by which Chinese will be identified only as a whole word for when the f (find) the input method still stay English environment. The ibus or fcitx input methods need more support, with better input method, we will be more efficient. If you have to work under linux, I recommend GNOME whose integrated Input Method is good.

此外一个个人的小小想法,在windows下使用gvim的效果不错,虽然被很多朋友们诟病,但是windows下由于有更好的中文输入法支持,在f命令后可以接中文,这样在查找起来非常方便,而linux下的ibus,fcitx在这方面的支持较弱,整个中文句子中要修改某个词的时候,跳到该处比较麻烦。并且fcitx在每次跳到下一条的时候输入法都会变回英文,不能保持上一次状态。

1.3 move about tag
      tag 的移动

Context inside a tag could be identified, so use "cit" will clear context and cursor will stand inside the tag. For example:

cit,进入tag的内容修改。下面例子:


---cursor in the scope of tag 
---magic --- cit



2.delete
   删除

Delete is very very simple, just select a region and d.

删除旧的内容,增添新的内容是很常见的事情,在gvim下,最傻瓜的办法是v(可视)
用jkhl标定范围,d删除。对于不愿意记很多命令的新手,这是最普遍的解决办法。

Be careful of a(all), i(in), t(tag) when use the command d(delete).

2.1 a 删除
想要删除整个""?想要删除整个标签?试试da",dat。想要在删除后直接进入编辑模式?ca",cat。

2.2 in 删除
想要删除""中的内容,或者标签中的内容,将2.1中的a改成i试试,非常好用。

2,3 t 删除
只想要删除一部分,从当前到某个字母,数字,标签或者"?跳到删除开始的地方,dt(目标),注意,t",删除到",不包含"。

3. copy
    复制

Why copy is different , because where the text we copy saved, there are something to know. How we use register is very important.

Registers are the default space for vim command y and d.

复制分为选定和复制两个阶段,对区域的选择可以用v来划定,成行的选择可以用数字yy来选择区域。那么重点讲寄存器技巧。

寄存器是Vim用来存储文件的临时空间,当使用命令y(yank)或者d(delete)复制删除文本是,该文本就会被保存在寄存器里,通过p(put)命令插入刚删除或复制的内容。

3.1 number register 
      数字寄存器

The read-only registers 0 through 9 are your “historical record” registers. The register 0 will always contain the most recently yanked text, but never deleted text; this is handy for performing a yank operation, at least one delete operation, and then pasting the text originally yanked with "0p.

The registers 1 through 9 are for deleted text, with "1 referencing the most recently deleted text, "2 the text deleted before that, and so on up to "9.

在normal模式下输入:reg,就会看到很多"开头的数字,这些都是数组寄存器,存放最近删除和复制的文本。

数字寄存器有十个,分别是:"0,"1,"2..."9,寄存器"0保存上一次复制操作的文本,"1到"9保存最近9次删除的文本行。p命令粘贴的是哪个寄存器的内容呢,有时候是"0,有时候是"1。总的原则是粘贴最近一次删除或者复制的内容。

3.2  Capital register
       字母寄存器

"a,"b,"c...are the names of capital registers, you must know there are 26 capital registers.

How to copy context to capital register? Their name plus p like "ay(copy selected to "a).
If  we need added more to the register, use the name in Capital like "Cdd(add the deleted line to the end of "c register str.)

"a,"b,"c...都是字母寄存器,执行:reg时可能看不到,稍后会有,如何将指定内容复制到字母寄存器里:寄存器名称+p。

例如我们要把当前行的内容放到"a寄存器中,咋normal模式下输入"ayy,粘贴则是在normal模式下,"ap即可。如果讲寄存器名称大写,则表示追加,如"Cdd,作用是把当前行删除追加到"c寄存器中。

3.3 Other register
      其他寄存器

"": unnamed register, store the latest delete or yank

"":无名寄存器,保存最近一次删除或复制内容。

"-: the small delete register, store the delete small str with command dw or x

"-:小删除寄存器,删除的单词或者字母保存在此。

"+: system clipboard, things here could be pasted to everywhere in system.

"+:系统剪切板,保存在里面的内容可以直接在系统的其他应用中ctrl+v粘贴的。

Here is a simple example of how to use register between more than one file :

在翻译中,如果存在对照文本,在查找单词时,建议专门将单词放在字母寄存器中,可以在参考文本中查询多次。举例:

If I need to find the sentence contains "enhancements" in the left file to give a hint.

在右侧文件中包含 enhancements 的句子需要在左侧文件中寻找提示。

---select the word ---vw
---yank to register --- "ay











---jump to the left window --- ctrl+x ---  h
---find mode --- /
---from register --- ctrl+r
----from register a --- a

If you need the help of google or csslayer, use "+ register will really help you without mouse.

如果需要将单词或内容放到google translator或者csslayer网站查询,建议使用"+。

I hope more people could handle the basic tool for translation as soon as possible, enjoy translation itself and share the skills with others. 

希望大家可以快速的适应gvim这个良好的翻译工具,体会vim的方便快捷,并分享这其中的小技巧~~

2014年2月2日星期日

Gettext quickstart---install and demo

Introduce
Most people know Internationalization and localization, maybe talk  it later.

Install
===================================================================
if you need Chinese guide, here. I followed it, very useful, without error.
Download
-------------------------------------------------------------------------------------------------------------------------
 ftp://ftp.gnu.org/gnu/gettext/
choose a version you like.
Install
-------------------------------------------------------------------------------------------------------------------------
tar -xzf gettext-<version>.tar.gz
./configure --prefix=/usr
cd gettext-<version>/
make
make check     ---------just test, take a long time ,could skip
make install

Demo
===================================================================
refer several blogs and howto, each has some tiny things to fix I will list the link at the bottom.

We could learn the whole flow here, from overview of gettext

    
     Original C Sources ───> Preparation ───> Marked C Sources ───╮
                                                                  │
                   ╭─────────<─── GNU gettext Library             │
     ╭─── make <───┤                                              │
     │             ╰─────────<────────────────────┬───────────────╯
     │                                            │
     │   ╭─────<─── PACKAGE.pot <─── xgettext <───╯   ╭───<─── PO Compendium
     │   │                                            │              ↑
     │   │                                            ╰───╮          │
     │   ╰───╮                                            ├───> PO editor ───╮
     │       ├────> msgmerge ──────> LANG.po ────>────────╯                  │
     │   ╭───╯                                                               │
     │   │                                                                   │
     │   ╰─────────────<───────────────╮                                     │
     │                                 ├─── New LANG.po <────────────────────╯
     │   ╭─── LANG.gmo <─── msgfmt <───╯
     │   │
     │   ╰───> install ───> /.../LANG/PACKAGE.mo ───╮
     │                                              ├───> "Hello world!"
     ╰───────> install ───> /.../bin/PROGRAM ───────╯



or a easier one here, guide from Wylmer Wang
  
A simple example : hello.c
===================================================================
1    #include <libintl.h>
2    #include <locale.h>
3    #include <stdio.h>
4    #include <stdlib.h>
5    int main(void)
6    {
7      setlocale( LC_ALL, "" );
8      bindtextdomain( "hello", "/usr/share/locale" );
9      textdomain( "hello" );
10     printf( gettext( "Hello, Gettext!\n" ) );
11     exit(0);
12    }


The programmer's viewpoint
===================================================================
  1. locale.h defines C data structures used to hold locale information, and is needed by the setlocale function. libintl.h prototypes the GNU text utilities functions, and is needed here bybindtextdomaingettext, and textdomain.
  2. The call to setlocale () on line 7, with LC_ALL as the first argument and an empty string as the second one, initializes the entire current locale of the program as per environment variables set by the user. In other words, the program locale is initialized to match that of the user. For details see ``man setlocale.''
  3. The bindtextdomain function on line 8 sets the base directory for the message catalogs for a given message domain. A message domain is a set of translatable messages, with every software package typically having its own domain. Here, we have used ``hello'' as the name of the message domain for our toy program. As the second argument, /usr/share/locale, is the default system location for message catalogs, what we are saying here is that we are going to place the message catalog in the default system directory. Thus, we could have dispensed with the call tobindtextdomain here, and this function is useful only if the message catalogs are installed in a non-standard place, e.g., a packaged software distribution might have the catalogs under a po/ directory under its own main directory. See ``man bindtextdomain'' for details.
  4. The textdomain call on line 9 sets the message domain of the current program to ``hello,'' i.e., the name that we are using for our example program. ``man textdomain'' will give usage details for the function.
  5. Finally, on line 10, we have replaced what would normally have been,
      printf( "Hello, world!\n" );
    
    with,
      printf( gettext( "Hello, world!\n" ) );
Extracting translatable strings
===================================================================
xgettext -d hello -s -o hello.pot hello.c
msginit -l zh_CN -o zh_CN.po -i hello.pot

hello.pot
===================================================================
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR Free Software Foundation, Inc.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2014-02-02 15:33+0800\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"

#: hello.c:11
msgid "Hello,GetText!\n"
msgstr ""

zh_CN.po
===================================================================
# Chinese translations for PACKAGE package.          ----attention 
# Copyright (C) 2014 Free Software Foundation, Inc.
# sphinx <yishanj13@gmail.com>, 2014.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE\n"                      ----attention 
"POT-Creation-Date: 2014-02-02 16:22+0800\n"
"PO-Revision-Date: 2014-02-02 18:53+0800\n"
"Last-Translator: sphinx <yishanj13@gmail.com>\n"      
"Language-Team: Chinese (simplified)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=ASCII\n"          ----attention           
"Content-Transfer-Encoding: 8bit\n"
"Language: zh_CN\n"

#: hello.c:11
msgid "Hello,GetText!\n"
msgstr ""

attention
===================================================================
The po file need to be modified, replace "PACKAGE" with the string in textdomain
(textdomain( "hello" );),and check the charset, if charset equal to your current system language(echo $LANG),if not msgfmt will come to an error.


zh_CN.po(after modify and translate)
===================================================================
# Chinese translations for hello example package.       ----attention
# Copyright (C) 2014 Free Software Foundation, Inc.
# sphinx <yishanj13@gmail.com>, 2014.
#
msgid ""
msgstr ""
"Project-Id-Version: hello\n"                           ----attention
"POT-Creation-Date: 2014-02-02 16:22+0800\n"
"PO-Revision-Date: 2014-02-02 18:53+0800\n"
"Last-Translator: sphinx <yishanj13@gmail.com>\n"
"Language-Team: Chinese (simplified)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"             ----attention
"Content-Transfer-Encoding: 8bit\n"
"Language: zh_CN\n"

#: hello.c:11
msgid "Hello,GetText!\n"
msgstr "你好,GetText!\n"


Message catalogs
===================================================================
msgfmt -c -v -o hello.mo zh_CN.po 
cp hello.mo /usr/share/locale/or_IN/LC_MESSAGES
Output
===================================================================
gcc hello.c -o hello
./hello
>你好,GetText!


Program upgrade
===================================================================
The previous section presented a simple example of how Chinese simple language support could be added to a C program. Like all programs, we might now wish to further enhance it. For example, we could include a greeting to the user by adding another printf statement after the first one. Our new hello.c source code might look like this:
1    #include <libintl.h>
2    #include <locale.h>
3    #include <stdio.h>
4    #include <stdlib.h>
5    int main(void)
6    {
7      setlocale( LC_ALL, "" );
8      bindtextdomain( "hello", "/usr/share/locale" );
9      textdomain( "hello" );
10      printf( gettext( "Hello, world!\n" ) );
11      printf( gettext( "How are you\n" ) );
12      exit(0);
13    }
Merging old and new translations
===================================================================
xgettext -d hello -s -o hello-new.pot hello.c
msgmerge -s -U hello.po hello-new.pot (I tested, this one won't work with gettext 0.10.40, no U option, and won't merge po and pot.)
msginit -l zh_CN -o zh_CN-new.po -i hello-new.pot

msgmerge -s -o zh_CN.po zh_CN.po zh_CN-new.po 
now the po zh_CN.po
===================================================================
# Chinese translations for hello example package.
# Copyright (C) 2014 Free Software Foundation, Inc.
# sphinx <yishanj13@gmail.com>, 2014.
#
msgid ""
msgstr ""
"Project-Id-Version: hello\n"
"POT-Creation-Date: 2014-02-02 16:22+0800\n"
"PO-Revision-Date: 2014-02-02 18:53+0800\n"
"Last-Translator: sphinx <yishanj13@gmail.com>\n"
"Language-Team: Chinese (simplified)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: zh_CN\n"

#: hello.c:11
msgid "Hello,GetText!\n"
msgstr "你好,GetText!\n"

#: hello.c:12
msgid "How are you\n"
msgstr ""

Message catalogs(after you tranlate :))
===================================================================
msgfmt -c -v -o hello.mo zh_CN.po 
cp -f hello.mo /usr/share/locale/or_IN/LC_MESSAGES
Output
===================================================================
gcc hello.c -o hello
./hello
>你好,GetText!
>你好吗



Optimize
===================================================================
1    #include <libintl.h>
2    #include <locale.h>
3    #include <stdio.h>
4    #include <stdlib.h>
5   #define _(STRING) gettext(STRING)
6 #define PACKAGE "hello" 8 int main(void) 9 { 10 setlocale(LC_ALL, ""); 11 bindtextdomain(PACKAGE, "/usr/share/locale"); 12 textdomain(PACKAGE); 13 14 printf(_("Hello,GetText!n")); 15 return 0; 16 }
Reference
===================================================================
----excellent!I follow it,just little problems, the explanation and catalog are so good.
----A Chinese guide, optimized, without merge.

2014年1月30日星期四

Gnome new features in each release( from 1.4)

首先,新年好~~
First of all, happy Chinese New Year~~

Gnome 1.4 is a little aboriginal, focusing on enhancing user experience in function.

In Gnome 2.x,assistive technology was brought into consideration.

Gnome 1.4
===================================================================

keyword:interoperability

program:Nautilus,Sawfish,Medusa

develop tool:GNOME-VFS,Bonobo,Xml-i18n-tools,GConf

                        Enhanced Language Bindings,Enhanced GNOME Display Manager

===================================================================


"Nautilus – a new file manager and desktop environment that allows users to "
"easily manage their files, browse the web and access web-based services "
"through a sophisticated, customizable interface. For example, GNOME users "
"can select any word in a text document and do a Google search on that term "
"or look up the word in an online dictionary."

"Nautilus — 新的文件管理器和桌面环境,使用户能够通过一个精密的,可定制的"
"界面轻松地管理文件,浏览网页和访问基于 Web 的服务,。例如,GNOME 用户可以"
"选择在文本文件中的任何单词,在谷歌上搜索这个词,或者在网上字典查找此单词。"


 "Better support and interoperability with KDE and legacy X applications"

 "为 KDE 和传统的 X 应用程序提供更好的支持和互操作性"

"New Application Launch Feedback lets the user know when a program is in the "
"process of being loaded."

"新的应用程序启动反馈让用户知道,程序正在加载的过程中。"

"Sawfish window manager is now a standard part of GNOME. All aspects of the "
"user interface are customizable through Sawfish, including complete "
"configuration of the look and feel of the desktop."

"Sawfish 窗口管理器现在是 GNOME 的标准部件。通过 Sawfish 定制用户界面"
"的所有方面,包括桌面的外观和感觉的完整配置。"


"Easier to use and more intuitive help browser and help system, boasting "
"extensive documentation covering all aspects of GNOME operations."

"更容易使用和更直观的帮助浏览器和帮助系统,拥有丰富的文档,"
"覆盖 GNOME 业务的各个方面。"

 "GNOME Fifth Toe, a broad collection of applications that run on GNOME."

 "GNOME 第五趾,运行在 GNOME 上应用程序的广泛收集。"


"Medusa, the new GNOME searching/indexing package. Medusa is a content and "
"file indexing system that performs quick searches of a user’s hard drive."

"Medusa,新的 GNOME 搜索/索引包。 Medusa 是内容和文件索引系统,"
"对用户的硬盘驱动器进行快速搜索。"


"“The goal of GNOME was to create a program that could be used by anyone.” "
"Miguel de Icaza, president of the GNOME Foundation said. “GNOME 1.4 reaches "
"that goal and more. The hundreds of volunteers and paid programmers who have "
"worked on the project have created a program that is powerful, both for the "
"user and the developer.” GNOME 1.4 will also include a number of "
"enhancements for developers, including:"

"“GNOME 的目标是创建一个人人可用的程序。” GNOME 基金会总裁 Miguel de Icaza "
"说。 “GNOME 1.4 达到目标,做得更好。参与该项目的数百名志愿者和有偿程序员们"
"创造了这个程序,无论对用户还是对开发人员来说都功能强大。“ GNOME 1.4 还包括开发者增强包,包括:"

"GNOME-VFS – The GNOME Virtual File System provides an abstraction to common "
"file system operations like reading, writing and copying files, listing "
"directories and so on. GNOME-VFS is extensible and usable from any "
"application on the GNOME desktop."

"GNOME-VFS — GNOME 虚拟文件系统为常见的文件系统操作提供了抽象,如读,写,复"
"制档案,列出目录等等。 GNOME-VFS是可扩展的,GNOME 桌面上的任何应用程序都可使用。"


"Updated Bonobo Component Model – 1.4 will include developments in the "
"interfaces that provide standard component programming and program "
"interoperability in Linux and Unix."

"更新的 Bonobo 组件模型 — 1.4 将包括接口,提供标准组件的可编程和在 Linux 和 Unix 的"
"程序互操作性的发展。"


"Xml-i18n-tools – a set of tools for better internationalization and "
"localization of GNOME. Xml-i18n-tools contain some utility scripts for "
"internationalizing various kinds of XML files. In addition, it has a merging "
"feature, which will be extended to handle desktop and MIME files in the "
"future."

"XML-i18n 工具 — 更好的国际化和本地化的一套 GNOME 工具。 XML-i18n 工具包含了"
"一些国际各种 XML 文件的实用脚本。此外,它还有合并功能,这将被扩展到处理桌面和 MIME 文件。"


"GConf, a sophisticated system for storing configuration information. It "
"provides a notification service so applications can be notified when a "
"configuration setting changes. changes. Gconf also allows for pluggable "
"storage backends (text files, databases, etc.) and gives administrators "
"control over default and mandatory settings."

"GConf信息,用于存储配置信息的先进系统。它提供了一个应用程序通知服务,以便"
"配置或设置改变时,可以通知应用。GConf 还将允许可插拔的存储后端(文本文件,数据"
"库等),在默认情况下,强制设置管理员控制。"


"Enhanced Language Bindings – facilitating the use of GNOME from a number of "
"programming languages. Language bindings included with GNOME 1.4 for Gtk+ "
"include C, C++, Objective C, Ada, Perl, Python, Guile, TOM, Eiffel, Dylan, "
"JavaScript, Pike, Pascal and Haskell. Many of these languages also have "
"support for GNOME widgets available."

"增强的语言绑定 — 促进多种编程语言使用 GNOME。GNOME 1.4 GTK+ 的语言绑定包括"
"C,C++,Objective C,Ada,Perl,Python,Guile,TOM,Eiffel,Dylan,"
"JavaScript,Pike,Pascal 和 Haskell。这些语言中许多支持 GNOME 组件的开发。"


"Enhanced GNOME Display Manager – A re-implementation of the well-known xdm "
"(X Display Manager) program that features X authentication, default and per-"
"display initialization scripts, pre and post-session scripts, pluggable "
"authentication modules and TCP wrappers for access control."

"增强 GNOME 显示管理器 — 知名的 XDM ( X 显示管理器)程序的重新实现,新增特性"
" X 认证,默认初始化脚本和每个显示器的初始化脚本,会话前后脚本,"
"可插拔认证模块和 TCP 访问控制包装。"


2014年1月29日星期三

Gvim and Lokalize

在翻译过程中,使用最多的工具当属于 Gvim 和 Lokalize

此处先讲一下如何使用这两种工具快速进入翻译的工作,后面将会有博客专门讲如何更好的使用 vim 这一强大的工具。

简单的说,Gvim 在翻译篇幅不长的文件,同类文件参考时有奇效。

1. Gvim 配置

https://code.google.com/p/i18n-zh/wiki/EditPoFilesWithVimOrEmacs

按照链接中配置好后,就可以开始翻译了。

vim 中的survive级别命令就不介绍了。直接讲一些翻译中常用的快捷键。

原版的po.vim是这样的:                                                  
"     Action                            Key mappings                 Insert   Normal
"     =================================================================
"     Move to a string (transl. or untransl) forward           \m     \m
"     Move to a string (transl. or untransl) backward        \M     \M
"     Begain to comment this entry                                   \C     \C
"     Move to an untransl. string forward                         \u     \u
"     Move to an untransl. string backward                      \U     \U
"     Copy the msgid string to msgstr                               \c    
"     Delete the msgstr string                                            \d    
"     Move to the next fuzzy translation                           \f     \f
"     Move to the previous fuzzy translation                    \F     \F
"     Label the translation fuzzy                                       \z     \z
"     Remove the fuzzy label                                           \Z     \Z
"     Show msgfmt statistics for the file(*)                       \s     \s
"     Browse through msgfmt errors for the file(*)           \e     \e
"     Put the translator info in the header                          \t     \t
"     Put the lang. team info in the header                        \l     \l
"     Format the whole file(wrap the lines etc.)                \W     \W
"     -----------------------------------------------------------------
"     (*) Only available on UNIX computers.

翻译版本:

插入模式下:                                         图形模式       文本模式    ======================================================================                                              
移至下一个未翻译的字符串                             Shift-F1           \m移至上一个未翻译的字符串                             Shift-F2           \p msgid 的内容复制到 msgstr                         Shift-F3           \c删除 msgstr 的内容                                   Shift-F4           \d移至下一个模糊的翻译                                 Shift-F5           \f移至上一个模糊的翻译                                 Shift-F6           \b将翻译标记为模糊翻译                                 Shift-F7           \z删除模糊翻译标记                                     Shift-F8           \r检查并显示翻译中的 msgfmt statistic 统计信息(*)      Shift-F11          \s检查并浏览翻译中的 msgfmt 统计错误信息(*)            Shift-F12          \e将译者信息放入文件头                                    \t              \t将翻译组织信息放入文件头                                \l              \l---------------------------------------------------------------
正常模式下:                                          图形模式       文本模式    ======================================================================                                              
移至下一个未翻译的字符串                              Shift-F1           \m移至上一个未翻译的字符串                              Shift-F2           \p移至下一个模糊的翻译                                  Shift-F5           \f移至上一个模糊的翻译                                  Shift-F6           \b将翻译标记为模糊翻译                                  Shift-F7           \z删除模糊翻译标记                                      Shift-F8           \r在当前光标处分屏打开文件                                gf               gf检查并显示翻译中的 msgfmt statistic 统计信息(*)       Shift-F11          \s检查并浏览翻译中的 msgfmt 统计错误信息(*)             Shift-F12          \e将译者信息放入文件头                                     \t              \t将翻译组织信息放入文件头                                 \l              \l--------------------------------------------------------------- 

个人还是比较喜欢Shift的快捷键。



补全


类似文件对比

========================================================================
Lokalize

http://userbase.kde.org/Lokalize


lokalize在翻译大文件的时候有很好的优势,可以在过滤中找出empty,not-ready的来翻译。有需要前后参照时可以在搜索框中搜索。
在输入框中调整每行的字数多少。在Gvim中由于每行的首尾都有",所以修改起来麻烦。

更好的功能是相似的会有建议是否采用之前的翻译,可以大大节省时间。用于桌面的翻译比较好,但是像网站这种第一次翻译的东西,就只能从0开始了。55555555

趁着今天想到这两样需要比较,先粗略写写,过两天加上更合适的截图以及相关英文翻译。

=======================================================================
剩下的时间可能定期把vim的一些用法普及下,vim是非常非常好的工具,可惜我还比较皮毛,所以也是共同学习的过程吧。
今年的Gnome Asia主题和desktop有关,正好在翻译中涉及到许多官方的评价,以及设计师的访谈。后续会至少再写一篇,宣传下gnome 3.8 的设计理念。
作为中国码农,中科红旗的事情,让各位码农的心里都。。。网站中也提到中科红旗和GNOME的合作,翻译完可以放出来缅怀一下。。。
另外,我和mentor都希望把网站的翻译po文件如何编译,然后本地搭建一下网站,看看翻译过来的效果如何,有问题再调整。但是mentor很忙,本人能力较菜,有熟悉gettext的朋友,希望不吝赐教。
还有千余条巨长无比的官方发言,且待我慢慢翻译。




2014年1月28日星期二

Things don’t stand still -- "GNOME 3.8 - Jon McCann talks of future in GNOME"

Many friends who use GNOME complained about how much different when using GNOME 3, could not find the same feeling with GNOME 2. Some even thought it was stupid copycat. I am good with the change, better user experience, but I hope my friend could enjoy their desktop no matter what they use and respect the design of different style designer.

我很多用 GNOME 的朋友们都抱怨 GNOME 3 变化了太多,和用 GNOME 2 的感觉不一样。甚至认为这是愚蠢的照搬,我对变化适应的还好,用户体验不错。但是我希望我的朋友们可以享受他们的桌面系统,无论他们选择了哪一种, 并且尊重不同风格的设计。

Here is the interview I found in gnome website(the one I am translating, so many ,so long ,oh man!), now we have Jon McCann, who answered the question of the design style changing, and talked the future in GNOME.

以下是我在 gnome 网站(就是我正在翻译的那个)上找到的访谈。我们有 Jon McCann 来回答这些问题,并且畅谈 GNOME 的未来。


#: /srv/http/www.gnome.org/html/wppo/dynamic.xml:5318(post/title)
msgid "GNOME 3.8 - Jon McCann talks of future in GNOME"
msgstr "GNOME 3.8 - Jon McCann 畅想 GNOME 未来"

#: /srv/http/www.gnome.org/html/wppo/dynamic.xml:5321(html/p)
msgid ""
"The GNOME Project is proud to announce the imminent release of GNOME 3.8 in "
"less than two weeks. As with every release, there are many new features and "
"technical improvements. We asked William Jon McCann, a GNOME designer, about "
"the direction of the project and what he is anticipating for GNOME in the "
"future."
msgstr ""
"GNOME 计划自豪地宣布 GNOME 3.8 在两个星期内即将发布。"
"和每个版本相同,有很多新的功能和技术改进。"
"我们请教了 GNOME的设计师 William Jon McCann, "
"该项目的方向和他对 GNOME 未来的期待。"

#: /srv/http/www.gnome.org/html/wppo/dynamic.xml:5322(html/p)
msgid ""
"<strong>Question</strong>: GNOME 3.8 is going to be released. As always, "
"your work has been very impressive in this release cycle. What are the "
"features you’re most proud of?"
msgstr "<strong>问题</strong>:GNOME 3.8 就要发布了,与以往一样,这一次发布周期中你的工作让人印象深刻。"

#: /srv/http/www.gnome.org/html/wppo/dynamic.xml:5323(html/p)
msgid ""
"<strong>Answer</strong>: For me, one of the things that I’m quite happy "
"about is to see a lot of focus on improving the experience for application "
"developers – in addition to the usual effort to improve the experience for "
"our users. We’ve been doing a number of things to move this forward, but one "
"of the most helpful has been to become application developers ourselves in "
"order to really understand what is needed."
msgstr ""
"<strong>回答</strong>:对于我来说,我是很高兴的一件事"
"大概是看到了很多精力放在改善应用开发者的体验上- 除了通常的努力来改善用户体验。"
"我们已经做了一些事情,以推动这一进步,但"
"最有帮助的是自己成为应用程序开发人员真正了解需要什么。"

#: /srv/http/www.gnome.org/html/wppo/dynamic.xml:5324(html/p)
msgid ""
"We started with a number of designs for some core applications that solve "
"very common problems and then we set out to find the best and easiest way to "
"get them done. GNOME Documents is a good example."
msgstr ""
"我们从解决核心应用程序常见问题的设计开始,"
"然后我们开始寻找到最好的和最简单的方法去实现设计。"
"GNOME 文档是一个很好的例子。"

#: /srv/http/www.gnome.org/html/wppo/dynamic.xml:5325(html/p)
msgid ""
"We started the project a few releases ago in order to prototype some new "
"design patterns. We learned a lot in that process. We found that many of the "
"tools we needed – just were not there.<br/> So we set out to create new "
"tools, new widgets, new patterns, and I think in 3.8 we’re finally starting "
"to see this take shape. Documents at this point is a very capable document "
"reader, as good as anything else out there."
msgstr ""
"我们在几个版本前开始这个项目为一些新的 "
"设计模式做原型。我们在这个过程中学到了很多。我们发现很多需要的工具 - 只是不在那里<br/>"
"于是我们着手创建新的工具,新部件,新的模式,我认为在 3.8 终于初具规模。"
"在这一点上 Documents 是一个功能强大的文件阅读工具,和其他同类产品一样。"

#: /srv/http/www.gnome.org/html/wppo/dynamic.xml:5327(html/p)
#, fuzzy
msgid ""
"But perhaps as interesting as that is that in the process we have had to "
"create a new library of tools (libgd) that has proven to be incredibly "
"useful for creating new applications, and has essentially become the staging "
"ground for the next generation of the application development toolkit for "
"GNOME – GTK."
msgstr ""
"但有趣的是在这个过程中,我们不得不 "
"创建新的工具库(libgd),该库在创建新的应用时非常好用,"
"并且已经基本上成为下一代 GNOME 应用程序开发工具包 - GTK 的舞台。"

#: /srv/http/www.gnome.org/html/wppo/dynamic.xml:5328(html/p)
msgid ""
"I think we’re going to see a lot of exciting changes happening in the next "
"few months in this space. And I’m incredibly excited about it."
msgstr "我认为未来几个月在这里我们将看到很多令人兴奋的变化发生。因此我非常兴奋。"

#: /srv/http/www.gnome.org/html/wppo/dynamic.xml:5329(html/p)
msgid ""
"<strong>Question</strong>: GNOME 3 has introduced a fresh user experience, "
"but nevertheless, has been severely criticized. Do you believe that GNOME "
"Classic could be a replacement for GNOME 2-nostalgics? Or how do you "
"consider GNOME Classic?"
msgstr ""
"<strong>问题</strong>:GNOME 3 倡导了新的用户体验, "
"但却备受批评。你相信 GNOME Classic 可以取代 GNOME 2-nostalgics 吗?"
"你如何看待 GNOME Classic?"

#: /srv/http/www.gnome.org/html/wppo/dynamic.xml:5330(html/p)
msgid ""
"<strong>Answer</strong>: Nostalgia is a very interesting thing. I think most "
"of the time if you look at it carefully you see that it is most often a "
"longing for a past that never existed, a romantic notion of what was."
msgstr ""
"<strong>答案</ strong>:怀旧是一个很有意思的事情。我想大多数 "
"时候如果你仔细思考的话你会发现这最常见于"
"对再也不存在的过去的渴望,浪漫的怀想它曾经的样子。"

#: /srv/http/www.gnome.org/html/wppo/dynamic.xml:5331(html/p)
msgid ""
"And there is certainly some of that here. We know this because we wrote "
"GNOME 2 – the same people that wrote GNOME 3; that said, for some people "
"GNOME 2 suits them better, I don’t doubt that and, honestly, I think they "
"should be free to continue to use GNOME 2 forever, but it is incredibly hard "
"to do so."
msgstr ""
"肯定是有一些怀旧的因素。我们知道这一点,因为 GNOME 2 是我们的作品 - "
"也就是我们这些人创造了 GNOME 3;这么说,对某些人来说 "
"GNOME 2 更适合他们,我不怀疑这一点,老实说,我认为他们 "
"应该永远自由地使用 GNOME 2,但是这样却非常困难。"

#: /srv/http/www.gnome.org/html/wppo/dynamic.xml:5332(html/p)
msgid ""
"One reason for this is the nature of the distribution model we use to "
"deliver our work: it is a train that doesn’t stop and that never really "
"stops at any of the stations; and sometimes people either don’t want to "
"continue on – or don’t really like how fast it is going., and that is fine."
msgstr ""
"其中一个原因是,我们使用来交付工作的分配模型的性质 "
":它是一列不停止列车,从来没有真正 "
"停在任何一个站,有时人们要么不希望 "
"继续 - 或者真的不喜欢它如此快速的行进,这没有关系。"

#: /srv/http/www.gnome.org/html/wppo/dynamic.xml:5333(html/p)
msgid ""
"We should allow them to get off at any of the stops. We should have the "
"stops in the first place and those stops should not disappear after a "
"certain amount of time and force them back on the train.<br/> In order to "
"make this happen we need to consider our work more like a whole product."
msgstr ""
"我们应该允许他们在任何一站下车。我们本应该在首位设置车站的,这些车站不应该在一定时间后消失 "
"并逼迫乘客回到列车上。<br/>为了 "
"实现这一目标,我们需要考虑使我们的作品更像是完整的产品。"

#: /srv/http/www.gnome.org/html/wppo/dynamic.xml:5335(html/p)
msgid ""
"We need to move away from the idea that all the cars are moving in different "
"directions: they all arrive at the station at the same time."
msgstr "我们需要改变所有的车都在朝着不同方向前进的想法:它们在同时到达车站。"

#: /srv/http/www.gnome.org/html/wppo/dynamic.xml:5336(html/p)
msgid ""
"For this, we need to consider the entire experience – we need to create an "
"operating system, a cohesive and coherent, integrated user experience and "
"developer experience that will allow us to continue to move ahead without "
"losing steam and still allow regular stops to occur."
msgstr ""
"对于这一点,我们需要考虑整个体验 - 我们需要创建一个 "
"操作系统,它连贯且具有一致性,集成用户体验和 "
"开发人员的经验,使我们能够继续前进而不 "
"失去动力,并允许定期停止发生。"

#: /srv/http/www.gnome.org/html/wppo/dynamic.xml:5337(html/p)
msgid "We can’t afford to stop and just look back. Things don’t stand still."
msgstr "我们不能承受回首过往而停止前进。世界总会改变的。"

#: /srv/http/www.gnome.org/html/wppo/dynamic.xml:5338(html/p)
#, fuzzy
msgid ""
"<strong>Question</strong> During the last months, Windows 8/RT became an "
"interesting competitor of Android and iOS in mobile environment. Which of "
"them is more inspiring for you, in developing a new design language for "
"GNOME?"
msgstr ""
"<strong>问题</ strong>在过去的几个月中,Windows8/RT 成为 "
"在移动环境中 Android 和 iOS 有趣的竞争对手。"
"它们中哪一个更令你振奋,为其开发新的 GNOME 设计语言?"

#: /srv/http/www.gnome.org/html/wppo/dynamic.xml:5339(html/p)
msgid ""
"<strong>Answer</strong> There is just a wild amount of innovation occurring "
"at the moment, I don’t recall anything like it. To me this is fascinating "
"and fun, I tend to act a bit like a user experience entomologist, observing, "
"testing, and cataloging the ecosystem. There has never really been such a "
"dynamic and rich environment. And the truth is no one really knows what the "
"future looks like but what is great is that this doesn’t stop people from "
"trying to create it."
msgstr ""
"<strong>答案</strong>此时此刻有大量的创新正在产生,"
"我不记得过去有这样的事情。对我来说这是令人着迷 "
"和有乐趣的,我倾向于扮演一个用户体验的昆虫学家,观察, "
"测试和编目生态系统。从未真正有过这样的 "
"动态,丰富的环境。事实上没有人真正知道 "
"未来的样子,但真正伟大的是,这并不能阻止人们 "
"试图创建它。"

#: /srv/http/www.gnome.org/html/wppo/dynamic.xml:5340(html/p)
msgid ""
"You learn from what doesn’t work as much if not more than from what does: "
"that’s how progress works."
msgstr ""
"你从什么行不通中学到的和从什么行得通中同样多: "
"这就是进步。"

#: /srv/http/www.gnome.org/html/wppo/dynamic.xml:5341(html/p)
msgid ""
"To me, that is the inspiring thing, that all of them exist – are all very "
"interesting – and that we don’t know what tomorrow will bring."
msgstr ""
"对我来说,这是鼓舞人心的事情,它们都存在 - 都是非常 "
"有趣的 - 而我们不知道明天会带来什么。"

#: /srv/http/www.gnome.org/html/wppo/dynamic.xml:5342(html/p)
msgid ""
"<strong>Question</strong>: Recently Ubuntu has released a new mobile "
"version. When can we expect to see a GNOME phone or a GNOME tablet?"
msgstr ""
"<strong>问题</strong>:最近 Ubuntu 发布了一个手机新版本。什么时候我们开始期待看到 GNOME 手机或者GNOME平板。"

#: /srv/http/www.gnome.org/html/wppo/dynamic.xml:5343(html/p)
msgid ""
"<strong>Answer</strong> When a partner steps up to work with the project to "
"make it happen, which is one of the really great things about the position "
"GNOME plays in the open source movement. We aim to create an operating "
"system that is better than anything that exists. Better for users. Better "
"for developers."
msgstr ""
"<strong>回答</strong>当合伙人开始和项目合作使其实现的时候,对于 GNOME "
"在开源运动中所起的作用是一件非常重大的事情。我们的目标是创造一个比所有现存操作系统更好的操作系统。对用户来说更好,对开发者来说也更好。"

#: /srv/http/www.gnome.org/html/wppo/dynamic.xml:5344(html/p)
msgid ""
"But what some people don’t realize is that because we are a non-profit that "
"isn’t controlled by a single corporation, there are opportunities for "
"partners that don’t exist anywhere else."
msgstr ""
"但有些人不知道的是,因为我们是非营利的 "
"不是由单个公司控制,任何的合作伙伴都有机会。"

#: /srv/http/www.gnome.org/html/wppo/dynamic.xml:5345(html/p)
msgid ""
"We are the level playing field and this is something that we’ve seen "
"partners really value: we are an open project in every sense of the word. "
"So, I can’t give you any specifics but I think this is something that would "
"be really neat to see if it was done properly."
msgstr ""
"我们在公平竞争的环境中,并且我们知道 "
"合作伙伴的重要性:我们是完全意义上的开放项目。 "
"所以,我不能给你任何细节,但我认为看它是否被正确完成是显而易见的。"

#: /srv/http/www.gnome.org/html/wppo/dynamic.xml:5346(html/p)
msgid ""
"<strong>Question</strong>: How do you like to draw the future of GNOME, "
"based on distro/packages system or on free apps? Or what else?"
msgstr ""
"<strong>问题</strong>:你如何去描绘 GNOME 未来的蓝图,"
"基于发行版/包的系统或免费的应用程序?还是什么别的?"

#: /srv/http/www.gnome.org/html/wppo/dynamic.xml:5347(html/p)
msgid ""
"<strong>Answer</strong>: The future of GNOME is pretty clear. The world’s "
"premier and, in fact, only truly free software operating system. We’ve "
"reached the end of the utility of the package based mentality that has been "
"effective at getting us to where we are now. It was a useful implementation "
"detail but we got a little kooky about it: we turned it into our identity."
msgstr ""
"<strong>回答</strong>:GNOME 的未来相当明确。世界上最好的,事实上,唯一的真正自由软件操作系统。"
"我们已经进入功能实现的尾声,基于包的设计思想使我们高效进展至此。这是一个有用的实现细节,但是说到他"
"我们变得有点古怪:我们把他融入了我们本身。"

#: /srv/http/www.gnome.org/html/wppo/dynamic.xml:5348(html/p)
msgid ""
"It turns out that it is now holding us back, we can’t afford to be "
"sentimental about bits."
msgstr "事实证明,它此时已阻止我们前进,我们不能为此感伤。"

#: /srv/http/www.gnome.org/html/wppo/dynamic.xml:5349(html/p)
msgid ""
"They served their purpose and now we need something different, we’re in the "
"process of determining what that will look like but we know it will be a "
"dramatically better experience for our users and for application developers "
"and for our partners."
msgstr ""
"他们已经达到了目的,现在我们需要一些不同,我们还在"
"确定它是什么样子的,但是我们知道它会有更好的用户体验,"
"无论是对我们的用户,应用程序开发人员,还是我们的合作伙伴。"

#: /srv/http/www.gnome.org/html/wppo/dynamic.xml:5350(html/p)
msgid ""
"It will make it much much easier for our downstream partners to integrate, "
"test, and deliver their products and to make our partnership much stronger "
"in the process: more focused collaboration, much less conflict."
msgstr ""
"它将使我们对下游合作伙伴的整合, "
"测试,提供产品变得更容易,并在这个过程中让我们的合作关系更紧密"
":更多聚焦协作,更少意见冲突。"

#: /srv/http/www.gnome.org/html/wppo/dynamic.xml:5351(html/p)
msgid ""
"For details, I’d like to refer our readers to the discussions on the GNOME "
"OS list."
msgstr "至于具体细节,我想引用我们读者在 GNOME OS 列表上的讨论。"

#: /srv/http/www.gnome.org/html/wppo/dynamic.xml:5352(html/p)
msgid ""
"<strong>Question</strong>: In some recent interviews, Linus Torvalds "
"expressed his appreciation of GNOME Shell Extensions. What is your position "
"on extensions?"
msgstr ""
"<strong>问题</strong>:在最近的一些访谈中,Linus Torvalds 表达了他对 GNOME Shell 扩展的欣赏。"
"请问您在扩展程序中所起的作用是什么?"

#: /srv/http/www.gnome.org/html/wppo/dynamic.xml:5353(html/p)
msgid ""
"<strong>Answer</strong>: Extensions are a great technology. And they have "
"proven to be very useful for tweaking some of aspects of the operating "
"system shell: it is great to see new and old contributors using them to "
"experiment."
msgstr ""
"<strong>回答</strong>:扩展是很好的技术,已经证明了在微调系统 shell 方面很有用:"
"非常高兴看到新老贡献者使用扩展来做实验。"

#: /srv/http/www.gnome.org/html/wppo/dynamic.xml:5354(html/p)
msgid ""
"We’ve responded to this interest by making some of them obsolete. We’ve "
"incorporated some of the most popular extensions into the core in the last "
"few GNOME releases."
msgstr ""
"作为对这种兴趣的回应,我们摒弃了一些过时应用。我们已经 "
"在最新的 GNOME 版本中将一些最流行的扩展结合到核心中 。"

#: /srv/http/www.gnome.org/html/wppo/dynamic.xml:5355(html/p)
msgid ""
"<strong>Question</strong>: During the latest GNOME Developer Experience "
"Hackfest you told us that “Some really cool stuff is coming”. Would you give "
"us some spoilers?"
msgstr ""
"<strong>问题</strong>:在最近的 GNOME 开发者经验黑客大会上您告诉我们“一些真的很酷的东西将要到来”。"
"您愿意给我们剧透一点吗?"

#: /srv/http/www.gnome.org/html/wppo/dynamic.xml:5356(html/p)
msgid ""
"<strong>Answer</strong>: I’ve already mentioned a couple of the awesome "
"things we’re working on. In essence: applications. Applications are coming. "
"These are very exciting times."
msgstr ""
"<strong>回答</strong>:我已经提到我们正在做的一些极酷的事情。总体说:应用。有些应用将要发布,"
"那将会是激动人心的时刻。"

#: /srv/http/www.gnome.org/html/wppo/dynamic.xml:5357(html/p)
msgid ""
"Awesome! It seems the best is yet to come! Thank you very much Jon for "
"spending time with us and for your amazing efforts to deliver the best user "
"experience for everyone!"
msgstr ""
"太棒了!似乎是最好的还在后头呢!非常感谢你 jon, "
"感谢你和我们分享时光,感谢你惊人的努力,为每个人提供最佳的用户体验!"

2014年1月5日星期日

Translation project 101

The propose of this article it to help new Gnomer become translation, especially help the Chinese who would like to join Chinese translation team but have troubles to handle all the English Guide . As a woman, I hope more women could be interested in or even a part of open source.

本文的目的是帮助 Gnome 新人成为翻译者,特别是帮助那些想加入中文翻译团队却因为英文  guide 而头疼的成员。作为女性,我希望更多女性对开源项目感兴趣,甚至成为其中一员。

I once tried to be a GNOME translator, so I found out ways to follow the guide of GNOME, but the translation is not in good format, not accepted. At that time I was wondering how hard translation will be. Until be taught by my mentor now, who are the committer of Chinese Translation team, the speaker of GNOME Asia 2013. If you get any questions with translation and workflow, you could ask himfor help.

今年早些时候,我试着加入GNOME团队,做过一点翻译,质量不是很理想。主要原因是对整个翻译的team以及工作流程了解的不够。感谢我的mentor,给了我许多帮助,他是GNOME 中文团队的committer,如果你在翻译过程中有任何问题,可以请教他。

The most important thing that I have learned is "work with the team".

翻译最首要的是:和团队协作。

So I would like to write an introducing guide in my way from failure,I will introduce the team in the first place.

所以我将自己从失败中学到的攻略分享给大家,会着重提到GNOME 中文翻译团队。

Here is the content of this blog
1. Register
2. Find a team
2.1 Translation roles
2.2 Introduce of Chinese translation team
3. Choose a file
4. Choose an editor
5. Basic skill
6. Workflow

以下为本文的目录
1.注册
2.加入团队
2.1团队中的角色
2.2 中国翻译团队的介绍
3.选择翻译文件
4.选择翻译编辑器
5.需要掌握的基本技能
6.工作流简要了解

1.Register

Before the whole translation introducing, I would like to talk about the quick-start with you guys.
在正式介绍整个翻译的具体知识之前,我们还是先快速了解下如何快速成为翻译者。

Register at https://l10n.gnome.org/register/

注册 l10n

2.Find a team

Join your team at http://l10n.gnome.org/users/team_join/

如果你是中国大陆的翻译者,请加入中文简体的团队

Knowing the translation roles will help you work better with the team.

了解团队中的角色至关重要,涉及到沟通,合作。

2.1 Translation roles

Translator

Translators contains persons helping with GNOME translations into a specific language, who added themselves to the translation team. Translators could add comment to a specific PO file translation, could reserve it for translations and could suggest new translations by upload a new PO file. The suggested translations will be reviewed by other team members.

翻译者

翻译者列表列出了所有有意向帮助翻译 GNOME 到该语言的人员,这些人员是自己将自己加入到其中的。 翻译者可以在 PO 翻译文件的页面上留下评论、占用文件进行翻译,或者是上传文件以便提交新的更新建议。上传的文件将被其他人审阅。

Reviewers

Reviewers are GNOME translators which were assigned by the team coordinator to review newly suggested translations (by translators, reviews or committers). They have access to all actions available to a translators with the addition of some reviewing task (ex reserve a translation file for proofreading, mark a translation as being ready to be included in GNOME).

审阅者

审阅者是小组指定的审阅新翻译的人员,他们有翻译者可用的全部权限,此外还有用于完成审阅的几个操作(占用文件进行审阅、标记翻译为可以提交等)的权限。

Committers

Committers are people with rights to make changes to the GNOME translations that will be release. Unless a translations is not committed by a committer, it will only remain visible in the web interface, as an attached po file.

Committers have access to all actions of a reviewer with the addition of marking a po file as committed and archiving a discussion for new suggestions.

提交者

提交者是小组中有权限将翻译提交到 GNOME 仓库并使之可以在软件下一次发布时一并被发行的人。如果没有提交者进行操作,所有的翻译、审阅都仅仅是在此网页平台上,而不能被应用到实际的仓库中。

提交者有审阅者可用的全部权限,同时还可以标记文件为已提交并将讨论归档以便接受新的翻译。

If you would like to know some useful information of being a translator and translation itself, following is the helping mail I received when I asked questions .


如果你想要了解一些成为翻译者以及翻译本身的资料,分享一份我收到的邮件,希望可以减少翻译组同学们的重复回复:

Glad to hear from you, here is a brief guide for participating:
https://live.gnome.org/TranslationProject/ContributeTranslations/zh

And here is a guide for conventions in translations:
http://people.ubuntu.com/~wzssyqa/gnome-translation-details.pdf

A tool for querying existing translations using web/sqlite (thanks
csslayer for hosting):
https://www.csslayer.info/l10n

Finally we have more related materials to look up when needed:
http://people.ubuntu.com/~happyaron/l10n/

3.Choose a file

Click the link into the release you prefer, and find a untranslated file suits your time and ability. Usually the stable release first, for the development may not frozen.

以上是按照发行版来归类的文件,点击链接进入,可以选择还未翻译的文件,占用并翻译。

一般来说先翻译stabledevelopment版本在代码未冻结之前,都是可能改变的。
Here is the possible states of file.

No status --无状态 --可以占用
Translating --被占用 --不可以
Proofreading --审阅中 --不可以
To commit --已提交 --不可以
Needs rework --需重做

There is a wonderful guide of choosing file.

4. Choose an editor
Editors I use now
    1. GVim (highly recommend) with po.vim plugin
GVim 快捷键操作方便,界面美观,跨平台应用

    1. Lokalize (KDE)
过滤器功能很好,适合翻译较多的文件

Other tools you may prefer:

poEdit -- www.poedit.net/
Virtaal -- www.virtaal.org/
OmegaT -- www.omegat.org/
Emacs with po-mode.el -- www.gnu.org/software/emacs/

  1. Basic skill
Don’t be upset, translation is not that hard, here is a simple one.

If you are not sure of your translation, you can tag it as “fuzzy”, like the following done.

If you would like to query existing translations, ask csslayer

In the following blog I will introduce some skill of gvim and vim use.