establecer bash de idioma y poner variables

establecer bash de idioma y poner variables

Estoy haciendo un script bash que contiene dos idiomas. Pero no pude lograr su estructura. Los mensajes "hacen eco" cambian, el resto no cambia.

Ejemplo de mi guión:

eng

 echo "Hello word"
 sudo blabla
 echo "Done"

spa

echo "Hola Mundo"
sudo blabla
echo "Terminado"

Ahora esta es mi idea:

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

Entonces necesito crear variables en el script.

 $eng1
 sudo blabla
 $eng2

Muy complicado...

Este ejemplo es muy fácil. La situación se complica aún más cuando se trata de una función.

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

y necesito cambiar el idioma a "read -p" y "echo"

PD: No estoy muy familiarizado con el uso de gettext (y no me gusta cómo funciona)

Respuesta1

Parece que gettextes la mejor solución; sin embargo, si realmente no quieres usarla, ¿tal vez algo como esto sería suficiente? Suponiendo que su bash admita matrices.

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

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

echo ${greeting[${eng}]}
sudo blablabla
echo ${goodbye[${eng}]}

información relacionada