Как переводить sh-сценарии
Как переводить сценарии 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 , так что его можно и опустить
Смотри также
- info gettext
- примеры в /usr/share/doc/gettext*
- локализация gawk-сценариев