引用自:

http://www.kdecn.org/l10n/method.php

本文有相当的历史,文中很多链接已经过期,但工作的准则仍然是有效的,相关背景请参阅文末。如果您想加入我们现在的工作,请先看这里 。

如果您希望加入 Linux 中文化计划,请阅读下面的说明。

1.加入我们

您需要首先加入我们 。

2.准备工作

如果条件允许,您最好有个 GNU/Linux,这样可以一边翻译一边测试您正在翻译的程序。如果您在 Windows 下工作,可以去 RedHat 的网站下载并安装 CygWin 这个 Linux 仿真环境。强烈推荐使用 Windows 2000,不仅体积相对小巧,打补丁后稳定性和兼容性都很好。目前 RedHat 已经完整地移植了几乎整个 Linux 到 Windows 下,而且更新非常快,请看屏幕截图 。GNOME/KDE 也移植到了 CygWin 环境下,称为 Cygnome 和 KDE on Cygwin , 不过它们安装后运行速度很慢(因为 Windows 本身已经消耗了过多的资源),而且最新版本也难以快速移植过来。建议完全安装 CygWin,大约需要 730 多兆空间。如果采用默认安装,至少还要指定安装 devel 分支下的 gettext 软件包,它是测试翻译必需的软件包。有时安装程序会出现问题,报告找不到 cygwin1.dll ,您可以在这里下载 1.3.22 版,然后拷贝到系统搜索路径(如:C:\WINNT\system32 或 C:\cygwin\bin\)下,重新运行一遍安装程序即可。其实,它位于下载的压缩包 release\cygwin\cygwin-1.3.22-1.tar.bz2 里。

在 Linux 下您要用到 kwrite 和 gedit 文本编辑器,它们都有良好的 UTF-8 支持,而且整个 PO 文件可以一目了然,还可以使用 VIM 或 EMACS (后者目前仅支持 gb2312 编码)文本编辑器。 KBabel 、gtranslator 、以及 poEdit 是专用翻译工具,推荐使用。在 Windows 下,推荐使用 EmEditor ,还可以 使用 EditPlus。不建议使用 UltraEdit 或 Notepad。由于配置较复杂,这里提供它的 po/pot 设置文件 ,下载后双击将键值导入注册表,即可得到符合要求的配置,请看屏幕截图 。

另外,还有可能用到十六进制编辑器,如 WinHex ,因为有时 Windows 下的文本编辑器会在 UTF-8 编码的文件前方添加三个字节(即所谓 Unicode 署名),以标明其为 UTF-8 编码。这种文件是无法通过编译的,必须用十六进制编辑器去除这三个字节!

注意 : 在 使用 EmEditor 保存文件为 UTF-8 编码的时候(文件->另存为),请取消“加入 Unicode 署名”前面的对勾,以避免发生上述情况!

在 Linux 下您可能需要英汉词典 IBMDICT 或 StarDict 及其词典 ,而在 Windows 下推荐使用金山词霸。

3.认领任务

目前,我们的工作主要集中在 KDE 和 GNOME 的界面翻译上。 KDE 的进度页面 以及 GNOME 的进度页面 中是我们目前的工作进度(注意: 请不要直接从这两个页面 下载文件进行翻译)。首先您必须登陆到这里:http://i18n.ricetons.com 如果是第一次登陆,您需要首先注册。登陆后,点击左侧的“Translation Statistics”,您可以从 KDE 或 GNOME 的进度页面中挑选还没有人负责的文件(状态为“A”),点击后弹出一个信息页面,点击下方的“Occupy”链接,从弹出的“占据”操作页面 选择“With a prefilled PO Head”或者右键点击“Orginal File”选择“另存为”,下载它们的翻译文件(*.po)或翻译模版文件(*.pot)进行翻译。“With a prefilled PO Head”表示下载的文件预先填充好了 PO 头部信息,“Orginal File”则是原始文件。 此时在“Translation Pool”以及“Task”页面就可以找到您占据的文件。

通常进度页面中相应的翻译文件(*.po)都是经过预填充的,也就是说已经翻译了一部分,可以直接拿来接着翻译。对于较大或从未有人翻译过的文件, 您可以在开始工作之前先在邮件列表里声明一下,会有网友给您提供一个基于辞典的预翻译的文件, 可以减少重复劳动。当然,所有预翻译的内容您都需要仔细校对。对于 GNU 软件的翻译,也请您在开始工作之前先在邮件列表里声明一下,邮件的标题可以是“申请 xxx.pot”、“占据 xxx.pot”、“Occupy xxx.po”或者“正在更新 xxx.po”。 这样做是为了避免和其他人冲突,因为我们的状态页并不包含 GNU 软件,无法显示到底谁正在翻译某个文件。

