bash script több nyelven

Készítettem egy scriptet, és szeretném ha több nyelven is elérhető lenne, ha egy lang változó átállításra kerül a config fájlban.
Jelenleg ezt úgy oldottam meg hogy van a lang fájl, és abban String001="valami szöveg" van.
Igen ám, de így egészen átláthatatlan a script, mert nem tudom hogy mi hová tartozik.
Például:

while true; do
echo -n "${Cyan} ${String056} (y/n) "
read answer || break
answer_control_yn
error_level
done
if [ "${answer}" = "n" ]; then
echo -e "${Red} ${String057} ${NC} \n \r"
sound_mute
exit
fi

Miként lehet ezt elegánsabban megoldani? Nem beszélve arról hogy ez a sok változó nincs-e hatással a teljesítményre, illetve van-e valami maximum amivel még elbír a rendszer? A c és társaihoz nem értek.

Hozzászólások

lang=hu
IFS=';'
while read lngcode hu en; do
eval "$lngcode='${!lang}'"
done < project.lng

project.lng:

l_kerdes1;Mi a neved?;Whats ur name?
l_kerdes2;Mi a kedvenc szined?;Whats ur fav color?
l_kerdes3;Hány tököt bír el egy fecske?;How many fetchckey can hold a pumpkin?

~~~~~~~~
http://www.youtube.com/watch?v=VbUVqODL1nE

Beszédesebb nevek a

String001

forma helyett + megjegyzések?

:)

>> Jelenleg ezt úgy oldottam meg hogy van a lang fájl, és abban String001="valami szöveg" van.
>> Igen ám, de így egészen átláthatatlan a script, mert nem tudom hogy mi hová tartozik.

Valahol láttam egy ilyen megoldást:
hu.txt:
valami_szoveg = "valami szöveg"
en.txt:
valami_szoveg = "something text"

és csak az adott file-t töltik be.
Persze érdemes angolul írni a változó neveket és akkor más is le tudja fordítani a saját nyelvere könnyen.


#!/bin/sh
LANG="hu"
. $LANG.txt
echo $green_apple

hu.txt:

green_apple="Zöld alma"

gettext?

Nagy elonye, hogy gettext kvazi alap, es megiscsak jobban nez ki, mint a ${String057} stuff.

--
|8]

Jaja, illetve, ha az egy fájl látványosabb, körbe lehet járni:


mygettext () {
case $LANG in
hu*|HU*)
sed \
-e 's/@cyan@/türkiz... asszem/g' \
-e 's/@valami kerdes@/kiszeraméra bávatag?/g'
;;
en*|EN*|C)
sed \
-e 's/@cyan@/Cyan/g' \
-e 's/@valami kerdes@/What the heck?/g'
;;
*)
# ez meg milyen nyelv?
;;
esac

}

echo -n "@cyan@ @valami kerdes@ (y/n) " | mygettext

ööö A félreértések végett.
Már van egy lang mappa, és abban jelenleg két fájl hu, és en.
A config fájlban megadom a language=hu -t akkor minden üzenet magyar lesz. Ha a config fájlban a language=en akkor minden üzenet angol lesz. Hogy miként hívom be az adott fájlt, azt már megoldottam. Ez most így működik, de már nem tudom hogy hová mit írtam.

Az IFS-t ismerem de jelen esetben nem játszik, mert megzavarja a működést. Legalábbis nem tudom globálisan alkalmazni. Mivel egy tömb feldolgozása során már használom.

A gettext jó lehet, de valami olyan példát kéne találnom, amelyben látom a két nyelv megvalósítását. Miként lesz az adott szöveg egyszer angol, másszor magyar.

Illetve az alsó vonás alkalmazása a Stringx helyett is jó ötletnek tűnik.