Шенин Игорь Александрович : другие произведения.

Мультиязычность программ

Самиздат: [Регистрация] [Найти] [Рейтинги] [Обсуждения] [Новинки] [Обзоры] [Помощь|Техвопросы]
Ссылки:
Школа кожевенного мастерства: сумки, ремни своими руками
 Ваша оценка:
  • Аннотация:
    Автору надоело смотреть на англоязычные программы, не всегда понимая что в них написано и как они работают. Мысли о том, как можно поправить дело...

Игорь Шенин

МУЛЬТИЯЗЫЧНОСТЬ ПРОГРАММ



Сейчас в компьютерном мире наблюдается засилье английского языка. Не имея ничего против последнего, всё же хочется заметить, что людям, родной язык которых отличается от английского, приходится испытывать некоторые неудобства при работе на компьютере. Причём неудобно даже тем, письменность которых основана на латинице, что уж говорить о прочих людях, язык которых имеет нелатинский алфавит или вообще иероглифы. Что же, всем изучать английский? Дело, конечно, хорошее (этот язык уже кое-кто называет средством международного общения), но не все обладают способностью к освоению иностранных языков. Как быть им?

Признаем, если вначале компьютерная англоязычность легко объяснялась скудостью аппаратных ресурсов, то сейчас эта моноязычность объясняется, в лучшем случае, консерватизмом, а то и, в худшем случае, пренебрежительным отношением к неанглоязычным народам. Ведь возможности современных компьютеров позволяют легко обойти данную проблему. Мало того, такое решение, помимо всего прочего, облегчило бы жизнь и самим программистам, экономя им время и силы, которые они сегодня тратят на поддержку мультиязычности своих программ. Собственно говоря, эта статья - призыв именно к программистам, ведь лишь они способны осуществить предлагаемое, если только захотят. Обычные же пользователи (естественно, неанглоязычные) этого хотят уже давно.

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

Предлагается создать единые для всех компьютерных программ словари, в которых раз и навсегда систематизировать слова и короткие фразы, используемые в меню, кнопках и всплывающих сообщениях. Такие словари (english.lng, russian.lng, arabic.lng...) будут состоять из чисел, идущих последовательно, и соответствующих этим числам слов и фраз конкретного языка. Компьютерные приложения должны манипулировать только с этими числами. В нормальные тексты (языка пользователя) эти числа станут превращаться лишь на экранах дисплеев.

Кто-то скажет, что подобная практика не сосем будет удобна для программистов, так как им придётся "запоминать" очень много чисел-слов. Действительно, в первое время возможны трудности, однако есть способ их обойти. Но посмотрите, в мире есть (не то что машинные) человеческие языки, письмо которых построено по схожему принципу. Да, вы угадали, это иероглифическая письменность, в которой часто один иероглиф обозначает целое слово. Сколько же нужно таких слов? Для примера, в Китае насчитывается более 50 тысяч иероглифов, но общеупотребительными из них являются всего 4-7 тысяч.

Итак, берём несколько тысяч часто используемых в компьютерной среде слов и фраз и присваиваем им номера, не допуская при этом никакой многовариантности. Если слово имеет в каком-то языке несколько смыслов, то для нашего словаря берётся лишь одно его значение (чётко оговоренное). Повторимся, в исходной программе присутствуют только числа, в тексты на языке пользователя (английский не исключение) они превращаются лишь на мониторах. И неважно на каком языке думает, говорит и пишет автор какой-либо программы, её меню, кнопки и всплывающие сообщения прочтёт на своём родном языке любой человек на земле. Что, собственно говоря, и требуется!

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

Кому-то может показаться, что это всё сложно претворить в жизнь, что не будет совместимости нового со старым. Однако это не так, и ниже, для примера, приведём варианты осуществления данного метода.

Самая простая реализация вышеизложенного достигается копированием в каталог с программой одинаковый для всех приложений файл, соответствующий родному языку пользователя, например, deutsch.lng (или japanese.lng, turkish.lng и т. п.). А ещё лучше, чтобы данный файл размещался в одном условленном месте на системном диске, и программы сами находили его. Правда, это создаёт (как уже упоминалось выше) некоторое неудобство для программистов. Неудобство заключается в том, что меню и другие тексты приложений вначале пишутся словами (писать в цифровом виде трудно), а затем, на последней стадии, слова меняют на числа. Здесь делу сможет помочь специальная программка, автоматизирующая данный процесс (в прямую и обратную сторону) и дающая подсказки правильного написания фраз.

