Программа для локализации файлов
На Хабре не раз обсуждались вопросы локализации/интернационализации приложений. Мы – компания ABBYY Language Services – давно работаем в области лингвистических услуг, сервисов и технологий, и локализацией софта занимаемся постоянно. У нас в этом вопросе накопился значительный опыт, мы решили им поделиться, сделав больший акцент на организации всего процесса. Локализация приложений — более сложная задача, чем принято считать, и подойти к ней можно разными способами: можно изначально создать простой и понятный текст, можно вложиться в крутых переводчиков, которые из любого текста вытянут смысл, можно сделать подготовку и перевод текста «как-нибудь», но посадить сообщество или тестировщиков на выверку финального результата. Необходимо только помнить, что выверка исходного текста делается на одном языке, а выверка результата — на всех языках, т. е. усилий надо затратить в N раз больше.
Вообще, локализация — это по факту открытие еще одного рынка, и понятно, что, при принятии решения о локализации, руководство рассчитывает получить дополнительную прибыль. При этом зачастую в эту самую локализацию вкладывают лишь малую часть от общего бюджета разработки (скажем, порядка 1–2 %). Т.е. расчет идет на то, что, добавив 1 %, можно получить + 50 % дохода. Насколько реалистичными могут быть такие ожидания?
Цели и объем
Первое, с чем необходимо определиться, — для чего будет производиться локализация, на какие языки, в каком объеме и с каким качеством. Обычно целью являются бизнес-задачи — вывод продукта на новые рынки, расширение аудитории. Бывают также случаи, когда продукт фактически будет продаваться на оригинальном языке, но, согласно законам государства, необходимо иметь его переведенную версию (например, различные руководства пользователя).
Вообще, весь процесс локализации требует активного взаимодействия клиента и переводчиков, поэтому, если перевод на какой-то язык осуществляется без реальной поддержки на локальном рынке (представительство, сообщество пользователей) и ее не будет в ближайшее время, есть шанс, что всю работу придется переделывать.
Говоря о переводе софта, можно выделить следующие основные типы контента:
- Строки самого приложения;
- Руководство пользователя;
- Помощь по продукту.
Если на сам продукт денег еще хватает, то все остальное может остаться за кадром, хотя, конечно, крупный продукт без перевода руководства пользователя может быть вообще бесполезным.
Если локализуется все, важным фактором становится то, что и руководство пользователя, и помощь по продукту должны основываться на строках самого приложения. Поэтому невнятная терминология или неудачное название элементов интерфейса, а также ошибки и опечатки в строках приложения ведут к воспроизведению тех же ошибок в остальных материалах, часто с умножением их числа. Плюс может появиться несогласованность софта и всего остального, со всеми вытекающими последствиями в отношении качества, сроков и затрат.
Организация процесса
Итак, допустим, выбор сделан, локализация нужна.
Сразу необходимо задуматься о том, как все будет реализовано технически. Т. е. будут ли строки извлекаться из продукта, или перевод будет идти непосредственно в исходных материалах, и т. д.
Возможные варианты (не все, конечно) для софта:
- Строки находятся непосредственно в исходном коде программы. Реализация:
- Локализуются и хранятся сами исходники. Тогда локализованная версия собирается параллельно с основным кодом. Минусы: возможны большие затраты на поддержку билдов, самого продукта, поскольку баги необходимо исправлять в нескольких версиях — исходной и переведенных.
- Существует специальный механизм перевода, который, используя исходную строку (возможно с дополнительным идентификатором, например, модуля программы), получает перевод на рантайме или во время сборки локальной версии. В дополнение потребуется механизм вытаскивания строк (parsing). Сам перевод может храниться как в отдельных файлах, так и в базе данных. Плюсы: можно оперативно исправлять переводы.
Контент
Главная особенность этого этапа заключается в том, что любая ошибка, допущенная при подготовке контента, автоматически умножается на количество языков перевода (N). Возьмем произвольную плохо сформулированную фразу.
В лучшем случае N переводчиков попросят менеджера проектов перевода (TRM) прояснить эту фразу. TRM не обязательно является специалистом по продукту: это человек, который организовывает процесс. Ему придется потратить заведомо больше времени, чтобы разобраться в ситуации, чем людям, которые непосредственно создают контент.
В худшем случае N переводчиков, чтобы не терять время, переведут фразу так, как им будет удобно. В результате придется исправлять перевод на N языках, N раз привлекая для подтверждения корректности правки не только TRM, но и тестеров. После чего N*Х клиентов потратят время, чтобы установить обновление программы.
Терминология
Контент грубо можно разделить на две составляющие: терминология (фундамент) и собственно остальные строки (все здание). Терминология — это место, в котором необходимо приложить максимум усилий, чтобы получить качественный перевод. Нужно создать список самых часто используемых терминов, добавить к нему самые сложные понятия и убедиться, что все термины взаимнооднозначны: одно понятие — один термин. Любая многозначность — головная боль для переводчиков.
После того как список терминов создан на исходном языке, его необходимо перевести на все целевые языки и проверить (это очень важный момент) локальными специалистами. Этот шаг, включая выверку, ни в коем случае нельзя пропускать. Пока запущен этот процесс, можно заняться самими строками продукта.
Строки продукта
Существует множество способов создания контента приложения. Конкретная реализация зависит от процесса разработки, способа размещения строк и других факторов.
Частая ситуация: дизайнер, общаясь с клиентом (или продакт-маркетингом), создает первичную спецификацию продукта.
Далее программист пишет код, иногда копируя названия элементов интерфейса, иногда привнося что-то свое, включая ошибки.
Вся процедура может повторяться несколько раз. Проблема усугубляется в крупных международных компаниях, когда основной язык приложения и разработки, также являющийся основой локализации, не является родным языком для одного или нескольких участников цепочки. Более того, все участники могут разговаривать на разных языках: продукт создается на английском, дизайнер — русский, программист — китаец, а тестирует мексиканец.
Добавьте еще две проблемы:
- Далеко не каждый программист (да и вообще, не каждый человек) даже на родном языке может четко и грамотно формулировать свои мысли (увы, но это так).
- Команда разработчиков варится в своей специализированной области, где им все понятно, при этом используя свой собственный жаргонный язык.
Большую роль играет наличие проработанного стайл-гайда (пример). И, кстати, тот факт, что существует отдел технических писателей, еще не гарантирует наличие стайл-гайда.
Рассмотрим случай, когда строки все-таки проходят какой-то контроль.
- Строки отделены от кода в отдельные файлы текстового формата, базу данных или другую специализированную внутреннюю программу. Тогда технические писатели могут оперативно исправлять ошибки непосредственно в системе хранения исходников, а сборка программы, скорее всего, не будет падать от их работы.
- Строки собираются в единый блок при помощи специальной процедуры парсинга (parsing) и только потом отдаются на проверку. В этом случае после исправления строк требуется дополнительная работа по внесению исправлений в исходный код.
Аспекты проверки исходного контента
- Нужен контекст. Если строки отделены от кода, технические писатели не всегда видят контекст использования и не всегда прилагают усилия для исправления тех элементов, которые им непонятны, ограничиваясь формальным следованием правилам языка.
- Крайне желательно сравнивать новые строки между собой и со старыми строками на предмет использования одинаковой терминологии и похожих конструкций предложений. При работе с небольшим продуктом еще можно уследить за всеми деталями, особенно если контентом заниматься с самого начала. При разработке больших продуктов с несколькими командами разработчиков (особенно если они сами многоязычны) такое сравнение вручную малоэффективно, да и ни один технический писатель не способен охватить весь продукт.
• Qty. On Hand
• OnHand Qty
• On-hand Quantity
• On Hand Qty.
• Qty on Hand
• Quantity On Hand
• On Hand Qty
• On Hand Quantity
• Qty On Hand• Start Date cannot be greater than the End Date.
• Due Date cannot be before Start Date.
• End Date Cannot Be Before The Start Date.
• Start Date may not be greater than the End Date.
• From Date cannot be greater than To Date.
• The Star date cannot be greater than the End date.
• The star date cannot be greater than the end date.
• From Date cannont be greater than To Date.
• From Date cannot be later than To Date.
• Start date cannot be greater then End date.
• The Start date cannot be greater than the End date.
• Begin Date may not be greater than the End Date.• Invoice not found.
• Invoice cannot be found.
• Unable to find invoice.
• Invoice wasn't found.Приведенные примеры – это по смыслу одинаковые строки, но при этом их создают разные программисты в разных отделах. Вместо того, чтобы везде использовать что-то одно, у нас 10 вариантов, за перевод которых надо платить деньги.
Система Controlled Language
- Текст воспринимается проще, облегчается работа с продуктом, что выгодно и тем клиентам, которые используют программу на ее оригинальном языке.
- Повышается качество перевода: при переводе простого текста допускается меньше ошибок.
- Сокращается стоимость перевода: при ограниченном наборе слов, фраз и конструкций возрастает объем частичных совпадений (а также 100%-ных совпадений и повторов).
- Улучшается качество вспомогательного контента: как за счет «фундамента» в виде лучших софтовых строк, так и от непосредственного применения системы CL.
- Повышается качество машинного перевода: CL позволяет убрать многозначность, которая является одной из основных проблем, влияющих на качество МТ.
Резюме
Таким образом, контент приложения (софтовые строки) должен проходить предельно полный контроль, выверяться на соответствие определенному набору правил, характерных для отрасли в целом и для компании в частности. Контент должен быть понятным для максимально возможного числа людей, в том числе не обладающих глубокими знаниями продукта.
Перевод и проверка его качества заслуживают отдельной статьи, так как появляется целый комплекс вопросов: от того, стоит ли доверять автоматическим проверкам или обязательно привлекать локальных пользователей, до выбора системы управления переводами и поддержки пула переводчиков.
Буквально перед публикацией мы получили вот такую рецензию от одного из авторов:
Программист сказал, что можно было бы еще несколько картинок, и хотя бы одну с обнажёнкой, но, я так полагаю, это не вариант :).
В целом, больших замечаний нет.Отказывать программисту никак нельзя, но и обнажёнка — это как-то слишком. Поэтому вот вам:
Lokalise — сервис для автоматизации процесса локализации приложений, который выбрали уже более 1 000 команд, включая MSQRD, Carousell, MEGOGO, Depositphotos. Мы изучили возможности платформы и в этом обзоре расскажем, за счет чего Lokalise помогает провести локализацию быстро и просто.
Первое знакомство
Войти в сервис можно, как пройдя традиционную процедуру регистрации, так и через аккаунты Google или GitHub. При первом входе нас встречает краткая инструкция по работе с сервисом:
Первая подсказкаПодсказки продолжат всплывать каждый раз, когда вы будете появляться впервые в каком-либо разделе. Если краткой инструкции вам будет недостаточно, вы можете обратиться к исчерпывающей документации. В ней освещается широкий спектр вопросов, в том числе организация рабочего процесса. Инструкции по локализации для проектов под iOS или Android содержат скриншоты с подробным описанием необходимых действий от добавления файлов в сервис до реализации локализации в приложении.
Работа с локализацией
Сервис поддерживает множество различных форматов файлов: от наиболее популярных Apple Strings (.strings), Android Resources (.xml) и Comma-separated values (.csv) до JSON (.json) и книг Excel (.xslx). Необходимое количество ключей (меток) можно также создать и дублировать вручную без загрузки файла.
В рамках одного проекта вы можете настроить перевод сразу на несколько языков. Для каждой метки есть несколько вариантов:
- машинный перевод от Яндекс.Переводчика;
- машинный перевод от Google.Translate;
- подсказка из translation memory — сервис подскажет вам наиболее подходящий перевод на основе уже переведенных меток;
- также вы можете оставить слово без перевода — это удобно тогда, когда термин в переводе не нуждается.
Панель с настройками перевода, справа под надписью «TO ORDER» отображается цена работыТакже отображается прогресс выполнения перевода в процентах от общего количества ключей для языка. При необходимости можно быстро найти и заменить значения, в том числе в рамках одного языка или везде сразу. Каждая метка может полностью или частично заимствовать значение другой метки, ссылаясь на нее.
В результате вы получите готовый файл с локализациями. Для скачивания можно выбрать удобный вам формат из множества доступных — в частности, с помощью Lokalise можно локализовать iOS-, Android- и веб-приложения. Сервис поддерживает интеграцию с App Store и Google Play для импорта и экпорта метаданных.
Командная работа над переводом
Lokalise подходит для работы над локализацией в команде.
Каждый из ключей можно снабжать поясняющей информацией: комментировать и добавлять скриншоты, чтобы вам и вашим коллегам было понятнее, в каком именно элементе интерфейса будет использована переведенная надпись. Более того, скриншоты при загрузке автоматически привязываются к меткам.
В режиме мультиязычного просмотра слева от каждой метки находятся иконки с доступными действиями, справа по клику открылось окно с комментариямиТакже доступна история работы над переводом каждой отдельной метки:
История переводовСервис поддерживает интеграцию со Slack и может присылать вам уведомления об изменениях в проекте при каждом сохранении. Также вы получите уведомления на e-mail и/или в Slack (в зависимости от настроек), если будете упомянуты в комментарии через «@». Еще одна полезная особенность — возможность участников работы над локализацией голосовать за различные варианты перевода.
API и SDK сервиса
Отдельная интересная и очень удобная особенность сервиса — SDK для Android и iOS. Он предназначен для обновления текстов без выпуска новых версий в магазинах приложений.
Доступные тарифные планы
Сервис имеет несколько тарифных планов: бесплатный, «Startup» за $40 в месяц при оплате за год или $50 случае помесячной оплаты, «Business» за $80 в месяц (соответственно $100). Все они отличаются ограничениями на число ключей, проектов, одновременно участвующих в разработке сотрудников и наличием доступа к SDK под iOS и Android (не доступен в рамках бесплатного плана) и прочим возможностям.
Также существует безлимитное предложение «Enterprise», которое оформляется в индивидуальном порядке, а также предоставляется бесплатно для open source проектов. Помимо отсутствия ограничений, этот план включает поддержку персональным менеджером и возможность заказать на доработку необходимую функциональность. При регистрации вы бесплатно получаете 14-дневный тестовый период с «Enterprise»-планом.
Мы также пообщались с коммерческим директором Lokalise — Петром Антроповым. Петр ответил нам на несколько интересных вопросов.
Расскажите, пожалуйста, подробно о различиях бесплатного и платного планов.
Бесплатный план довольно сильно обрезан. Он для тех, у кого нет $40 ($50) на нормальный план. Обычно те команды, что идут на новые рынки, достаточно хорошо профинансированы, поэтому бесплатный план выбирают либо не самые уверенные стартапы, либо принципиальные пользователи бесплатных решений, а их становится всё меньше и меньше. В бесплатных планах только 3 пользователя, 1000 меток (ключей), нет мобильных SDK, нет translation memory (автоматические предложения перевода на основе прошлых подобных) и translation history. Что-то можно делать, но и только.
Есть ли какие-нибудь бонусы для клиентов, сотрудничающих с вами длительное время?
Большинство команд покупают годовую, а не месячную подписку, она на 20% дешевле. В остальном, по клиентским отзывам, наш сервис наиболее удобен в использовании и богат на «фичи». К нам переходят из других сервисов, и пока что мы не видели ни одной отписки. Команды разработчиков, стартапы, веб-, мобильные студии и крупные компании готовы платить за сервисы, которые ускоряют выход на новые рынки, облегчают работу, убирают рутину, снижают количество багов и предоставляют уникальный функционал, c которым они делают то, что раньше не могли.
По поводу open source: как именно вы работаете с такими проектами? Какие необходимы подтверждения или т.п., чтобы получить по этой программе бесплатный «Enterprise» план?
На наше усмотрение предоставляем, пока споров не было никаких. Кстати, мы очень просты в общении, на сайте у нас есть чат поддержки, в котором доступна вся команда. Отвечаем быстро и по делу.
Какую особенность или возможность своего сервиса вы считаете наиболее привлекательной для пользователя?
Помимо самого удобного веб-интерфейса (мультиязычный вид и т.п.) — это наличие iOS и Android SDK для мгновенного обновления текстов без новых версий в магазинах. С этим функционалом обновлять тексты можно так часто, как это необходимо, без долбежки пользователей обновлениями. Обновление происходит мгновенно, это не 1-2 дня одобрения обновления в App Store. Плюс это гарантия, что 100% пользователей сразу увидят новые тексты, а не 80% пользователей обновят приложение к исходу второго месяца, как это обычно происходит.
Также это мультиплатформенность меток (ключей), универсальные плейсхолдеры, поиск дубликатов и голосование по переводам. По словам пользователей, у нас лучший на рынке API и утилита CLI. Мы поддерживаем plurals (форму слова во множественном числе — прим. ред.), у нас есть референсы между ключами. Другими словами, Lokalise — это наиболее продвинутое решение по локализации и автоматизации переводов.
Над какими «фичами» ведется работа сейчас? Что можно ожидать в близкой перспективе, а что в длительной?
Итак, планы. В первую очередь это Live Edit — возможность вживую редактировать переводы с мгновенным просмотром в задуманных шрифтах на экране iOS- или Android-устройства или в эмуляторе, с трансляцией этого экрана на десктоп переводчика или менеджера продукта, с подсветкой актуального ключа и т.п. iOS-бету выпускаем в начале августа, а пока вы можете оценить демо-видео.
Далее будет инструмент по «заворачиванию» захардкоденного текста в метки (ключи), без которого этот процесс происходит вручную у тех, кто на скорую руку верстает, а потом думает про перевод.
В планах также добавление публичных проектов для крауд-переводов, длинный список интеграций и несколько вау-фич, которые мы пока не хотим называть.
За новостями сервиса вы можете следить в блоге проекта. Помимо информации об обновлениях, в нем публикуются полезные рекомендации и инструкции по пользованию сервисом.Резюмируя, делимся мнением Tproger: Lokalise существенно упрощает и ускоряет работу с локализациями, в том числе командную — в частности, вы можете быстро поделиться результатами с партнером, чтобы уточнить варианты для локализации.
Сейчас многие программы еще перед релизом русифицируют, но здесь все зависит от направленности и масштабности софта. Иногда приложение остается без локализации для жителей СНГ, а на просьбы пользователей добавить русский язык разработчики не обращают никакого внимания. Однако существуют различные варианты, позволяющие самому русифицировать софт или же использовать готовый плагин от энтузиастов, добавляющий соответствующий перевод. Сегодня мы хотим затронуть абсолютно все возможные методы собственноручной локализации, чтобы вы смогли выбрать оптимальный для себя.
Русифицируем программы собственными руками
Перед началом ознакомления со способами перевода интерфейса мы советуем обратить внимание на описание софта и наличие специальной настройки в общих параметрах. Вполне возможно, что вы просто не заметили опцию, которая отвечает за изменение языка кнопок и основных пунктов меню. Давайте на простом примере разберемся, как осуществляется такая конфигурация:
-
Запустите необходимое программное обеспечение и перейдите в «Settings», «Options» или «Preferences».
Способ 1: Загрузка русской версии ПО
Первый метод до банальности прост, ведь от пользователя требуется только перейти на официальный сайт программного обеспечения и отыскать там необходимую версию. Сразу заметим, что сейчас не многие разработчики реализуют подобный выбор, часто интегрируя настройку языка интерфейса в сам софт. Однако все еще существуют продукты, где локализация выбирается перед скачиванием, а после инсталляции ее изменить нельзя. Стандартный выбор происходит так:
-
Откройте официальный сайт загрузки ПО и переходите к скачиванию.
Не стоит забывать, что такая форма распространения ПО становится редкостью, поэтому если данный вариант не принес никакого результата, переходите к ознакомлению со следующими инструкциями.
Способ 2: Использование фирменных решений
Некоторые разработчики софта, что в большинстве случаев касается мелких и малоизвестных производителей, создают специальные решения, позволяющие добавлять собственные локализации, загружать отдельные файлы или редактировать существующие типы перевода интерфейса. Узнать о существовании подобных инструментов или отдельных файлов можно только на официальном сайте или форуме ПО. Сейчас мы возьмем за пример такой переводчик от Core Temp.
-
На скриншоте ниже вы видите, что по умолчанию в Core Temp установлен английский язык интерфейса. Сейчас вам нужно закрыть используемое ПО, чтобы начать его конфигурацию.
Если же вам удалось сразу отыскать готовый файл локализации, но вы не можете его редактировать, просто замените или переместите его в директорию игры. Обычно информация о нужных для выполнения действиях указывается на сайте, откуда был получен объект.
Способ 3: Софт для перевода программ
Последний вариант, о котором мы поговорим в рамках сегодняшнего материала, самый сложный, поскольку все действия пользователю придется выполнять самостоятельно, используя встроенный в софт переводчик или специализированные онлайн-сервисы. Суть этого способа заключается в применении ПО, позволяющего управлять ресурсами других приложений. Сразу отметим, что такие инструменты распространяются платно и часто не работают с глобальными проектами от известных разработчиков. Сегодня в качестве примера разберем самую простую программу такого плана под названием LikeRusXP.
-
После установки софта переходите к использованию режима демо или введите полученное имя пользователя и ключ для перехода к работе с полной версией.
Как видите, ничего сложного в составлении перевода программы нет. Если же вас не устраивает приведенный выше вариант или он плохо взаимодействует с имеющимся ПО, советуем изучить аналогичные решения по управлению ресурсами приложений. Детальнее о каждом из них читайте в отдельном материале, кликнув по ссылке ниже.
Сегодня вашему вниманию было представлено три доступных варианта русификации программ. Каждый из методов станет подходящим в определенных ситуациях, поскольку отталкиваться необходимо непосредственно от имеющегося софта. Простые инструкции помогут реализовать любой из этих способов без особого труда, получив приложение с понятным интерфейсом.
Мы рады, что смогли помочь Вам в решении проблемы.
Отблагодарите автора, поделитесь статьей в социальных сетях.
Опишите, что у вас не получилось. Наши специалисты постараются ответить максимально быстро.
Помогла ли вам эта статья?
Еще статьи по данной теме:
адмны, прога совместима с десятой вндой?почему об этом ничего не сказанно в описании к программе? м? а так если судить по вашим скринам то ничего сложного в переводе прог нет. если я, например, возьмусь за перевод какойнибудь крупной программы типа Adobe Illustrator, у меня что-то получится? или для такиого масштаба нужно что-то конкретно мощное?
Программа совместима с Windows 10. В принципе, программа способна работать и с достаточно крупным ПО, но какой смысл русифицировать Adobe Illustrator, если в данной программе уже имеется поддержка русского языка?
Здравствуйте!Скачал на комп эту программу»Multilizer»,чтобы русифицировать программу PickMeApp.Всё сделал,как вы указали:появились английские предложения,а перевода нет.Абсолютно не понимаю,что не так сделал!Разъясните,если не трудно.С уважением,В Сенатский.
Добрый день. Для начала попробуйте повторить все свои действия повторно в точности, как это описано в статье. Вероятно, если возможный перевод для слов не отображается, библиотека фраз не была загружена, поэтому обратите особое внимание на этап загрузкам фраз.
Я несколько раз пытался запустить Multilizer как в статье.В начале пути вылезало,что файл для локализации упакован,но я продолжал до финиша.Потом перешёл непосредственно к локализации PickMeApp.Несостыковка образовалась после проставления галочки и нажатия на Download Now.Выскакивает страничка,где внизу указаны проставить имя файла и тип файла.В моём случае тип указан Microsoft Terminology zip-file(*zip).В имени файла я пишу PickMeAApp.exe и тогда всё идёт гладко,но Multilizer не переводит.
К сожалению, иноземные разработчики программ забывают не только о русском языке — но и вообще о существовании страны Россия! И это не просто забывчивость, это умышленная пакость! Потому что в перечне языков — есть даже языки африканских племён, но языка самой большой страны мира — нет.
И я не считаю, что мы должны глотать такие оскорбления и унижения.
Нужно создавать всё своё!
А затем — послать их всех — далеко и надолго.Процесс разработки приложений — это очень дорогостоящий и трудоемкий процесс, и на разработку одной программы может уходить много сил, денег и времени. Именно поэтому очень часто программисты забывают локализовать программы на русский. Но благодаря программам, которые представлены в этом списке, русифицировать программы теперь не составляет труда.
Программами для перевода программ могут являться не специально созданными для этого инструментами, а самыми обычными «ворами ресурсов», если они умеют изменять ресурсы, а не только получать к ним допуск. В этом списке большинство программ не разрабатывалось для локализации, однако, с помощью них это сделать возможно.
eXeScope
Самый простой вариант русификатора. Конечно, он разрабатывался как простой способ получить доступ к ресурсам программ, но умелые руки пользователей нашли ему применение получше. Плюсов в нем, как таковых, нет, а вот минусы есть. Например, он не обновлялся более 10 лет, и его функционал уже давно не радует, так как eXeScope не может получить полный доступ ко всем ресурсам.
PE Explorer
Эта программа является одним из самых мощных способов получить доступ к ресурсам программы. В ней очень широкий функционал, и получает она «пропуск» практически во все части программы, что позволяет переводить, даже непереводимое. Интуитивно понятный интерфейс и возможность распознать вирус еще до запуска программ делает ее еще более привлекательной.
Resource Hacker
Resource Hacker слегка напоминает PE Explorer, хотя бы по функционалу. Благодаря этой программе тоже можно получить доступ ко многим ресурсам, тем самым перевести больше фраз и слов. Кроме того, в ней можно писать собственные скрипты, которые потом можно ставить прямиком в программу, как отдельный ресурс (возможно так вирусы и попадают в программы).
LikeRusXP
LikeRusXP разрабатывался специально для перевода программ, в отличии от трех предыдущих программ. В ней нет большого набора функций, как в Multilizer, но есть встроенные переводчики и даже собственные глоссарии, которые можно дополнять. Однако, эта программа для русификации программ бесплатна лишь некоторое время.
Multilizer
На данный момент, это самый мощная программа для перевода программ на русский язык. В отличие от Resource Hacker и подобных «воров ресурсов», она получает доступ как раз к тем, которые необходимо или возможно перевести. Имеет несколько импортеров, среди которых и «google-translate». Благодаря импортерам можно организовать автоперевод, либо занять переводом каждой строчки вручную.
Список этих программ был составлен специально для тех, кто никак не может выучить иностранный язык, ведь теперь у вас есть возможность самому перевести практически любую программу. Наиболее подходящим, но и самым дорогим инструментом для этого является Multilizer, хотя, кому-то может приглянуться и другая программа. А может вы пользуетесь программами для локализации, которых нет в этом списке?
Мы рады, что смогли помочь Вам в решении проблемы.
Отблагодарите автора, поделитесь статьей в социальных сетях.
Опишите, что у вас не получилось. Наши специалисты постараются ответить максимально быстро.
Помогла ли вам эта статья?
Еще статьи по данной теме:
Вот сейчас как никогда эти программы кстати. Есть много программ которые не имеют в прошивке русский язык. И это очень печально. Приходится наугад тыкать в них и пропускать хорошие функции мимо даже не подозревая что они есть. А с такими программами вы сможете сделать программу удобней. И, возможно, не только себе. Тут гугл-транслита мало будет. А если у вас еще и знание английского на высоте, то за русификацию программ вы и вовсе можете брать деньги
Да, для кого-то знание языка — хлеб, а для кого-то хобби. Однако, и в том, и в том случае это очень сильно выручает, особенно если есть желание помочь другим с помощью таких программ.
Этот пост — попытка систематизировать всю имеющуюся на данный момент у меня информацию, касающуюся локализации приложений.
Пока мы пишем программы «для себя», то о локализации, интернационализации и пр. заморочках мы как-то и не задумываемся. А зачем? Врядли кому-то в здравом уме придет в голову мысль «А не перевести ли мне свою утилиту на иврит, чтобы потом с такой программой работать?» Совсем другое дело, когда программа «вырастает из коротких штанишек» и на неё появляется спрос в других странах. Тогда, если спрос достаточно большой, можно (и нужно) взяться за локализацию — найти подходящий инструмент, нанять переводчиков (или переводить самому) и работать, работать, работать. Решение типа «Сделаю INI-файлик» вполне может подойти для небольших программок, но никак не для серьезных проектов с развитым интерфейсом, большим количеством форм, русурсов и т.д. — в этом случае стоит подыскать подходящее готовое решение. Собственно, основные цели поиска решения для локализации, которые были мне поставлены — это найти решение, которое позволит:
- проводить локализацию руками не-программистов
- работать с собственными словарями для перевода
- поддержка XE2
ну и, как обычно, решение должно быть удобным в использовании, дешевым, по возможности, простым в освоении и т.д. и т.п. А так как я все равно решил пройтись в своем поиске по всем возможным вариантам (а точнее по максимально возможному количеству вариантов), то решил весь найденный материал систематизировать и оформить вот этим самым постом. Здесь Вы сможете узнать и о существующих компонентах Delphi и о библиотеках и о программах — в общем о всем, чего только душа пожелает. В общем, если Вы тоже задались целью отыскать во всем множестве предложений для локализации то, которое придется по душе именно Вам, то читайте далее :)
Содержание
TSILang components suite
Что говорят о своем продукте разработчики:
TsiLang ® Components Suite позволяет добавлять поддержку для неограниченного количества языков, а также, создавать полностью локализованные версии продуктов, основанные на базовой версии проекта. Автоматически находятся и заносятся в список для перевода все необходимые элементы интерфейса пользователя, предоставляются удобные способы сохранения и управления переводами, и конечно, переключение языка интерфейса осуществляется «налету» как во время работы приложения, так и в режиме дизайнера, что позволяет тестировать интерфейс даже без компиляции и запуска приложения.
Мой тест.
Для тестирования TsiLang я скачал и установил последнюю версию компонентов (6.5.4.7) и создал простенькое приложение на котором разместил Button, Label, OpenDialog, добавил ресурсные строки и константы. Специально на OnClick кнопки был создан такой «кривой» обработчик:
Локализация с TsiLang проводится следующим образом:
1. Запускаем TsiLang expert из меню Delphi: Tools ->TsiExpert
Здесь отображаются все формы проекта, а также компоненты TsiLang, расположенные на этих формах. Теперь выбираем в меню File->Languages и редактируем список языков для нашего приложения. По умолчанию все языки имею названия типа Language1, Language2 и т.д. я переименовал их так:
После того как была нажата кнопка «Ok» на главной (и единственной) форме приложения появился компонент TsiLang:
Теперь находим в эксперте кнопку «Save Project» и сохраняем наш проект. В TsiLang используется два типа файлов проекта:
- *.sib — бинарные файл с переводами. Этот тип файла разработчики рекомендуют использовать, т.к. загрузка таких файлов происходит значительно быстрее, чем при использовании второго типа файлов
- *.sil — текстовые файлы. Преимуществом этого типа файлов является то, что мы можем передать этот файл с утилитой «SIL Editor» другому человеку для перевода.
Теперь, находясь в эксперте дважды щелкаем мышкой по названию формы в списке — откроется окно редактора перевода:
В левой части окна (в дереве) редактора содержатся группы переводимых свойств компонентов и строк и, соответственно, справа — таблица для перевода. TsiLang может локализовать не только свойства компонентов типа Caption, Hint, Text и т.д., но также и строки из диалогов, например, на рисунке ниже представлены все строки для перевода из различных диалоговых окон, которые могут использоваться в приложении:
Начинаем переводить все строки с русского на английский. При переводе каждой строки редактор в отдельном окне показывает нам длину строки оригинала (в пикселях) и длину переведенной строки:
В принципе, назначение этого информационного окошка понятно — можно контролировать ситуации, когда переводимый текст не будет вписываться в границы компонента. Хотя, как по мне, так было бы удобно добавить в это окошко ещё и ширину самого компонента — что б было с чем сравнивать ширины строк.
После того, как все строки переведены снова сохраняем наш проект. Теперь sil-файл должен содержать примерно такой текст:
- File -> Source -> WithForm— чтобы выбрать строки из секции implementation модуля,
- File -> Source -> WithForm —чтобы выбрать все строковые константы и ресурсные строки
В итоге откроется окно с результатами поиска в котором Вы можете добавить строку в список исключений или заменить её на вызов функции TsiLang:
Открываем pas-файл и видим следующую странную картину:
После того как строки были помещены в перевод можно снова открыть редактор перевода и провести перевод группы Strings (благо в редактор строки попадают без искажений):
После того, как все строки переведены, а sil-файл сохранен, можно организовать переключение языков в своей программе. В TsiLang каждый язык имеет свой идентификатор типа integer. Например, в моем случае идентификаторы были такими:
Теперь, чтобы интерфейс моей программки переключился на английский язык достаточно где-нибудь вставить вот такой код:
Это приведет к тому, что TsiLang подгрузит из sil-файла строки на необходимом языке.
Что касается работы со словарем переводов, то TsiLang может передавать в словарь (предварительно созданные) только уже переведенные строки. Для этого можно воспользоваться все тем же редактором переводов — жмем в редакторе кнопку «Add All», которая предназначена для передачи в словарь всех переводов и получаем вот такое окошко для выбора необходимых опций передачи:выбираем здесь файл словаря, жмем «Ok» и получаем все переведенные строки в свой словарик, который, кстати, выглядит вот так:
Впоследствии этот словарь можно будет использовать для автоматических переводов строк в своих программах. Ну и, как я уже говорил выше, для работы с SIL-файлами имеется отдельная утилита под названием SIL Editor, которая предназначена для переводчиков. Для чистоты эксперимента я скопировал папку с SIL Editor на флэшку и запустил программу с виртуалки «Windows XP Mode»:
SIL Editor позволяет производить переводу по словарям и вручную, а также, если необходимо, добавлять новые языки в перевод.
Другие возможности TsiLang:
- Импорт словарей из doc-, html-, xls-, csv-, po-файлов
- Импорт ресурсных строк из исполняемых файлов
- Наличие собственных компонентов — диалоги открытия файлов, метки, списки и т.д.
- Ведение статистики по переводам
Довольно большой получился обзор, но инструмент того стоит. Подведем небольшой итог:
Достоинства:
- Просто подключается к проекту — бросили компонент на форму, вызвали 1 метод и интерфейс переведен
- Удобный редактор перевода — все строки разложены, что называется «по полочкам», можно быстро ориентироваться по дереву в поиске нужных строк для перевода
- Поддерживает как бинарные так и текстовые файлы с переводами. Создали sil-файл, отдали переводчику, потом пересохранили в sib и все готово — и программа быстрее будет работать и никто больше в перевод не залезет.
- Наличие инструментов для переводчиков (SIL Editor, словари)
Недостатки:
- «Корежит» русские строки в pas-файле. Пусть они и заключаются в комментарии, но, тем не менее, факт на лицо.
- В процессе работы обнаружились непонятные ошибки при работе со словарями. Например, при переносе переведенных строк в словарь через раз появлялась ошибка выхода за границы диапазона.
- Небольшие проблемы с окнами TsiLang. Они, конечно, жить не мешают, но тем не менее, не хорошо, когда ты вызываешь словарь, а он какого-то лешего сворачивается в панели управления.
В принципе, указанные выше недостатки (за исключением второго) не такие уж и критичные.
DKLang Localization Package
Про это решение для локализации я не могу сказать ничего кроме того, что оно просто есть, т.к. даже не стал загружать архив, не смотря на то, что компоненты бесплатны.
Во-первых, настораживает дата последнего релиза — 2008 год — не факт, что компоненты заработают в XE2 без проблем.
Во-вторых пакет требует дополнительной установки компонентов Tnt Unicode Controls 2.3.0, которые в 2012 году уже как бы и лишние — юникод и так поддерживается.
Поэтому, если у Вас есть, что сказать по этому решению — хорошего или плохого — отпишите в комментах, а я добавлю отзывы в обзор.
UPDATE : Отзыв про DKLang Localization Package. Кратко и понятно.
UPDATE 2 : работоспособность DKLang в XE2
EMS Advanced Localizer
Что говорят о своем продукте разработчики:
Advanced Localizer™ — это незаменимый пакет компонентов для Borland® Delphi®, позволяющий добавлять языковую поддержку Вашим Delphi® приложениям. Широкие возможности пакета Advanced Localizer позволяют быстро и просто локализовать свойства компонентов каждой формы, создавать языковые файлы с текущими значениями свойств компонентов, управлять файлами локализаций, а также назначать компоненты и их свойства, подлежащие локализации. Язык приложений, использующих Advanced Localizer, может быть переключен на другой непосредственно во время работы без последующего перезапуска приложения. Advanced Localizer также предусматривает возможность написания приложений-потомков, использующих языковые файлы, заданные пользователем.
Так как «незаменимых» у нас нет, то я провел свой небольшой тест этих компонентов все на том же маленьком приложении в 1 форму.
Мой тест
Скачал и установил пакет компонентов в Delphi XE2, открыл проект. В палитре компонентов Delphi появилась новая вкладка — EMS Advanced Localizer. С этой вкладки бросам на форму компоненты:У TQFormLocalizer в свойстве Source указываем TQLanguageSource и приступаем к работе.
Первым делом создаем файлы для локализованных строк — делаем два пустых файлика с расширениями *.lng (расширение по умолчанию для EMS Localizer) и называем их просто — rus и eng.
Теперь дважды щелкаем мышкой по компоненту TQLanguageSource для вызова менеджера языковых файлов:
Жмем единственную активную кнопку и добавляем файлы:
Теперь, по идее разработчиков, в списке менеджера должна появиться новая запись…однако её нет. Вот значения, которые содержатся в свойстве Languages компонента:
Однако список визуального редактора девственно чист. Ну да Бог с ним со списком — пробуем перевести наше приложение. Дважды щелкаем по второму компоненту (TQFormLocalizer) для вызова редактора перевода:
В редакторе мы можем помимо перевода строк также добавить новый языковой файл, отредактировать имеющийся язык или выбрать язык, используемый по умолчанию. Как можно видеть на рисунке — в редактор попадают только строки, содержащиеся в свойствах компонентов, а ресурсные строки и константы остаются незамеченными, что можно записать в недостатки этих компонентов.
После перевода всех строк можно добавить в программу опцию для переключения языка интерфейса. Делается это примерно также как и в TsiLang — указанием индекса активного языка:
При этом, если используется язык по-умолчанию (отмечен как «Original»), то у него индекс равен -1, а у остальных — начинается с нуля и наращивается по порядку в списке Languages.
Другие возможности EMS Advanced Localizer:
- Компоненты просты в использовании — на то, чтобы разобраться что и как работает ушло от силы минут 5.
- Достаточно дешевые
- Есть возможность хранить переводы в БД
- Нет поддержки словарей и, соответственно, авто-переводов
- Проблемы в простеньком менеджере языков
- Не поддерживается перевод констант и ресурсных строк
- Нет инструментов для сторонних переводчиков
В целом мое мнение по поводу EMS Advanced Localizer — достаточно удобные компоненты для работы с небольшими проектами, но для более менее крупных проектов где требуется поддержка многих языков, работа нескольких человек над переводом и т.д. этот набор компонентов, к сожалению, слабоват.
Korzh Localizer
Что говорят о своем продукте разработчики:
Один EXE-файл может поддерживать несколько языков. Дополнительные языки могут быть добавлены без перекомпиляции. Нет необходимости создавать множество exe-файлов
Строковые данные могут храниться как в стандартных ресурсных DLL, так и в специальных языковых файлах
При локализации код программы либо изменяется очень мало (буквально пару строк), либо не изменяется вообще. Localizer не меняет проект приложения, т.к. не используются какие-либо дополнительные компоненты
Локализованный проект можно запускать на компиляцию без установленного Localizer
Localizer переводит как ресурсы из VCL, так и любые другие ресурсы
Поддерживается хранение переводов в стандартном Хранилище переводов (Translation Repository) и их повторное использование в будущем
Поддерживает все сторонние компоненты и пакеты (например, DevExpress, TurboPower, ElPack, RX и т.д.)
Процесс перевода можно осуществлять с помощью встроенной утилиты Language Manager, свободно доступной для закачки переводчиками
Простой переход из Borland ITE (Integrated Translation Environment — интегрированная среда перевода)Мой тест
Скачал триал, отличие которого от полной версии заключается в том, что Localizer переводит только первые 30 строк из каждой формы/файла. Установил После чего в главном меню Delphi XE2 появился новый пункт:
Выбрал в меню «Start project localization» в итоге меня попросили выбрать основной язык для проекта и указать папку для хранения языкового файла:
После нажатия «Localize mu project!» была запущена перекомпиляция проекта, а в dpr-файле проекта добавились необходимые модули и вызов методов Korzh Localizer’а:
Читайте также: