PROGRESS version 8 - интернационализация и
поддержка национальных алфавитов
Б.Меленевский, CSBI EE
Одним из основных требований к СУБД с точки зрения Открытых Систем является требование
адаптации к национальной информационной среде. При рассмотрении вопросов
интернационализации обычно выделяют три основные момента
- Количество бит, используемых для представления символов 7 или 8.
- Все ли ресурсы системы, связанные с поддержкой национальных
алфавитов (кодовые таблицы, системные сообщения) вынесены из ядра СУБД,
а их выбор достигается установкой соответствующих переменных окружения.
- Поддержка всеми средствами разработки соответствующих настроек.
Кроме этого PROGRESS предоставляет уникальную возможность одновременной поддержки
нескольких языков в одном приложении, что позволяет использовать, разрабатываемые
приложения в странах с несколькими языками.
1. Национальные алфавиты и таблицы кодировок
В каждой стране используется свой алфавит - набор символов (немецкий, французский, испанский,
русский). Для их представления обычно используются "Таблицы Кодировок", содержащие коды от
нуля до двухсот пятидесяти пяти. Однако в некоторых случаях одного байта не хватает для
представления всех символов алфавита (китайский, японский, корейский). PROGRESS
предоставляет возможность работы как с однобайтовыми и двубайтовыми таблицами
кодировок.
В России известно несколько Таблиц Кодировок альтернативная, основная, дополнительная. В
операционных системах DOS, MS-WINDOWS, UNIX также используются различные Таблицы
Кодировок. Рассмотрим как в Progress осуществляется описание, настройка и динамическое
преобразование Таблиц Кодировок для различных операционных систем и оборудования.
Описанный ниже алгоритм позволяет освободить разработчика от задач, связанных с
локализацией продуктов и настройкой их на работу в конкретном операционном окружении, что
значительно облегчает его работу и экономит время, необходимое на разработку и сопровождение
программного продукта.
Вся информация необходимая для настройки Таблиц Кодировок, в PROGRESS они называются
кодовыми страницами, содержится в файле convmap.cp. Этот файл хранится во внутреннем
формате PROGRESS, и создается специальной утилитой из обычного текстового файла
convmap.dat.
В данном файле хранится несколько специальных таблиц, двух типов - определения кодовых
страниц и правил сортировки.
- Для каждой кодовой страницы определяется таблица букв - ISALPHA, в которой указывается
является ли символ буквой или нет (знак пунктуации, цифра и т.д.). Progress использует эту
таблицу для проверки символов при вводе с определением формата. Таблица ISALPHA состоит из
256 полей, пронумерованных от 0 до 255. Каждое поле соответствует одному символу кодовой
таблицы. Если символ является буквой, то в соответствующем ему поле стоит значение 001. В
противном случае значение поля равняется 000.
Для каждого символа от 0 до 255, является ли он буквой или нет. В случае, если символ является
буквой, в таблице 1 на соответствующему ему месте стоит код 001. В противном случае - 000. Тип
таблицы указывает используется ли данная таблица для однобайтовой кодировки или нет.
Значение TYPE 1 указывает, что данная таблица используется для однобайтовых кодировок.
- ====
- CodePAGE
- CODEPAGE-NAME "NEW1"
- TYPE "1"
- ISALPHA
- /*000-015*/ 000 000 000 000 000 000 000 000 000 000 000 000 000 000
000 000
- /*016-031*/ 000 000 000 000 000 000 000 000 000 000 000 000 000 000
000 000
- .
- .
- /*128-143*/ 001 001 001 001 001 001 001 001 001 001 001 001 001 001
001 001
- .
- .
- /*240-255*/ 000 000 000 000 000 000 000 000 000 000 000 000 000 000
000 000
- ENDTABLE
- ENDCODEPAGE
- Следующие две таблицы - UPPERCASE-MAP и LOWERCASE-MAP, определяют правила
преобразования прописных букв в заглавные и наоборот. Для каждой кодовой страницы
возможно задание нескольких пар таких таблиц. Как правило, используется пара под названием
BASIC. Эти таблицы используются как при вводе информации, так и при выполнении операторов
LowerCase, CAPS и др.
- Таблица преобразований кодовых страниц - CONVERT. Эти таблицы определяют правила
перекодировок между двумя различными кодовыми таблицами. Таких таблиц может быть
несколько, но обязательно должна существовать по крайней мере одна из них.
- Для задания правил сортировки используется две таблицы CASE-SENSITIVE-SORT и CASE-
INSENSITIVE-SORT. В первом случае вначале идут все заглавные буквы, а затем все прописные.
Во втором случае порядок следования символов будет следующим "A", "a", "Б", "б" и т.д.
После определения все этих таблиц необходимо запустить утилиту преобразования получившегося
файла (convmap.dat) во внутренний формат Progress (convmap.cp).
- Proutil -C codepage-compiler ....\convmap.dat ....\convmap.cp
После выполнения всех этих действий Вы уже можете использовать подготовленную Вами
кодовую страницу. Для этого в стартовом файле необходимо указать значение параметра -
convmap.
2. Системные сообщения
В ряде случаев, особенно при эксплуатации системы неспециалистами в области информационных
технологий, требуется исключить появление на экране любой информации на языке, отличном от
используемого в данной стране. Основную проблему вызывают системные сообщения,
появляющиеся при различных сбоях, как правило они выдаются только на английском языке. В
Progress Вы можете выбрать язык на котором будут выдаваться системные сообщения, среди них
естественно есть и русский.
3. Работа Progress в гетерогенной сети
Различные устройства могут использовать различные кодовые страницы и при работе в
гетерогенных сетях важно уметь настроить ваше приложение на работу с такими устройствами.
PROGRESS различает несколько типов кодовых страниц - внутренняя страница, страница баз
данных, страница печати, страница символьного терминала, страница дополнительного потока.
Progress осуществляет автоматическое преобразование информации в соответствии с задаваемыми
кодовыми страницами. Конечный пользователь приложения может даже не знать, что различные
устройства используют различные кодовые страницы. Progress осуществляет следующие типы
преобразований: Значения используемых кодовых страниц указываются при запуске сессии
Progress и Progress автоматически осуществляет необходимые преобразования.
Приведем некоторые стартовые параметры.
- cpinternal позволяет установить кодовую страницу, используемую
PROGRESS для внутренних операций.
- cpstream позволяет определить кодовые страницы, используемые при
импорте и экспорте файлов, а также для дополнительных потоков.
- cpterm позволяет вам установить кодовую страницу для алфавитных
терминалов, использующих кодовую страницу отличную от внутренней.
- cpprint позволяет определить кодовую страницу для принтера.
- cpcoll позволяет определить кодовую страницу для клиентского процесса.
Кроме преобразований кодовых таблиц имеется дополнительная возможность преобразования
символов с помощью специального файла PROTERMСAP. В этом файле, как правило, содержится
описание терминалов, которые подключенные к системе (последовательности символов
генерируемые при нажатии функциональных клавиш, служебные команды, могут быть также
определены дополнительные преобразования данных при работе с этим типом терминала и другие
параметры).
Progress приложения могут работать не только с базами данных Progress, но и с другими базами
данных Oraclе, SYBASE. В некоторых случаях разные поставщики используют разные
наименования для одной и той же кодовой страницы, как например, SYBASE использует
наименование ISO-1 вместо ISO8859-1. В этом случае вам необходимо позаботиться о правильном
определении таблиц перекодировок в файле convmap.cp.
4. Одновременная поддержка нескольких языков
Все более актуальной становится возможность использования одного и того же приложения в
различных странах на разных языках с учетом национальных традиций и особенностей. В России
ряд разработчик также столкнулся с такого же рода задачей. Российские приложения хотят
эксплуатировать на Украине, в Казахстане, в других странах бывшего Советского Союза. При
этом встает вопрос поддержки национальных алфавитов каждой из этих стран. Progress Software
разработала специальный продукт Translation Manager 2 для решения этих вопросов. В его состав
входят две основные компоненты - Translation Manager и Visual Translator.
Описание процесса перевода приложения
В процессе перевода выделяются две ключевые фигуры: руководитель проекта и собственно
переводчик. Каждый из них решает свои задачи. Руководитель проекта формирует задание для
переводчика, определяет стоимость работы, распределяет ее между переводчиками, осуществляет
контроль за выполнением работы, готовит окончательный вариант приложения. Переводчик
получает задание, осуществляет перевод и возвращает выполненную работу руководителю
проекта. В соответствии с этими ролями распределены функции между двумя компонентами.
Руководитель проекта определяет те процедуры, которые должны быть переведены на другой
язык. После этого он указывает фильтр для типов сообщений, которые необходимо перевести в
каждой процедуре. Такими типами могут быть: меню, метки, наименования кнопок и т.д. После
этого происходит формирование задания на перевод для переводчиков. В задание могут быть
включены стандартные словари, содержащие перевод основных терминов, при этом допускается
использование стандартных словарей фирмы Microsoft, которые использовались для перевода
Word и Excel. При этом выдается вся статистика, позволяющая оценить трудоемкость работы и
возможные сроки ее окончания. Переводчику передается только информация, необходимая для
перевода без логики самого приложения. Задание может посылаться по почте, на дискете или иным
способом.
Получив задание, переводчик приступает к его переводу на другой язык. Возможны два режима
перевода: поэкранный либо построчный. После окончания перевода и его проверки переводчик
посылает выполненное задание обратно руководителю проекта.
Руководитель проекта, собрав полученные работы от переводчиков, консолидирует их работу и
выполняет компиляцию приложений. После этого с данным приложением можно работать с
использованием нового языка. Для указания языка используется стартовый параметр - lng.
_prowin.exe -p _desk.p -lng Russian
Заключение
Вопросы интернационализации приложений и поддержка национальных алфавитов является
одним из принципов открытости системы. С другой стороны реализация этого требования
довольна сложна, так как требует решения большого количества проблем: сортировки, формат
отображения дат и денежных единиц, календарных дней, телефонных номеров и т.д.
Опыт работы с PROGRESS и программными продуктами, разработанными на c его помощью
показал, что PROGRESS удовлетворяет самым жестким требованиям, предъявляемым к понятию
Открытой Системы с точки зрения Интернационализации, так в 1996г. оборот
американской компании PROGRESS SOFTWARE от операций за пределами США превысил
50%.
[Назад]
[Содержание]
[Вперед]