Будет ещё лучше, если мультиязычная поддержка окажется выполнена уже на уровне операционной системы (ОС), что окажется сподручней и для самих создателей ОС, так как упростит им написание локализованных версий. Тогда новые программы, хочешь или нет, станут уже создаваться с поддержкой мультиязычности, а старые постепенно уйдут. Тем не менее, упомянутое выше неудобство для программистов здесь всё ещё остаётся, и его решение будет, понятное дело, аналогичным.

Ещё более улучшит положение реализация предлагаемого на уровне языков программирования (сред разработки, интерпретаторов, компиляторов), тогда, естественно, упомянутая выше специальная программка уже станет не нужна. В этом случае, при написании программ, все опознанные фразы будут (на последнем этапе) автоматически переводиться в числа, а неопознанные сразу же выделятся цветом, и автору придётся их исправить.

Тут, правда, имеется тройка нюансов. Первый связан с оформлением кнопок программ. Для нормального отображения надписей на любом выбранном языке, размеры кнопок в обязательном порядке должны позволять вписывать в них, как минимум, десять символов. Более длинные слова в них автоматически обрежутся по длине. В этом случае, к примеру, слово "Конфигурация" в кнопке станет обозначено как "Конфигурац" - никто ни с чем не спутает.

Второй нюанс касается клавиш быстрого вызова пунктов меню. Здесь, увы, придётся отказаться от выделенных букв в названиях. Однако для таких случаев можно предусмотреть возможность размещать в кнопках и меню не только названия, но и клавиши вызова. Например, "F1_Справка", "G_Графика"...

Третий же относится к проблеме разных кодировок, которые операционные системы применяют для языков, основанных не на латинице. Например, для русских букв в Windows часто используется ANSI-1251 (CP1251, Windows-1251), в операционной системе Linux - KOI-8R, а в машинах Macintosh - MacCyrillic. Что же, для разных ОС создавать разные словари? Не обязательно. Ведь в последнее время во всех операционных системах всё большую популярность завоёвывает универсальная кодировка UTF-8, поэтому предлагаемые словари должны задействовать именно её, что и решит нашу проблему.

Итак, если слова и фразы будут задаваться двухбайтовыми числами (16-битными), то мы сможем получить 65 536 фраз, содержащих от одного до нескольких слов. Более чем достаточно! Каждая такая фраза в программе должна идти отдельно от других. Если вдруг надо составить текст из двух фраз, то в программе обе они вызываются раздельно. Таким образом мы убираем путаницу при опознании, ведь фразы состоят из отдельных слов, многие из которых также могут иметь свои номера. Читать такие тексты людям разных стран будет легко, ведь используется не дословный перевод фразы, а её смысл с учётом всех особенностей конкретного языка (в том числе и иероглифы, и направление письма справа налево в некоторых странах).

При этом надо отметить, что возможности такого способа всё-таки ограниченны, так как он не позволяет написать произвольный текст (например, для полных справок). Но, из-за его простоты, здесь предлагается именно этот вариант.

Какие же слова надо включить в словарь?

Существительные (единственное число): файл, программа, окно.
Глаголы (неопределённая форма): открыть, удалить, переместить.
Прилагательные (единственное число, мужской род): зелёный, большой, открытый.
Наречия: временно, влево, дальше.
Числительные. Стараться писать не словами, а цифрами. Хотя для первой десятки или двадцатки можно дать и словесную форму.
Частицы. Вроде бы не нужны, хотя можно оставить одну частицу "не", на всякий случай.
Союзы. Могут, наверное, пригодиться следующие: и, или, если.
Нужны будут и некоторые другие слова, например: да, нет.
Каким-то словам, помимо полной формы, нужно иметь и сокращённый вид, к примеру, дни недели: пн, вт, ср, чт, пт, сб, вс.

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

