I am LAZY bones ? all linux

[转]用gettext实现shell脚本国际化.

$ cat test.sh
#!/bin/bash
export TEXTDOMAINDIR=/usr/share/locale
export TEXTDOMAIN=test.sh
echo “$(gettext -s hello)”

编辑一个po文件:
$ cat test.sh.po
msgid “hello”
msgstr “你好!”

编译成mo文件:
$msgfmt -o test.sh.mo test.sh.po

复制到/usr/share/locale/zh_CN/LC_MESSAGES/
$sudo cp test.sh.mo /usr/share/locale/zh_CN/LC_MESSAGES/

中文:
$ export LANG=zh_CN.UTF-8
$ ./test.sh
你好!

英文:
$ export LANG=en_US.UTF-8
$ ./test.sh
hello

这里可以看到,gettext在locale是 zh_CN的时候,会去 TEXTDOMAINDIR 下面的 zh_CN/LC_MESSAGES 里面找mo文件,所以,TEXTDOMAINDIR也可以放在当前目录,只要里面有zh_CN这目录,并且里面的内容是正确的,这样就可以避免放文件到 /usr/share/local 时候所需的root权限.
参考: http://forum.ubuntu.org.cn/viewtopic.php?t=105507

最后修改时间: 2008年02月19日 13:15

本文章发表于: 2008年02月19日 13:15 | 所属分类:CLI软件, 编程相关. | 您可以在此订阅本文章的所有评论. | 您也可以发表评论, 或从您的网站trackback.

发表评论