国际化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以不同的方式。

+0

这些文件最好的地方是什么? – 2010-10-03 21:46:17

+0

我会考虑并行类似的系统定义的目录,所以可能的选择可能是'/ usr/local/locale','/ usr/local/lib/locale'或'/ usr/local/share/locale'或类似。 – 2010-10-03 23:32:17

+0

简单的Bash i18n例子:https://github.com/meonkeys/bash-i18n-example/ – 2013-07-10 17:37:55