处理gettext与多国语言,我们先需要在configure.ac中增加一个AM_GNU_GETTEXT宏,如下
# Checks for programs. AC_PROG_CXX AC_PROG_CC AC_PROG_MAKE_SET AM_GNU_GETTEXT([external])
定义了external就不需要在当前目录下面有intl目录了,当然intl目录也是可以通过AM_GNU_GETTEXT_INTL_SUBDIR
来指定另外名称的
然后我们执行gettextize生成config.rpath以及po/m4目录下面的文件。同时会往configure.ac的AC_CONFIG_FILES中增加一个输出po/Makefile.in
执行此命令时,带参数--symlink就是链接到系统中而不是拷贝到本地
当前版本的gettextize会提示下一步需要做些什么事情,最关键的是在po目录下面将一个Makevars.template拷贝为Makevars,内容是不需要修改的
由于glade-2中使用的gettext宏是GET_PACKAGE,因此,我们在configure.ac中增加定义
GETTEXT_PACKAGE=lunarcalendar AC_SUBST(GETTEXT_PACKAGE) AC_DEFINE_UNQUOTED([GETTEXT_PACKAGE], ["$GETTEXT_PACKAGE"], [GETTEXT lunarcalendar])
做完这些操作之后,我们需要再执行autogen.sh脚本,然后再执行configure,再调用make程序
此时的全部代码打包:lunarcalendar.0.0.3.zip
这时候,编译后会在po目录下生成lunarcalendar.pot文件,基于此文件,我们可以对源代码的字符串进行翻译
比如,我们翻译出一个zh_CN.po文件
# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Free Software Foundation, Inc. # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. # msgid "" msgstr "" "Project-Id-Version: lunarcalendar 0.1\n" "Report-Msgid-Bugs-To: eagle_xmw@yahoo.com.cn\n" "POT-Creation-Date: 2013-04-21 03:02+0800\n" "PO-Revision-Date: 2013-04-21 03:07+0800\n" "Last-Translator: \n" "Language-Team: LANGUAGE <eagle_xmw@yahoo.com.cn>\n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: src/interface.c:39 msgid "Lunar Calendar" msgstr "中国农历" #: src/support.c:90 #: src/support.c:114 #, c-format msgid "Couldn't find pixmap file: %s" msgstr "无法打开图片文件: %s"
然后,我们还要再在po目录下创建一个LINGUAS文件,文件的内容只有一行"zh_CN"
再调用autogen.sh重新生成Makefile等之后,再调用configure及make,就可以将刚才增加的zh_CN.po自动编译为zh_CN.gmo了
此时的全部代码打包:lunarcalendar.0.0.4.zip
至此,我们的工程是可以编译、链接,也可以安装了,下一步是生成.desktop文件