最后,我们再来改一下我们的 Makefile, 帮助我们产生 po, mo 并且放到相应的语言目录下.
代码:
INCL= -I/usr/lib/glib/include/ -I/usr/include/gtk-1.2/gdk/ -I/usr/include/gtk-1.2/ \
-I/usr/include/glib-1.2/
LIBS= -L/usr/X11R6/lib
LFLAGS= -lglib -lgdk -lgtk -lX11 -lXext -lm
CC=gcc
chinese: chinese.c
$(CC) $(INCL) -o chinese chinese.c $(LIBS) $(LFLAGS)
clean:
rm -f chinese
rm -f *.bak
po:
xgettext -k_ chinese.c -o chinese_big5.po
xgettext -k_ chinese.c -o chinese_gb2312.po
mo:
msgfmt -o chinese_big5.mo chinese_big5.po
msgfmt -o chinese_gb2312.mo chinese_gb2312.po
mo_install:
cp chinese_big5.mo zh_TW/LC_MESSAGES
cp chinese_big5.mo zh_TW.Big5/LC_MESSAGES
cp chinese_gb2312.mo zh_CN/LC_MESSAGES
cp chinese_gb2312.mo zh_CN.GB2312/LC_MESSAGES
.SUFFIXES: .c
.c.o:
$(CC) -c $(CFLAGS) $(INCL) -o $@ $<
C/C++
其是在 C/C++ 的一般程序中,也是可以中文化的. 在 C/C++ 程序中.中文化的步骤跟 GTK+ 己乎是一样的. 这里简单介绍一下:
代码:
/* chinese.c */
#include
main ()
{
printf(_("This is a test.\n"));
}
现在我们来中文化这只程序:
首先我们需要 libintl.h 和 locale.h 再就是
#define PACKAGE "chinese" #define _(STRING) gettext(STRING)
然后用 setlocale() 和 textdomain() 来完成中文化
代码:
#include
#include
#include
#define _(STRING) gettext(STRING)
#define PACKAGE "chinese"
main ()
{
setlocale(LC_MESSAGES, "");
textdomain(PACKAGE);
printf(_("This is English.\n"));
}
然后跟 GTK+ 中的制作 mo 的方法一样.用 xgettext 制作出 po 文件.
翻译好以后,用 msgfmt 制作成 mo 文件. 把这个 mo 文件
copy 到 /usr/locale/你的_locale/LC_MESSAGES下面.
textdoamin 会去那里找 mo 文件.现在再重新跑您的程序.
"This is English" 就变成您改的中文了.
浅谈Linux 下的中文程序开发(4)
内容版权声明:除非注明,否则皆为本站原创文章。