LINUX.ORG.RU

Переменные в bash

 ,


0

3

Друзья помогите разобраться, как сделать переменные в bash типа: show_info 'Начало...' show_success 'Готово.' Что бы можно было поставить $DONE и для разных языков из файла, например, lang выводился нужный перевод, например Готово и Done

Что-то такое?

$ cat ru
START='Начало'
STOP='Остановка'

$ cat en
START='Start'
STOP='Stop'

$ cat script.sh 
#!/bin/bash

source $1

echo $START
echo $STOP

$ ./script.sh ru
Начало
Остановка

$ ./script.sh en
Start
Stop

alozovskoy ★★★★★
()
Последнее исправление: alozovskoy (всего исправлений: 2)
Ответ на: комментарий от alozovskoy

Да, но хочу все строчки перевода в value_ru например, а в сам script.sh вставлять show_info '$START' что бы не писать два одинаковых скрипта для двух языков

spogrom1
() автор топика
Ответ на: комментарий от spogrom1

Перечитай еще раз мой пример - скрипт у меня написан один, а вот «переводов» - два. Может это и не очень оптимально, но для понимания все чрезвычайно просто.

alozovskoy ★★★★★
()
Ответ на: комментарий от Punk

TITLE="$(gettext 'Drive Mounter')"
TITLE2="$(eval_gettext 'Drive Mounter $x')"

Что это еще за костыль?

Баш с незапамятных времен (с прошлого века еще, наверное) сам умеет в локализацию. ГНУ же как-никак.

Ключевое слово: $"".

Zmicier ★★★★★
()
Последнее исправление: Zmicier (всего исправлений: 1)
Ответ на: комментарий от Zmicier

А вообще, можно и кратко расписать:

$ cat ~/.bin/hello
#!/bin/bash
TEXTDOMAINDIR="$HOME/.share/locale"
TEXTDOMAIN=hello

echo $"Hello, world!"

$ bash --dump-po-strings hello > ru/hello.po

$ editor ru/hello.po # do the magic

$ cat ru/hello.po 
#: hello:5
msgid "Hello, world!"
msgstr "Привет, мир!"

$ msgfmt ru/hello.po -o ~/.share/locale/ru/LC_MESSAGES/hello.mo

$ hello
Hello, world!

$ LANG=ru_RU.UTF-8 hello
Привет, мир!
Zmicier ★★★★★
()
Последнее исправление: Zmicier (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.