Какой метод потребует наименьших усилий для интернационализации (по крайней мере, многоязычности) существующих приложений Delphi?

StackOverflow https://stackoverflow.com/questions/233560

Вопрос

Я разработал около 300 приложений, которым я хотел бы предоставить многоязычные возможности независимо от операционной системы.Я написал синхронный переводчик, но он работает слишком медленно в приложениях со многими компонентами.Что бы вы предложили мне сделать?

Это было полезно?

Решение

Я слышал, что компоненты TsiLang хороши, но вы смотрите на решение на месте ...

Я использовал GNU gettext для Delphi , который делает именно то, что вам нужно, он загружает переводы из текстового файла и заменяет текст в ваших компонентах. Он даже имеет сканер pas / dfm для автоматического создания файла перевода на английский язык.

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

ShowMessage('Hello'); // before
ShowMessage(_('Hello')); // after

Должен сказать, что прошло 2 года с тех пор, как я последний раз использовал этот метод.

Одна вещь останется проблематичной: компоненты Delphi не поддерживают Unicode (это исправляет D2009), поэтому, если вы не измените компоненты, у вас все равно будет ограниченная поддержка других языков.

Другие советы

Мы используем TsiLang и очень довольны этим.

Одним из лучших моментов является то, что вы можете предварительно перевести проект со словарем (который вы заполнили из существующих переводов).

Хорошим бесплатным решением было бы GNU gettext для Delphi . У него есть некоторые возможности, которых нет в TsiLang - например, вы можете поместить знания о том, как считать вещи (разные окончания для одного, двух, четырех, ста двух, многих ...) в файл перевода, чтобы вы не могли нужно научить каждую программу знать этот материал.

Лицензия на часть Delphi весьма разрешительна, но я не уверен, насколько сильно включенные компоненты GNU повлияют на ваше приложение.

Получите мультилизатор . Он сделан в Delphi и может обрабатывать Delphi-программы, как никто другой, с особой поддержкой VCL. Вы можете даже переделать свои экраны легко для любого языка. С Multilizer вы можете использовать различные методы для перевода и запуска вашей программы.

Delphi 2009 добавил интегрированную среду перевода/внешний менеджер перевода ITE, а ETM теперь доступны как для Delphi, так и для C ++ Builder.

В статье Codegear: Что нового в Delphi и C++Builder 2009, они заявляют:

Интегрированная среда перевода (ITE) является частью IDE, которая упрощает локализацию ваших проектов.ITE может создать новый локализованный проект из существующего проекта.ITE не автоматически переводит текст, но предоставляет диалог, в котором перечислены все текст, которые необходимо локализовать, и поля для ввода соответствующего переведенного текста.После того, как вы ввели переведенный текст и создали локализованный проект, вы можете установить другой язык активным языком и отобразить форму в локализованном тексте;Вам не нужно переключать локалы и перезагружать систему.Это позволяет вам выполнять локализацию, не требуя локализованной системы.

Внешний менеджер перевода (ETM) - это автономное приложение, которое работает с файлами DFM и текстовыми строками в исходном коде.Хотя ETM не позволяет вам создавать новый локализованный проект, он обеспечивает диалоговое включение локализованного текста и переведенный текст, аналогично ITE.

Это то, что я планирую попробовать в первую очередь, когда дойду до того момента, когда захочу интернационализировать свой продукт.

Однако для меня самое простое — это перевести программу.Самое сложное — перевести файл справки.

Я бы сказал GNU gettext для Delphi в сочетании с Пакет компонентов TMS Unicode (ранее бесплатно в TntWare) для получения поддержки юникода в компонентах.

Чтобы работать с переводчиками и работать с ними, я рекомендую ознакомиться с бесплатными кроссплатформенными Poedit который может редактировать .po файлы.

Просто упомяните cxLocalizer , если у вас есть компоненты DexExpress.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top