如果您希望申请其它工作,可以跟王剑 (我们的网络协调员) 联系。

请不要一次占据多个文件,以免影响整体进度。除非您确信您在短期内能完成所有工作 一般的原则是:认领一个-- >完成一个-->提交一个。

请将 kdenonbeta 组的翻译放在最后进行,这个包里的软件都处于早期开发阶段,通常不会被加入最终的发行包里,请尽量优先翻译其他内容!

4.如何翻译

下载了 .pot 文件以后,请把它重命名为 .po 文件。第一步是修改文件头, 如果您不知道该怎么改,可以参考其它已翻译的 po 文件。这是一个例子(绿色的是修改的部分):

# translation of ***.po to Chinese Simplified  <--这里您可以填入一些注释# Copyright (C) 2008Free Software Foundation, Inc.  <-- 填入翻译年代# Xie Yuheng <phycommusyee@263.net>, 2001.# Li Zongliang <li-zongliang@21cn.com>, 2001.
# Zong Yaotang <zyt@cosix.com.cn>, 2002.
# Liu Songhe <jackliu9999@263.net>, 2002.
# Xiong Jiang <jxiong@offtopic.org>, 2002.#  <-- 此处填入您自己的信息#, fuzzy  <-- * msgid ""
msgstr ""
"Project-Id-Version: kspread
\n"  <-- 填入模板名称"POT-Creation-Date: 2001-11-25 00:13+0100\n"
"PO-Revision-Date: 2002-12-16 20:30+0800
\n"  <-- 填入完成翻译的时间,北京时间为东8区时间(+0800)"Last-Translator: Xiong Jiang <jxiong@offtopic.org>
\n"  <-- 填入最后翻译者的信息

"Language-Team: zh_CN <i18n-translation@lists.linux.net.cn>
\n"  <-- 填入我们小组的信息"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8
\n"  <-- 大小写不限,如果是 GB2312 编码,请写 GB2312,推荐使用 UTF-8 编码

"Content-Transfer-Encoding: 8bit\n"*   通常,po 文件里没有这一行。如果在 pot 而不是 po 文件基础上翻译,您会看到它。在您正式开始工作之前,请务必删除这一行!
"Plural-Forms: nplurals=1; plural=0;\n"

修改完文件头以后接着就是实质性的翻译了,po 文件的格式是一句 msgid 跟着一句 msgstr,以“#”开头的行是注释。您需要做的是把 msgid 中的英文翻译成中文写到 msgstr 中。例如:

#: app/floating_sel.c:198
msgid ""
"Cannot create a new layer from the floating\n"
"selection because it belongs to a\n"
"layer mask or channel."
msgstr ""
"无法从浮动选区创建新\n"
"图层,因为它属于一个\n"
"图层蒙板或通道。"#: app/gimphelp.c:194
msgid "Could not find GIMP Help Browser"
msgstr "找不到 GIMP 帮助浏览器"

5.测试翻译

测试您的翻译的方法是:首先用 msgfmt 命令把 po 文件编译成 mo 文件,然后把 mo 文件复制到正确的 locale 目录下,重新启动程序即可。locale 目录一般是:

/usr/share/locale/zh_CN/LC_MESSAGES/  或者

/usr/locale/share/locale/zh_CN/LC_MESSAGES/

如果两者都不行,请在您软件的安装路径下找一找有没有相似的目录。通常一个 po 文件只要通过编译,就没有语法错误了。另外,可以用 msgfmt -cvv file.po 命令检查 po 文件是否有格式错误;用 msgfmt --statistics file.po 命令查看翻译统计信息。举个例子(输入文件为 gimp.po,输出文件为 gimp.mo):

msgfmt --statistics gimp.po -o gimp.mo
cp gimp.mo /usr/share/locale/zh_CN/LC_MESSAGES/
gimp &

如果您的翻译没有正常地在程序中显示出来,可能是由于编码原因。请试试把您的 po 文件中文件头的 charset 改为 UTF-8,再用下面提到的 iconv 或 msgconv 命令把文件转换成 UTF-8 编码,然后重新生成 mo 文件。

