Как переводить sh-сценарии: различия между версиями
(Import from freesource.info) |
(wikification) |
||
Строка 1: | Строка 1: | ||
[[ | [[Категория:Devel]] | ||
{{MovedFromFreesourceInfo|AltLinux/Sisyphus/devel/КакПереводитьСценарииBash}} | {{MovedFromFreesourceInfo|AltLinux/Sisyphus/devel/КакПереводитьСценарииBash}} | ||
Строка 23: | Строка 23: | ||
<pre>$ msgfmt -o program.mo program.po</pre> | <pre>$ msgfmt -o program.mo program.po</pre> | ||
Файл program.mo должен быть скопирован в <tt>/usr/share/locale/ru/LC_MESSAGES</tt> ( | Файл program.mo должен быть скопирован в <tt>/usr/share/locale/ru/LC_MESSAGES</tt> (ru — в зависимости от языка) | ||
Сценарий должен начинаться со строк | Сценарий должен начинаться со строк | ||
Строка 31: | Строка 31: | ||
TEXTDOMAINDIR='/usr/share/locale' | TEXTDOMAINDIR='/usr/share/locale' | ||
export TEXTDOMAINDIR TEXTDOMAIN</pre> | export TEXTDOMAINDIR TEXTDOMAIN</pre> | ||
TEXTDOMAINDIR и так по умолчанию /usr/share/locale , так что его можно и опустить | TEXTDOMAINDIR и так по умолчанию /usr/share/locale, так что его можно и опустить | ||
=== Смотри также === | === Смотри также === |
Версия от 11:37, 5 августа 2008
Как переводить сценарии 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-сценариев