国际化Bash脚本
问题描述:
我一直在关注Linux Journal的最新版tutorial,它教导了如何国际化Bash脚本。但是,我在使用我的系统(Ubuntu 10.04)时遇到了问题。在设置环境变量TEXTDOMAINDIR后,当我到达应该调用“gettext”的部分时,得到:国际化Bash脚本
[email protected]:~/Desktop/i18n$ gettext -s "Greeting"
Greeting
但它应该会打印一条消息,指出“您好,我可以在您提供的两个数字之间生成一个随机数”而不是“问候”。任何人都可以复制这个问题吗?任何想法我做错了什么?谢谢!
答
该教程的作者忘了以下步骤:
export TEXTDOMAIN=rand.sh
时示为export TEXTDOMAINDIR=/home/lji/locale
步骤应当执行完成(替换适当的目录名)。
可以使用$""
代替gettext
:
$ cat rand.sh
#!/bin/bash
TEXTDOMAINDIR=$HOME/locale # probably not the best place for these files, but OK for testing
TEXTDOMAIN=rand.sh
gettext -s "Greeting"
echo $"Greeting"
$ ./rand.sh
Hello, I can generate a random number between 2 numbers that you provide
Hello, I can generate a random number between 2 numbers that you provide
注意,Bash manual说,一些系统可能利用变量$LC_MESSAGES
,$TEXTDOMAIN
和$TEXTDOMAINDIR
以不同的方式。
这些文件最好的地方是什么? – 2010-10-03 21:46:17
我会考虑并行类似的系统定义的目录,所以可能的选择可能是'/ usr/local/locale','/ usr/local/lib/locale'或'/ usr/local/share/locale'或类似。 – 2010-10-03 23:32:17
简单的Bash i18n例子:https://github.com/meonkeys/bash-i18n-example/ – 2013-07-10 17:37:55