definir linguagem bash e colocar variáveis

1

Estou fazendo um script bash que contém dois idiomas. Mas eu não consegui alcançar sua estrutura. As mensagens "echo" mudam, o resto não muda.

Exemplo do meu script:

eng

 echo "Hello word"
 sudo blabla
 echo "Done"

spa

echo "Hola Mundo"
sudo blabla
echo "Terminado"

Agora, esta é a minha ideia:

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

Então eu preciso criar variáveis no script

 $eng1
 sudo blabla
 $eng2

Muito complicado ...

Este exemplo é muito fácil. A situação é ainda mais complicada quando é uma função

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

e precisa mudar o idioma para "ler -p" e "echo"

PD: Eu não estou muito familiarizado com o uso do gettext (e eu não gosto do jeito que funciona)

    
por ajcg 25.10.2016 / 14:24

1 resposta

1

Parece que o gettext é a melhor solução, mas se você realmente não quiser usá-lo, talvez algo assim seja suficiente? Assumindo que o seu bash suporta matrizes.

#!/bin/bash
greeting=("Hello World" "Hola Mundo")
goodbye=("Done" "Terminado")

test "${LANG:0:2}" == "en"
eng=$?

echo ${greeting[${eng}]}
sudo blablabla
echo ${goodbye[${eng}]}
    
por 25.10.2016 / 14:59