14 января 2006 г.
![Как научить Windows использовать чувашский алфавит Как научить Windows использовать чувашский алфавит](../Home/49//чаваш.jpg)
Постоянный адрес в интернете
Полигон, культурные проекты Чувашии
Тел: (8352) 62-33-08
В декабре прошла научно-практическая конференция по локализации чувашских приложений windows, организванная аналитическим журналом Чувашии "HI-TECH" и лабораторией JAHAT из Татарстана.
«Чувашизация» компьютера складывается из установки шрифтов, локализации и установки драйвера клавиатуры. В зависимости от того, что установлено, а что нет, мы наблюдаем разную степень адаптации компьютера к чувашскому языку.
Скажем, с установленными чувашскими шрифтами уже можно читать чувашские документы, но без драйвера клавиатуры и правильной локализации нельзя их редактировать.
Ситуация осложняется тем, что разные системы поддерживают иностранные языки разными способами.
Чтобы лучше понимать проблему, сделаем небольшой экскурс в историю.
Появление UNICODE в системе Windows 3.1 и поддержка иностранных языков практически целиком определялась выбором шрифта.
Шрифт в стандарте ASCII является 8-битным и разделен на две половины. В первой половине содержатся символы с кодами от 0 до 127: латинские буквы, цифры, знаки препинания, скобки и другие значки, которые вы видите на клавиатуре. Эта часть неизменна для всех шрифтов и таковой останется всегда. Для поддержки национальных языков использовалась вторая половина, с кодами символов от 128 до 255. Эта часть различалась в шрифтах для разных языков. Одним шрифтом поддерживались практически все европейские языки - это западно-европейская кодовая страница.
Но для поддержки русского языка потребовался другой шрифт, в котором специальные символы европейских языков уже отсутствовали, поскольку на их месте стояли русские (кириллические) буквы. Тем самым была создана кириллическая кодовая страница.
Все было бы хорошо и просто, но несколько языков уже не помещались в 256 символах и буквы не могли быть представлены одним байтом.
Одним шрифтом нельзя было одновременно написать, к примеру, русские и французские слова.
Ситуация изменилась с приходом UNICODE - стандарта представления многоязычных шрифтов.
В UNICODE-шрифте содержится не одна, а гораздо больше кодовых страниц, так как она является уже 16-битной и может вмещать в себя 65535 символов. Для каждого языка отведена своя кодовая область (набор символов), и слова на всех языках могут быть набраны одним шрифтом.
К сожалению, здесь нет чувашских букв. Проспали, засиделись на старте. Но пока еще можно застолбить коды для наших букв.
Теперь на представление каждой буквы в тексте отводится 2 байта. Например, русская буква "А" имеет код 1040, а не 192, как раньше. А под кодами меньше 256 оставлены символы западно-европейских языков.
Но поскольку ядро системы Windows 95 все еще работало с однобайтными буквами, возникла необходимость перевода однобайтных букв в двухбайтные, для правильного представления текстов на иностранных языках.
Так возникло понятие локализации (locale).
В новой ситуации для каждой буквы в тексте потребовалось задавать ее язык. Если язык был европейским, то символ 192 отображался как одна из букв европейских языков, а если текст был обозначен как русский, то происходило преобразование (маппинг) буквы 192 в символ 1040.
За это преобразование отвечает драйвер NLS (national language support).
Драйвер NLS указан для каждого языка в реестре - НKEY_LOCAL_MACHI-NE\SYSTEM\CurrentControlSet\Control\Nls\Codepage.
Вы можете открыть реестр программой Regedit и найти этот ключ. Вы увидите там строчки вида 1251=cp_1251.nls, 1252=cp_1252.nls. Числа 1251, 1252 и т.д. обозначают языки: 1252 - западно-европейские языки, 1251 – кириллицу.
Например, чтобы установить локализацию русского языка в Windows 95, нужно при установке системы указать поддержку русского языка и кириллицы.
Начиная с Windows 98, все системы автоматически поддерживают многоязычность и все NLS-драйвера устанавливаются автоматически.
Вы уже догадываетесь что произойдет, если будет выбрана в качестве поддержки локализации не кириллица. Символ 192 не сможет преобразоваться в русскую букву "А" с кодом 1040, а останется символом алфавита какого-то европейского языка. Типа буквы "А" с черточкой или еще какой-нибудь кракозябры. Эта картина знакома всем, кто открывал русский текст в нерусифицированной системе - сплошные буквы с «умлаутами» и черточками.
Иногда, впрочем, вместо текста появляются пустые квадратики или вертикальные черточки.
Это уже совершенно другая проблема.
В данном случае локализация настроена правильно, но используемый шрифт либо не содержит нужной кодовой страницы, либо не поддерживает UNICODE вообще.
NLS-драйвер преобразует символ 192 в символ 1040, где должна лежать русская буква "А", а там - пусто. Вот он и рисует пустой квадратик или вертикальную черточку.
Поэтому проблема правильного отображения чувашских текстов должна решаться на двух уровнях.
Нужно иметь 1) шрифты с поддержкой UNICODE и 2) правильно настроенную локализацию. Или придется перейти на латиницу.
Самый дотошный читатель может возразить - я, мол, у себя в Windows 95 просто устанавливал чувашский шрифт, и он работал.
Такое, действительно, возможно.
Но все это дело находится на кириллической клавиатуре, и 5 чувашских шрифтов - это курам на смех. Притом они вообще не соответствуют таблице стандартных кодировок, которая так необходима. Ведь каждый символ должен иметь свое определенное место.
Эти шрифты были не в стандарте UNICODE, и во второй половине кодовой таблицы (символы 128-255) некоторые символы были заменены чувашскими буквами.
Речи об NLS-драйвере не идет. В Windows NT поддержка UNICODE осуществляется на уровне ядра системы, и такой фокус не проходит. Все строки в Windows NT представлены двух-байтными буквами, и русская буква "А" изначально имеет код 1040 и будет правильно показываться только при наличии UNICODE-шрифта.
Вы спросите, а зачем тогда вообще нужен NLS-драйвер в Windows NT для чувашских шрифтов? Ведь все буквы изначально представлены двухбайтными кодами и никаких преобразований не требуется.
Вот тут мы и подходим ко второй части трансляции системы - чувашизации клавиатуры!
Со шрифтами разобрались - мы или предоставляем NLS-драйвер для перевода букв в нужную кодовую страницу (Windows 95-98), или же просто храним все буквы в расширенной двухбайтном формате (Windows NT, 2000).
А как быть с клавиатурой?
Ведь когда мы набираем текст, клавиатура выдает те же самые символы из второй половины кодовой таблицы, где в UNICODE-шрифте находятся символы европейских языков! А значит, нам опять нужен NLS-драйвер, чтобы превращать символы в чувашские буквы, как для русских с кодами 1040...1072. А чтобы система знала NLS-драйвер какого языка использовать, нужно установить в систему соответствующую раскладку клавиатуры.
Для ввода чувашского текста нам понадобится (сюрприз! сюрприз!!) чувашская раскладка клавиатуры, устанавливаемая в диалоге Control Panel -> Keyboard -> Input Locales.
В разговоре о шрифтах мы упустили один важный момент.
В системе Windows есть два вида шрифтов. Один - масштабируемые (TTF), другие (FON) - системные шрифты, которые используются в элементах интерфейсов программ (меню, диалоги и т.д.).
Поэтому если вы используете программы с чувашским (эх! как я загнул! мечтать не вредно) интерфейсом, вам необходимы чувашские системные шрифты.
Например, в Windows 95-98 русские системные шрифты устанавливаются, если при инсталляции указать, что основной язык будет русский.
В Windows NT и 2000 русские системные шрифты можно установить в любое время через диалог Control Panel -> Regional Options. Нужно просто выбрать там русский язык и пометить галочкой опцию "Use as default ...".
В Windows 2000 нужно выбрать Cyrillic в списке языков и нажать на кнопку "Set Default".
В общем, идея понятна: нужно сделать чувашский основным языком системы.
Итак, чтобы система поддерживала чувашский язык полностью, нужно иметь:
1. чувашские системные шрифты;
2. TTF шрифты с поддержкой UNICODE;
3. настроенные NLS-драйвера;
4. чувашскую раскладку клавиатуры.
Еще для полного счастья не хватает, чтобы фирма Mайкрософт добавила в Юникод таблицу чувашские буквы и в список поддерживаемых языков чувашский язык.
Но это несбыточная мечта.
Майкрософт больше не намерен поддерживать 8-битные кодовые страницы, а большинство программ, где присутствует чувашский язык, не поддерживают Юникод (например Page Maker).
Пришлось пожертвовать некоторыми буквами из кириллической кодовой страницы, которые не используются в наших краях (может быть, даже в России).
Лаборатория Jahat сейчас разработала чувашскую локализацию компьютерных приложений, чувашскую клавиатуру и модернизировала чувашские шрифты. Сейчас их около 40. Возможности этой программы широки. Например, пользователи программы могут отсылать друг-другу электронные письма на чувашском языке. Раньше такой возможности не было. Чуваши, живущие на территории Татарстана, уже пользуются этой программой. Среди них – сотрудники 5 чувашских газет, и около полусотни чувашских школ.
Обьем проделанной работы вы можете представить по выше изложенному материалу.
Владимир Кожевников, Чувашия,
Радик Валиев (Республика Татарстан, лаборатория JAHAT)