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

发布于 2022-07-19 12:45:10 字数 2011 浏览 5 评论 2

用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")
dnl Languages which your application supports
ALL_LINGUAS=""
AM_GLIB_GNU_GETTEXT

如果需要加入zh_CN的支持
就改成 ALL_LINGUAS="zh_CN"
我习惯改成AM_GNU_GETTEXT

另外在最后在AC_OUTPUT 下加上 intl/Makefile
还要编辑Makefile.am在SUBDIRS里加上intl

编辑完后运行 setup-gettext 脚本。
拷贝生成一堆东西过来。比如m4目录和intl目录。

图形编程的时候要这样:
先给一个函数方便大家:
static void
setup_i18n (void)
{
gtk_set_locale ();
bindtextdomain (PACKAGE, PACKAGE_LOCALE_DIR);
bind_textdomain_codeset (PACKAGE, "UTF-8");
textdomain (PACKAGE);
}

在主程进入时调用一下。

程序里还可以声明一句这个:
#define _(String) gettext(String)
#define gettext_noop(String) (String)

然后把需要翻译的字符串都如下面这样写:
gtk_window_set_title(GTK_WINDOW(opwin),_("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你的软件
运行一下,可以看到你的翻译信息在图形界面上显示了。
大功告成。
********************************************************
问题:这是一篇原文,但是我按照上面的说明,在po文件夹中执行make update-po时候报错
错误消息如下:
  [root@FC5TEST po]# make update-mo
make: *** No rule to make target `Makevars', needed by `Makefile'.  Stop.

什么原因呢?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

把时间冻结 2022-07-22 15:25:07

现在情况是这样的,如果按照文档作修改,configure。in,Makefile。am,那么在po文件夹用make update-po就会提示什么没有生成Makevars的Makefile规则之类的,如果什么都不修改,直接建立项目后,然后再po文件夹用make update-po就可以生成一个pot文件,当然pot是后缀,然后再我把这个pot拷贝一份叫做zh_CN。po,然后编辑里面msgstr,就是被翻译部分,保存后执行make命令,此时报错为:
nothing to be done for 'all'
各位,有什么高招马?
帮忙看看

人海汹涌 2022-07-20 01:58:28

我把那个intl/Makefile改成intl/Makefile。in就生成了pot文件,但是下一步是用make想生成gmo文件时候报错,说:Nothing to be done for 'a11'

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文