软件国际化之 .po文件如何编译成.mo文件

wxWidgets:国际化编程  一:编译工具工欲善其事、必先利其器,想要实现国际化编程,必须具备gettext软件,可以去http://sourceforge.net/projects/gettext 下载,需要下载3个zip文件gettext-runtime-X.bin.woe32.zip、gettext-tools-X.bin.woe32.zip、libiconv-X.bin.woe32.zip,将它们解压到一个文 阅读详情

背景知识
po文件简介

  po文件本来是用来翻译程序源代码里的字符串的。先来稍微解释一下它本来的用途,需要一点点C语言的基础才能完全理解。如果理解有困难 ,可以忽略这段内容,不会对我们使用po来翻译造成任何影响。

  目前大部分自由软件实现国际化使用的是gettext。国际化就是让程序可以使用多国语言来显示程序里的字符串。程序里一般都有很多字符串,菜单名也好,错 误信息也好,都是字符串。假设字符串为string,非国际化的程序里都是直接写"string"。如果用了gettext来实现国际化的话,就要写成 gettext("string")。有时也会看到_("string"),那实际上也是gettext,只不过通过宏的定义把 gettext改头换面了。这个string就是msgid。然后使用xgettext来从程序源代码文件产生po文件。然后交给专门的翻译人员来翻译 po。翻译人员根本不需要懂编程。翻译完毕后,使用msgfmt来把po转化成mo文件,并安装到系统里合适的位置。程序运行时,到底显示什么字符串就是 由gettext 函数来决定的了。主要有两个决定因素,一个是系统的locale及相关环境变量(LANGUAGE,LC_ALL,LC_MESSAGES和LANG), 一个是相关的mo文件。具体可以看我的这篇 文章 。

  随着程序版本的升级,程序里的字符串的数量和内容都会发生变化,但变化不会很大,以 前翻译过的po里大部分msgid都能被重复利用。所以维护po的翻译人员在每次得到从新的程序源代码产生的po时,都用msgmerge来根据旧的已翻 译过的po来先处理一下新的未翻译的po。处理过后,大部分情况下新po就翻译的差不多了。翻译人员的工作量被大幅度减轻了。
po文件格式解析

  po文件都是由一对对的msgid和msgstr组成的。msgid就是原文。msgstr就是译文。原文译文相互对照,所以非常适于翻译。

msgid "Flash Player 9 released"
msgstr ""

  有的msgid前面一行有fuzzy的字样。这说明,第一这个po是被msgmerge处理过的;第二,已翻译的po里没有和这个msgid完全等同的 msgid,只有非常相似的。这种情况下,msgmerge仍然会用那个相似的msgid来翻译此msgid。不过会给这个msgid标记为fuzzy, 表示翻译人员仍然要翻译这 个msgid,并在翻译后去掉上面带fuzzy的这一行。
#, fuzzy
msgid "Gentoo Linux PPC Handbook"
msgstr "Gentoo Linux Alpha手册"

po文件翻译的好处
1. 原文译文相互对照,适于翻译
2. 一篇文章里同一个msgid不管出现多少次,都只需要翻译一次
3. 旧有的已翻译过的po,可以重复利用,不必再次翻译,且利于统一风格
4. 有非常好的翻译工具,熟练使用后可大幅度提高工作效率

 

应用实例

我们在使用 WordPress 及其插件时,经常可以找到汉化的版本,一般是通过一个汉化过(翻译过)的 mo 文件来实现( WordPress 仅可识别 mo 文件),实际上不单 WordPress ,包括很多桌面应用程序都是是依靠 po 文件或 mo 文件来实现多语言版本。如果原作者提供了一个 po 文件或 mo 文件,那么我们就可以通过相关工具来自行汉化,或者翻译成其他语言版本。因为 mo 文件不能直接编辑,所以我们得编辑 po 文件,若仅有 mo 文件,那么就应该先把它转换成 po 文件后再进行编辑翻译。

至于编辑工具,由于 po 文件本身就是一个文本文件,所以任何文本编辑器都可以使用。除了专门编辑 po 文件的 poEdit ,还推荐使用 poEdit 、EditPlus、UltraEdit或者你喜欢的 vi 或 vim。

我们来看一个 po 文件,这是 yskin 制作的 WordPress 2.11 中文版 po 文件 中的一部分

