П О Р Т А Л                            
С Е Т Е В Ы Х                          
П Р О Е К Т О В                        
  
Поиск по сайту:
                                                 
Главная

О проекте

Web-мастеру
     HTML & JavaScript
     SSI
     Perl
     PHP
     XML & XSLT
     Unix Shell

MySQL

Безопасность

Хостинг

Другое








Самое читаемое:

Учебник PHP - "Для Чайника".
Просмотров 185009 раз(а).

Иллюстрированный самоучитель по созданию сайтов.
Просмотров 85609 раз(а).

Учебник HTML.
Просмотров 78966 раз(а).

Руководство по PHP5.
Просмотров 49542 раз(а).

Хостинг через призму DNS.
Просмотров 57126 раз(а).

Подборка текстов стандартных документов.
Просмотров 48756 раз(а).

Учебник PHP - Самоучитель
Просмотров 55451 раз(а).

Документация на MySQL (учебник & справочное руководство)
Просмотров 56587 раз(а).

Внешние атаки...
Просмотров 46001 раз(а).

Учебник PHP.
Просмотров 40638 раз(а).

SSI в примерах.
Просмотров 30783 раз(а).



 
 
| Добавить в избранное | Сделать стартовой | Помощь





Приложение G. Локализация

Возможность локализации сценариев Bash нигде в документации не описана.

Локализованные сценарии выводят текст на том языке, который используется системой, в соответствии с настройками. Пользователь Linux, живущий в Берлине (Германия), будет видеть сообщения на немецком языке, в то время как другой пользователь, проживающий в Берлине штата Мэриленд (США) -- на английском.

Для создания локализованых сценариев можно использовать следующий шаблон, предусматривающий вывод всех сообщений на языке пользователя (сообщения об ошибках, приглашения к вводу и т.п.).

#!/bin/bash
# localized.sh
# Автор Stephane Chazelas, дополнил Bruno Haible

. gettext.sh

E_CDERROR=65

error()
{
  printf "$@" >&2
  exit $E_CDERROR
}

cd $var || error "`eval_gettext \"Can't cd to \$var.\"`"
read -p "`gettext \"Enter the value: \"`" var

# ...


bash$ bash -D localized.sh
"Can't cd to %s."
"Enter the value: "
Это список всех текстовых сообщений, которые подлежат локализации. (Ключ -D выводит список строк в двойных кавычках, которым предшествует символ $, без запуска сценария на исполнение.)

bash$ bash --dump-po-strings localized.sh
#: a:6
 msgid "Can't cd to %s."
 msgstr ""
 #: a:7
 msgid "Enter the value: "
 msgstr ""
Ключ --dump-po-strings в Bash напоминает ключ -D, но выводит строки в формате "po", с помощью утилиты gettext.

Note

Bruno Haible отмечает, что:

Начиная с версии gettext-0.12.2, вместо bash --dump-po-strings localized.sh, рекомендуется использовать xgettext -o - localized.sh, потому что xgettext . . .

1. понимает команды gettext и eval_gettext (тогда как bash --dump-po-strings только свой синтаксис в виде $"..." )

2. может извлекать комментарии программиста, предназначенные для переводчика.

Такой код не привязан к определенной версии Bash и может быть исполнен в Bash 1.x или других реализациях /bin/sh.

Теперь построим файл language.po, для каждого языка, на которые предполагается перевести сообщения сценария. Например:

Файл ru.po сделан переводчиком, в оригинальном документе локализация выполнена на примере французского языка

ru.po:

#: a:6
msgid "Can't cd to %s."
msgstr "Невозможно перейти в каталог %s."
#: a:7
msgid "Enter the value: "
msgstr "Введите число: "


Затем запустите msgfmt.

msgfmt -o localized.sh.mo ru.po

Перепишите получившийся файл localized.sh.mo в каталог /usr/share/locale/ru/LC_MESSAGES и добавьте в начало сценария строки:

TEXTDOMAINDIR=/usr/share/locale
TEXTDOMAIN=localized.sh


Если система корректно настроена на русскую локаль, то пользователь, запустивший сценарий, будет видеть сообщения на русском языке.

Note

В старых версиях Bash или в других командных оболочках, потребуется воспользоваться услугами утилиты gettext, с ключом -s. В этом случае наш сценарий будет выглядеть так:

#!/bin/bash
# localized.sh

E_CDERROR=65

error() {
  local format=$1
  shift
  printf "$(gettext -s "$format")" "$@" >&2
  exit $E_CDERROR
}
cd $var || error "Can't cd to %s." "$var"
read -p "$(gettext -s "Enter the value: ")" var
# ...


А переменные TEXTDOMAIN и TEXTDOMAINDIR, необходимо будет экспортировать в окружение.

---

Это приложение написано Stephane Chazelas, и дополнено Bruno Haible, ведущим разработчиком GNU gettext.

Назад |Содержание | Вперед



Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту: