언어 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

언어를 "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}]}

관련 정보