Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Вопросы к экзамену СМО(ответы. Еличева).doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
8.96 Mб
Скачать
  1. Интернационализация, регионы, Unicode.

Интернационализация

Меж­дународные рынки начинают играть все более важную роль для компьютер­ной промышленности. Продажи программ за рубежом составляют большую, чем когда-либо, долю рынка приложений. Перед Windows NT стоит задача сде­латься многоязычной ОС, дающей солидную основу для разработки и применения интернациональных приложений.

Видимая для пользователя часть поддержки интернационализации нахо­дится в Панели Управления (Control Panel) Windows NT, как показано на рис. 2-15.

Само диалоговое окно выглядит так же, как и в Windows 3.0. Однако, то, что скрыто за пользовательским интерфейсом, сильно изменилось. Поддержка ин­тернационализации в Windows NT значительно более рациональна и обеспечи­вает модульные средства как для приложений, так и для важных системных ком­понентов, таких как подсистема Win32. В следующих версиях пользовательский интерфейс средств интернационализации будет развиваться дальше.

Рис. 2-15. Диалоговое окно установок интернационализации.

В Windows NT 4.0 национальная поддержка получила дальнейшее развитие. В Control Panel можно указать такие параметры, как регион системы, устанавливаемый по умолчанию, регион текущего пользователя, зарегистрировавшегося локально, а также раскладки клавиатуры.

Регионы

Рынки с различными национальными и культурными особенностями, называе­мые регионами (locales), предъявляют к программному обеспечению разные требования. Основное требование — возможность для пользователя работать с программами на своем родном языке, используя привычные соглашения о типе представления данных.

Регион — это совокупность таких параметров, как язык, страна и кодовый набор, т. е. двоичные коды, используемые для представления символов данного языка. (Одним из таких кодовых наборов является Windows ANSI.) При установ­ке Windows NT пользователь задает язык, и с ним связывается регион по умолча­нию. Регион по умолчанию предоставляет пользователю соответствующие мест­ной культуре начальные установки для раскладки клавиатуры, порядка сортировки, вида валюты и форматов записи времени и даты. Любую из этих устано­вок по умолчанию пользователь может переопределить.

Тем не менее, желательна еще большая гибкость. В многоязычных странах, таких как Канада, Швейцария и Бельгия, пользователям необходимо регулярно переключаться между двумя или несколькими языками. Более того, некоторые компании, в том числе и Microsoft, имеют подразделения, в которых пользуются несколькими рабочими языками. В идеале каждый пользователь должен иметь возможность в любое время переключаться или пересылать данные между реги­онами без потери информации. Чтобы обеспечить эту возможность, приложе­ния (в данном случае Windows) необходимо разделить на две части:

• Код, который может быть использован во всех регионах.

• Данные, которые для каждого региона должны преобразовываться.

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

Для поддержки локализации подсистема Win32 содержит API поддержки национальных языков (national language support, NLS), которые предоставляют приложениям (и Windows NT) корректные с точки зрения национальной куль­туры: сравнение строк; таблицы сортировки символов разных языков; процеду­ры форматирования даты, времени и денежных сумм; процедуры для определе­ния текущего региона и других регионов, представленных в системе. Кроме того, NLS API содержат функции преобразования международного кодового набора, используемого Windows NT, в другие распространенные кодовые набо­ры. И подси­стема Win32, и библиотека времени выполнения С содержат свои собственные API, использующие NLS. Все эти средства позволяют приложениям поддержи­вать локализацию, не дублируя требуемый для этого значительный объем ин­формации (таблицы, кодовые наборы и т.д.).

Unicode

Самый низкий уровень поддержки локализации — это представление отдельных символов, кодовые наборы. В США для представления информации традицион­но используется стандарт ASCII (American Standard Code for Information Interchange — Американский стандартный код для обмена информацией). Одна­ко, для европейских и других стран этот код не является адекватным, так как в нем нет многих символов и знаков. Например, там нет знака британского фунта, а также диакритических символов, используемых во французском, немецком, датском и испанском языках.

Международная организация по стандартизации ISO (International Standards Organization) установила стандартный кодовый набор, называемый Latin 1 (стан­дарт ISO 8859-1) и определяющий коды для всех европейских символов, кото­рых нет в ASCII. В Microsoft Windows используется несколько измененный вари­ант Latin 1, который называется кодовым набором Windows ANSI. Windows ANSI является однобайтовой схемой кодирования (single-byte coding scheme), так как для представления каждого символа в нем используется 8 бит. Максималь­ное число символов, которое можно представить с использованием 8 бит, равно 256 (28).

Алфавит (script) — это набор литер, необходимых для записи текста на некотором языке. Часто один и тот же алфавит используется несколькими языками: например, кириллица применяется как в русском, так и в украинском. Windows ANSI и другие однобайтовые схемы могут закодировать количество символов, достаточное для представления букв любого западного алфавита. Однако восточные алфавиты, такие как японский или китайский, в которых используются тысячи разных символов, не удается закодировать при помощи однобайтовой схемы. В таких случаях используют двухбайтовую схему кодиро­вания, когда для каждого символа требуется 16 бит, либо многобайтовую, в кото­рой одни символы представляются 8 битами, а другие 1б, 24 или 32 битами. Пос­ледняя схема требует применения сложных алгоритмов разбора для определе­ния длины данного символа. Более того, большое число кодовых наборов озна­чает, что данному коду могут соответствовать совершенно разные символы на разных компьютерах, в зависимости от используемых на этих компьютерах кодо­вых наборов.

Для решения проблем множественности схем кодирования и для поддер­жки более широкого набора алфавитов Windows NT использует для представле­ния данных новый стандарт Unicode. Unicode - это 16-разрядная схема кодиро­вания символов, в которой можно представить 65536 (216) символов. Этого дос­таточно для всех современных, а также нескольких старых или мертвых языков, имеющих ограниченное применение (например, санскрита и, может быть, еги­петских иероглифов). Unicode также включает знаки препинания, математичес­кие символы и набор графических символов, называемых дингбатами (dingbats), после чего еще остается много места для расширений.

В Unicode "суть" символа отделена от информации о шрифте или форма­тировании, используемой для его отображения. Каждому коду соответствует один (и только один) символ; для отображения символов Unicode в различных стилях и формах к ним применяется информация о шрифте. Раскладка алфави­тов и символов в Unicode показана на рис. 2-16 .

Рис. 2-16. Раскладка Unicode.

Хотя подсистема Win32 предоставляет варианты функций API как для строк ANSI, так и для строк Unicode, последний является "родным" кодовым на­бором Windows NT. Все строки в системе, включая имена объектов, имена путей, имена файлов и каталогов, представляются 16-разрядными символами Unicode. Даже подсистема Win32 преобразует передаваемые ей символы ANSI в символы Unicode, прежде чем обрабатывать их; перед возвратом управления она, при необходимости, преобразует строки обратно из Unicode в ANSI.

Применение Unicode позволяет устранить все ограничения на набор сим­волов, которые могут быть представлены в Windows NT. Так как Unicode обеспе­чивает уникальный код для каждого символа любого алфавита, Windows NT может гарантировать, что преобразование символов как на выходе, так и на входе в систему будет всегда правильным.