6.提交任务

文件完成翻译后,您需要再次登陆这里:http://i18n.ricetons.com 。 提交文件有三种方法:

  • 点击左侧的“任务”(Task),找到自己占据的文件,点击它, 并选择“[Submit/Resubmit]”,点击“浏览”,在您的计算机上找到要提交的文件,在下面填上适当的注释,点击“Submit”即可提交到 服务器。等待校对人员处理后,即可提交到官方 CVS 服务器。 如果文件有错误,会看到错误提示。请找到相应的行,修改后重新提交一遍。
  • 点击左侧的“翻译池”(Translation Pool),然后再按上述步骤操作即可。
  • 在“翻译统计”(Translation Statistics)页面点击您占据的文件,在弹出的信息页面点击“[File In The Pool]” 从而转到“Translation Pool”,然后再按上述步骤操作即可。

对于不能自己提交的 GNU 软件翻译文件, 可以通过“Submit a File Not IN KDE/GNOME”链接提交,等待校对人员检查,然后由网络协调员提交到相应的 CVS 服务器上,请耐心等待。对于其他不属于 KDE/GNOME/GNU 工程的软件翻译文件, 也可以通过这种方法提交,然后将其 PO 文件在“Translation Pool”里的下载链接邮寄给软件的开发者。GNU 软件的提交方法参见这里 。 翻译后的 PO 文件一旦被提交到 CVS 服务器上,那么它们将从“Task”或“Translation Pool”中消失。以后如果需要更新您所负责的翻译,请登陆后到进度页面中重新 下载翻译文件(*.po),步骤同前,而不要在您旧的翻译文件基础上继续修改。 因为进度页面中的文件才是 CVS 服务器中最新的待翻译内容。如果翻译后的 PO 文件尚未被提交到 CVS 服务器上, 您应该可以按照上述方法,在“Task”或“Translation Pool”中找到您要重新翻译的文件,翻译后再按照上述方法选择“[Submit/Resubmit]”,重新提交一遍。因为“Translation Pool”中 的 PO 文件会与最新的 POT 文件动态合并,而“Task”中的文件实际就是“Translation Pool”中的文件。

7.注意事项

(1) 关于文件编码格式的问题。

目前的翻译文件一般使用 UTF-8 编码。如果您的文本编辑器不支持 UTF-8,那么您需要在编辑文件之前和之后转换编码。在 Linux 下您可以用以下命令把文件从 UTF-8 转换成 GB2312。转换之后请务必将文件头部的 charset=utf-8 改为 charset=gb2312。 在 Windows 下也有相应的软件,不过没有必要使用它,可以直接使用支持 UTF-8 编码的编辑器,或者干脆把 GB2312 编码的 po 文件直接提交到邮件列表,由校对人员去处理。

转换 utf-8 --> gb2312

iconv -f utf-8 -t gb2312 inputfile > outputfile

转换 gb2312 --> utf-8

iconv -f gb2312 -t utf-8 inputfile > outputfile

如果您安装了 gettext 0.11.x 或者更新的版本,还可用“msgconv -t 目标编码 源文件 -o 目标文件”实现转换。 msgconv 会自动修改文件头部,避免错误。

msgconv -t gb2312 inputfile -o outputfile

注意: 如果您的 gettext 软件包版本号小于 0.10.40,很多工具它都没有,更严重的是它不能正确处理 po/pot 文件头部的信息!那么,您需要到这里 下载最新版,编译安装:

ftp://ftp.gnu.org/gnu/gettext/

也可在这里 下载 gettext 0.12.1 和 libiconv 1.9.1 的 windows 版,后者为必需的依赖包。

判断版别,请输入:

msgfmt -V

(2) 关于标点的使用问题。

一般的原则是:除了小括号、省略号和破折号保留不变以外,都应该使用中文(全角)标点符号。英文标点符号后方 常常跟随有一个半角空格,请在翻译成中文标点符号时将其去除。

  1. 英文中的 , 在中文中可能是 , 或者 、
  2. 英文中的 . 在中文中应该是 , 或者 。 ,视上下文而定,多数是 。
  3. 英文中的 \" %s\" 应该翻译为 “ %s” , 而不是 \" %s\" 或者 \“ %s\” ,而且后 者是不符合换码序列要求的。` something' 和 ' something' 以及 \" something\" 都应该翻译为 “ 某事”
  4. 英文中的 : 应 该翻译为 : 而不是 : , 而作为分隔符时(例如时间),: 保留为英文(半角)的, 因为这个时候不是标点符号
  5. 英文中的( ) 应该保持不变。由于全角小括号( ) 很难看,也占地方,所以一律使用半角小括号 ( )
  6. 英文中的 ... 应该保持不变。由于翻译的时候常常难以分清哪些条目是菜单项,哪些条目是一般语句,而后者才能使用中文的省略号 …… ,所以现在统一翻译为 ...
  7. 英文中的 -- 应该保持不变。由于全角破折号 —— 兼容性不好,有时显示为两个方格,所以不再使用。
原文
,
.
\"或`或'
:
( )
...
--
译文1
( )
...
--
译文2
:
     

(3) 关于菜单项中快捷字符的翻译问题。

快捷字符一律使用大写字母,用小括号括起来放到菜单文字的后面(如果有标点符号则放在标点符号的前面)。在 KDE 中,菜单快捷字符的前缀是“&”; 在 GNOME 中,菜单快捷字符的前缀是“_”。但是如果翻译保留了原文的英文单词或阿拉伯数字,且该单词或数字正好是快捷键所在的单词或数字时,应保留原文的快捷键方式(如下面的第二、四个例子) 。这里举几个例子:

# KDE menu
msgid "C&lear"
msgstr "清除(&L)"msgid "&Glimmer Editor"
msgstr "Glimmer 编辑器(&G)"msgstr "&Glimmer 编辑器"# GNOME menu
msgid "_Setup..."
msgstr "设置(_S)..."
msgid "Get _CDDB Now"
msgstr "现在读取 CDDB(_C)"msgstr "现在读取 _CDDB"msgid "/_Edit"
msgstr "/编辑(_E)"  *
msgid "/Edit/C_opy"
msgstr "/编辑(E)/复制(_O)"  *
msgid "/Edit/C_ut"
msgstr "/编辑(E)/剪切(_U)"  **
注意:此处的翻译有点特别。由于“复制”和“剪切”均为“编辑”菜单的条目,只有这样翻译才能保证显示正确!

(4) 关于翻译中参数的位置问题。

有时候原来的参数顺序不符合中文的语法,一方面, 翻译可以通过调整副词、语序等手法来符合中文习惯,另外一方面,在必要的情况下,需要改变参数的位置,例如在 KDE 中:

msgid "%1 articles match rule %2"
msgstr "匹配规则 %2 的文章有 %1 个"

如果是在 GNOME 中则应该这样写:

msgid "%d articles match rule %d"
msgstr "匹配规则 %2$d 的文章有 %1$d 个"

即用 1$、2$、3$ 等符号标明参数在原文里出现的位置。

(5) 关于空格问题。

为了美观,通常建议在中文与英文、中文与阿拉伯数字、英文与阿拉伯数字之间加入一个半角空格。例如:

msgid "Installing driver for %1"
msgstr "正在安装 %1 的驱动程序"msgid ""
"Parameter start_num specifies the character at which to start the search. "
"The first character is character number 1. If start_num is omitted, it is "
"assumed to be 1."
msgstr ""
"参数 start_num 指定开始搜索的字符位置。第一个字符序号为 1。如果省略 "
"start_num,默认它为 1。"

但对于小括号和全角双引号,其两侧不加空格。

msgid "Original idea and author (KDE1)"
msgstr "原始创意和作者(KDE1)"msgid ""
"The APM Management subsystem seems to be disabled.\n"
"Try executing \"apm -e 1\" (FreeBSD) and see if \n"
"that helps.\n"
msgstr ""
"APM 管理子系统似乎被禁用了。\n"
"试试执行“apm -e 1”(FreeBSD)并看看\n"
"是否有用。\n"

包含 XML/HTML 标签的条目,如要在标签中的内容两侧添加空格,请把空格置于标签外侧,否则空格可能显示不出来。

这是 &amp;lt;b&amp;gt;HTML&amp;lt;/b&amp;gt; 的语法手册

(6) 关于注释语句和署名问题。

对于 msgid 中的注释语句(通常以 _: 开头),请不要翻译。它是给译者的一些说明,帮助您理解原文,以便给出正确的译文。例如:

