Microsoft Dynamics 365 Business Central is Multilanguage enabled, which means that you can display the user interface (UI) in different language.
To add a new language to the extension you have built, you must first enable the generation of XLIFF files.
The XLIFF file extension is .xlf.
The support for using the ML properties, such as CaptionML and TooltipML, is being deprecated, so it is recommended to refactor your extension to use the corresponding property, such as Caption or Tooltip, which is being picked up in the .xlf file.
You can use the .xlf translation files approach only for objects from your extension.
It’s an XML-based format used to standardize localization.
Step – 1
To be able to work with translation files, you need to add a Feature to the app.json file.
This Feature is TranslationFile.
Step – 2
When we save our app.json file, we can see immediately that we get some warnings.
This warning is telling us that the Multilanguage syntax is being deprecated and that we have to update to the new syntax.
The new syntax requires us to remove all the ML properties, such as the caption ML and the option caption ML, and we have to use a regular Caption and OptionCaption properties.
We use Labels at place of Text Constants.
Let’s fix these issues. Any ML properties like Caption ML, Option Caption ML or Text Constants. Replace them with Caption and Label.
Before we start some important points:
- The New translation process decouples translation from development.
- New Label syntax – Default translation & Some attributes.
- Translation file can be combined with the extensions to support Multilanguage.
- Caption & CaptionML cannot be used simultaneously.
- Label syntax have comment, locked and maxLength optional parameters.
- Same syntax for Captions and Labels.
Here after fixing the above errors:
All errors resolved from my Project.
In Nutshell use only Caption, OptionCaption & Label, all translation will be done outside developer environment in xlf file, no more defining in objects.
Step – 3
Build your Package, choose AL:Package.
Once your Package is created error free, you will see new Folder Translations with one xlf file is created.
Every time you build your Package this file gets overwritten. So be cautious.
When you perform your translation make a copy of this file and save with new Name then perform your translation.
Means Translation task will be last process in your Extension building process.
If you add more Captions or Labels later then you will have to take care of them and populate in all of your Language translation Files.
No of Languages your extension supports, you will have that much of translation files and is packaged with your package, no separate installation like in older versions is required to enable MultiLanguage.
Step – 4
Let’s see what this xlf file looks like:
It is in xml format.
If you see “<file datatype=”xml”” you will get your Source-language & target-language. Source & Target is set to same Language.
“<trans-unit id” Specifies each of you Caption and Labels defined in you objects.
“<source>” node specifies Caption or Label in source Language.
You will have to add your “<target>” language translation.
Step – 5
Let make copy of this file in all the supported languages you want.
I have made 2 files en-US & nl-BE. Naming convention is for your understanding purpose only.
Now you can handover these files to translator and he can perform translation in required language outside your development environment.
You code/IP is safe from external agencies whom you give for translation.
Only what is required for this will be:
 Update your Target Language in below line as:
<file datatype=”xml” source-language=”en-US” target-language=”en-US” original=”MyFirstExtensionProject”>
<file datatype=”xml” source-language=”en-US” target-language=”nl-BE” original=”MyFirstExtensionProject”>
 For every
<source>…</source> add <target>…</target>
There are number of tools available on internet which supports xlf file and give ease your work of translation.
Step – 5
Once you are done with your translation, copy all the translated file to the Translation folder and Build your Solution and deploy on Server.
Change the Language of Client to Dutch and run your Object:
I have translated only one caption shown in red-box.
Please read the points mentioned in the post carefully.
Now you can enable MultiLanguage support for your Extensions.
I will come up with some other topic in my future post.
Till then keep exploring and Learning. Take Care of yourself.