Глобализация и локализация приложений PL/SQL: основные понятия

Глобализация и локализация приложений PL/SQL: основные понятия

Коммерческие предприятия редко сразу выходят на глобальный уровень. Обычно они начинают с местного или регионального уровня, планируя расширение на будущее. По мере выхода в новые регионы, в которых действуют другие культурные контексты, программное обеспечение приходится адаптировать к новым языкам и требованиям форматирования. Если приложение не спроектировано с расчетом на поддержку нескольких локальных контекстов, такой переход оказывается чрезвычайно длительным и дорогостоящим.

В идеале в PL/SQL глобализация является неотъемлемой частью архитектуры приложения, а при принятии всех решений проектировщик задает себе вопрос: «В какой стране это решение не будет работать?» К сожалению, в реальном мире многие компании не включают стратегию глобализации в свою исходную архитектуру. Дополнительные затраты, отсутствие опыта глобализации или просто неспособность предвидеть глобальный характер бизнеса — самые распространенные причины, по которым игнорируются риски локализации.

Хотя в чем, собственно, проблема? Разве она не решается простым переводом данных? Нет, не совсем. Многие стандартные задачи программирования PL/SQL имеют последствия, которые могут нарушить работу вашего приложения в другом локальном контексте.

Точность переменных. Переменной CHAR(1) вполне достаточно для хранения символа «F», но хватит ли ее для символа «К»?

Порядок сортировки результата. Порядок ORDER BY легко определяется для английского языка. Будет ли он так же просто определяться в корейском, китайском или японском языке? И что делать с комбинационными символами или символами, содержащими диакритические знаки?

Выборка информации. Язык PL/SQL часто используется для написания информационно-поисковых систем. Как организовать хранение данных на нескольких языках с универсальным поиском по одному запросу?

Формат даты/времени. В разных странах и регионах используются разные календари и форматы данных. Насколько устойчив ваш код к подобным модификациям?

Формат денежных величин. Проблемы выходят за рамки простого преобразования денежных сумм. Неправильно поставленная запятая или точка, соответствующая национальным правилам форматирования денежных величин, может случайно изменить интерпретацию денежной суммы.

В этой серии статей рассматриваются последствия подобных проблем, а также показано, как пишется код PL/SQL, в котором эти проблемы учитываются и успешно решаются. Мы начнем с обсуждения Юникода и архитектуры Oracle Globalization Support. Далее будут продемонстрированы проблемы, связанные с использованием многобайтовых символов, а также описаны пути их решения в программах PL/SQL. Затем мы обсудим некоторые сложности, связанные с сортировкой символьных строк в разных наборах символов, и изучим эффективную выборку многоязыковой информации. В завершение серии статей будет показано, как заставить ваше приложение работать с разными форматами даты/ времени и денежных величин.

Стратегия глобализации

В этой серии блогов мы будем работать со схемой g11n. Если вы захотите установить этот каталог в своей среде, загрузите файл G11N.ZIP с сайта книги и распакуйте его в свой локальный каталог. Включите в заголовок g11n.sql правильные значения параметров для вашей системы, но будьте внимательны и проследите за тем, чтобы сохранение осуществлялось в Юникоде. Если файлы сохраняются в ASCII или другой западной кодировке, многобайтовые символы в файле будут сохранены некорректно, и при запуске сценариев возникнут ошибки. Сценарий g11n.sql создает пользователя с именем g11n, представляет ему привилегии для работы с примерами, создает объекты и добавляет начальные данные. За дополнительными инструкциями обращайтесь к заголовку файла g11n.sql.

 

Общие сведения и терминология

Прежде чем переходить к основному материалу, давайте разберемся с терминологией. Термины «глобализация», «интернационализация» и «локализация» часто используются как синонимы, однако они имеют совершенно разный смысл.

В табл. 1 объясняется смысл каждого термина и связь между ними.

Таблица 1. Терминология

Термин Общепринятое сокращение Определение
Глобализация g11n Стратегия разработки приложения, ориентированная на многоязыковую поддержку и независимость от локального контекста.
Глобализация достигается посредством интернационализации и локализации
Интернационализация i18n Проектирование или модификация приложения, направленные на работу во многих локальных контекстах
Локализация l10n Процесс внесения изменений, обеспечивающих работу приложения в каждом конкретном локальном контексте. В частности, локализация включает перевод текстов; задача упрощается при качественном выполнении интернационализации


Если вы еще не видели сокращения из табл. 1, обратите внимание на числа между буквами. Сокращение состоит из первой и последней буквы каждого термина, между которыми заключено количество символов. Например, в слове «globalization» между «g» и «n» заключено 11 букв, отсюда и сокращение g11n.

Oracle поддерживает локализацию для любой части света. Впрочем, иногда приходится слышать мнение, что полноценная локализация Oracle означает, что вы можете ввести данные на английском языке и вести поиск в них на японском. Ничего подобного! Oracle не содержит встроенного ядра, которое могло бы на ходу переводить для вас текст. Впро­чем, если вы когда-нибудь видели результаты машинного перевода, вряд ли вам захочется пользоваться встроенными «функциями» такого рода. Oracle поддерживает локализацию, но не реализует ее за вас. Этим приходится заниматься самому программисту .

Таблица 2. Терминология, продолжение

Термин Определение
Кодировка Каждый символ является представлением кодовой точки (code point). Кодировка является отображением между символами и кодовыми точками. Тип кодировки, выбранной
для базы данных, определяет возможность хранения и выборки кодовых точек
Набор символов Символы группируются в соответствии с языком или регионом. Множество символов,
относящихся к некоторому региону, называется набором символов
Кодовая точка Каждый символ в каждом наборе имеет уникальный идентификатор, называемый кодовой точкой. Этот идентификатор определяется Консорциумом Юникода. Кодовая точка
представляет символ в целом или может объединяться с другими кодовыми точками
для формирования составных символов. Пример кодовой точки — \0053
Глиф Глифом называется графическое представление символа, связанное с одной или не-
сколькими кодовыми точками. Глиф, связанный с кодовой точкой \0053, представляет
собой прописную букву S
Многобайтовые символы Для представления символов большинства западно-европейских языков хватает одного байта. Многобайтовые символы (японские, корейские и т. д.) используют от 2 до 4 байтов для хранения одного символа в базе данных
NLS NLS (National Language Support) — старое название архитектуры глобализации Oracle.
Начиная с Oracle9i используется новый термин Globalization Support, но в документации и параметрах время от времени встречается старое сокращение NLS
Юникод Стандарт кодировки символов

Важнейшей частью глобализации и локализации программ PL/SQL является использование Юникода. Об этом и поговорим в следующей статье.

 

Вас заинтересует / Intresting for you:

Встроенные методы коллекций PL...
Встроенные методы коллекций PL... 14850 просмотров sepia Tue, 29 Oct 2019, 09:54:01
Управление приложениями PL/SQL...
Управление приложениями PL/SQL... 4654 просмотров Stas Belkov Thu, 16 Jul 2020, 06:20:48
Средства оптимизации приложени...
Средства оптимизации приложени... 8096 просмотров Александров Попков Fri, 16 Nov 2018, 15:27:51
Работа с коллекциями PL/SQL на...
Работа с коллекциями PL/SQL на... 42678 просмотров sepia Tue, 29 Oct 2019, 10:38:40
Войдите чтобы комментировать