вторник, 31 августа 2010 г.

Как разработчики учат говорить свои приложения на нескольких языках

Разработка любой программы идёт по одному и тому же алгоритму:
  • идея,
  • наброска домашнего варианта,
  • доработка домашнего варианта до более-менее стабильного продукта, который не стыдно показать знакомым / выложить в блоге,
  • вывод продукта для широкой публики,
  • постоянная поддержка продукта, его эволюция.
Сразу скажу - я согласен, что данный алгоритм достаточно примитивен и не отражает абсолютно всех вариантов развития. Но, как мне кажется, если взять любой продукт, то данные этапы в нём присутствуют именно в этом порядке. Также, программа на любом из этапов может как прекратить своё существование, так и вернуться на этап ранее для дальнейшей доработки и возврата с возросшими возможностями.

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

Я заметил, что чаще всего разработчики (не обязательно русские) при публикации своих приложений рассуждают так: ну, английский ведь во всём мире знают, да и английский язык сейчас фактически уже язык Интернета, потому не буду долго страдать и сделаю английскую версию программы. В итоге создаётся ПО, в котором английский является единственно встроенным и менять его можно только при помощи программ вроде Restorator. Причина такого поведения разработчика вполне понятна - разработчик лишается проблем с интерфейсом своей программы. Про неудобства для пользователя я много говорить не буду, так как они явные: пользователь может не разобраться в работе программы. Кроме того, в некоторых странах (к примеру, во Франции) Вашу программу могут просто-напросто проигнорировать и выбрать унылый аналог на национальном языке. Ну не любят французы англичан.

Таким образом обычно разрабатываются небольшие утилиты, способные решать узкоспециализированные задачи. В качестве примера можно привести любой из аудио/видео конвертеров, расплодившихся в безмерных количествах на просторах Интернета. Но также хочу отметить, что по такому же принципу создаются и мощнейшие системы, которые вполне обоснованно отмахиваются от многоязыковой поддержки. Им оно не нужно.

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

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

Обратите внимание на достаточно изящное решение Кристиана Гислера (автора файлового менеджера Total Commander): выбрать язык предлагается сразу же при установке программы. Другое похожее решение предлагает автор аудио-плеера AIMP Артём: язык предлагается выбрать при старте программы.

Некоторые извращенцы из понятной только им самим логики создают программы, в которых есть только английский язык, показывают пользователю список доступных языков для перевода и после выбора пункта радостно сообщает, что необходимо подключение к Интернету для скачивания огроменного 20-килобайтного файла. Всё, конечно же, очень подробно, с рюшечками и на английском. То, что пользователь может не знать английского вообще - уже неважно, рюшечки же ж. Ярким примером такой программы является Foxit Reader.

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

понедельник, 16 августа 2010 г.

Snatch.exe. Попался как маленький

Свежая новость по этому вирусу.



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

Закачал, запустил. Аськи (у меня запущены QIP и QIP Infium) сразу же отрубились, диспетчер задач конечно же не стартует. Запустил Process Explorer, убил процесс, переустановил аськи - вроде бы всё стало в порядке. В реестре программа ничего не оставила (или не успела?).

Правда, я не знаю, не спёрла ли программка мои асечные пароли. На всякий случай сразу же заменил их.

P.S. Snatch (англ.) = кража, грабёж, (C) Lingvo.