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 gettext
die 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}]}