Recently I came across the following issue on RTC:
- Build a Page containing only captions for local language (let’s say DEU)
- Run RTC in local language
- Open the page
Local Language
Everything is shown OK like in the following screen shot. All UI string (captions) are in DEU, which is what we expect to get.
ENU
For this experiment I have taken Page 9006, the Order Processor Role Center, as ‘my’ page and I have removed all ENU captions from it. Now running RTC in ENU I am getting this:
Algorithm
But this is not how it’s handled on classic client (CC). On CC it will always show me some text based on the following algorithm as to be found in the What’s New in C/SIDE 3.01 document.
Whenever a caption needs to be displayed, C/SIDE searches for the caption in the current language. If this cannot be found, C/SIDE searches for the text in another language.
If, for example, the user wants to use German (Swiss) – i.e. DES – and the user wants to see a form that contains strings that do not exist with the language ID DES, the algorithm will tell the system to look for a string with the language ID DEU. This is because German (Standard) is the primary language for German (Swiss). Next to that English (US) – i.e. ENU – is considered to be primary language of all primary languages
The algorithm telling C/SIDE how to search for the right text uses the following order:
- object language
- primary language of the object language
- global language selected by the user
- primary language of the global language selected by the user
CC vs. RTC
The previous steps, however, are not complete, as the algorithm can go beyond step 4 in two additional scenarios, and here is where CC and RTC clearly deviate.
- Captions are available but not for the object/global language or its primary language
- No captions are available
Captions in other primary language
If the current object/global language is ENU and no ENU captions exist, but , for example, DEU captions do CC will show the DEU caption and RTC will show some objects empty and others with the Name value.
To illustrate this I take the Customer Card and make sure I have removed all ENU caption from both the underlying table and the form/page.
CC
Clearly DEU captions are used for fields, controls (including menu items not shown) and form.
RTC
Clearly page and fields show the Name value, but controls are shown empty (including menu items not shown and FastTabs).
No captions
This can be the case for any C/SIDE object like tables, fields, forms, controls and reports. If no captions are available, i.e. CC will always take value of the Name property which cannot be empty as this is mandatory to any object.
To illustrate this I take the Customer Card and make sure I have removed all ENU caption from both the underlying table and the form/page.
CC
Aha, this is some special case as some controls, like the TabControl can not do without captions as this will throw a run time error, but apart from that all objects, fields, controls will show the Name value.
RTC
This shows same behavior as in case of “Captions in other primary language”, i.e. page and fields show the Name value, but controls are shown empty (including menu items not shown).
Conclusion
CC and RTC do not act in the same way regarding the display of UI strings. Is this a problem? Not really, but it still feels awkward that on RTC controls are shown empty. What do you prefer?
Notes
- Object language can be set by using LANGUAGE function
- Global language can be set using the GLOBALLANGUAGE function or using Tools > Language… (CC) or Microsoft Dynamics NAV > Select Language… (RTC)
- The id of a primary language is in the 1xxx range
- You can easily remove the caption of one language by selecting the object in Object Designer and selecting Tools > Language Module > Export… save the export for the specific language and select Delete Language