Model-driven applications offer excellent support for building multilingual applications. Translations for UI elements and entity configurations can be easily provided using an Excel file, and the application adapts to the user's selected language through the Personalization settings (see Languages tab options).
When accessing record information through Power Automate, choice field values are presented as numerical codes rather than their display names. To obtain the choice display names in the user's language, these numerical values must be retrieved using tools like Power Automate.
Get Localized choice values for record
The "Utils - Get Localized choice values for record" workflow retrieves definitions of choice and multi-choice fields in a Dataverse table, providing numerical values and labels for each choice in a specified language. It can be used either as a child workflow or as a standalone flow, and accepts the following parameters:
Parameter name | Description |
---|---|
Table name | The logical name of dataverse entity, as defined in Properties / Advanced options / Logical name |
lcid | LCID code of a language, e.g. 1033 for English. Consider saving the language used by the user when a record is created. You may retrieve the language code using JavaScript: Xrm.Utility.getGlobalContext().userSettings.languageId
|
lcid fallback | LCID code of language used as a fallback, in case the primary language is not detected. Use the default language of your environment. |
The definitions of choice columns are retrieved using "Invoke an HTTP request" action, calling the following endpoints:
-
https://org0api.crm17.dynamics.com/api/data/v9.2/EntityDefinitions(LogicalName='ENTITY_NAME')/Attributes/Microsoft.Dynamics.CRM.PicklistAttributeMetadata
request for single-choice, and -
https://org0api.crm17.dynamics.com/api/data/v9.2/EntityDefinitions(LogicalName='ENTITY_NAME')/Attributes/Microsoft.Dynamics.CRM.MultiSelectPicklistAttributeMetadata
request for multi-choice fields.
Important: The "HTTP with Microsoft Entra ID (preauthorized)" connector operates through a Microsoft 1st party trusted application. This application includes preauthorization for various Microsoft services and there is no need for administrators to explicitly grant consent for actions to be executed by the application on behalf of the user.
Microsoft also released a new version of the connector, the "HTTP With Microsoft Entra ID", allowing administrators to grant discrete consent.The reason for using the "HTTP with Microsoft Entra ID (preauthorized)" connector in this workflow is to ensure it works immediately once configured, and no additional action must be executed by the administrators.
Update the workflow to use the "HTTP With Microsoft Entra ID" connector, if required.
The flow returns the following values:
Name | Description |
---|---|
Results | JSON object with the following structure: [{"LogicalName":"fieldName","Options":[{"Value":339870000,"Label":""}]}]
|
Error message | Empty, if success. Otherwise error message |
Success | "True" or "False" |
Importing solution
When importing a solution, you will need to provide a connection reference to your Power Platform Environment. Ensure that the connection is created using the URL of your Power Platform Environment.
The value of "URL of the request" does not include a host name. The request URL will be created by combining the URL specified in the referenced connection with the API endpoint defined in the "URL of the request" field.
Using the flow
The Get Localized choice values - test flow provides an example on how to use the results returned by the Get Localized choice values flow.
To speed up the retrieval of the localized label, the results from the child flow are converted into an XML
object, and an xpath
expression is used to quickly extract the correct value.
The sxPathQuery
variable is set to the following expression:
//arr[LogicalName="{fieldName}"]/Options[Value={fieldValue}]/Label
The {fieldName}
and {fieldValue}
tokens are replaced by a field logical name and a numerical value, and used in the xpath()
expression, e.g.
xpath(outputs('Compose:_Json_to_Xml'), concat('string(', replace(replace(variables('sxPathQuery'), '{fieldName}', 'kk_targetgroup'), '{fieldValue}', '339870000'), ')'))
, or
xpath(outputs('Compose:_Json_to_Xml'), concat('string(', replace(replace(variables('sxPathQuery'), '{fieldName}', 'kk_country1'), '{fieldValue}', '756'), ')'))
When building real-life solution, you would define the fieldValues
based on the record's properties.
You may download the solution with Power Automate workflow including the above examples from Power Automate Utils GitHub repo.
Top comments (0)