linux学习记录
分类:
2011-02-23 15:53:49
讯息原文的标点符号需要保留的话,应该全部变成全角。以包号(.)、冒号(:)、分号(;)、问号(?) 和感叹号(!) 结尾的讯息都必需以该标点符号的全角 (。:;?!)结尾。
含下划线 "_" (underscore) 的讯息多数是选单项目或而对话盒标签,显示时会将随后的字符加上底线,表示可以按 Alt-Key 跳到该项目。
msgid "_Edit"
msgstr "编辑(_E)"
翻译中文时应该下划线将随后的字符转成大写,和下划线一起用括号括住并放在整个字串尾。
以冒号 ":" (colon) 为尾的讯息多数是对话盒标签,例如:
msgid "User_name:"
msgstr "用户名称(_N):"
翻译中文方法和没有冒号的差不多,但括住的捷径键应放在讯息和全角冒号之间。
对某些语言来说,名词所指的物件数量会影响整个句字。例如英语中,物件数量多过 1 ,名词就需要加 s 或 es 尾,动词如为 is 或 has 就要分别变成 are 和 have 等。
为处理这类词语的变化,讯息会多一行
表示讯息附有众数形式。例如:#: embed/downloader-view.c:406
#, c-format
msgid "About %d second left"
"About %d seconds left"
msgstr[0] "Noch ca. %d Sekunde"
msgstr[1] "Noch ca. %d Sekunden"
以上是 epiphany 德文 po 的其中一个讯息。德文和英文一样亦有众数式,所以 msgstr 有两个值。如果 %d 对应的值等于或少于1,会使用正常讯息的译文 msgstr[0]。如果 %d 对应的值多于 1,则使用众数讯息的译文 msgstr[1]。
由于中文一般没有众数式之分。所以翻译有 Plural-Forms: nplurals=1; plural=0;
」,例如:
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Plural-Forms: nplurals=1; plural=0;
nplurals 表示这个 po 共有几多个众数式,而 plural 亦是一个 C 语言算式表示那个时候使用那个 msgstr 。 以上的 Plural-Forms 就表示中文只有一个众数式,无论数量为何都只使用 msgstr[0]。而有关讯息就应该变成:
#: embed/downloader-view.c:406
#, c-format
msgid "About %d second left"
"About %d seconds left"
msgstr[0] "大约还剩 %d 秒"
只需一个 msgstr。但有些中文句字仍会分众数:
msgid "%d user is connected to your machine and you should not quit without noticing her."
"%d users are connected to your machine and you should not quit without noticing them."
msgstr[0] "有 %d 个用户正连接您的计算机。您不应该在没有通知他的情况下离开。"
msgstr[1] "有 %d 个用户正连接您的计算机。您不应该在没有通知他们的情况下离开。"
这个时候 Plural-Forms 亦应该为 「nplurals=2; plural=(n != 1);
」 。 表示这个 po 的两个式。 %d 为 1 时用 msgstr[0] ,%d 为非 1 时用 msgstr[1] 。
每个 po 只可以有一个 Plural-Forms 字段: