All localization experts recommend planning localization right from the beginning of your software development project. Most software developers do not follow this advise. Often, the requirement to localize a project is not even raised before the development has been completed.
The Add-In detects the localizable texts in the controls on your Forms, UserControls and UserDocuments based on information in a controls database. This database indicates exactly which properties require translation. It can easily be extended to handle additional controls which you use in your projects.
The Add-In scans the source code and detects all strings.
Not all texts in a project require translation. In fact, Visual Basic program often contain a lot of text strings which must not be translated. With the Multi-Language Add-In, the programmer can select exactly those texts which require translation.
Strings in the source code which do not require translation can be hidden, by adding the comment 'MLHIDE to the end of the line. This can be added via the Add-In, or using the code editor.
It is good practice either to select or to hide each individual string in your project. This makes it easy to locate new strings which are added to the source code at some later stage.
A significant job for the programmer (and not the translator) is to identify exactly which texts in the source code require translation. Often you can use simple rules to select texts, or alternatively to hide them.
Using this feature, you can specify a regular expression, which is used to match either:
By matching the complete code line, you can easily detect where strings are used in specific function calls, or for example, in a select case statement.
If you are not able to translate the texts yourself, you will have to pass them on to a translator. The easiest way to do this is to export the texts to an Excel file, let the translator enter translations using Excel and then import the translations back into the Add-Ins's project database.
The Add-In supports two different Excel formats:
Aside from the individual project databases, the Add-In stores all translations in a global translations database, where they are indexed according to the words contained in the texts.
When the Add-In detects an exact match with a string in the global database, then it will use the stored translation automatically. This is well suited to handling common terms such as OK and Cancel.
When you edit a translation, you can use the translation memory feature to view previous translations of texts containing one or more of the same words. If you are able to translate the texts yourself, then this is a great help. In particular, it helps you to use technical terms in a consistent manner.
Add support to your project to switch the language of the user interface when the program is running.
The VB function LoadResString only reads resource strings in the current system language. The Add-In provides an alternative function, to read resource strings in a specified language.
The Add-In uses an event mechanism to indicate that the language has been changed. Even if your application is made up of separately compiled modules (.exe, .ocx or .dll), the event will still be received by all active components (Forms, UserControls or UserDocuments).
The events are generated via the module MLRuntime.dll, which you can distribute freely with your application.
The Add-In provides a simple form to select the language in your application. The Add-In can add this form to your project and generate code to show the form the application starts.
Switch the language used in the form designer window, to preview your Forms, UserControls and UserDocuments in a given language.
The Add-In detects existing calls to the VB function LoadResString and imports the associated resource strings.
The Add-In provides full support for far eastern languages. The grid editor works with an Input Method Editor (IME).
The Add-In provides support for switching the font used in controls when the language is switched.
The Add-In contains a flexible search function to find texts in the original language and in the translations.
Modules which contain no localizable texts can be excluded from the source code scan.