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

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

Ответы [ 7 ]

5 голосов
/ 24 октября 2008

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

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

4 голосов
/ 24 октября 2008

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

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

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

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

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

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

3 голосов
/ 24 октября 2008

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

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

1 голос
/ 08 ноября 2009

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

1 голос
/ 30 декабря 2008

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

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

1 голос
/ 29 октября 2008

В Delphi 2009 добавлена ​​интегрированная среда перевода / диспетчер внешних переводов ITE и ETM теперь доступны для Delphi и C ++ Builder.

В статье Codegear: Что нового в Delphi и C ++ Builder 2009 , они утверждают:

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

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

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

Однако, мне проще всего перевести программу. Сложная задача - перевести файл справки.

1 голос
/ 28 октября 2008

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

...