Sprache Bash festlegen und Variablen einfügen

Sprache Bash festlegen und Variablen einfügen

Ich erstelle ein Bash-Skript, das zwei Sprachen enthält. Aber ich konnte die Struktur nicht erreichen. Die Nachrichten „echoen“ ändern sich, der Rest ändert sich nicht.

Beispiel meines Skripts:

eng

 echo "Hello word"
 sudo blabla
 echo "Done"

Spa

echo "Hola Mundo"
sudo blabla
echo "Terminado"

Das ist nun meine Idee:

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

Also muss ich eine Variable in das Skript einfügen

 $eng1
 sudo blabla
 $eng2

Sehr kompliziert...

Dieses Beispiel ist sehr einfach. Die Situation wird noch komplizierter, wenn es sich um eine Funktion handelt

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

und muss die Sprache in „read -p“ und „echo“ ändern

PD: Ich bin mit der Verwendung von gettext nicht sehr vertraut (und mir gefällt die Art und Weise nicht, wie es funktioniert)

Antwort1

Es scheint gettextdie beste Lösung zu sein, aber wenn Sie es wirklich nicht verwenden möchten, würde vielleicht so etwas ausreichen? Vorausgesetzt, Ihre Bash unterstützt Arrays.

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

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

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

verwandte Informationen