Как переводить сценарии 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-сценариев