設定語言 bash 並放置變量

設定語言 bash 並放置變量

我正在編寫一個包含兩種語言的 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}]}

相關內容