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