使用anjuta建立新工程testpo:(starter欢迎页->工程->新建->Generic->工程名称 testpo ->....)
得到文件结构:
.
|-- AUTHORS
|-- COPYING
|-- ChangeLog
|-- Makefile.am
|-- NEWS
|-- README
|-- TODO.tasks
|-- autogen.sh
|-- configure.ac
|-- po
| |-- ChangeLog
| |-- LINGUAS
| `-- POTFILES.in
|-- src
| |-- Makefile.am
| `-- main.c
`-- testpo.anjuta
下面总结一下,在新建的工程中如何快速添加国际化/本地化支持。
首先,需要在src/Makefile.am中增加:
AM_CPPFLAGS = \ -DPACKAGE_LOCALE_DIR=\""$(datadir)/locale"\" #其实就是定义PACKAGE_LOCALE_DIR路径为 /usr/share/locale 在以后代码中用到
在configure.in中增加:
GETTEXT_PACKAGE=project-name #生成*.mo的名字,一般使用工程名 AC_SUBST(GETTEXT_PACKAGE) AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE", [Gettext package.]) #定义 GETTEXT_PACKAGE 常量,在后面代码中用到 dnl Add the languages which your application supports here. ALL_LINGUAS="zh_CN" #添加支持的语言,和.po档同名 AM_GLIB_GNU_GETTEXT
然后在对应的类 src/main.c 中增加代码:
#include <glib.h> //gtk_init支持 #include <glib/gi18n.h> //包括了本地化的支持函数 #include "config.h" // 包括了GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR这样的常量定义 int main (int argc, char* argv[]) { bindtextdomain (GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR); // mo档名,和存放路径 textdomain (GETTEXT_PACKAGE); gtk_init (&argc, &argv); printf (_("po file is working")); ... }
建立 po/zh_CN.po文件:
# Simplified Chinese translation # Copyright (C) 2004-2010 socol # This file is distributed under the same license as package. # # msgid "" msgstr "" "Project-Id-Version: potest 0.1\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2010-01-11 00:20+0100\n" "PO-Revision-Date: 2010-02-08 17:41-0800\n" "Last-Translator: \n" "Language-Team: Chinese \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" #: ../src/testpo.c:30 #, c-format msgid "po file is working" msgstr "po文件起作用了"
继续执行下面的两个步骤:
1. anjuta: 菜单栏->生成->配置工程->(勾上“重新生成工程” 另外,输入--prefix=/usr) 执行
2. anjuta: 菜单栏->生成->生成工程
3. anjuta: 菜单栏->生成->安装工程
终端命令行输入:
testpo
结果 :
po文件起作用了