我正在编写一个包含两种语言的 bash 脚本。但我无法实现它的结构。消息“echo”发生变化,其余部分不变。
我的脚本示例:
英语
echo "Hello word"
sudo blabla
echo "Done"
温泉
echo "Hola Mundo"
sudo blabla
echo "Terminado"
现在这是我的想法:
function languaje(){
lan=`echo $LANG | cut -c1-2 | grep es`
if [ "$lan" ]; then
spa1=Hola Mundo
spa2=Terminado
else
eng1=Hello word
eng2=Done
fi
}
languaje
所以我需要在脚本中创建一个变量
$eng1
sudo blabla
$eng2
非常复杂...
这个例子很简单。当它是一个函数时,情况就更复杂了
function dns1(){
read -p "Put your first DNS (Example: 8.8.8.8): " DNS1
DNSNEW1=`echo $DNS1 | egrep '^(([0-9]{1,2}|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([0-9]{1,2}|1[0-9][0-9]|2[0-4][0-9]|25[0-5])$'`
if [ "$DNSNEW1" ]; then
find /etc/resolv.conf -type f -print0 | xargs -0 -I "{}" sed -i "s:8.8.8.8:$DNSNEW1:g" "{}"
echo "You entered correctly DNS1 $DNS1"
fi
}
dns1
并且需要将 languaje 更改为“read -p”和“echo”
PD:我不太熟悉 gettext 的使用(而且我不喜欢它的工作方式)
答案1
这似乎gettext
是最好的解决方案,但是如果您真的不想使用它,也许这样的东西就足够了?假设你的 bash 支持数组。
#!/bin/bash
greeting=("Hello World" "Hola Mundo")
goodbye=("Done" "Terminado")
test "${LANG:0:2}" == "en"
eng=$?
echo ${greeting[${eng}]}
sudo blablabla
echo ${goodbye[${eng}]}