Which method would be the least effort to internationalize (at least multilingual) existing Delphi applications?

I have developed around 300 applications that I would like to provide with several language features independent of the operating system. I wrote the translator "just in time", but it is too slow in applications with many components. What would you advise me?

+4
source share
7 answers

I heard that TsiLang components are good, but you are looking at an inplace solution ...

I used the GNU gettext for Delphi , which does exactly what you need, it loads translations from a text file and replaces the text in your components. It even has a pas / dfm scanner to automatically create an English translation file.

You can also automatically change the source code of pascal to introduce the gettext procedure in the place of your static string. If I'm not mistaken, it just adds an underline function to it, as shown below.

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

I must say that two years have passed since the last time I used this method.

One thing will remain problematic, Delphi components are not included in Unicode (D2009 fixes this), so when you do not change components, you will still have limited support for other languages.

+4
source

We use TsiLang and are very pleased with it.

One of the best points is that you can pre-convert a project with a dictionary (which you filled out from existing translations).

+5
source

A good free solution would be the GNU gettext for Delphi . It has some features that TsiLang lacks - for example, you can put knowledge on how to count things (different endings for one, two, four, hundreds and many ...) in a translation file, t should teach every program to know this material.

The license for the Delphi part is highly resolvable, but I'm not sure how much the included GNU material will affect your application.

+3
source

Get Multilizer . It is executed in Delphi and can process Delphi programs like no other, with special VCL support. You can even easily update your screens for each language. With Multilizer, you can use various methods to translate and run your program.

+1
source

Delphi 2009 added an integrated translation environment / external translation manager. ITE and ETM are now available for both Delphi and C ++ Builder.

In a Codegear article: What's New in Delphi and C ++ Builder 2009 , they state:

The Integrated Translation Environment (ITE) is part of the IDE, which simplifies the localization of your projects. ITE can create a new localized project from an existing project. ITE does not automatically translate text, but provides a dialog with a list of all texts that should be localized and input fields for the corresponding translated text. Once you have entered the translated text and the localized project, you can set another language active and display the form in the localized text; You do not need to switch locales and reboot the system. This allows localization without the need for a localized system.

External Translation Manager (ETM) is a stand-alone application that works with DFM files and text strings in source code. Although ETMs do not allow the creation of new localized projects, it provides a dialog listing localized text and translated text, similar to ITE.

This is what I plan to try first when I am at the point that I want to internationalize my product.

However, for me, the simple task is to translate the program. The hard part is to translate the help file.

+1
source

I would say the GNU gettext for Delphi combined with the TMS Unicode Component Pack (previously free under TntWare) to get Unicode support in components.

To work with gettext files or work with them, I recommend watching the free cross-platform Poedit , which can edit .po files.

+1
source

Just specify cxLocalizer if you have DexExpress components.

+1
source

All Articles