Сегодняшний обзор будет построен на контрасте: после рассмотрения простых и доступных средств локализации, ориентированных на решение несложных задач, возвращаемся к анализу профессиональных специализированных инструментов. В качестве предмета обзора выберем пакет для локализации программного обеспечения от британской компании SDL International, являющейся признанным лидером в сфере разработки программных средств для поставщиков лингвистических услуг.
До недавнего времени основным программным продуктом компании являлась система SDLX, но с 2005 года, после приобретения немецкой Trados GmbH, SDL переключается на создание совместной системы автоматизированного перевода — SDL Trados Studio, что позволило SDL International стать одним из мировых лидеров в классе систем Translation Memory.
Однако, Trados Studio не является единственным продуктом, который выпускается компанией SDL: среди специалистов известна также система управления содержанием SDL Trisoft, система управления терминологической базой SDL MultiTerm и система управление web-контентом SDL Tridion. Отдельную позицию в модельном ряду программных продуктов SDL занимает решение для локализации программного обеспечения — пакет SDL Passolo, о котором мы и поговорим далее.
Пакет SDL Passolo
SDL Passolo (ранее: PASSOLO; название произошло от первого разработчика — компании PASS Engineering GmbH, приобретенной SDL International в 2007 году) является специализированным решением для локализации, ориентированным на перевод пользовательского интерфейса ПО. Важное преимущество SDL Passolo заключается в оптимизации выполнения локализации за счёт интеграции с системами автоматизации перевода. Так, SDL Passolo может быть установлен как автономное приложение (stand-alone application) или объединено с другими продуктами SDL, такими как, например, SDL Trados и SDL MultiTerm, что позволяет более эффективно использовать базы переводов, терминов, файлов справки и документации.
В SDL Passolo, как и в большинстве продуктов подобного класса, реализована концепция WYSIWYG (What You See Is What You Get — способ редактирования, при котором материал в процессе редактирования выглядит в точности так же, как и конечный результат), позволяющая адаптировать пользовательский интерфейс локализируемого программного обеспечения непосредственно во время осуществления перевода. Обычно, данная концепция распространяется на редакторы диалоговых окон, меню, битовых объектов, значков и курсоров, существующие предохраняющие механизмы исключают вероятность случайного удаления исходных визуальных элементов или структур.
Встроенная в SDL Passolo технология памяти переводов позволяет многократно использовать выполненные ранее переводы. Функция контроля качества (quality assurance) реализована через проверку правописания в текстах и автоматическое распознавание усеченных или перекрывающихся (накладывающихся друг на друга) текстов, ошибок присвоения комбинаций клавиш и т.п. Таким образом, SDL Passolo автоматически распознает большое количество потенциальных ошибок, которые могут возникнуть в процессе локализации ПО, причём не только лингвистического, но и технологического характера.
Особенности SDL Passolo 2009
Кроме описанных выше возможностей, SDL Passolo 2009 — последняя, на данный момент, версия продукта (бриф SDL Passolo 2009) — отличается от своих предшественников некоторыми усовершенствованиями.
- Технология QuickIndex повышает быстродействие поиска путём индексации ресурсов проекта и глоссария, а также улучшает качество результатов поиска за счёт игнорирования (в процессе поиска) характерных фрагментов программного кода.
- Модернизирована поддержка современных систем разработки приложений и СУБД — Microsoft® .NET 3.5, Enhanced Microsoft® WPF, Delphi® 2009, Microsoft® Silverlight™, Enhanced Java™, Oracle® 11.
- Полный доступ к истории изменений позволит проводить аудит изменений проекта и отменять редактирование (откат изменений) вплоть до возвращения к оригинальной версии. История содержит даты изменений и имя пользователя, который выполнил редактирование.
- Улучшенный пользовательский интерфейс программы позволяет настраивать размер и расположение панелей задач. Добавлена возможность создания пользователем (через диалог настройки панели инструментов) комбинаций клавиш для быстрого вызова команд.
- SDL Passolo 2009: Запуск программы — окно приветствия с опцией выбора пользователя и параметрами запуска программы (выбор уже имеющего проекта, переход к созданию нового проекта
- SDL Passolo 2009: Мастер создание нового проекта
- SDL Passolo 2009: Параметры программы
Стандартные надстройки и модули SDL Passolo
Архитектура SDL Passolo основана на использовании надстроек или модулей (add-ins) для выполнения определённых задач (анализ, редактирование, визуальное редактирование) при обработке отдельных видов файлов. В процессе настройки SDL Passolo, некоторые модули можно отключать или, наоборот, подключать дополнительные (см. ниже).
Также, пользователи, используя VBA-совместимый скриптовый язык и интегрированную в SDL Passolo среду разработки (Scripting Runtime Engine), могут создавать собственные надстройки для файлов, которые не могут быть обработаны (или некорректно обрабатываются) имеющимися модулями. Например, к таким файлам можно отнести сложноструктурированные текстовые и бинарные файлы.
Следует отметить, что первоначально SDL Passolo была разработана как инструмент для локализации программ содержащих стандартные ресурсы OC Windows. Этим и объясняется набор надстроек, предустановленных в базовую версию SDL Passolo.
- 32- и 64-битные файлы Windows (.exe, .dll, .sys, .ocx) — прикладные программы, разработанные с помощью Microsoft Visual C++, в том числе и приложения Windows CE, Pocket PC, Windows Mobile.
- 16-битные файлы Windows, что позволяет выполнять локализацию Windows- приложений предыдущих поколений (например, некоторых приложений для Windows 9.x).
- Ресурсные файлы Windows (.rc, .rc2, .dlg) и файлы Microsoft Installer (.msi).
- Файлы Visual Basic — в состав SDL Passolo входит утилита VBScan, упрощающая интернационализацию форм Visual Basic. Реализация данной утилиты основана на рекомендациях Microsoft по интернационализации программ, разработанных с помощью Visual Basic.
- Текстовые файлы и HTML-файлы.
- XML-файлы, в том числе и отдельный их подтип — XLIFF-файлы. XLIFF (XML Localization Interchange File Format) — платформенно-независимый стандарт обмена локализуемыми данными и сопутствующей информацией, основанный на языке разметки XML. Доподлинно известно, что использующийся в SDL Passolo синтаксический анализатор поддерживает обработку XLIFF-файлов созданных на основе спецификации 1.1.
- Portable Object файлы (.po) — файлы перевода, созданные с использованием технологии интернационализации gettext. В SDL Passolo предусмотрен полный набор возможностей для работы с файлами данного формата, включая поддержку механизма обработки различных форм множественного числа.
Дополнительные надстройки SDL Passolo
Как уже говорилось выше, в SDL Passolo существует возможность подключать дополнительные надстройки для обработки отдельных типов файлов. Перечисленные ниже опциональные модули, разработанные компанией SDL, распространяются на платной основе.
- Надстройка для Microsoft .NET позволяет локализировать бинарные (.exe и сопутствующие .dll-библиотеки) и ресурсные (.resx, .resource) файлы веб-приложений, разработанных на основе Microsoft .NET.
- Надстройка для Delphi/C++Builder позволяет локализировать бинарные файлы (.exe, .dll, .bpl) программ, разработанных с помощью Borland Delphi и Borland C++Builder версии 6 и выше.
- Надстройка для Palm OS позволяет извлекать и локализировать строковые ресурсы из файлов Palm Resource Code (.prc). Данная надстройка, также как и надстройки для Microsoft .NET и Delphi/C++Builder, включает в себя WYSIWYG-редактор для обработки диалогов, меню и растровых изображений.
- Надстройка для OBDC баз данных позволяет анализировать и переводить содержание баз данных основанных на технологии OLE DB Provider (MS Access, MS Excel, MS SQL Server, Oracle, MySQL, IBM DB2). Переводы могут быть сохранены как в виде новых записей или полей БД, так и в отдельном текстовом файле.
- Надстройка для Java-приложений (J2EE, J2SE, J2ME). С помощью данной надстройки можно обрабатывать: а) ресурсные Java-файлы (.properties); б) исходные файлы (.java) и скомпилированные бинарные файлы (.class); в) JAR-файлы, содержащие сжатое Java-приложение — данная надстройка поддерживает, как извлечение необходимых ресурсов из файлов, содержащихся в JAR-файле, так и добавление перевода обратно в JAR-файл.
SDL Passolo поддерживает наиболее востребованные механизмы импорта и экспорта данных: экспорт/импорт ASCII-текста, данных в формате CSV (например, для обработки в MS Access или MS Excel, причём поддерживается реимпортирование данных после окончания обработки), экспорт ресурса в файл глоссария SDL Passolo.
Особый интерес вызывает создание и редактирования т.н. «связок переводов». (Данное словосочетание является переводом термина «translation bundles» и наиболее часто встречает в русскоязычных материалах о SDL Passolo и неофициальном русификаторе программы; хотя автор данного обзора и не согласен с указанной интерпретацией, считая её не совсем корректной, будем использовать именно этот термин, тем более, что официальной русскоязычной локализации SDL Passolo не существует).
«Связка переводов» представляет собой отдельный файл, в котором помещаются все данные, необходимые для внешнего редактирования или обработки определённой части проекта (в том числе, параметры меню и диалогов локализируемого приложения). При необходимости в «связку переводов» могут быть добавлены глоссарии, пользовательские макросы с тестовыми функциями приложения, примечания для переводчика в виде текстовых файлов (например, в формате MS Word).
Созданные в Team Edition «связки переводов» могут быть отредактированы в специальной бесплатной версии SDL Passolo — Translator Edition. Причём, процесс редактирования практически не отличается от аналогичных действий в полнофункциональной версии SDL Passolo — строковые ресурсы отображаются совместно с визуальными элементами локализируемого приложения, а встроенный редактор позволяет вносить изменения в элементы интерфейса. Тестирования «связок переводов» осуществляется с помощью специальных тестовых макросов.
Классификация SDL Passolo
Классификация SDL Passolo по различным версиям (editions) основана не на наличии/отсутствии отдельных функциональных возможностей, как это делается у других разработчиков, а на определении сферы применения данного инструмента локализации. Базовая версия продукта обладает полным функционалом, а специальные версии SDL Passolo ориентированы на работу в распределенной среде.
- Professional Edition является полноценным самостоятельным решением, подходящим для локализации проектов любой сложности. Наличие большого количества специальных надстроек делает возможным взаимодействие с внешними программами, а интегрированная среда разработки сценариев позволяет расширять функциональные возможности SDL Passolo.
- Team Edition ориентирован на работу с крупными проектами, т.к. предлагает дополнительные возможности для организации обмена данными со сторонними переводчиками путём разделения проекта на отдельные части — «связки переводов». Team Edition позволяет осуществлять администрирование проекта и обеспечивает взаимодействие между различными его участниками. Именно поэтому Team Edition имеет три различных варианта лицензии — для пяти, десяти или неограниченного количества частей, менеджмент которых необходимо осуществлять (естественно, что от этого параметра зависит и стоимость лицензии).
- SDL Passolo Essential входит в состав системы автоматизированных переводов SDL Trados. Это версия предоставляет полный набор возможностей для создания и перевода проектов, генерирования файлов перевода, но, в тоже время, существует и ряд ограничений. Например, отсутствует функция проверки качества перевода (quality assurance) и возможность создания многоязычных проектов — допускается использование только одного языка перевода для каждого проекта.
- Translator Edition представляет собой бесплатный редактор, созданный для специалистов (переводчиков, корректоров), выполняющих отдельные задания при совместной работе над проектом локализации. Данная версия ориентирована только на изменение, редактирование и корректировку исходной информации в «связках переводов». А потому, функциональные возможности данной программы ограничены выполнением перечисленных заданий.
Стоимость SDL Passolo
За бренд, как известно, нужно платить, тем более, когда этот бренд является признанным лидером в своей сфере деятельности. По стоимости лицензионная версия SDL Passolo занимает вторую строчку в прайс-листе компании SDL, уступая только старшим версиям SDL Trados Studio. Все продукты компании SDL можно приобрести в фирменном интернет-магазине.
Цена SDL Passolo 2009 Professional Edition, составляет €1840 (около $2200); цена на Team Edition не указана, а заказать её можно только отдельно связавшись с отделом продаж компании. В отдельном порядке также рассматриваются вопросы обновления лицензии при переходе на более современную версию SDL Passolo. Кроме того, в магазине предлагается приобрести комплекты надстроек для работы с определенными видами приложений (Java-приложения, Palm-приложения, .NET, OBDC базы данных); стоимость каждого комплекта — €380 (около $250).
Как и полагается, опробовать SDL Passolo можно с помощью демо-версии. В том же разделе официальной станицы программы, кроме демо-версии последнего релиза, можно получить и бесплатную Translator Edition. Причём, она представлена не только самой современной, но и предыдущими, включая выпускавшиеся под маркой PASS Engineering GmbH (PASSOLO х.х), версиями программы.
Следует отметить, что для получения большинства информации, в том числе, и бесплатных версий программ, на официальном сайте SDL необходимо пройти регистрацию с указанием персональных данных, рода деятельности и цели получения информации или использования ПО.
- SDL Passolo 2009: Окно редактирования, подключения и отключения надстроек (add-ins)
- SDL Passolo 2009: Перевод и редактирование строковых ресурсов в таблице строк
- SDL Passolo 2009: Визуальное редактирование диалогового окна
Шаблонный переводчик PASSOLO
Программа PASSOLO — это шаблонный редактор ресурсов и при грамотном использовании может помочь переводчику сэкономить уйму сил и времени при локализациях программ. Это из-за того, что в программе предусмотрена функция автоматического перевода и проверки переведённого текста на большинство типичных ошибок. Функция автоматического перевода осуществляется при наличии определённых словарей, которых существует множество в интернете, в том числе и от компании Microsoft. Если вас уже готовые словари не устраивают (а готовые словари не всех устроят из-за отвратительного качества оных), то их можно создавать самому. Достаточно один раз перевести какую-нибудь программу и экспортировать список перевода в словарь. И в дальнейшем этот словарь можно будет подключать при переводе новых версий программ.
В PASSOLO очень развита визуальная корректировка диалоговых окон в переводимых программах. Достаточно будет сказать, что она не намного уступает редактированию форм в Microsoft Visual Studio.Net. Если вы скажете, что и в Resource Hacker хорошая корректировка диалогов, то значит вы не видели PASSOLO. На этом список достоинств PASSOLO не ограничивается. Но, обо всём по порядку…
Создание проекта локализации
После установки и при первом запуске PASSOLO предлагает создать новый проект локализации (Файл — Создать). Для начала нужно ввести название создаваемого проекта в поле ‘Имя’. В поле ‘Расположение’ нужно ввести путь, куда будет сохранён файл проекта. Этот файл может быть сохранён где угодно, независимо от расположения исходных файлов. Файлы проектов PASSOLO — это файлы с расширением *.lpj. В этом файле сохраняются исходный список строк и то, что вы сделаете с этим списком. То есть, ваш перевод этого списка, комментарии, журнал проекта, статистика перевода и т.д. По сути дела, файлы *.lpj — это обычные архивы, но посмотреть содержимое находящихся в нём файлов, так просто не удастся, так этот архив защищён паролем.
Далее следует нажать кнопку ‘Добавить источник’ и выбрать исходный файл. Исходный файл — это файл, который вы хотите перевести. При нажатии на кнопку ‘Добавить источник’ открывается стандартное окно открытия файла, в котором вы можете выбрать нужный файл. К слову сказать, PASSOLO умеет работать не только со стандартными файлами ресурсов (*.exe. *.dll, *.scr), но и со многими другими, в частности файлами Java (*.java, *.properties, *.class, *.jar). В таких файлах хранятся ресурсы программ, написанных на языке JAVA. Наверное, самым ярким представителем таких программ является небезызвестная Mozilla. Также, PASSOLO может открывать обычные RC-файлы. Так, если вы приверженец Restorator’a, то вы запросто можете извлекать диалоговые ресурсы из Restorator’a, редактировать их в PASSOLO, а затем закидывать обратно в Restorator. Я не знаю, есть ли в этом какой-либо смысл, но, во всяком случае, редактирование диалогов в Restorator’е реализовано просто отвратительно. Поэтому, мне кажется, что извлечение диалогов из Restorator’а и редактирование их в PASSOLO будет гораздо более быстрым и продуктивным. Но о редактировании диалогах в PASSOLO поговорим ниже.
После выбора файла для перевода, открывается ещё одно окно, в котором как правило ничего не нужно указывать, за исключением языка, который будет извлекаться из исходного файла и языка текста. Язык текста указывает программе с какого языка будет переводиться исходный файл. В этом же окне есть кнопка ‘Параметры’. При нажатии на неё открывается окно дополнительных параметров исходного файла. Здесь можно настроить, чтобы из исходного файла были извлечены рисунки, значки, указатели и двоичные ресурсы. Как правило, необходимость в настройке дополнительных параметров возникает не часто.
После определения параметров исходного файла, нужно нажать на кнопку Добавить язык и выбрать язык, на который будет переводиться исходный файл. Если вы полиглот и хотите перевести программу на несколько языков, то можете добавить все желаемые языки. В дальнейшем, язык переведённой программы будет выбираться операционной системой в зависимости от региональных настроек компьютера.
Ну и кнопка ‘Словари’ позволяет подключить словари к новому проекту (если они есть у вас). С помощью этих словарей в дальнейшем будет осуществляться автоматический перевод, а также PASSOLO будет предлагать различные варианты перевода.
На этом создание проекта можно считать законченным и при нажатии кнопки OK в окне проекта появляются как минимум две кнопочки, но может быть и больше, в зависимости от количества языков, на которые вы будете переводить исходный файл. Первая кнопочка — это строки исходного файла, а последующие — строки перевода конечных файлов. Ах да, совсем забыл: перед добавлением какого-либо файла в проект, его лучше всего переименовать, например, к имени файла добавить слово ‘_ORIGINAL’. Дело в том, что этот файл уже нельзя будет изменять никакими другими редакторами ресурсов, так этот файл будет использоваться в качестве базового и от него будет плясать PASSOLO, компилируя конечный файл. В противном случае, результат конечного файла может быть непредсказуемым. Допустим все условности соблюдены. Далее нужно указать параметры конечного файла. Щелчок правой кнопкой мыши по второй кнопочке, команда ‘Свойства’ и в поле имя файла нужно ввести имя и путь файла, который будет создавать PASSOLO. Это может быть или оригинальное (ещё не переименованное) имя исходного файла или какое угодно другое. В окне свойств конечного файл можно даже указать, чтобы PASSOLO скомпилировал не весь файл, а только библиотеку с ресурсами. Такие ресурсные библиотеки поддерживают многие программы, в частности PASSOLO, Nero Burning ROM, Restorator…
Собственно перевод
При двойном щелчке по кнопке исходного файла (самая верхняя кнопка) создаётся список строк исходных ресурсов. В этих строках перевод невозможен, но в них можно скрыть те ресурсы и строки, которые переводить не нужно, чтобы эти ненужные строки не мелькали без дела в списке перевода. При нажатии на вторую кнопку создаются списки перевода. Вот здесь уже можно переводить.
На рисунке сверху отображён весь список строк переводимого файла. Небольшое пояснение о строках: то, что вы переводите (диалоги, меню, фразы) PASSOLO считает в первую очередь строками, а уж потом — ресурсами. Красным цветом обозначаются те строки, к которым ещё не прикасалась безжалостная рука переводчика. Синим цветом помечены строки ‘Для просмотра’. Это те строки, которые переведены с помощью авто-перевода, или те, которые переводчик пометил таким образом, например, для того, чтобы впоследствии перевести эти строки как-нибудь по-другому. Пометка строк ‘Для просмотра’ используется, когда переводчик сомневается в том, как он перевёл эту строку и хочет поработать с ней в дальнейшем. Ну и чёрным цвет помечаются те строки, в переводе которых у переводчика уже не осталось никаких сомнений или больше он не хочет возвращаться к этой строке. В терминах программы, это называется утверждённый перевод. В общем, цветные строки созданы исключительно для наглядности и удобства и на конечном файле никак не отражаются. Я хочу сказать, что даже синие строки в конечном файле будет переведены. Состояния строк сохраняются и поэтому всегда можно вернуться к любому состоянию, в том числе и полностью отменить перевод.
Кроме всего списка строк, PASSOLO умеет отображать каждый ресурс по отдельности. То есть, меню выглядят как меню, а диалоги — как диалоги. Единственно, строковое ресурсы отображаются не так, как мы привыкли в Restorator’е и Resource Hacker. В PASSOLO стоковые ресурсы отображаются единым, длинным списком. Поначалу мне это показалось дикостью, но понемногу привык и теперь мне кажется, что так даже удобнее. Единственное, что омрачает, так это то, что в PASSOLO не предусмотрена возможность импорта/экспорта ресурсов во внешний RC-файл. Встроенный текстовый редактор очень несовершенный и глючный. Например, все знают, что в обычных текстовых редакторах двойной щелчок по слову выделяет это слово. А в PASSOLO этот же двойной щелчок выделяет не только слово, а ещё и близлежащие знаки. Например, скобки, кавычки, амперсанды (&). А это очень неудобно. Также многие знают, что нажатие клавиш CTRL + Стрелка перемещает курсор не на один символ, а на всё слово. А в PASSOLO эта возможность может работать, а может не работать. По крайней мере в версии 4.0.004.
Если у вас имеются подключённые словари, то можете попробовать в действии функцию автоматического перевода. Команда меню Перевод — Авто-перевод. В параметрах Авто-перевода можно указать используемые источники для автоматического перевода (общие словари, словари проекта, уже переведённые строки). Там же можно настроить поведение PASSOLO, если он найдёт несколько соответствий переводимой фразы. В этом случае лучше всего, наверное, будет установить параметр ‘Показать все соответствия’. Так, если PASSOLO найдёт несколько вариантов перевода исходной фразы, то он отобразит все эти варианты, а вам останется только выбрать понравившийся вариант. В настройках нечёткого соответствия (Сервис — Параметры — Нечёткое соответствие) можно указать процент соответствия автоматически переводимых фраз. Так, если процент указан 100%, то слова ‘&File’ и ‘File:’, будут считаться разными. А если процент соответствия указать меньше, то эти же слова будут считаться одинаковыми, и будут переведены так, как указано в подключённом словаре.
При ручном переводе можно нажимать клавишу F8 и тогда PASSOLO будет или автоматически переводить переводимую строку, если найдено соответствие в подключённых словарях или покажет варианты переводов, в том случае, если найдётся несколько соответствий. А вообще, наверное, идеальным вариантом будет постепенно создавать один общий словарь для всех программ и в этот словарь вносить те фразы, которые будут приемлемы для всех программ. Как правило, это довольно длинные фразы и системные сообщения, которые ну никак не могут иметь несколько значений. Например, часто встречаемая фраза ‘For Help, press F1’. Во всех программах она имеет одно и то же значение и её никак нельзя перевести, кроме как ‘Для вывода справки нажмите клавишу F1’. Следовательно, этой фразе и место в генеральном словаре. Или фраза ‘Save the active documentnSave’ во всех программах не может иметь иного значения, кроме как ‘Сохранение активного документаnСохранить’. Вот такие фразы и нужно заносить в словари, общие для всех программ. С другой стороны, не следует в общие словари вносить такие слова, как ‘Edit’ или ‘Frame’ и слова, которые могут иметь разное значение в разных программах. Например, слово ‘Frame’ в веб-редакторах можно перевести как ‘Фрейм’, а для графических редакторов будет уместнее слово ‘Рамка’. Для узкоспециализированных программ нужно и словари создавать соответствующие.
Перевод меню
PASSOLO имеет очень продвинутый редактор меню. Как правило, многие переводчики начинаю переводить новую программу именно с главного меню. И главное меню, это то, что постоянно видно на экране и с чего начинается знакомство с программой. Поэтому, грамотно переведённое меню — это залог успеха вашего будущего русификатора. Переводимое меню в PASSOLO не закрывается как в других редакторов ресурсов, поэтому вы всегда видите свой перевод перед глазами. Команда Вид — Оригинальный ресурс или кнопка ‘Показать оригинальный ресурс’ на панели инструментов позволяют в любой момент посмотреть исходный (непереведённый) ресурс. К слову сказать, эта команда действует не только для меню.
Во многих программах имеется строка состояния, в которой отображаются различные подсказки и сообщения. При наведении указателя мыши на пункт меню в строке состояния отображается краткая подсказка об этом пункте меню. В PASSOLO эта подсказка отображается в строке ‘Сообщение’. При нажатии на слово ‘Сообщение’ вы будете автоматически перенесены в строковые ресурсы для перевода этой подсказки. А команда Правка — Перейти — К строке (CTRL + G) перенесёт вас обратно на переводимое меню. Конечно, в рабочей программе подсказка будет отображаться немного не так, как в PASSOLO. То есть, в рабочей программе в строке состояния будет отображаться подсказка до символов ‘n’. Фразы, следующие за этими символами — это всплывающие подсказки панелей инструментов. А в традиционных редакторах пришлось бы все эти подсказки искать и переводить вручную.
По ходу перевода можно создавать словарик. Обычно, внутри переводимой программы существует множество различных меню. Это для конечного пользователя существует только главное и контекстное меню. А на самом деле внутри программы полно разных менюшек и почто все они однотипны и повторяющиеся. И переводчик может значительно упростить себе жизнь при их переводе с помощью словарика. Делается это так: переводится пункт меню, например, как в случае на рисунке выше, фраза ‘&Open…tCtrl+O’ переведена как ‘&Открыть изображение…tCtrl+O’. И тут же переведённую фраза заносите в словарь командой Перевод — Добавить в словарь (или клавишами CTRL + F10). Откроется диалоговое окно, в котором предлагается добавить переведённую фразу в существующий словарь, или создать новый словарь. Как уже говорилось выше, для таких фраз лучше создавать специализированный словарь для конкретной программы. В разных типах программ — и меню нужно переводить по разному. Так, слово ‘Open’ в графическом редакторе можно перевести как ‘Открыть изображение’, а этот же перевод в текстовом редакторе будет выглядеть извращением. Так вот, когда вы переведёте какое-нибудь меню и занесёте все переводы в только что созданный словарь, просто выбирайте команду Перевод — Авто-перевод, и остальные меню в программе будут переведены автоматически и почти полностью. Времени экономится уйма. Останется только доперевести непереведённые команды и на этом перевод менюшек можно считать законченным. Хотя, прежде чем добавлять слова в словарь, желательно проверить хотя бы одно переведённое меню на ошибки с помощью команды Перевод — Проверить перевод ресурса. Эта команда проверяет не орфографические ошибки (об этом вам придётся позаботиться самостоятельно), а наличие ошибок перевода. Например, в одном меню одна и та же буква будет подчёркнута несколько раз. Это ошибка называется ‘Двойная клавиша доступа’ или что-то в этом роде. А подчёркивание буквы достигается вставкой так называемого амперсанда (&) перед подчёркнутой буквой. Ну это для справки, и для тех, кто слышит об этом впервые.
Перевод диалогов
Редактировать диалоги в PASSOLO сплошное удовольствие. В этом плане Restorator, PE Explorer и даже Resource Hacker рядом не стоят с PASSOLO.
Все команды с объектами диалоговых окон доступны в меню ‘Размещение’. Чтобы выбрать несколько объектов, нужно нажать клавишу SHIFT и щёлкнуть по нужным элементам управления. Изменить размер выбранных объектов можно с помощью комбинации клавиш SHIFT и стрелка. SHIFT и стрелка вправо увеличивают длину объекта, SHIFT и стрелка влево — уменьшают длину объектов, SHIFT и стрелка вниз — увеличивают высоту, а SHIFT и стрелка вверх — уменьшают высоту объекта. Можно не возиться с клавишами, а сразу ввести координаты и размеры объекта. В PASSOLO очень просто выровнять объект относительно другого объекта. Объект, относительно которого будут выравниваться другие объекты, следует выбирать последним, так как он в этом случае будет активным. Доступны выравнивания по левому и по правому краям, по верху или по низу (соответственно, клавиша CTRL + стрелка в нужную сторону, или с помощью команд меню Размещение — Выровнять — По… подставь сам). Также возможно центрирование по вертикали или по горизонтали относительно активного объекта.
Очень просто выбрать, например, несколько кнопок и установить между ними одинаковое расстояние с помощью команды Размещение — Равномерное выравнивание — По горизонтали (и по вертикали тоже). А ещё можно выбрать несколько разных объектов и сделать у них одинаковый размер командой Размещение — Выровнять размер — Ширину (а также высоту или и то и другое). А с помощью команды Размещение — Центрировать в диалоге — По вертикали (По горизонтали) можно установить выбранные объекты точно по центру в диалоге. Прошу заметить, все эти команды доступны не только с одним объектом, а с несколькими сразу. Такого я больше ни в одном редакторе не видел.
Очень часто переведённая фраза не вмещается в отведённое ей место. Для таких случаев есть команда Размещение — Размер по содержимому (SHIFT + F7) и объект самостоятельно изменит свой размер и станет равным размеру находящемуся в нём тексту.
Кроме всего прочего, бывают очень навороченные диалоговые окна, в которых содержится очень много элементов управления и все они находятся друг на друге. Но в рабочей программе отображаются не все эти объекты, а только часть из них. Эти объекты отображаются в зависимости от выполняемый в данный момент задачи и поэтому, конечный пользователь даже и не догадывается об этой мешанине объектов. Такие ресурсы в обычных редакторах довольно трудно редактировать из-за того, что видна только часть объектов. А в PASSOLO для таких случаев предусмотрено временное скрытие объектов. Достаточно скрыть часть объектов и все остальные появятся и редактирование не вызовет больших трудностей. Также, объекты диалогов можно объединять в группы и все действия по редактированию будут выполняться с выбранной группой.
Иногда переведённый объект становится настолько длинный, что не вмещается в объект. Для таких случаев есть флажок ‘Многострочность’, который позволяет разместить объект в несколько строк.
Кстати, дельфийские формы (RCData) PASSOLO отображает как обычные меню и диалоги. И также просто их редактирует!
После перевода и редактирования диалога логично будет проверить его на ошибки командой Перевод — Проверить перевод ресурса. При переводе диалогов можно не сразу заметить, как переведённая фраза не влезла в элемент управления. А замечается это уже при тестировании в работающей программе и приходится чертыхаясь и матерясь открывать редактор и исправлять ошибки. А проверка помогает избавиться от большинства типичных ошибок.
Редактирование ресурса 240
Умением редактировать ресурс 240 (он же Dialog Data) славятся далеко не все редакторы ресурсов. Как правило эти ресурсы связаны с выпадающими списками в программах. Restorator и Resource Hacker отображают этот ресурс в шестнадцатеричном виде и не редактируют никак. PE Explore отображает этот ресурс в нормальном виде, но тоже редактировать пока не научился. Говорят, ресурс 240 может редактировать глюк под названием eXeScope. Но обычно после этого программа редко работает. В PASSOLO ресурс 240 называется DLGINIT и отображается в виде обычных строк. И редактируется как обычные строки.
Редактирование двоичных ресурсов
В PASSOLO встроен простенький графический редактор, который способен произвести небольшие косметические изменения с рисунками, указателями и значками, а также добавить текст в рисунки. Если нужна серьёзная обработка рисунка, то лучше будет назначить редактирование рисунков на внешний графический редактор (Сервис — Параметры — Двоичные ресурсы). Ну а в глубоком смысле PASSOLO не умеет редактировать двоичные ресурсы, даже RTF. Но для этих целей можно назначать внешние редакторы. И к тому же, двоичные ресурсы очень редко когда требуется редактировать. Так что, это может и не понадобиться.
Версия
Насчёт ‘версии’ я мало чего могу сказать вразумительного, и поэтому позволю себе процитировать слова мною уважаемого NyBumBum’а:
«Реально в программе не приходится редактировать этот ресурс, достаточно указать целевой язык в настройках проекта: PASSOLO отмаркирует все (!) ресурсы в файле этой кодировкой. Правда не без небольшого глюка: он прописывает на закладке версия:
BLOCK «041904b0» и
VALUE «Translation», 0x0419 0x04B0 (1049/1200)
вместо:
BLOCK «041904E3» и
VALUE «Translation», 0x0419 0x04E3 (1049/1251)
Исправить можно в Resource Hacker».
Я так и не понял, что это за глюк и глюк ли это вообще. Во всяком случае я не замечал каких-либо изменений в работе программ после исправления вышеуказанных букв.
Проверка перевода
После перевода какой-либо программы можно произвести контрольную проверку всего перевода. Команда Перевод — Проверить весь перевод. Как уже говорилось выше, PASSOLO может проверять перевод на большинство типичных ошибок, появляющихся в процессе перевода. А в параметрах проверки (Сервис — Параметры — Проверка) можно указать, какие именно ошибки будет искать PASSOLO. По умолчанию включён поиск всех возможных ошибок.
PASSOLO может искать отсутствие клавиши доступа (&) в переведённой строке, или наоборот, присутствие этой клавиши, но при отсутствии оной в исходном переводе.
Двойная клавиша доступа в меню или в диалоге. Не положено быть двум клавишам доступа в одном ресурсе.
Отсутствие переведённого текста — это случается, когда по каким-либо причинам вы удалили текст переводимой фразы, а забыли его обратно вписать.
Для диалогов наиболее типичные ошибки — это:
Длина текста превышает превышает длину элемента управления. Эта ошибка легко исправляется клавишами SHIFT + F7.
Элемент управления перекрывает другой элемент управления. А здесь не всегда бывает ошибка. Как уже говорилось, бывают диалоги со сложной структурой, когда одни элементы перекрывают другие. Здесь уже нужно тестировать в рабочей программе.
Навигация по ошибкам: клавиша F4 — переход к следующей ошибке, SHIFT + F4 — переход к предыдущей ошибке. Конечно, лучшим вариантом будет проверять на ошибки каждый ресурс сразу после перевода (Перевод — Проверить перевод ресурса).
Словари
После перевода программы, после ликвидации всех найденных ошибок и после тщательного тестирования, вы можете экспортировать свои списки перевода в словарь и использовать этот словарь при переводе следующих версий программы. Словари экспортируются командой Файл — Экспорт. Из кучи предлагаемых форматов самым распространённым и удобным является формат PASSOLO Glossary Maker. Это файл формата *.glo, который при необходимости можно открыть и отредактировать в любом текстовом редакторе, например, в EditPlus.
Сайт http://edfoxrus.narod.ru целиком посвящён локализациям программ. На этом сайте находится великое множество различных программ, предназначенных для перевода других программ, а также русификаторы к ним. Кроме этого, на этом сайте собрано огромное количество словарей для PASSOLO. Почти все эти словари ‘безымянные’ или присланные неизвестными переводчиками. Я загрузил оттуда для проверки несколько словарей, в том числе и два словаря для PASSOLO. Мои впечатления: когда я просматривал эти словари, то мне казалось, что их ‘создали’ какие-то дауны. До того отвратительно и некачественно они переведены. И я для себя решил не пользоваться неизвестными словарями. А использовать или не использовать их вам в своих переводах — решайте сами. Я не говорю, что там все словари туфтовые. Возможно, мне попались такие, и также возможно, что вам повезёт больше, чем мне.
Исключение составляют словари, разработанные компанией Microsoft, или созданные на основе словарей от Microsoft. Вот эти словари можно и даже нужно использовать в своих работах. Компания Microsoft постоянно тестирует, проверяет и улучшает свои переводы уже много лет. Эти словари доступны в двух вариантах:
Оригинальные словари компании Microsoft в формате *.csv — 8 МБ
Переделанные для PASSOLO в формате *.glo — 4 МБ
Прочее
В PASSOLO 4.0.004 имеется очень серьёзный глюк. Ресурсы с формами Delphi и C++ Builder PASSOLO нормально отображает и редактирует, но при компиляции переведённого файла появляются различные ошибки, вплоть до невозможности запуска переведённой программы. Это из-за ошибок в дельфийских надстройках (плагинах). Но в моей сборке эти модули взяты с версии 4.0.006, а в них вышеуказанные ошибки исправлены.
Copyright (c) 2004 Sabbath Black L@B. Все права зарезервированы.
уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.
Этот пост — попытка систематизировать всю имеющуюся на данный момент у меня информацию, касающуюся локализации приложений.
Пока мы пишем программы «для себя», то о локализации, интернационализации и пр. заморочках мы как-то и не задумываемся. А зачем? Врядли кому-то в здравом уме придет в голову мысль «А не перевести ли мне свою утилиту на иврит, чтобы потом с такой программой работать?» Совсем другое дело, когда программа «вырастает из коротких штанишек» и на неё появляется спрос в других странах. Тогда, если спрос достаточно большой, можно (и нужно) взяться за локализацию — найти подходящий инструмент, нанять переводчиков (или переводить самому) и работать, работать, работать. Решение типа «Сделаю INI-файлик» вполне может подойти для небольших программок, но никак не для серьезных проектов с развитым интерфейсом, большим количеством форм, русурсов и т.д. — в этом случае стоит подыскать подходящее готовое решение. Собственно, основные цели поиска решения для локализации, которые были мне поставлены — это найти решение, которое позволит:
- проводить локализацию руками не-программистов
- работать с собственными словарями для перевода
- поддержка XE2
ну и, как обычно, решение должно быть удобным в использовании, дешевым, по возможности, простым в освоении и т.д. и т.п. А так как я все равно решил пройтись в своем поиске по всем возможным вариантам (а точнее по максимально возможному количеству вариантов), то решил весь найденный материал систематизировать и оформить вот этим самым постом. Здесь Вы сможете узнать и о существующих компонентах Delphi и о библиотеках и о программах — в общем о всем, чего только душа пожелает. В общем, если Вы тоже задались целью отыскать во всем множестве предложений для локализации то, которое придется по душе именно Вам, то читайте далее
Содержание
- TsiLang components suite
- DKLang Localization Package
- EMS Advanced Localizer
- Korzh Localizer
- GNU gettext for Delphi and C++ Builder toolkit
- i18n Package
- Kryvich’s Delphi Localizer
- JVCL (JEDI Visual Component Library)
- CnPack Component Package (CnVCL)
- TLang для FireMonkey
- Multilizer
- SDL Passolo
- Radialix
- Integrated Translation Environment
- Другие компоненты, библиотеки и программы.
TSILang components suite
- Разработчик: SiComponents
- Официальный сайт: www.tsilang.ru
- Цена: от $259 до $399. Пакет за $259 не содержит исходников (только DCU и OBJ)
- Наличие ознакомительной версии: имеется.
- Дата последнего релиза: 05 мая 2012
- Поддержка Delphi XE2: имеется
Что говорят о своем продукте разработчики:
TsiLang® Components Suite позволяет добавлять поддержку для неограниченного количества языков, а также, создавать полностью локализованные версии продуктов, основанные на базовой версии проекта. Автоматически находятся и заносятся в список для перевода все необходимые элементы интерфейса пользователя, предоставляются удобные способы сохранения и управления переводами, и конечно, переключение языка интерфейса осуществляется «налету» как во время работы приложения, так и в режиме дизайнера, что позволяет тестировать интерфейс даже без компиляции и запуска приложения.
Мой тест.
Для тестирования TsiLang я скачал и установил последнюю версию компонентов (6.5.4.7) и создал простенькое приложение на котором разместил Button, Label, OpenDialog, добавил ресурсные строки и константы. Специально на OnClick кнопки был создан такой «кривой» обработчик:
procedure TForm19.Button1Click(Sender: TObject); begin ShowMessage('Привет, мир!'); end;
Локализация с TsiLang проводится следующим образом:
1. Запускаем TsiLang expert из меню Delphi: Tools ->TsiExpert
Здесь отображаются все формы проекта, а также компоненты TsiLang, расположенные на этих формах. Теперь выбираем в меню File->Languages и редактируем список языков для нашего приложения. По умолчанию все языки имею названия типа Language1, Language2 и т.д. я переименовал их так:
После того как была нажата кнопка «Ok» на главной (и единственной) форме приложения появился компонент TsiLang:
Теперь находим в эксперте кнопку «Save Project» и сохраняем наш проект. В TsiLang используется два типа файлов проекта:
- *.sib — бинарные файл с переводами. Этот тип файла разработчики рекомендуют использовать, т.к. загрузка таких файлов происходит значительно быстрее, чем при использовании второго типа файлов
- *.sil — текстовые файлы. Преимуществом этого типа файлов является то, что мы можем передать этот файл с утилитой «SIL Editor» другому человеку для перевода.
Я сохранил свой проект в файл test.sil.
Теперь, находясь в эксперте дважды щелкаем мышкой по названию формы в списке — откроется окно редактора перевода:
В левой части окна (в дереве) редактора содержатся группы переводимых свойств компонентов и строк и, соответственно, справа — таблица для перевода. TsiLang может локализовать не только свойства компонентов типа Caption, Hint, Text и т.д., но также и строки из диалогов, например, на рисунке ниже представлены все строки для перевода из различных диалоговых окон, которые могут использоваться в приложении:
Начинаем переводить все строки с русского на английский. При переводе каждой строки редактор в отдельном окне показывает нам длину строки оригинала (в пикселях) и длину переведенной строки:
В принципе, назначение этого информационного окошка понятно — можно контролировать ситуации, когда переводимый текст не будет вписываться в границы компонента. Хотя, как по мне, так было бы удобно добавить в это окошко ещё и ширину самого компонента — что б было с чем сравнивать ширины строк.
После того, как все строки переведены снова сохраняем наш проект. Теперь sil-файл должен содержать примерно такой текст:
последовательность символов ~!@#$ — это разделитель, который мы сами можем определить при сохранении файла. В процессе перевода строк в редакторе можно заметить, что TsiLang ни коим образом не учёл, что в pas-файле формы есть и секция resourcestring и const и даже строка текста в обработчике OnClick. Чтобы добавить эти строки к переводу необходимо выбрать в меню эксперта TsiLang:
- File -> Source -> With Form — чтобы выбрать строки из секции implementation модуля,
- File -> Source -> With Form — чтобы выбрать все строковые константы и ресурсные строки
В итоге откроется окно с результатами поиска в котором Вы можете добавить строку в список исключений или заменить её на вызов функции TsiLang:
Жмем в этом окне кнопку «Modify Source» и получаем такое сообщение:
Открываем pas-файл и видим следующую странную картину:
Мне показалось странным то, что TsiLang прекрасно определяет строковые константы в pas-файле и даже изменяет самостоятельно исходник, но почему-то «ленится» сам определить var — ну сделали бы доп.опцию в настройках проекта перевода типа «Определять VAR для констант со строками» и «Изменять настройки компилятора». Но это ладно — окно с сообщением есть и то хлеб. Вот, что мне действительно не понятно, так это откуда TsiLang нашел в моем проекта непонятные иероглифы? Думал, что это может быть по причине того, что pas-файл сохранен в ANSI, но нет — сменил на UTF8, а проблема с иероглифами осталась…В общем странно это.
После того как строки были помещены в перевод можно снова открыть редактор перевода и провести перевод группы Strings (благо в редактор строки попадают без искажений):
После того, как все строки переведены, а sil-файл сохранен, можно организовать переключение языков в своей программе. В TsiLang каждый язык имеет свой идентификатор типа integer. Например, в моем случае идентификаторы были такими:
- Russian = 1
- English = 2
Теперь, чтобы интерфейс моей программки переключился на английский язык достаточно где-нибудь вставить вот такой код:
siLang_Form19.ActiveLanguage:=2
Это приведет к тому, что 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
- Разработчик: DKSoftware
- Официальный сайт: www.dk-soft.org
- Цена: бесплатно
- Дата последнего релиза: 25.12.2008
- Поддержка Delphi XE2: нет
Про это решение для локализации я не могу сказать ничего кроме того, что оно просто есть, т.к. даже не стал загружать архив, не смотря на то, что компоненты бесплатны.
Во-первых, настораживает дата последнего релиза — 2008 год — не факт, что компоненты заработают в XE2 без проблем.
Во-вторых пакет требует дополнительной установки компонентов Tnt Unicode Controls 2.3.0, которые в 2012 году уже как бы и лишние — юникод и так поддерживается.
Поэтому, если у Вас есть, что сказать по этому решению — хорошего или плохого — отпишите в комментах, а я добавлю отзывы в обзор.
UPDATE: Отзыв про DKLang Localization Package. Кратко и понятно.
UPDATE 2: работоспособность DKLang в XE2
EMS Advanced Localizer
- Разработчик: EMS
- Официальный сайт: www.sqlmanager.net
- Цена: 2 900,00 руб.
- Наличие ознакомительной версии: имеется
- Дата последнего релиза: 13 января 2012
- Поддержка Delphi XE2: имеется
Что говорят о своем продукте разработчики:
Advanced Localizer™ — это незаменимый пакет компонентов для Borland® Delphi®, позволяющий добавлять языковую поддержку Вашим Delphi® приложениям. Широкие возможности пакета Advanced Localizer позволяют быстро и просто локализовать свойства компонентов каждой формы, создавать языковые файлы с текущими значениями свойств компонентов, управлять файлами локализаций, а также назначать компоненты и их свойства, подлежащие локализации. Язык приложений, использующих Advanced Localizer, может быть переключен на другой непосредственно во время работы без последующего перезапуска приложения. Advanced Localizer также предусматривает возможность написания приложений-потомков, использующих языковые файлы, заданные пользователем.
Так как «незаменимых» у нас нет, то я провел свой небольшой тест этих компонентов все на том же маленьком приложении в 1 форму.
Мой тест
Скачал и установил пакет компонентов в Delphi XE2, открыл проект. В палитре компонентов Delphi появилась новая вкладка — EMS Advanced Localizer. С этой вкладки бросам на форму компоненты:
- TQLanguageSource
- TQFormLocalizer
У TQFormLocalizer в свойстве Source указываем TQLanguageSource и приступаем к работе.
Первым делом создаем файлы для локализованных строк — делаем два пустых файлика с расширениями *.lng (расширение по умолчанию для EMS Localizer) и называем их просто — rus и eng.
Можно и не создавать эти файлы — они создадутся автоматически при переводе
Теперь дважды щелкаем мышкой по компоненту TQLanguageSource для вызова менеджера языковых файлов:
Жмем единственную активную кнопку и добавляем файлы:
Теперь, по идее разработчиков, в списке менеджера должна появиться новая запись…однако её нет. Вот значения, которые содержатся в свойстве Languages компонента:
Однако список визуального редактора девственно чист. Ну да Бог с ним со списком — пробуем перевести наше приложение. Дважды щелкаем по второму компоненту (TQFormLocalizer) для вызова редактора перевода:
В редакторе мы можем помимо перевода строк также добавить новый языковой файл, отредактировать имеющийся язык или выбрать язык, используемый по умолчанию. Как можно видеть на рисунке — в редактор попадают только строки, содержащиеся в свойствах компонентов, а ресурсные строки и константы остаются незамеченными, что можно записать в недостатки этих компонентов.
После перевода всех строк можно добавить в программу опцию для переключения языка интерфейса. Делается это примерно также как и в TsiLang — указанием индекса активного языка:
QLanguageSource1.ActiveLanguage:=1;
При этом, если используется язык по-умолчанию (отмечен как «Original»), то у него индекс равен -1, а у остальных — начинается с нуля и наращивается по порядку в списке Languages.
Другие возможности EMS Advanced Localizer:
- Загрузка переводов из базы данных
Подведем итог.
Достоинства:
- Компоненты просты в использовании — на то, чтобы разобраться что и как работает ушло от силы минут 5.
- Достаточно дешевые
- Есть возможность хранить переводы в БД
Недостатки:
- Нет поддержки словарей и, соответственно, авто-переводов
- Проблемы в простеньком менеджере языков
- Не поддерживается перевод констант и ресурсных строк
- Нет инструментов для сторонних переводчиков
В целом мое мнение по поводу EMS Advanced Localizer — достаточно удобные компоненты для работы с небольшими проектами, но для более менее крупных проектов где требуется поддержка многих языков, работа нескольких человек над переводом и т.д. этот набор компонентов, к сожалению, слабоват.
Korzh Localizer
- Разработчик: KORZH developers tools
- Официальный сайт: devtools.korzh.com
- Цена: от 149.0 EUR до 649.0 EUR
- Наличие ознакомительной версии: имеется
- Дата последнего релиза: 23 июля 2012
- Поддержка Delphi XE2: имеется.
Что говорят о своем продукте разработчики:
Один 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’а:
uses {....}, LocOnFly, {Form18}; {$R Project16.KLR} {$R *.res} begin LocalizerOnFly.InitReg; {...} end.
Также, сразу же после информационного сообщения о том, что мой проект локализован запустился Language Manager:
В диалоге выбора нового языка для локализации есть замечательная опция — «Try to automatically translate via Google». Однако опция эта в настоящий момент не работает:
Связано это не стем, что разработчики там чего-то не так сделали. Причина кроется в том, что Google перевел API Translate на коммерческие рельсы и, если не ошибаюсь, сделали доступ только по OAuth 2.0. Так, что, видимо в следующих редакциях Korzh Localizer’а эта опция пропадет либо будет использоваться для более доступных API, например, для Bing Translator API.
После добавления языка для локализации в Language Managere появляется таблица для перевода найденных в проекте строк. Помимо того, что непосредственно находится в проекте, Korzh Localizer также позволяет локализовать и строки, содержащиеся в других модулях Delphi:
После перевода Localizer может показать вам статистику — сколько строк переведено, процент перевода и т.д., однако и тут обнаружилась ошибка при переключении на вкладку «External Items»:
Мелочь, конечно, но не приятная. Далее мне необходимо было проверить то, как Korzh Localizer умеет вытаскивать из исходников жестко закодированные строки. Для этого в главном меню была выбрана опция:
Помощник (назовем его так) предлагает выбрать модули для сканирования на наличие строк, а также, предлагает два варианта хранения строк — в ресурсном файле или в pas-файле:
Я оставил все настройки по умолчанию. В модуле было три строки — одна в секции resourcestring, вторая — в const и третья — в обработчике OnClick кнопки. В итоге Korzh Localizer определил следующее:
После нажатия «Next» IDE выдала сообщение:
После нажатия «Yes» в uses был добавлен новый модуль, содержащий секцию resourcestring в которой находилась одна найденная строка. Также изменился и обработчик OnClick кнопки, который стал выглядеть так:
procedure TForm19.Button1Click(Sender: TObject); begin ShowMessage(SIgeaaoIeg); end;
В Language Manager’е строка не появилась — может предполагается, что такие строки переведутся и без менеджера, а может они как-то хитро добавляются в менеджер — с этим я не разбирался детально. Мне осталось только проверить как происходит локализация. Для того, чтобы проект «заговорил» на другом языке достаточно было выбрать в главном меню необходимый язык:
После чего IDE снова сообщила, что файл был изменен и попросила его перезагрузить. Перезагрузил, собрал проект и получил приложение на английском языке:
Другие возможности Korzh Localizer:
- Создание/импорт/экспорт репозиториев. Импорт и экспорт осуществляется в XML или TMX-форматах.
- Поддерживает несколько языков для локализации — на каждый язык создается отдельный файл
- Умеет работать с EXE- и DLL-файлами.
Достоинства:
- Не требует наличия на форме каких-либо компонентов — все, что необходимо Korzh Localizer сам подключает в dpr.
- Есть инструмент для переводчиков
- Есть возможность создавать/импортировать/экспортировать репозитории
Недостатки:
- Пока работал с инструментов обнаружил разного рода недочёты типа ошибок (см. скрины выше), недочёты в интерфейсе, наличие неработающих опций (в то время как Google уже давным давно закрыл доступ к API, а релиз локализера был относительно недавно). Все это создает ощущение, какой-то заброшенности проекта.
- Ресурсные строки не попадают в Language Manager или как-то так хитро, что сразу и не сообразишь куда надо нажать или что куда добавить.
В целом я бы пока оставил Korzh Localizer как запасной вариант на случай, если не найдется ничего более подходящего. Помимо описанных выше недостатков, одной из причин такого вывода послужило время, которое потребовалось, чтобы освоиться в работе с инструментом — из всех выше рассмотренных инструментов Korzh Localizer отнял больше всего времени.
GNU gettext for Delphi and C++ Builder toolkit
- Разработчик: dxgettext.po.dk
- Официальный сайт: dxgettext.po.dk
- Цена: бесплатно
- Дата последнего релиза: неизвестно
- Поддержка Delphi XE2: нет
Несмотря на то, что поддержки Delphi XE2 нет, я все-таки решил скачать и попробовать в работе эту библиотеку. К сожалению после подключения dxgettext.pas к проекту посыпались ошибки — где-то вместо ansiString указали string, использовали методы, помеченные как depricated, использовали неверные параметры методов (может в Delphi 2009 такой код компилировался, но в XE2 — нет). В общем много чего повылазило… А жаль. В Lazarus я использовал эту библиотеку пару раз и, надо сказать, она мне понравилась. Конечно, для уже существующих проектов внедрять в работу DXGetText будет довольно проблемно, но для новых — вполне сносная и удобная библиотека. Есть несколько утилит для переводчиков, память переводов и т.д. В общем, если задумаете начинать проект на Delphi версии до 2009 и потребуется бибилотека для локализации и интернационализации проекта — попробуйте DXGetText.
i18n Package
- Разработчик: Kambiz R. Khojasteh
- Официальный сайт: www.delphiarea.com
- Цена: бесплатно
- Дата последнего релиза: 19 августа 2012
- Поддержка Delphi XE2: нет (согласно информации на оф.сайте)
i18n Package v1.10 for Delphi представляет из себя целую библиотеку компонентов, предназначенных для локализации и интернационализации проектов. Несмотря на то, что официально поддержка Delphi XE2 не заявлена эта библиотека без проблем установилась в Delphi XE2, поэтому я решил немного её протестировать.
В пакет входят свыше 30 различных компонентов, поддерживающих локализацию, однако меня, как Вы понимаете, интересует другой момент — можно ли эту библиотеку использовать для локализации уже имеющегося проекта с кучей форм, диалогов, ресурсных строк и т.д.
Итак, работа по локализации с помощью i18n Package происходит следующим образом:
- Бросаем на главную форму компонент TLocalizer
- На все остальные формы (включая и главную) бросаем компонент для перевода — TTranslator
- Для локализации диалогов также необходимо уложить на главную форму форму компонент TMessageBox и указать в нем необходимые заголовки, иконки и т.д.
Теперь надо создать файл с переводами строк. Для этого дважды кликаем мышкой по компоненту TTranslator — откроется редактор в котором необходимо выбрать свойства и строки, которые мы будем переводить:
Если необходимо сделать интернационализацию проекта — не трогайте ничего в поле «Property Value», т.к. добавление новых языков и перевод строк осуществляется в отдельной утилите
После того, как необходимые элементы выбраны преходим на вкладку Export, указываем язык на котором наши строки написаны (т.е. Русский) и экспортируем строки в файл *.i18n:
Файл создан — можно приступать к переводам. В папке Bin библиотеки находится специальная утилита под названием i18n Editor, которая и предназначена для переводов.
Программка довольно простая в использовании и, думаю, Вы с ней очень быстро освоитесь. Скажу только, что i18n Editor способен «обучаться» — для этого программе необходимо указать папку в которой лежат уже готовые файлы *.i18n и программа автоматически их просканирует и вытащит из них новые для себя фразы.
После того, как все необходимые строки переведены возвращаемся в Delphi и указываем в свойстве URI компонента TLocalizer наш файл с локализациями. Теперь добавляем на форму компонент TCultureBox и в его свойстве Localizaer указываем Localiwer1 (если компонент не переименовывался).
Теперь можно запустить программку и убедиться, что перевод интерфейса происходит успешно:
Достоинства:
- Очень простая в использовании библиотека
- Для своей цены — $0.0 достаточно качественная (в Delphi XE2 работает отлично)
Недостатки:
- Парсер не обнаруживает resourcestring и строковые константы, а обнаруженные и переведенные строки из кода программы все равно не локализуются.
- Для каждой формы/модуля необходимо использовать свой TTranslator, что не совсем удобно. Логичнее было бы сделать небольшой сканер всего проекта на наличие строк как это сделано, например, у DXGetText
Общий вывод по библиотеке можно сделать следующий — для соотношения «цена/качество» замечательная библиотека, позволяющая практически без проблем сделать мультиязыковую поддержку в небольших проектах. Немного портит впечатление работа бибилотеки со строками не из свойств компонентов, думаю, что если проект живет (а судя по релизу — проект вполне себе живой), то эта досадная проблема решится.
Kryvich’s Delphi Localizer
- Разработчик: Kryvich
- Официальный сайт: sites.google.com/site/kryvich/localizer
- Цена: бесплатно
- Дата последнего релиза: 7 января 2012
- Поддержка Delphi XE2: имеется
Ещё одна бесплатная библиотека для локализации и интернационализации приложений Delphi. По заявлению авторов проекта, с этой библиотекой локализация наших приложений должна пройти без каких либо проблем. Проверим, так ли это на самом деле.
Первым делом нам необходимо изменить опции проекта. Заходим в IDE: Project->Options->Linking и устанавливаем Map File = detalied
Теперь собираем проект и получаем три файла — *.exe, *.drc и *.map. Теперь запускаем консольную утилиту kdlscan.exe, которая находится в папке с библиотекой. Утилита запускается с параметром:
kdlscan [project.exe]
где [project.exe] — имя нашего exe-файла.
Сканер проходит по проекту и вытаскивает ресурсные строки и строки из свойств компонентов и укладывает их в файл с расширением *.lng. Этот файл — обычный ini-файлик, поэтому смело его открываем любым редактором и переводим все строки как нам необходимо.
После перевода сохраняем полученный файл, например, с названием english.lng.
Теперь приступаем к работе над проектом. Для поддержки локализации добавляем в uses главной форму модуль uFreeLocalizer.pas, также бросаем в папку с проектом модуль uStringUtils.pas и в любом удобном месте программы пишем:
FreeLocalizer.AutoTranslate:=True; FreeLocalizer.LanguageDir:=ExtractFilePath(Application.ExeName); FreeLocalizer.LanguageFile:='english.lng';
Первые две строки можно записать в dpr-файле и там же подключить модуль локализатора. Все. Можно запустить программу и проверить работу.
Достоинства:
- Очень простая в использовании библиотека
- Компактная
Недостатки:
- Нет словарей
- Сканер не определяет жестко закодированные строки и константы
В целом библиотека вполне подойдет для проектов с небольшим количеством строк для локализации. Всё-таки работа через ini-файл даст о себе знать при большом объеме данных.
JVCL (JEDI Visual Component Library)
- Разработчик: JEDI Project
- Официальный сайт: jvcl.delphi-jedi.org
- Цена: бесплатно
- Дата последнего релиза: 11 апреля 2011
- Поддержка Delphi XE2: имеется
Кто не знает проект JEDI? Эту гигантскую библиотеку знают, наверное, все, кто хоть чуть-чуть работал в Delphi. В состав этой библиотеки входит компонент TjvTranslator, который позволяет локализовывать приложения Delphi. Судя по отзывам на различных форумах и в блогах, компонет довольно удобный и пользуется популярностью, но ставить весь набор JCL+JVCL ради того, чтобы взглянуть на работу одного чудо-компонента мне как-то не улыбнулось. Поэтому достоинства и недостатки искать Вам придётся самостоятельно. А я перейду к другим компонентам.
CnPack Component Package (CnVCL)
- Разработчик: CnPack
- Официальный сайт: www.cnpack.org
- Цена: бесплатно
- Дата последнего релиза: 5 ноябра 2011
- Поддержка Delphi XE2: имеется
Ещё один достаточно разработчик, получивший заслуженную популярность своим продуктом под названием cnWizards, предоставил нам набор компонентов для локализации приложений. Эти компоненты входят в состав отдельного пакета — cnVCL и распространяются бесплатно.
Сразу отмечу, что на текущий момент последняя доступная для скачивания версия компонентов помечена как Alpha, поэтому ждать от этого набора компонентов безупречной работы не приходится. Но, тем не менее, небольшой обзор компонентов локализации я зделаю.
Итак, после установки пакета cnVCL в палитре компонентов появляется сразу несколько новых вкладок:
на влкадке cnMultiLang расположены 4 компонента для локализации. Три из них: TCnLangManager, TCnLangTranslator и TChHashLangFileStorage или TChIniLangFileStorage должны быть размещены в приложении.
Надо сказать, что Alpha-версия дает о себе знать. Чтобы по-быстрее разобраться с работой этих компонентов я решил запустить небольшую демку, которая идет в комплекте с исходниками компонентов…она, конечно, открылась в Delphi XE2, но что-то уж как-то совсем странно:
Ну да это, в принципе, терпимо — исходник-то, вроде бы не сильно «покорежин» и разобраться с тем, что и как работает более-менее удалось. Суть работы такова:
1. Бросаем на форму приложения три вышеобозначенных компонента (я выбрал TCnLangManager, TCnLangTranslator и TChIniLangFileStorage)
2. Теперь выбираем TChIniLangFileStorage и добавляем в коллекцию Languages новые языки. Выглядеть это должно примерно так:
3. У TCnLangManager в свойстве LanguageStorage указываем наш компонент CnIniLangFileStorage1
4. Делаем двойной клик по TCnLangTranslator — откроется редактор для перевода строк:
5. Выбираем в дереве необходимый язык и жмем «Gen All» — должна собраться таблица со строками для перевода. У меня она оказалась вот такой:
6. Переводим необходимые строки, ненужные строки — удаляем, сохраняем полученную таблицу в файл. Получаем в итоге ini-файл, который надо бросить рядом с exe-файлом нашего проекта.
7. Пишем в любом удобном месте программы одну строку:
CnLangManager1.CurrentLanguageIndex:=0;
В итоге это действие приведет к тому, что программа будет «переведена» на язык, который в LangugeStorage имеет индекс 0, т.е. в моем случае — на английский язык. Скрин приводить не буду, просто скажу, что компонент сработал.
Что можно сказать по поводу достоинств и недостатков этих компонентов? Думаю, что пока какие-либо выводы делать не стоит — всё-таки Alpha-версия и тут неизбежны всякого рода баги, странности поведения и т.д. и т.п. Если работа над компонентами продолжится, то скорее всего мы должны получить в свое распоряжение простенькие и легкие в использовании компоненты для локализации и интернационализации проектов. Пока же использовать эти компоненты в серьезных приложениях очень и очень рано.
TLang для FireMonkey
- Разработчик: Embarcadero
- Официальный сайт: embarcadero.com
- Цена: входит в стоимость Delphi
- Дата последнего релиза: 03 сентября 2012
- Поддержка Delphi XE2: имеется
Про этот компонент и работу с ним я рассказывать подробно не буду, т.к. в блоге уже есть статья, касающаяся работы именно с TLang в FireMonkey. Статья называется «Локализация приложений Firemonkey. Компонент TLang» — в ней же Вы найдете достоинства и недостатки этого компонента. В Delphi XE3 работу компонента не проверял.
Multilizer
- Разработчик: Finnish technology company
- Официальный сайт: www2.multilizer.com
- Цена: 299 — 2900 EUR
- Дата последнего релиза: неизвестно
- Поддержка Delphi XE2: имеется
Несмотря на довольно не маленькую цену продукта я все же решил посмотреть, что из себя представляет данных продукт. Multilizer — это специализированный продукт, позволяющий локализовать различные типы приложений, файлов, dll и т.д. Также в комплект поставки входит набор компонентов для Delphi 5 — XE2. Компоненты я устанавливать не стал, а вот само приложение Multilizer решил испробовать на своем приложении.
Все начинается с тог, что мы создаем новый проект для локализации:
Выбираем первый вариант. Следующий шаг — выбор парсера:
На третьем шаге Multilizer просит нас указать ему файл для парсинга (указал exe), проводит парсинг и выводит результат сканирования:
Следующий шаг — это определение нативного языка приложения и добавление новых языков для локализации:
Multilizer позволяет также определять язык автоматически, но при этом почему-то просит логин и пароль к аккаунту Google 0_O (хоть не ключи от квартиры где деньги лежат). Эту функцию программы я проверять не стал.
После того, как проект создан, открывается окно редактора переводов, которые выглядит вот так:
Надо отметить, что редактор этот довольно навороченный и в течение 5-10 минут разобраться с ним будет сложно (скорее даже — невозможно), поэтому отмечу только то, что мне запомнилось. Например, визульный редактор, с помощью которого можно посмотреть как будет выглядеть переведенная программа:
Также довольно удобно организована работа над самим переводом — можно использовать память переводов, сразу же на виду вся статистика перевода. Также удобно «на лету» смотреть как выглядит переведенная программа — для этого в Multilizer есть опция «Run Translated» (запускается знакомой нам клавишей F9). В общем впечатления от работы с программой остались положительные. Подведу небольшой итог.
Достоинства:
- Удобный и понятный интерфейс (с основами работы разобрался быстро, дальше просто не полез)
- Есть память переводов
- Проекты можно группировать и автоматически переводить более новые версии программы, основываясь на переводах предыдущих версий
- Удобный визуальный редактор с возможностью просмотра форм приложения без запуска exe
- Просмотр переведенного exe «на лету»
- Есть возможность работы с Google Translator Toolkit (работу не проверял — просто видел, что есть такая опция)
Недостатки:
- Недостаток один, но, критичный — цена. 2900 европейских рублей за программу, пусть и такую замечательную — это, по-моему, слишком дорого. Тем более, что есть и более экономичные аналоги.
SDL Passolo
- Разработчик: SDL
- Официальный сайт: www.sdl.com
- Цена: 1840 EUR
- Дата последнего релиза: неизвестно
SDL Passolo — это ещё один комбайн, наподобие Multilizer, предназначенный для перевода строковых ресурсов различных файлов — от XML до OCX, EXE, DLL и т.д. В сравнении с тем же Multilizer’ом этот инструмент выглядит скромновато, хотя и может быть использован для локализации приложений.
Проверим работу этого инструмента на все том же многострадальном тестовом приложении.
Как обычно, начинаем с создания нового проекта. Для этого запускаем Passolo и выбираем в меню слева «New Project»
При добавлении источника (exe-файла) появляется новый диалог в котором необходимо задать настройки парсера (их у Passolo несколько), язык программы, кодовую страницу и т.д.:
После создания нового проекта Passolo создает необходимые записи, объекты и можно приступать к переводу:
В списке дважды кликаем мышкой по записи, содержащий проект локализации (Target). В моем случае — это запись для английского языка. Откроется новая вкладка, содержащая строки для перевода:
Переводим строки и собираем снова проект. Для сборки проекта возвращаемся на вкладку Project, выбираем строку с целевой локализацией, вызываем контекстное меню и выбираем там пункт «Generate Targer File»:
В итоге рядом с первоначальным Exe-файлов появится ещё один с приставкой eng (ну или другой, в зависимости от языка перевода). Вот в двух словах процесс перевода с использованием SDL Passolo.
Другие возможности SDL Passolo:
- Поддерживает глоссарии перевода.
- Поддерживает несколько языков для локализации
- Авто-перевод на основе базы данных по переводам
Достоинства:
- Простой в использовании
- Можно подключать различные аддоны, расширяя тем самым функциональность программы
- Есть проверка орфографии
Недостатки:
- т.к. программа практически универсальная и работает с уже собранными проектами, то соответственно, парсеры Passolo никак не реагируют на жестко закодированные строки, константы и т.д.
Общий вывод по работе с программой у меня такой — удобная программа для быстрой локализации проекта, когда требуется в кратчайшие сроки перевести GUI на другой язык.
Radialix
- Разработчик: Алексей Головин
- Официальный сайт: www.radialix.ru
- Цена: от 500 руб.
- Дата последнего релиза: неизвестно
Чем подкупает Radialix, так это широкой поддержкой всевозможных файлов для локализации. Здесь есть поддержка и практически всех рассмотренных выше решений и работа с пакетами для Android и ещё куча всяких форматов о некоторых из которых я даже и не слышал. Демо-версия Radialix также достаточно демократична — все функции доступны, но при сборке локализованного файла к некоторым строкам добавляются произвольные символы, но имхо, при цене в 500р. — это мелочь.
Итак, что представляет из себя Radialix. Radialix при запуске встречает нас русским интерфейсом и предлагает создать или открыть проект локализации:
Создаем новый проект. После добавления в список файла для локализации (я выбрал снова exe) появляется окно с набором опций проекта:
В Radialix есть возможность «выдирать» жестко закодированные строки, для настройки которой предусмотрена целая вкладка опций:
Я создал проект со следующими настройками:
В итоге Radialix создал мне проект со следующим содержимым:
Также в Radialix есть удобный просмотрщик форм приложенияв котором можно также и отредактировать положения и размер элементов:
Про перевод, думаю, говорить особого смысла нет — в Radialix перевод и сборка проекта осуществляется аналогично SDL Passolo и Multilizer о которых я уже говорил выше. Остается только добавить пару моментов по дополнительным возможностям и выделить достоинства и недостатки.
Дополнительные возможности:
- Память переводов и авто-перевод
- Проверка орфографии
- Поддерживает локализацию PE32, PE32+ файлов и файлов ресурсов RES, сборок и файлов ресурсов .NET Framework 1.0..4.0, .NET Compact Framework 1.0..3.5, ресурсов WPF BAML, строк и ресурсов в коде приложения, текстовых файлов (ini, lng, csv, tab, isl, glo, php и др.), XML файлов (XML, WXL, …), PO и MO файлов (библиотека Gettext), TS и QM файлов (библиотека QT), SIL и SIB файлов (библиотека TsiLang), dklang и lng файлов(библиотека DKLang), lng файлов Korzh Localizer.
- В качестве памяти переводов можно использовать файлы GLO, QPH, LG3, DIC, DIX и DAT.
Достоинства:
- Удобный, простой и понятный интерфейс
- Подробнейшее руководство на русском языке (более 300 страниц текста)
- Поддерживает работу с жестко закодированными строками
- Есть память переводов
Недостатки:
- У меня в проекте не обнаружились все жестко закодированные строки. Очень вероятно, что это произошло по причине отсутствия плагина RDMAP.
Общий вывод после знакомства с Radialix у меня сложился следующий — отличная программа для локализации приложений. При цене в 500 р. за одну лицензию Radialix имеет функциональность на ровне с тем же Passolo.
Integrated Translation Environment
- Разработчик: Embarcadero
- Официальный сайт: www.embarcadero.com
- Цена: входит в состав Delphi
- Дата последнего релиза: неизвестно
Этот инструмент находится последним в списке описания решений, но не на последнем месте у разработчиков. Как и в случае с TLang для FireMonkey я не буду рассказывать про этот инструмент подробно, т.к. это уже сделал Александр Алексеев в статье «Локализация проектов Delphi — родной способ (ITE — Integrated Translation Environment)«. Читать статью советую вместе с комментариями, чтобы получилась более менее полная картина относительно ITE.
Другие компоненты, библиотеки и программы
Кроме перечисленных выше библиотек и компонентов для локализации интернационализации ваших Delphi-проектов в Сети есть ещё достаточно много больших и маленьких компонентов для решения этой задачи. Я просто приведу список с перечнем компонентов и ссылками на официальные сайты — вполне возможно, что среди этих решение найдется именно то, которое окажется для Вас наиболее удобным по цене и качеству.
Название | Разработчик | Цена | |
1 | DC Form Translator и DC Form Flipper | Dynamic Components | $249/$149 |
2 | ICU4PAS | crossgl.com | бесплатно |
3 | IniLang2 | IniLang2 | бесплатно |
4 | JKCaptionReader v.1.0 | Torry’s Delphi | бесплатно |
5 | LangMan v.1.2.0 | REGULACE.ORG | бесплатно |
6 | Precision Language Suite | Precision software & consulting | от 36 до 610 EUR |
7 | DeLoc | deloc.narod.ru | бесплатно |
8 | Sisulizer | www.sisulizer.com | 359/899 EUR |
9 | Lingobit localizer | www.lingobit.com | $695/$1950 |
Часть этих компонентов живет и развивается, часть — находится в полумёртвом состоянии, но, вполне возможно, что заработает под XE2. Вот такой у меня получился список решений. Сюда можно было бы добавить ещё ряд компонентов/программ, но, думаю, и из этого списка можно будет выбрать что-нибудь стоящее. Что касается лично моего мнения, то проведя этот обзор я бы склонился к следующим вариантам:
- Для интернационализации программы я бы выбрал TsiLang — достаточно мощные компоненты. Хоть они и не без греха, но работать с ними вполне можно.
- Для локализации готовых программ — Radialix.
Ну, а чем бы Вы воспользовались (или уже пользуетесь) я бы хотел прочитать в комментариях :).
уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.
- Печать
Страницы: 1 2 [3] 4 5 6 7 8 … 19
Тема: SDL Passolo (Прочитано 209464 раз)
Записан
Подскажите как избавиться от символов в переводе типа[LR]
Записан
1965
Значит, начал я перевод-сохранил-сохранилось в виде файла, открывающегося только Passolo-я не пойму как создать патч или что там еще можно, чтоб изменить файлы в папке, но я даже сам их не могу посмотреть, т.к весь перевод ввиде одного Passolo-го файла.
Подскажите, как все это к Конечному результату подогнать.
Я что-то совсем не могу понять…
Записан
Всему свое время и каждому свой час!
Хочешь жить — умей вертеться!
Wu-Tang
Краткое описание
1. Загружаем Passolo.
2. В появившемся окне «Welcome» выбираем «Create new project» — OK.
3. В диалоге «Project Setup» заполняем поля «Name» — название файла проекта, «Location» — расположение файла проекта.
Желательно предварительно создать отдельную папку и скопировать туда переводимые файла, туда же можно сохранить файл проекта.
4. Если переводимые файлы находятся в сложной структуре вложенных папок можно создать правила конечных файлов. Жмем «Target Rullers» и определяем правила. Если же все переводимые файлы расположены в одной папке программы, можно использовать правила по умолчанию.
5. Жмем кнопку «Add sourse» и выбираем файлы которые будут добавлены в проект для перевода.
6. Жмем «Add language» и выбираем язык перевода, в данном случае скорее всего русский.
Все настройка проекта готова, жмем OK
7. Дважды нажав на файл с русским языком, создаем списки перевода. Поочередно переводим файлы. Думаю как это делать объяснять ненадо.
8. Для создания конечного(ых) локализованного(ых) файла(ов) после окончания перевода, используем команду меню «String list -> Generate Target File».
Переведные файл сохраняются в папку указанную в свойствах файлов. Которую также можно узнать в списке Folders слева от списка файлов.
Вуаля! Переведенные файлы готовы для создания патча. Который можно создать например в PatchWise.
Записан
NedMaker
Вообщем почти разобрался.
Вот только при конечной локализации проекта-она помещает переведенные файлы, добавляя к имени «rus» — выходит надо будет переименовывать на оригинальное имя потом самостоятельно.
И еще выдает какую-то ошибку при локализации файлов.
Может кто переводил dBpowerAMP-я его перевожу…
Записан
Всему свое время и каждому свой час!
Хочешь жить — умей вертеться!
Wu-Tang
Когда перевод проги полностью закончен, посредством PatchWise Free создаётся пакет обновления (русификатор) для соответствующей проги.
Вот ты создал, русскую версию программы…
Теперь убери куданить все лишние файлы, то есть файлы посоло…
Если прога на делфи, то вся твоя русификация в файле *.rus, его надо
оставить… В остальных случаях Поссоло создаёт русский исполняемый
файл типа имя_файлаrus.exe или имя_файлаrus.dll, в зависимости чё ты
переводил… Родную эксешку убираешь из папки, а имя_файлаrus.exe
переименовываешь имя_файла.exe, то есть подменяешь оригинальный файл
на переведённый…
Теперь у тебя папка с полностью русской программой. Копируешь её куда
нить, а програму деинсталируешь(с полным удалением папки), и
устанавливаешь оригинальную програму снова…
Теперь у тебя две папки с программами, русская и оригинальная…
Запускаешь PatchWise Free, выбераешь -Создать новый проект-
Запускается мастер, читай его внимательно…
Далее…
Сначала мастер попросит ввести название проги, цель
проекта(русификация), и тд.
Далее…
Своё имя, мыло, сайт…
Далее…
Теперь будь внимателен. Окно Папка с оригинальными (старыми) файлами.
Это папка куда ты инсталировал приложение
Базовая папка назночение, этот путь будет отображатся в патче по
умолчанию, Ставь C:Program FilesНазвание программы
Далее…
Папка с изменёнными новыми файлами — укажи на папку с твоей русской
программой.
Далее…
Укажи путь к главному исполняемому файлу (имя_файла.exe).
Далее…
Укажи где создать новый патч(я выбираю рабочий стол) и его имя(назови его как-то)
Далее…
Напиши или импортируй текст лицензионного соглашения, информацию пользователя, и редми…
Далее…
Настройка интерфейса патча. Я думую тут всё ясно (для начала оставляй всё как есть…)
Далее..
Если хочишь чтобы после работы патча, запустился какой нибудь файл(например кейген , заранее положенный в русскую папку), напиши здесь так: .кейген.ехе
Далее…
Сними галочку -Создать патч после работы мастера- и жмёшь Завершить.
Почти всё, проект ты настроил, ещё один момент
Установи «Меньшая скорость», дело в том, что для Интернета (а ведь ты
будешь выкладывать туда свою работу) крайне важно создать, как
можно меньший по размеру файл…
Жмешь -Создать исполняемый (ЕХЕ) файл-патч-, и идёшь курить, через
несколько минут, взависимости от изменений, патч будет готов…
Записан
Schadel
Спасибо за советы.
Вчера просидел всю ночь- чуть со злости компьютер не разбил.
Дело в том, что я не знаю какую лучше папку назначения выбирать-я выбрал отдельную потом заменил этим файлом оригинал и прога начала глючить и еще некоторые слова, которые я переводил оказались не переведенными-бред какой-то.
Если конечная отличается от источника, то она открвывает не все файлы, а если та же. то открывает-парадокс!
Еще: где бы советоваться насчет некоторых слов, которые сложно перевести.
Буду дальше мучаться…
Записан
Всему свое время и каждому свой час!
Хочешь жить — умей вертеться!
Записан
The Wheel of Time turns, and Ages come and pass, leaving memories that become legend. Legend fades to myth, and even myth is long forgotten when the Age that gave it birth comes again… There are neither beginnings nor endings to the turning of the Wheel of Time. But it was a beginning. R. Jordan
1.Допустим надо перевести &CopytCtrl+C
В словаре есть &Copy &Копировать
Короче как считать за мусор tCtrl+C
2.Почему перестал работать psl_u.exe.manifest ?
Записан
Подскажите почему после перевода строк не создается русский файл,он почемуто английский и в некоторых прогах открывает только 5-6 строк.
Записан
1965
Подскажите почему она не хочет открывать прогу Windowpaper XP.
Пишет что мол ресурс пустой!
Странно!
Записан
Всему свое время и каждому свой час!
Хочешь жить — умей вертеться!
Подскажите почему после перевода строк не создается русский файл,он почемуто английский и в некоторых прогах открывает только 5-6 строк.
Подскажите почему она не хочет открывать прогу Windowpaper XP.
Пишет что мол ресурс пустой!
Странно!
Мдя… Вполне однозначный ответ на эти вопросы лучше дать в другой теме
А пробовали ли вы открывать свои программы в других редакторах?
Записан
Kindly прав !!!
Попробуйте сначала открыть прогу ну скажем Restoratorом , а если ресурсы не открываются , то смотри посредством PEiDа чем запакован а прога
Записан
Записан
Всему свое время и каждому свой час!
Хочешь жить — умей вертеться!
Wu-Tang
Ресурс действительно пустой! Файл wpxp.exe.manifest не является файлом ресурсов и он не переводится. Файл wpxp не имеет строк для перевода, а те строки которые находятся в нём вне ресурсов, переводить не следует. Программа навряд ли будет работать после того как их перевести. Ищи другие файлы в этой программе, где содержаться ресурсы. Это могут быть файлы с расширением txt, DAT,ini,lang и др.
Записан
- Печать
Страницы: 1 2 [3] 4 5 6 7 8 … 19
Ошибка скачивания исправлена
Sep 15, 2022
Исправлена ошибка скачивания в Chromium-based браузерах.
Комментарии
Нашему сайту 20 лет!
Mar 30, 2021
Сегодня нашему сайту исполнилось 20 лет. Поздравляю всех! Спасибо всем, Друзья, оставайтесь с нами!
Комментарии
Обновление форума
Jan 21, 2018
У нас обновился форум! Мы переехали на новый движок и снова открыли регистрацию. Добро пожаловать!
Комментарии
HTTPS-версия сайта
Aug 1, 2014
К сайту прикручен TLS. «Параноики» и дальновидные — welcome!
https://msilab.net/
Комментарии
Нашему сайту 12 лет!
Mar 30, 2013
Сегодня нашему сайту исполнилось 12 лет. Чуть не пропустили. Оставайтесь с нами, Друзья!
Комментарии
Переезд и миграция
Feb 3, 2013
Мы переехали на новый сервер и мигрировали с MySQL на MariaDB. В целом, по грубым расчетам, время генерации страничек сократилось примерно в 1,5 раза. Оставайтесь с нами, Друзья!
Комментарии
Wiki-справочник
Oct 28, 2012
У нас открылся Wiki-справочник, любой желающий может принять участие в его наполнении. Присоединяйтесь, коллеги!
Комментарии
Вынужденный переезд
May 27, 2012
В связи с приближающимся переносом серверов из одного дата-центра в другой, для того, чтобы избежать суточного простоя, было принято решение переехать на новый сервер. Вчера был прозрачно выполнен перенос всех сервисов, при этом перерывов в работе удалось избежать. Оставайтесь с нами, Друзья!
Комментарии
Нашему сайту 11 лет!
Mar 30, 2012
Сегодня исполнилось 11 лет как проект появился в сети. Поздравляю всех! Спасибо всем, Друзья, оставайтесь с нами!
Комментарии
514 словарей
Mar 7, 2012
У нас большое пополнение в разделе ‘Глоссарии’, выложено 514 словарей от Юрия Шебалина. Авторы, делитесь своими наработками. Спасибо всем активным участникам!
Комментарии
UPX Repack scenario
Nov 29, 2011
Обновления в разделе ‘Программы для русификации’, добавлен полезный скрипт от Кирилла Борисенко. Коллеги, присылайте свои наработки!
Комментарии
Нашему сайту 10 лет!
Mar 30, 2011
Сегодня ровно 10 лет как мы с Вами, дорогие наши пользователи! Мы все любим наше хобби, пожелаем проекту долгих лет жизни. Спасибо Вам всем, Друзья! 10 лет с MSILab.NeT!
Комментарии
Переезд на новый сервер
Nov 26, 2010
Мы переехали на новый выделенный сервер в Германии. Всех с переездом!
Комментарии
Broken Motherboard
Jun 15, 2010
На нашем сервере вышла из строя материнская плата. Приносим свои извинения за вынужденный кратковременный простой сайта. Сервер приведен в рабочее состояние.
Комментарии
Нашему сайту 9 лет!
Mar 30, 2010
Сегодня ровно 9 лет как мы с Вами, дорогие наши пользователи! Мы все любим наше хобби, пожелаем проекту долгих лет жизни. Спасибо Вам всем, Друзья! 9 лет с MSILab.NeT!
Комментарии
Авария на участке канала до Дата-центра
Feb 14, 2010
Сегодня произошла авария в Нью-Йорке на участке канала, ответственность за который несет AboveNet/AS6461 (Metromedia Fiber Network). Все это время не было связи с нашим сервером в Нью-Джерси. Мы приносим свои извинения за вынужденный простой сайта.
Комментарии
Переезд на новый сервер
Jan 31, 2010
Мы переехали на новый выделенный сервер, сайт и форум полностью перенесены. Переезд был выполнен прозрачно, вроде бы все прошло без каких-либо проблем. Если Вы заметите какие-либо «глюки», просьба отписаться в комментариях. Спасибо! Всех с переездом на более производительный и надежный сервер.
Комментарии
Лабораторию по русификации
Jan 18, 2010
Уважаемые пользователи!
У нас произошло разделение Сайта и Форума. Форум перенесен на домен ruslab.net. Новое имя легко запомнить и оно полностью отражает назначение нашего Форума. Добро пожаловать в нашу Лабораторию по русификации программного обеспечения!
Комментарии
Обновление
Nov 20, 2009
Программное обеспечение на сервере было обновлено и подвергнуто значительной оптимизации. Скорость генерации страничек должна возрасти на 15-25%. Сайт был недоступен около 10 минут.
Комментарии
Поисковый плагин
May 15, 2009
Написал поисковый плагин для браузеров Firefox, Camino и IE7, устанавливается в пару кликов мыши. Теперь Вы можете искать русификаторы прямо из браузера. Встроена проверка на несовместимость с другими браузерами. Проверено на: Safari, Opera, Shiira, Sunrise.
Комментарии
Нашему сайту 8 лет!
Mar 30, 2009
Сегодня нам исполнилось ровно 8 лет со дня открытия! За это время произошло много всего, как хорошего, так и не очень, но мы все еще с Вами, Дорогие Наши! Мы все любим наше хобби, пожелаем проекту долгих лет жизни. Спасибо Вам всем, Друзья! Принимаем поздравления в комментариях.
Комментарии
Unicode (Юникод)
Mar 26, 2009
В разделе ‘Руководства по русификации’ опубликована небольшая шпаргалка по Юникоду от Solenij. Всем кто хочет узнать что такое Юникод и как он отображается в кириллице, советуется к прочтению.
Комментарии
Бесплатная регистрация Radialix 2
Feb 12, 2009
Разработчики Radialix совместно с крупнейшим каталогом русификаторов msilab.net объявляют о начале проведения промо-акции: «Получи бесплатно ключ для лучшей и наиболее динамично развивающейся программы для локализации Radialix 2». Условия смотрите на главной странице сайта. Скажем спасибо разработчикам! 9.03.2009 — Акция завершена.
Комментарии
Обновление раздела ‘Программы для русификации’
Dec 27, 2008
У нас большое обновление в разделе ‘Программы для русификации’. Рекомендуется всем переводчикам зайти и обновиться. =)
Комментарии
Русификаторы опубликованы
Dec 9, 2008
Вернулся из отпуска, все присланные русификаторы опубликованы. /ZeroChaos/
Комментарии