#: _translatorinfo.cpp:1
msgid ""
"_: NAME OF TRANSLATORS\n" <---请不要翻译它。署名处要加入我们组织的有关信息,然后才是翻译者的个人信息"Your names"
msgstr "KDE 中国" <--可以用英文(半角)逗号分隔多个人名,不要使用其他符号#: _translatorinfo.cpp:3
msgid ""
"_: EMAIL OF TRANSLATORS\n"
"Your emails"
msgstr "kde-china@kde.org" <--对应的多个邮件地址也要用英文(半角)逗号分隔msgid ""
"_: 1: hostname, 2: port number\n"
"%1 port %2"
msgstr "%1 端口 %2"

(7) 关于换行问题。

对于很长的译文,就涉及到了换行问题。多数情况下没有限制,因为不影响最终的显示效果,只要阅读起来方便就行。下面几种格式都是正确的:

msgid ""
"Preview failed: neither the internal KDE PostScript viewer (KGhostView) nor "
"any other external PostScript viewer could be found."
msgstr ""
"预览失败:找不到 KDE 内建的 PostScript 查看器(KGhostView)或其它外部"
"的 PostScript 查看器。"msgid ""
"Preview failed: neither the internal KDE PostScript viewer (KGhostView) nor "
"any other external PostScript viewer could be found."
msgstr "预览失败:找不到 KDE 内建的 PostScript 查看器(KGhostView)或其它外部"
"的 PostScript 查看器。"msgid ""
"Preview failed: neither the internal KDE PostScript viewer (KGhostView) nor "
"any other external PostScript viewer could be found."
msgstr ""
"预览失败:找不到 KDE 内建的 PostScript 查"
"看器(KGhostView)或其它外部"
"的 PostScript 查看器。"

但是,如果 msgid 前方有 #, c-format 标记,或者原文中有强迫换行标记 \n ,那就要手工调整译文的换行,以便能最终正确地显示在程序界面上。原则是译文长度不大于原文长度,否则可能译文显示超出原有区域,或者译文后面部分被截 去,很难看。对于含有 HTML 标记的长译文还需要在浏览器中预览显示效果(如果您了解 HTML 基本语法的话),酌情调整行宽。例如:

#, c-format
msgid ""
"Error opening file '%s':\n"
"%s"
msgstr ""
"打开文件“%s”出错:\n"
"%s"msgid ""
"Parse a theme dir and generate a \n"
"gkrellmrc_ksim file that KSim will understand \n"
"better and exit."
msgstr ""
"解析一个主题目录生成 KSim 容易理解\n"
"的 gkrellmrc_ksim 文件,然后退出。"

(8) 关于模糊译文问题。

如果看到 #, fuzzy 标记,则表示本段译文是由工具软件(通常是 msgmerge 命令)猜测翻译得到的。有时比较准确,有时却谬之千里。 另一种情况是译者或校对人员主动加上去的,因为他们对该条译文没有把握。因此请对其译文进行修订,然后去除 #, fuzzy 标记, 否则本段译文将不能显示在程序界面上。原则上,所有既往给出的译文,在翻译的时候都应该校对一遍。例如:

#: groupdlg.cpp:209 groupdlg.cpp:216 groupdlg.cpp:229
#, fuzzy
msgid "Get Tagged Articles"
msgstr "取得文章"#: groupdlg.cpp:623
#, fuzzy, c-format
msgid "Connecting to server %s"
msgstr "正在连接服务器"

正确的译文为

#: groupdlg.cpp:209 groupdlg.cpp:216 groupdlg.cpp:229
msgid "Get Tagged Articles"
msgstr "取得标记的文章"#: groupdlg.cpp:623
#, c-format
msgid "Connecting to server %s"
msgstr "正在连接服务器 %s"

(9) 关于已淘汰译文的问题。

老版本的程序中总有一些信息会在新版本中淘汰掉,这些译文都以 #~ 开头,并被置于整个 po 文件的后方,可以直接删除。例如:

#~ msgid "Error: no name"
#~ msgstr "错误:没有姓名"#~ msgid "Configure"
#~ msgstr "配置"

(10) 关于单复数问题。

此问题主要见于 GNU 软件的翻译。由于某些语言的单复数变化极为复杂,为了应对这种局面,符合 i18n (internationalization) 国际化标准,gettext 技术通过读取 PO 文件头部如下一行中的信息来正确显示不同单复数的译文:

"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"

