Доброго времени суток! Собсно задался вопросом локализации BASH скрипта... Языковые файлы лежат в определенной папке. Содержание у них вида: language=Русский. Их названия соответствуют кодовым названиям языков (ru.lng, en.lng и тп). Содержимое их читается и отображается. Проблема в том, что не могу никак придумать к вывести меню для их выбора. Т.е вот человек создал свой языковой файл (например uk.lng), в каждом из таких файлов есть строка language=НазваниеЯзыка. Как можно вывести список этих языков в меню на основании файлов в их языковой директории (название языка из языкового файла будет доставаться: language=).
Знаю что вопрос глупейший, сильно уже не пинайте. Кому не сложно, не могли бы вы предоставить пример такой реализации? Заранее спасибо.
сергей кузьмин, вы немного не так меня поняли. Меню строить я умею. Мне нужно, чтобы скрипт сам "искал" языки. Т.е брал папку lang и из нее файлы. Далее строил меню циклом, в котором названия языков будут браться из этих самых языковых файлов. Выглядеть должно это как-то так:
1. Русский
2. English
ВЫБЕРИТЕ ПУНКТ:
Еще раз, чтобы НЕ Я писал какие у меня языки есть, а он сам сканировав файлы с расширением .lng создавал меню. Вот такую реализацию я например отрыл на BAT:
:setlanguage
set count=0
cecho {!colG!}!str_selectlang!{# #}{\n}
FOR %%F IN (%bindir%language\*.lng) DO (
set /A count+=1
set name!count!=%%~nF
echo !count! = %%~nF
)
:_language
set INPUT=
set /P INPUT=!str_makechoice!
if !INPUT! GTR !count! (goto _language)
if !INPUT! LSS 1 (goto _language)
set language=!name%INPUT%!
echo language=!language!>%bindir%language\lang
:__language
chcp 1252>nul
for /F "eol=; tokens=1* delims==" %%a in ('type "%bindir%language\english.lng"') do set str_%%a=%%b
if "!language!"=="english" goto:eof
for /F "eol=; tokens=1* delims==" %%a in ('type "%bindir%language\!language!.lng"') do (
if "%%a"=="codepage" chcp %%b>nul
)
for /F "eol=; tokens=1* delims==" %%a in ('type "%bindir%language\!language!.lng"') do set str_%%a=%%b
goto:eof
AirFlare, вы свою задачу собираетесь решить методом копировать/вставить ?
прочитайте про find и grep и решите задачу " чтоб он сам сканировав файлы с расширением .lng" - меню делать вы уже умеете
"помогите решить" или "сделайте за меня"?
если опция 2 вам думаю не сюда
На самом деле там еще проще можно немного, если только путь к файлу надо.
#!/bin/bash
declare -A LANGUAGES
BASE="./langs"
for path in $(find $BASE -name '*.lng')
do
line=$(grep "language" $path)
name=${line#*=}
LANGUAGES[$name]=$path
done
echo ${!LANGUAGES[@]}
echo ${LANGUAGES[@]}
select l in ${!LANGUAGES[@]}
do
echo "Selected: $l"
echo "Selected file: " ${LANGUAGES[$l]}
break
done