This article contains some important considerations that you should keep in mind when using the GeneXus Application Localization.
Shared translations among GeneXus users worldwide can save translation time. It can be achieved if we all have a well-known Language naming convention. GeneXus suggests using the English name for languages as Language object names, and the language name of each language in its language as the Language object description. For example, Spanish:Español, Italian:Italiano, etc.
Translated Conditions/Where/If Commands In some cases the translated application does not properly work with existing data. Such is the case, for example, of the following comparison: ClientCategory = "Good". When translated into Spanish, the generated code should look like this: ClientCategory = "Bueno". This is fine as long as you want to run it against your current Spanish data. The underlying problem is that Data Base data has translatable text ("Good" in the example). Alternatives for fixing the problem are:
- Use Enumerated domains. Enumerated Domain codes are not translated, but their descriptions are.
- Change the literal to a non-translatable literal !"Good".
As of Android 7.0 (Nutshell), it is possible to define multiple languages on the device settings. Taking advantage of this feature, GeneXus automatically infers which language of the Knowledge Base is closer than the primary dialect set on the device. In these terms, if the primary user language setting is not supported by the application, it will prefer the secondary language (and so on). This process continues until finding one language that matches the user preferences, or it will be used those set on the Kb Language property as default.
For example, suppose that the app uses English/Italian, and the default is English.
- If the device is set to use Spanish (only), then the app will be displayed in English (default).
- But, if the device is set to use Spanish/Italian, then the app will be displayed in Italian.