msgid “”
msgstr “”
“Project-Id-Version: WordPress 2.1-1.0/n”
“PO-Revision-Date: 2007-02-22 12:35+0800/n”
“Last-Translator: yskin /n”
“MIME-Version: 1.0/n”
“Content-Type: text/plain; charset=utf-8/n”
“Content-Transfer-Encoding: 8bit/n”
“X-Poedit-Basepath: d:/wordpress/n”
“X-Poedit-Language: Simplified Chinese/n”
“X-Poedit-Country: China/n”
“X-Poedit-SourceCharset: utf-8/n”
“X-Poedit-KeywordsList: _e;__;__ngettext:1,2/n”
“Language-Team: /n”
“POT-Creation-Date: /n”
“Plural-Forms: nplurals=1; plural=0;/n”
“X-Poedit-SearchPath-0: ./n”

# 第一条要翻译的字符串。
#: wp-comments-post.php:15
msgid “Sorry, comments are closed for this item.”
msgstr “对不起,这篇文章禁止评论。”

上面是这个 po 文件的最初部分,各行意思一目了然,注意编码尽可能采用UTF-8。

# 第一条要翻译的字符串。
#: wp-comments-post.php:15
msgid “Sorry, comments are closed for this item.”
msgstr “对不起,这篇文章禁止评论。”

  这段就是po文件的主体结构了,每一个翻译项占一段。#: wp-comments-post.php:15 说明字符串相应的位置; msgid “Sorry, comments are closed for this item.” 翻译前的原文; msgstr “对不起,这篇文章禁止评论。” 翻译后的字符串。以此类推,即可完成所有资源的翻译。非常简单。

那么如何将 po 文件编译成(转换) mo 文件呢?

如果你使用的是 poEdit ,按 Ctrl + s 保存就会自动生成相应的 po 文件和 mo 文件;
或者在命令提示符界面,使用 msgfmt demo.po 命令将po文件编译为可用的 demo.mo 文件,用 msgunfmt demo.mo 命令转回 demo.po 文件,这些命令在 poEdit 的安裝目录下有,可以拷贝msgunfmt.exe 、msgfmt.exe 及相关链接库文件 gettextlib.dll 、gettextsrc.dll 、iconv.dll 、intl.dll 到 c:/windows/system32 目录下,或者安装 .Net 2.0环境。
  另外推荐一款 GUI 界面的转化程序 po2mo.exe ,作者的说明:该程序是调用 msgfmt.exe 和 msgunfmt.exe 文件,从而进行po 、mo 文件互转。文件是用C#写的,需要.Net 2.0环境。

 

原文地址:http://www.cnblogs.com/yan5lang/archive/2010/04/01/1702639.html

 

 

xgettext与PO文件的本地化工具应用 软件开发的国际化和本地化过程中,xgettext是一个不可或缺的工具,它能够从源代码中提取可翻译的字符串,并将它们保存到.pot文件中,作为后续翻译工作的基础。xgettext 支持多种编程语言,包括但不限于 C、C++、PHP 和 JavaScript,使其在多语言软件开发中变得非常实用。msgfmt是一个将.po文件Portable Object 文件编译成.mo文件(Machine Object 文件)的工具。在本地化流程中,.po文件是包含所有翻译文本的文件,而。 阅读详情

相关推荐

po,mo互转工具

今天我给大家带来了自制的mopo文件相互转换工具, 主要特点是方便简洁。 ==================================================================================== 使用方法: 把要转换的mopo文件拖到bat上即可,会自动在文件原目录生成对应的另一种格式。

如何汉化 po 文件编译成 mo 文件

背景知识po文件简介   po文件本来是用来翻译程序源代码里的字符串的。先来稍微解释一下它本来的用途,需要一点点C语言的基础才能完全理解。如果理解有困难 ,可以忽略这段内容,不会对我们使用po来翻译造成任何影响。   目前大部分自由软件实现国际化使用的是gettext。国际化就是让程序可以使用多国语言来显示程序里的字符串。程序里一般都有很多字符串,菜单名也好,错 误信息也好,都是字符串。假设字...

weixin_34189116的博客 421

POMO文件相互转换工具

最近做的一个项目需要用MO格式的语言文件,而MO文件的修改着实麻烦,毕竟本地用windows的本人来说,要先转成PO的才能直接打开修改。但是大家都知道,想要转的话就要用一些工具。我原来用的是“gettext”,用过的人都知道,这个工具使用起来好麻烦,先要打开,然后输入命令。。。。。。等修改完了在要把这个PO文件转回去。 那有没有什么方法可以让这个过程变得简单,只需要像是右键打开一个打开方式这种,直接转换对应格式,超便捷。 基于此般想法,我就动手做了个"POMO互转"的程序。

po文件并转换成mo文件

翻译po文件并转换成mo文件

HiroGuo 的博客 1535

语言文件.po .pot和.mo简介及gettext工具简介

语言文件.po .pot和.mo简介及gettext工具简介

zhaominyong的专栏 1万+

mopo文件相互转化

原文地址:http://liuyanzhao.com/2349.html 今天一个朋友问我,他网页上的“参观者”如何改成“查看”,于是我帮他找了一下。首先是找到那个文件,然后顺藤摸瓜一直找,结果还是没找到(自己找的不够仔细,其实可以找到对应的英文)。同时又在数据库里找了一下没找到。最后才猛然想起这玩意是不是在语言包里,找到一个bbpress-zh_CN.po和bbpress-zh_CN.mo。bb

5210

语言文件.po .pot和.mo简介及汉化

一、文件简介  .po文件.mo文件.pot文件是由gettext程序生成或者使用的源代码和编译结果。 1、.pot文件  是一种模板文件,其实质与.po文件一样,其中包含了从源代码中提取所有的翻译字符串的列表,主要提供给翻译人员使用。 2、.po文件  (1)用程序msginit来分析pot文件,生成各语言对应的po文件,比如中文就是zh_CN.po,法语就是fr.

opencn8的专栏 1万+

关于操作系统中英文切换的.po.mo介绍

一、文件简介 .po文件.mo文件.pot文件是由gettext程序生成或者使用的源代码和编译结果。 1、.pot文件 是一种模板文件,其实质与.po文件一样,其中包含了从源代码中提取所有的翻译字符串的列表,主要提供给翻译人员使用。 从源码中扫描得到的翻译模版文件,原始语言取决于源码字符串中使用的自然语言,建议使用英文。纯文本格式; 2、.po文件 根据 POT ...

rayylee 4660

mopo绿色互转工具

AU3写的MOPO互转工具,不支持直接拖放文件,但总比用命令行转来转去还是方便了太多,有兴趣的可以试试。

MoToPo Converter 1.0 单文版(mopo转换器by老朽痴拙)

MoToPo Converter1.0单文版(mopo转换器by老朽痴拙)其特点是:无需输入命令,方便实用,小巧快捷... POPortable Object(可移植对象)的缩写形式,它是面向翻译人员的、提取于源代码的一种资源文件MO是Machine Object(机器对象)的缩写形式,它是面向计算机的、由PO文件通过GNU gettext工具包编译而成的二进制文件,应用程序通过读取MO文件使自身的界面转换成用户使用的语言POT是一种模板文件,其实质与PO文件一样,主要提供给翻译人员使用. 有的程序既没有提供.po文件,也没有提供.pot文件,只提供了.mo文件,很多时候大家在使用GNU gettext方案的时候,会有想修改一些自己的翻译,但是手上只有mo文件的情况,这个时候,你就需要利用msgunfmt.exe把mo文件转换成po文件后再行汉化了. 自已动手编辑一个MoToPo Converter转换器: 1.同在当前目录下写一个MoToPo.bat如下: @echo msgunfmt 文件.mo -o 文件.po 2.将一个mp文件MoToPo.bat和msgunfmt.exe放在另一文件夹中试运行,逐个找出依赖的5个dll文件;到此与mo在同一目录中就可以使用bat来转换mo成为po了! 也可先将msgunfmt.exe加上找出依赖的dll做成单文件即一个新的msgunfmt.exe; 其次修改 MoToPo.bat将使其可实现人机对话, 不用书写命令,仅需输入mo文件名就可以实现自动转换的功能. 最后将新的msgunfmt.exe和新的MoToPo.bat合并打包, 命名为一个MoToPo Converter 1.0.exe 单文版的转换工具 注意W7下请用右键打开(以管理员的身份运行), 用后觉得好使就给个回评......

.mo 文件编译成 .po 文件

下载 poedit 并安装在 poedit 的安装目录(通常是"C:/Program Files/Poedit/bin")中,可以找到 msgunfmt.exe,这个就是我们所要的工具。用法:    msgunfmt message.mo > message.po

ycyuxin的专栏 3325

mo格式语言文件汉化方法

对于WordPress 来说,没有插件的辅助意义是没什么乐趣可言的。而WordPress的绝大部分的插件都是外语,基于WP的跨国性,采用标准的语言文件便于更好的跨国翻译使用。本地化插件的好处如果你的作品有越多的语言版本,就会有越多的人下载和使用它。 如果一个作品足够流行,就会有很多人志愿翻译它以便其他地区的人能够使用它。最麻烦的翻译方法就是在每个版本发行之后都要仔细检查代码,然后逐字的翻译。现在有

shuiaaa的专栏 5568
上一篇: C# 导出Excel "正在中止线程" 错误
下一篇: C# DataTabe Clone 和 Select的简单使用
zhensoft163
博客等级 码龄18年 78粉丝 86原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值