|
|
用Anjuta可以工程创建精灵可以方便的生成一个工程,虽然不一定要用anjuta来编程(本人使用Emacs),但是也可以稍微利用一下它这个工程创建精灵的作用。
选择支持本地语言可以让工程创建时增加一个setup-gettext脚本,运行后会提示:
autopoint --force
autopoint: *** Missing version: please specify in configure.in through a line 'AM_GNU_GETTEXT_VERSION(x.yy.zz)' the gettext version the package is using
autopoint: *** Stop.
编辑一下configure.in 加入自己的gettext 的version信息。
我加入的是:AM_GNU_GETTEXT_VERSION(0.15),因为这个是我的gettext版本,刚下在安装的
dnl Languages which your application supports
ALL_LINGUAS=""
AM_GLIB_GNU_GETTEXT //没有修改
如果需要加入zh_CN的支持
就改成 ALL_LINGUAS="zh_CN" //此处我也是zh_CN
我习惯改成AM_GNU_GETTEXT
另外在最后在AC_OUTPUT 下加上 intl/Makefile
还要编辑Makefile.am在SUBDIRS里加上intl
编辑完后运行 setup-gettext 脚本。
拷贝生成一堆东西过来。比如m4目录和intl目录。 //运行setup-gettext 后,这两个目路 已经产生了
图形编程的时候要这样:
先给一个函数方便大家:
static void
setup_i18n (void)
{
gtk_set_locale (); //这里的语句已经在创建工程时候在main。c中自动产生了
bindtextdomain (PACKAGE, PACKAGE_LOCALE_DIR);
bind_textdomain_codeset (PACKAGE, "UTF-8");
textdomain (PACKAGE);
}
在主程进入时调用一下。
程序里还可以声明一句这个: //这里没有定义宏,下面我直接调用的gettext()
#define _(String) gettext(String)
#define gettext_noop(String) (String)
然后把需要翻译的字符串都如下面这样写:
gtk_window_set_title(GTK_WINDOW(opwin),_("General Options"));
//上一句我改成,因为没有宏定义
gtk_window_set_title(GTK_WINDOW(opwin),gettext("General Options"));
程序写差不多了进入po目录
运行make update-po //此步报错
如果报错说需要Changelog啥的就touch一个出来。没什么影响。//没有报这个错
po目录下就会有一个pot文件,名称就是你的工程名字。
我们把这个pot文件复制成zh_CN.po
然后编辑它,补全所有的头信息。
最关键的是Charset,写charset=UTF-8。
然后开始翻译了。
注意这个po文件的编码一定要是UTF-8。
可以使用leafpad之类的编辑器存程UTF-8 编码的文件。
然后在po里面make一下就生成了一个gmo文件。
最后make install你的软件
运行一下,可以看到你的翻译信息在图形界面上显示了。
**************************************************
上面是原帖子,我加入了一些我的注释,我现在用anjuta+glade开发,现在要达到这样一个要求:当我编译好的可执行程序运行的时候,其界面语言要随着当时系统的语言而变化,如果系统当时是英文,那么我的程序运行后就要变成英文界面,如果当时是日文,我的程序运行后就要显示日文界面,这应该通过国际化可以解决,于是我按照上面的帖子做,但是做到make update-po时,报下面的错误:
make: *** No rule to make target `Makevars', needed by `Makefile'. Stop.
往下就没有办法做了,请各位帮忙
msn:silence_lxy@hotmail.com
qq: 45666988 |
|