Basically, you have two ways
- Resource-Based Localization Tools (Delphi ITE, Multilizer, ecc.)
- Database-based localization tools (GetText, TsiLang, ecc.)
The first takes advantage of Windows resource support; when loading an application, resource loading can be redirected to another stored in the DLL. The advantages are that all forms can be localized, including images, colors, control sizes, etc., and not just lines. Moreover, code changes are not required. The disadvantages are that localization of the end user is usually not possible, and changing the language without restarting the application can be more difficult. These applications use Microsoft applications, including Windows itself. It will work with any Delphi libraries that store strings in resources and dfms correctly.
The latter stores the rows in an external "database" (it may even be a text file ...). The advantage, as a rule, is that users can add / change translations and it is easier to switch on the fly. The disadvantage is that this method is more intrusive (it should load / display a string), and code may need to be changed, tools are usually limited to localization of strings and do not provide wider control (images, sizes, etc.), and can work with unknown controls / libraries that they could not properly connect. Typically, a cross-platform application uses this technique because resource support under Windows is not available on all operating systems.
You better choose the technique that suits you and your application. In addition, some tools facilitate interaction with an external translator, while others do not. I prefer the resource based approach because it does not require code changes and does not bind me to this library.
source share