文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>结合Anjuta轻松使用gettext进行国际化

结合Anjuta轻松使用gettext进行国际化

时间:2010-06-22  来源:catstep

gettext可以方便的进行国际化,在网络上查找了几篇文章,并且试了一下,都没有通
过,可能是由于环境不一样的缘故.经过两天的摸索,终于成功使用gettext.

现在将过程记录下来,希望能够对一些也正在寻找gettext进行汉化的网友一些帮助.

我的环境:
Anjuta: 2.28.10 (其实可以不用,但是因为我懒得自己动手写一个configure文件)
OS: Debian squeeze
GCC: 4.2.3
Editor: Emacs 23

详细过程如下:
1. 启动anjuta, 创建一个generic的c项目,命名为testpo,其他为默认

2. 在configure.ac中增加一行

ALL_LINGUAS="zh_CN"

3. 在main.c中加入

#include "config.h"
#include <libintl.h>
#define _(String) gettext (String)
#define gettext_noop(String) String
#define N_(String) gettext_noop (String)

setlocale(LC_ALL, "");
bindtextdomain(GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR);
textdomain(GETTEXT_PACKAGE);

并修改
printf("Hello world\n");

printf(_("Hello world\n"));

完整的代码:
#include <stdio.h>
#include "config.h"                                                                                                          \

#include <libintl.h>                                                                                                         \

#define _(String) gettext (String)                                                                                           \

#define gettext_noop(String) String                                                                                          \

#define N_(String) gettext_noop (String)

int main()
{
        setlocale(LC_ALL, "");
        bindtextdomain(GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR);
        textdomain(GETTEXT_PACKAGE);
        printf(_("Hello world\n"));
        return (0);
}
                                                                                                                             

4. 在anjuta里选择configure project,用于生成一些必要的文件

5. 切换到terminal, 进入项目目录
执行
./configure --prefix=/tmp/testpo

目的是进行make install的时候安装进入临时的目录,不会对系统构成污染.


6. 接着进入po子目录
make update-po

会得到testpo.pot

7. 复制一份testpo的拷贝
cp testpo.pot zh_CN.po
8. 修改zh_CN.po, 修改后的zh_CN.po与原始的testpo.pot的对比如下

--- testpo.pot  2010-06-22 11:08:35.000000000 +0800
+++ zh_CN.po    2010-06-22 11:12:36.000000000 +0800
@@ -13,10 +13,10 @@ msgstr ""
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <[email protected]>\n"
 "MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"

 #: ../src/main.c:29
 #, c-format
 msgid "Hello world\n"
-msgstr ""
+msgstr "你好中文\n"
                                                                                                                             
9. 回到上一级目录,进行编译安装
cd ..
make install

到这里,测试程序已经被安装到了/tmp/testpo目录下. 接下来进行测试, 看
gettext是否工作.

10. 进入程序安装的目录
cd /tmp/testpo

先查看一下当前的locale设置
$ locale
LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME=en_US.UTF-8
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"                                                                                                    
LC_MESSAGES=en_US.UTF-8
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

运行一下程序
testpo$ ./bin/testpo
Hello world

由于是en_US的LC_MESSAGES, 所以显示的还是英文.

接下来,修改 LC_MESSAGES=zh_CN,也就要使用中文显示了.

testpo$ export LC_MESSAGES=zh_CN.UTF-8
再查看一下locale的设置

testpo$ locale
LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME=en_US.UTF-8                                                                                                          
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES=zh_CN.UTF-8
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=


运行程序
catbot: testpo$ ./bin/testpo
你好中文


成功! gettext工作正常!

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载