![definir o idioma bash e colocar variáveis](https://rvso.com/image/97244/definir%20o%20idioma%20bash%20e%20colocar%20vari%C3%A1veis.png)
Estou fazendo um script bash que contém dois idiomas. Mas não consegui atingir sua estrutura. As mensagens “ecoam” mudam, o resto não muda.
Exemplo do meu script:
inglês
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 fica ainda mais complicada quando se trata de 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 preciso mudar o idioma para "read -p" e "echo"
PD: Não estou muito familiarizado com o uso do gettext (e não gosto da forma como funciona)
Responder1
Parece que gettext
é a melhor solução, mas se você realmente não quiser usá-la, talvez algo assim seja suficiente? Supondo que seu bash suporte 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}]}