Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #53, АПРЕЛЬ 2005 г.

Программа-полиглот

Islander (islanderx@mail.ru)

Спецвыпуск: Хакер, номер #053, стр. 053-072-1


Учимся локализации программ

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

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

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

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

Среднестатистический shareware-продукт обычно представляет собой небольшую программу, написанную на MS Visual C, Borland C++ Builder или Borland Delphi. Наши шароварщики особенно любят последнюю, поэтому я буду рассматривать перевод в контексте Delphi, однако для других сред и языков все это будет выглядеть примерно так же, и ты легко адаптируешь под них полученные знания.

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

Какой из этих способов выбрать? Если ты планируешь, что версии программы на разных языках будут отличаться исключительно строками, смело выбирай lng. Если же ты хочешь, чтобы у них были еще и разные ресурсы (графика, звук и проч.), то придется остановиться на варианте с ресурсами в dll. Вот уж у бедного студента-чужестранца прибавится работы! Можно облегчить его участь и научить его пользоваться Restorator'ом. В общем, если кажется слишком мутно, посмотри на таблицу.

Перевод с помощью lng(ini)-файлов

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

Содержание  Вперед на стр. 053-072-2