Как переводить сценарии bash

Консольные скрипты, выводящие локализованные тексты в консоль, должны быть
локализованы с помощью gettext.
Небезопасный способ: строки в скрипте должны быть в двойных кавычках,
предварённых знаком '$', то есть выполнены так:

============================================================================
echo $"An example: $PATH"
============================================================================

Далее выполняем:

============================================================================
$ bash --dump-po-strings program.sh >program.po
============================================================================

Переводим нужные строки.

Правильный способ:

============================================================================
gettext "An example"; echo
============================================================================

или если требуется вычисление переменных:

============================================================================
eval_gettext "An example: \$PATH"; echo
============================================================================

Далее выполняем:

============================================================================
$ xgettext -o program.po program.sh
============================================================================

Переводим нужные строки.
Компилируем переведённый файл сообщений:

============================================================================
$ msgfmt -o program.mo program.po
============================================================================

Файл program.mo должен быть скопирован в /usr/share/locale/ru/LC_MESSAGES
(ru – в зависимости от языка).
Сценарий должен начинаться со строк:

============================================================================
. gettext.sh

TEXTDOMAIN=program
TEXTDOMAINDIR='/usr/share/locale'
export TEXTDOMAINDIR TEXTDOMAIN
============================================================================

TEXTDOMAINDIR и так по умолчанию /usr/share/locale, так что его можно и опустить.

Как переводить sh-сценарии

Материал из ALT Linux Wiki

Содержание

1 Пометка локализуемых строк и получение .pot
1.1 Правильный способ
1.2 Небезопасный[1] способ, к тому же работающий только в bash
2 Установка переводов
3 Использование переводов
4 Ссылки
Пометка локализуемых строк и получение .pot

Правильный способ
============================================================================
gettext "An example"; echo
eval_gettext "An example: \$VAR"; echo
============================================================================
Далее
============================================================================
$ xgettext -o program.pot program.sh
============================================================================
Небезопасный[1] способ, к тому же работающий только в bash

Только для справки!

Предварить локализуемые строки в скрипте символом $:
============================================================================
echo $"An example: $PATH"
============================================================================
Далее
============================================================================
$ bash --dump-po-strings program.sh > program.pot
============================================================================
Установка переводов

Компилируем переведённый файл сообщений
============================================================================
$ msgfmt -o program.mo program-<lang>.po
============================================================================
И копируем его в /usr/share/locale/<lang>/LC_MESSAGES

Использование переводов

В начале скрипта:
============================================================================
. gettext.sh

TEXTDOMAIN=program
export TEXTDOMAIN
============================================================================

Ссылки

http://www.gnu.org/software/gettext/man … /bash.html
info gettext
примеры в /usr/share/doc/gettext*
локализация gawk-сценариев