首先,必须在编译前指定 --enable-nls="语言名",否则不会产生多语言支持,比如 --enable-nls="zh_CN"
当然禁用nls会带来一点微不足道的性能提升
启用之后我们在 Makefile.global 中会看到:
enable_nls = yes ... ifeq ($(enable_nls), yes) ifneq (,$(wildcard $(srcdir)/nls.mk)) include $(top_srcdir)/src/nls-global.mk endif # nls.mk endif # enable_nls
可以看出,只有目录下有nls.mk这个文件才会有nls动作,用 find 很容易就知道哪些目录需要生成 .po 文件
假设我们修改了 initdb 的输出信息
cd src/bin/initdb
make update-po
从输出文字可以看到,initdb.pot(翻译模板)重新生成,并且只有我们需要的 zh_CN 被 merge,生成一个新文件 zh_CN.po.new
打开 zh_CN.po.new 编辑,修改完成后改为 zh_CN.po
make all-po 至此,新的 .mo 文件已经重新生成
图形化 .po 文件编辑工具推荐:http://poedit.net/,万一打不开请翻墙
gnome-terminal 显示中文输出:
export
菜单 Terminal -> Set Character Encoding 选择 GB18030
如需引入新的源代码文件,修改 nls.mk,将其相对路径加入 GETTEXT_FILES 即可
神州飞象(北京)数据科技有限公司