Hi
Friends,
Microsoft
dynamics AX provides text translation possibilities on some standard entities
like products, ledger accounts, financial dimension and few more. Text
translations are displayed on documents where a language code is applied for
example packing slips and invoices. Also, when the system language for the user
corresponds to the translations, the translations are displayed in Enterprise
Portal for Microsoft Dynamics AX.
A simple way to store the translations is to open the translations form , select the translation language and then save the translated text. For example to store translations for a product name, open the translations screen from product list page as shown below :
Select
the language from the drop down which comes on clicking on the + button
Enter
and save the translated text.
There
can be instances where you want to extend this capability to other existing or
new entities in the system to make your solution flexible and rich. From
technical point of there is a standard AX class called SysTransalationHelper
which provides capabilities to achieve this. In order to understand how we can use this class, let's do a quick
walk-through and extend the standard AX's Questionnaire entity to have ability to
set-up text translation.
The
standard AX form for questions can be found at Home >> Common >>
Questionnaires >> Design >> Questions
PS
--> For demonstration purpose, I am just creating the minimum required
methods and objects. In real time make sure you follow development best
practise recommendations. I will be prefixing new objects with DEM_ to
distinguish from standard AX objects.
Step
1 : Create a new table. I called it DEM_KMQuestionTranslation. Now add 2 foreign key relations as shown
below, one relation with KMQuestion table and another with LanguageTable.
KMQuestion table stores the Questions information and the Language table is
used to store list of all languages available on the system. Additionally add a Description field. The table
structure should look as shown below:
Add
the below 2 methods in this table:
createOrUpdateTransalation() --> This method is used to create
or update a question translation record. The implementation is quite
straightforward. Refer to standard AX method \Data
Dictionary\Tables\EcoResProductTranslation\Methods\createOrUpdateTranslation()
to view a similar implementation.
findByQuestionLanguage() --> This method is used to find the specified record in the DEM_KMQuestionTranslation table by using the specified question language.
Similar standard AX method implementation can be found at \Data
Dictionary\Tables\EcoResProductTranslation\Methods\findByProductLanguage()
Step
2: Now we need to add below line of code in standard AX KMQuestion table insert() method. This is to create a default
translation record in our new table whenever a new question record is created
in the system.
Step
3 : Now we need to create a new class. Let's call this class
DEM_QuestionnairesTranslationHelper and
add couple of methods as shown below:
Class declaration ,
declare two variables as shown below
Create parm methods
to get and set the values
Now here comes the
interesting part. Create a method to construct a new object of
SysTransalationHelper class and use the tablenum of the main entity table and
the new table which is storing the language translation details as shown below
Secondly create a method to launch the translation detail form. To do this we need to create a
method as shown below which uses SysTranslationHelper class object as a
parameter and calls it’s launch translation form method:
The last method
required in this class is to instantiate the class . To do this create a new
method as shown below:
Step 4 : Now we
create a new menu item for this class
Step 5 : Plug this
menu item on the questions form as shown below:
We
are done and ready to test drive this. Now on opening the Questions form we can see the transalations button . When we click it,system
launches the translation helper form where we can store our translated texts
using all standard AX functions as shown below:
You can also download the XPO from HERE to have quick access to code.
So in this post we saw how we can make our solutions flexible and more intuitive by adding the translation texts capabilities to any existing or new entities.
So in this post we saw how we can make our solutions flexible and more intuitive by adding the translation texts capabilities to any existing or new entities.