Также если позволяют возможности (а они, как мы ниже увидим, позволяют), то в обиход желательно включить и не относящиеся к компьютерной тематике слова и фразы. Как же это сделать для сотен или даже тысяч тем на ограниченном словарном пространстве? Легко! Потребуется лишь вместо одного большого словарного файла использовать несколько меньших.

Итак, исходное словарное поле программ из 65 536 чисел надо разбить на восемь кусков (по 8 192). При этом каждая программа по-прежнему будет оперировать 16-битными числами, но в зависимости от старших трёх бит числа (от 000 до 111) обращаться за соответствующим словом станет к файлу, закреплённому в данной конкретной программе за этим диапазоном номеров. Разумеется, в самих словарных файлах будут использоваться уже лишь 13-битные числа. При этом некоторые такие файлы могут быть полностью заполненными, а некоторые - частично.

Почему это увеличит словарный запас? Потому что такой подход позволит подгружать дополнительные тематические словари, которых, повторимся, может быть тысячи. Так, первый словарь (со старшими битами 000) будет содержать общеупотребительные фразы, и этот словарный файл (мы помним, chinese.lng, norwegian.lng, greek.lng...) обязательно должен быть у всех программ. На место семи оставшихся (старшие биты от 001 до 111) каждая программа может подгружать необходимые ей словари из банка специализированных файлов-словарей, которые также должны быть унифицированы (medical-eng.lng, medical-esp.lng; radio-rus.lng, radio-ita.lng и другие). Если же вдруг в стандартных словарях не найдётся нужных слов, то программист всегда может создать дополнительный словарь (частный - private-eng.lng, private-rus.lng и т. д.), который, в отличие от остальных, всегда необходимо располагать только в папке с программой. Локализовать его к другим языкам придётся уже вручную или самому программисту, или пользователям.

Таким образом, каждая компьютерная программа может иметь в своём распоряжении до восьми различных словарей, из которых лишь для основного всегда зарезервировано место. А вот на оставшиеся семь мест программа имеет возможность подгрузить необходимые ей словари из различных наборов: дополнительный общеязыковой, медицина, радио, архитектура, экономика, физика, математика и так далее. При этом напомним, что выше речь шла только о двухбайтовых числах, заменяющих слова и фразы, если же данные числа будут трёхбайтовыми, то тогда достаточно будет и одного словаря, ведь в него можно будет включить 16 777 216 слов и фраз. Какие открываются языковые перспективы для программ!

Надо ли все перечисленные словари иметь у себя? Нет. Если человек использует в работе только свой родной язык, то словари с другими языками ему не нужны (но он может их в любой момент себе подгрузить). Если же человек интересуется какими-то темами, то он скачивает себе соответствующие словарные файлы, которые нужны используемым программам. Мало того, сами эти программы при установке могут проверять наличие на компьютере необходимых им словарей и при ненахождении последних скачать их из Интернета.

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

С чего можно начать реализацию предлагаемого проекта? Понятно, что с написания словарей. Но, во избежание ошибок, в их создании должен участвовать коллектив авторов - одна голова хорошо, а сто лучше. Само же наличие словарей позволит программистам не ломать голову над поддержкой мультиязычности разрабатываемых программ - ведь уже будет готовое решение. После появления таких словарей, постепенно количество сторонников этого метода станет увеличиваться, и его применение должно, в конце концов, сделаться правилом хорошего тона в компьютерном мире...

Как видим, мультиязычность компьютерных программ может быть довольно легко осуществлена, а это значит, что она рано или поздно будет введена в компьютерную повседневность. Лучше бы пораньше. Ведь тогда компьютерная жизнь многих миллионов неанглоязычных пользователей программ (да и самих программистов) значительно упростится. А пока, увы, эти самые многие миллионы людей с завистью (а некоторые и с недовольством) смотрят на своих англоязычных коллег, для которых все компьютерные программы предлагаются в удобном и понятном виде, которым не приходится, смотря на монитор, гадать, что там такое написано и как всё это работает.




 Ваша оценка:

Связаться с программистом сайта.

Новые книги авторов СИ, вышедшие из печати:
О.Болдырева "Крадуш. Чужие души" М.Николаев "Вторжение на Землю"

Как попасть в этoт список

Кожевенное мастерство | Сайт "Художники" | Доска об'явлений "Книги"