And so it seemed Mark and I were going to end up in a “Yes, you do” … “No, you don’t” quarrel about the need to reset object properties after importing a UI translation.[8-|]
Let’s just take the perspective that we were at cross-purposes; langs elkaar heen praten as we say over here. Having taken the discussion on a private mail thread it even took a while before that became clear. And you know, in a way we were both right. Rereading my posts on translation I have no problem to take the blame on me, as I talked about UI and translation, about tools and object properties, about captions and efficiency, but failed to give a complete enough picture of the UI translation process as such. A good enough subject to elaborate more on later. Or actually make a start with now by explaining the difference between a translate export and a language module, let’s say, respectively, my perspective and Mark’s.
Translate Export
You create a translate export in NAV from the Object Designer by selecting Tools > Translate > Export. This will create for all selected objects a file with all translatable strings, identified by an ID and the text string. Without going in to details I’ll do with an random example:
T3-P2818-L30:Payment Terms
T3-P8629-A1033-L999:Payment Terms
T3-P4960-V1000-P2818-L30:PaymentTermsTranslation
T3-F1-P2818-L30:Code
T3-F1-P8629-A1033-L999:Code
T3-F2-P2818-L30:Due Date Calculation
T3-F2-P8629-A1033-L999:Due Date Calculation
This file is the basis for making a translation of the UI of your application. Taking the example strings from table 3 you can see we only have ENU (US-English) captions, i.e. lines having the -A1033- token in it (1033 is the Windows id for ENU) and no lines with any other language token.
Using a translation tool to translate from ENU to SVE (Swedish – Windows id 1053) should eventually give you the following strings:
T3-P2818-L30:Payment Terms
T3-P8629-A1033-L999:Payment Terms
T3-P4960-V1000-P2818-L30:PaymentTermsTranslation
T3-P8629-A1053-L999:Betalningsvillkor
T3-F1-P2818-L30:Code
T3-F1-P8629-A1033-L999:Code
T3-F1-P8629-A1053-L999:Kod
T3-F2-P2818-L30:Due Date Calculation
T3-F2-P8629-A1033-L999:Due Date Calculation
T3-F2-P8629-A1053-L999:Förfallodatumformel
To get this translation available in your application you need to import it into NAV by selecting the translation file through Tools > Translate > Import. Importing these strings into the application will update object properties is mentioned in How-to: Reset Object Properties After Importing a UI Translation.
Language Module
Next to creating a translation as described above NAV also knows so called language modules. This is how the Application Designer’s Guide describes a language module:
A language module contains the same information as the Translate Import/Export data files. However, a language module contains text for only one language layer. Language modules are binary files that you cannot modify with external tools.
You can import a language module by clicking Tools, Language Module, Import, and you can export one by clicking Tools, Language Module, Export.
On Customer/PartnerSource MS provides the language modules for the whole range of languages NAV is being released for. For example for 5.0 SP1. Note that, as MS states it:
Each language module only covers the functionality for the one specific language, e.g. the Danish language module contains all Danish strings for Danish functionality. It does not contain Danish strings for e.g. French functionality.
Opposed to importing a translation, importing a language module will not update object properties, i.e. leaves them like they already were.
Notes
- It is at least remarkable that little to none information can be found in the official documents on translate export, be it the format, the creation of it or how to translate it.