Найти в Дзене
Электромозг

Локализация Делфи-проектов. GUI для Kryvich's Delphi Localizer.

Оглавление

Вступление

Начиная с 1992 года я много писал на ассемблере. Сначала это был ассемблер для архитектуры процессоров серии К1801, а затем и для x86. Так уж сложилось, что начиная с 2001 года мне надо было писать быстро и много, и поэтому я перешёл на Делфи — на тот момент самую быструю систему программирования, имеющую в комплекте даже собственную базу данных, что было для меня очень актуально.

Это вступление я написал для той части школоты, которая уделяет особое внимание «цветовой дифференциации штанов», по любому поводу с пеной у рта доказывая преимущество «сишников» над программистами Делфи, и клеймя последних, хотя даже сам разработчик C++ Бьерн Страуструп открыто признавал проблемы своего языка. Везде есть свои плюсы и минусы, и для каждой конкретной ситуации оптимальный выбор языка непредопределён. Думаю, на этом вопрос выбора языка будем считать закрытым.

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

Родная среда локализации

Среда локализации ITE (Integrated Translation Environment) появилась ещё в Delphi 5, но с того момента так и не развивалась. У среды очень неудобный интерфейс, в котором можно по ошибке запороть ресурсы или потерять переводы, что у меня пару раз происходило. Много вопросов вызывает и сам способ переключения языков, который к тому же завязан на абсолютные пути к проекту. Ни о каком переключении языков «на лету» тоже речи нет.

В многоязыковом варианте операционной системы приложение должно иметь файл перевода и для родного языка, фактически дублирующий ресурсы. Кроме того, у ITE имеются и более грубые недоработки, которые никто не собирается устранять несмотря на многочисленные жалобы разработчику. Например, вам придётся отказаться от стандартных путей для вывода типа ".\$(Platform)\$(Config)" т.к. ITE не в состоянии их обрабатывать. Не знаю, как с этим в настоящий момент, но ещё в недавних версиях никаких изменений не было.

Очевидно, проект ITE похоронен, и если у Делфи будет собственный локализатор, то, скорее всего, он будет основан на совершенно других принципах.

Сторонние утилиты локализации

Неудивительно, что в таких условиях развелось много сторонних локализаторов и трансляторов, как платных, так и бесплатных, как в виде компонентов, так и в виде отдельных программ и утилит. Опасность завязывания на сторонние компоненты, которые могут просто не выйти к очередной версии Делфи, очевидна. Отдельные же программы, которые вменяемо работают с Unicode, как правило, платные.

На этом фоне приятно выглядят бесплатные утилиты командной строки «Kryvich's Delphi Localizer» от Belarusian Linguistic Software team, предназначенные для трансляции строковых ресурсов. Несмотря на отсутствие графического интерфейса пользователя (GUI) они прекрасно выполняют свою функцию. Чаще всего большего и не требуется, ведь как таковая локализация (трансляция + адаптация размеров компонентов интерфейса) используется не так часто ввиду её повышенной трудоёмкости.

Но работать с командной строкой и осуществлять перевод в универсальных редакторах не очень удобно. Поэтому мной была написана графическая оболочка для этих замечательных утилит.

KDL GUI.
Оболочка, которая перевела сама себя.

Бесплатная оболочка KDL GUI была написана ещё в начале 2017 года, по быстрому, для себя, и фактически на коленке. Я неоднократно порывался привести её в товарный вид и выложить во всеобщий доступ, но каждый раз сталкивался с тем, что надо было провести довольно большой объём отладочных работ. Программа прекрасно работала в рамках моей методики перевода, но не имела защит от потенциально возможных ошибочных действий широкого круга пользователей.

Шло время, и программа постепенно доводилась до ума. Наконец, я решил её допилить окончательно и выложить, что и было на днях сделано.

Логика работы с оболочкой проста. Сначала в неё прописывается папка с утилитами локализации KDL. Затем в оболочке создаётся проект локализации, сканируется проект локализуемой программы, производится перевод, и сохраняется в файл. Всё.

Если вы заинтересовались, то подробнее об использовании оболочки и утилит можно прочитать во встроенной справке оболочки.

Рабочая вкладка переводчика имеет вот такой вид:

-2

Тёмную тему можно поменять на светлую — в комплекте более сотни различных стилей.

Заключение

Если вам понравилась моя программа, можете скачать её с официальной страницы и бесплатно ею пользоваться. Буду благодарен за любую популяризацию моего продукта.

Ставьте лайки, пишите комментарии, подписывайтесь на мой канал. Удачи!