INTEGER 表示单复数变化形式的数量,他是一个正整数。中、日、韩文里没有单复数区分,也就是说单复数变化形式只有一种, 所以 nplurals=1,英文单复数有两种表现形式,所以 nplurals=2;

EXPRESSION 表示对第几种单复数变化取相应的第几种译文,他是一个标准的 C 语言表达式。如果有四种单复数变化,这个 表达式的值将包括 0、1、2、3,分别对应于译文 msgstr[0]、msgstr[1]、msgstr[2]、msgstr[3]。所以,有时这个表达式相当复杂。 在汉语里,只需 plural=0,译文只要保留 msgstr[0] 即可。

正确的设置:

"Plural-Forms: nplurals=1; plural=0;\n"

原文例如:

#: src/msgcmp.c:338 src/po-lex.c:701
#, c-format
msgid "found %d fatal error"
msgid_plural "found %d fatal errors"
msgstr[0] ""
msgstr[1] ""

正确的译文为:

#: src/msgcmp.c:338 src/po-lex.c:701
#, c-format
msgid "found %d fatal error"
msgid_plural "found %d fatal errors"
msgstr[0] "找到 %d 个严重错误"

(11) 关于时间译法的问题。

鉴于关于日期和时间的译法十分复杂,现在将国家标准中有关规定简要介绍一下,并给出推荐译法。

国标 GB/T 7408-94《数据元和交换格式 信息交换日期和时间表示法》

1994-12-06 发布,1995-08-01 实施

国家技术监督局发布

本标准等效采用国际标准 ISO 8601-1988《数据元和交换格式  信息交换日期和时间表示法》

可参见:
http://www.sznd.com/xslt/

这里说几个要点:

1. 在日期格式中不能出现空格,即“2003 年”这样的格式是不符合国标的。

2. 表示日期时,必须按照年月日的顺序;年份一般用四位数字,而月、日必须使 用带前导零的两位数字;必须使用“-”作为分隔符,或完全不使用分隔符。 即“2004-01-03”或“20040103”来表示 2004年1月3日。

3. 表示时间时,时、分、秒都必须使用两位数字,中间用“:”分隔,或完全不使 用分隔符。小时计法采用24小时制,不区分上下午。

4. 日期和时间写在一起的时候,应先写日期再写时间。在日期和时间都不使用分 隔符的情况下,在中间添加字母“T”进行分隔,即“19850412T101530”。

(12) 其他问题。

  • 请尽量避免口语化的翻译,除非是诸如电子游戏的场景对话、格言、谚语等特殊情况。
  • 请使用“您”而不要用“你”。

8. 一些帮助

如果遇到一些您不知道该如何翻译的词语,您可以:

  • 到我们主页的在线字典 中查询。
  • 如果是一些专业术语或特殊词语,可以试试到 Google 中查询。
  • 到网上其它一些在线字典查询,比如 http://www.yourdictionary.com/diction1.html 。
  • 在邮件列表中讨论。

对于一些常见的词语,为了跟其它人的翻译用语基本一致,也应该先参考在线字典。不过目前我们在统一翻译用语方面还做得很不够。:-(

对于 po 文件中一些以前翻译过的或者别人翻译过的翻译项,可以利用程序将其自动填充进模板文件(*.pot),减轻您的工作。 GNU gettext 软件包就是这样的工具,我们已经完成了它的翻译工作,不过暂时还要请您自己看帮助。它们几乎都是以 msg 开头的命令,在 bash 中输入 msg 然后连按两次 Tab 键就可以看到它们。输入命令并使用 --help 选项就可以看到帮助了。我们主页上也有一个自动翻译程序 ,完成类似的功能,您可以试试,不过它的功能很弱。

最后更新时间 2004-02-08 08:26

注:本文来自http://i18n.linux.net.cn/method.php ,但原网页已经丢失很久了,而且近日发现在Google中都没有缓存了,于是赶紧找来放上来了。(齐亮)

注:本文来自http://i18n.linux.net.cn/method.php 早期成员 heyuqi 的一段很短小的说明,很多内容都没有述及,我们在其基础上根据当时的翻译现状进行了全面修订,后来由于相关站点失去维护,上文提到的很多内容都已经不能使用,但是翻译原则还是有效的,希望对大家的翻译工作有所裨益。(刘松鹤)

[帮助理解PO文件]KDE中国/I18N/L10N相关推荐

  1. YII2.0的I18N/L10N是干什么的?是如何工作的?底层原理是什么?

    I18N代表"国际化",L10N代表"本地化",是指将应用程序的用户界面和内容翻译成多种语言和适应不同的本地文化的过程.在YII2.0中,I18N/L10N是一 ...

  2. I18N/L10N 是什么

    开发人员把internationalization简写成I18N,中间的数字是前后两个字母间的字母个数. L10N依据"localization" 使用同样的命名规则. I18N/ ...

  3. 软件I18N/L10N软件国际化与本地化

    I18N/L10N:是指软件的国际化和本地化,通俗的讲就是语言的国际化和本地化.国际语言:英语.汉语.德语...  本地化:繁体.简体.藏语...国家内部的语言. I18N: 软件国际化,即inter ...

  4. 是什么I18N/L10N ?

    开发人员把internationalization简写成I18N,中间的数字是前后两个字母间的字母个数. L10N依据"localization" 使用同样的命名规则. I18N/ ...

  5. C#解析xml文件获取中国的省市县地区名称和zipcode编号

    全栈工程师开发手册 (作者:栾鹏) c#教程全解 C#解析xml文件获取中国的省市县名称获zipcode编号.需要提交加载xml文件.获取市级城市时,需要提供省级名称.获取县级城市市需要提供省级和市级 ...

  6. mo和po文件相互转化

    原文地址:http://liuyanzhao.com/2349.html 今天一个朋友问我,他网页上的"参观者"如何改成"查看",于是我帮他找了一下. 首先是找 ...

  7. 四级城市地区表 xlsx, sql文件,国内,中国省市县街道乡镇四级地址 (名称,联动ID,层级,是否末级(1-是))

    四级城市地区表 xlsx, sql文件,国内,中国省市县街道乡镇四级地址 ID 父ID 名称 联动ID 层级 是否末级(1-是) 110107 1101 石景山区 11-1101-110107 3 0 ...

  8. python中gettext文件格式_如何将gettext .mo文件转换为.po文件 - python

    Improve this question 当.po文件不再可用时,有什么方法可以将.mo文件转换为.po文件源?我需要编辑.mo文件的内容,但没有.po文件.可能吗? 参考方案 msgunfmt [ ...

  9. 深入理解:文件、二进制、字符集(编码)三者之间的区别与联系

    深入理解:文件.二进制.字符集又称编码,三者之间的区别与联系 一·为什么计算机底层要使用二进制存储数据? 二·如何使用二进制来表示世界上的各种信息与符号? 三·那二进制又与文件.字符集之间有什么关系呢 ...

最新文章

  1. linux内核功能有,好消息!LINUX内核2.6.18终于支持实时功能了
  2. sqlserver 2014使用时有Cannot find one or more components
  3. 前端跨域问题的解决方案
  4. [Python语音识别项目笔记] 2矩阵标准化和去标准化
  5. Django从理论到实战(part51)--User模型
  6. linux下tomcat无法显示图片验证码
  7. 【金融申请评分卡】目标变量界定
  8. Nacos 新增命名空间
  9. 记一次telnet自定义端口不通(阿里云平台)
  10. oracle存储过程数量,Oracle:存储过程的可变参数数量
  11. Windows 2016 减肥
  12. Tomcat9下载以及安装
  13. ppt太大怎么变小,ppt如何压缩变小
  14. java后台数据传到前台的流程_java serlve后台数据传到前台
  15. html5拳皇代码,拳皇.html
  16. A071_管理员登录
  17. ajax 执行成功前,提示正在处理请稍后
  18. win10找不到wifi网络_笔记本连不上WiFi怎么办?
  19. 计算机类课题项目申报书,国家社科基金一般项目书分享
  20. .NET 对于构建系统应用的探索历程

热门文章

  1. flutter需要定义product flavors
  2. BUG记录--Iconfont图标在IE8浏览器的兼容问题
  3. 计算机格式化后数据恢复的基础,电脑格式化了怎么恢复?——格式化数据恢复教程...
  4. JSP页面传值方法总结
  5. 路由器设置虚拟服务器王者荣耀,封杀王者荣耀 实际很简单_网络设备无线网络和技术-中关村在线...
  6. 关于xpe和wes2009
  7. CSS实现核辐射警告标志
  8. 户外lisp导向牌如何安装_详细图解丨|各类广告标牌的安装方法大全!
  9. h5移动端安卓键盘顶起页面回落问题
  10. 在Windows中安装一些python的第三方库