LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 997|回复: 2

Anjuta 和国际化编程设置- -出现问题

[复制链接]
发表于 2006-8-10 15:26:03 | 显示全部楼层 |阅读模式
用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
 楼主| 发表于 2006-8-10 17:31:46 | 显示全部楼层
我把那个intl/Makefile改成intl/Makefile。in就生成了pot文件,但是下一步是用make想生成gmo文件时候报错,说:Nothing to be done for 'a11'
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-8-11 09:10:25 | 显示全部楼层
帮忙啊,怎么生成gmo,如果用msgfmt可以生成,但是不好用
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表