Translator Product Catalog Localization
On a schedule, the flow reads product records from Dataverse, translates name/description/spec fields into locale columns with Microsoft Translator (using a glossary to protect brand and SKU terms), writes the localized values back, and exports a per-locale catalog to Excel. Keeps a multilingual product catalog current for regional storefronts.
Provided as-is, without warranty of any kind. Review and test each pattern in a non-production environment before deploying it to live automations. See our Terms.
Overview
This flow maintains a multilingual product catalog using Microsoft Translator V3, Dataverse, and Excel Online (Business). On a daily schedule it reads product records from Dataverse, applies a brand/SKU glossary (Translator dynamic-dictionary markup) to protect names and codes, translates the name/description/spec fields into each configured target locale, writes the localized values back into a dedicated Dataverse table, and appends each localized row to a per-locale Excel catalog for regional storefronts. Manually localizing catalogs is slow and error-prone, and brand terms get mangled by raw machine translation; glossary-aware translation keeps every locale current while protecting brand names and SKUs.
Use Case
An e-commerce / marketing team sells in multiple regions and needs product content localized consistently, refreshed on a schedule, with per-locale exports it can hand to regional storefront owners. The team curates source product copy in English (in Dataverse) plus a small glossary of brand/SKU terms that must never be translated.
Flow Architecture
Recurrence
RecurrenceKicks off the localization run once per day.
Initialize Config
Initialize variableMints a correlation id, binds source language, splits target locales into an array, binds Excel workbook coordinates, and seeds glossary-markup buffers.
Get Glossary + Products
Dataverse - ListRecordsReads brand/SKU glossary terms and products whose status is not yet Localized.
Apply To Each Product
Apply to eachFor each pending product: resets name/description/specs buffers, then wraps every glossary term in <mstrans:dictionary> markup across all three buffers.
Apply To Each Locale
Apply to each (nested)For each target locale, translates the three protected buffers with Microsoft Translator V3, composes the localized row, and creates it in the Localized Product table.
Add Row To Catalog
Excel - AddRowV2Appends each localized row to the per-locale Excel catalog table.
Update Product Status
Dataverse - UpdateRecordMarks the product Localized so it is skipped next run.
Environment Variables
| Schema name | Type | Default | Description |
|---|---|---|---|
| flowlibs_TargetLocales | String | fr,de,es | Comma-separated Translator language codes to localize into. |
| flowlibs_SourceLanguage | String | en | Source language code of the master fields. |
| flowlibs_ExcelLocation | String | me | Excel Online location/source (OneDrive me or a SharePoint site). |
| flowlibs_ExcelDriveId | String | <configure> | Excel document library / drive id. |
| flowlibs_ExcelFileId | String | <configure> | Excel workbook file id. |
| flowlibs_ExcelCatalogTable | String | ProductCatalog | Excel table name receiving localized rows. |
Connectors & Connections
| Connector | API name | Actions used |
|---|---|---|
| Microsoft Translator | shared_microsofttranslatorv | Translate |
| Microsoft Dataverse | shared_commondataserviceforapps | ListRecords CreateRecord UpdateRecord |
| Excel Online (Business) | shared_excelonlinebusiness | AddRowV2 |
Note — All connections are referenced as solution connection references; the flow is portable between environments as long as a connection is mapped at import time.
Customization Guide
Almost every realistic variant of this flow can be implemented by changing environment variable values. A few cases require small edits inside the flow definition — those are called out explicitly below.
- Add locales
- Append codes to flowlibs_TargetLocales (e.g. fr,de,es,it,ja); the locale loop scales automatically.
- Selective re-translate
- The $filter skips products already marked Localized; clear flowlibs_localizationstatus to re-localize, or extend the filter to a Pending model.
- Review queue
- Write localized rows with a Draft status and add an Approvals step before marking the master Localized.
- Storefront push
- Replace the Excel AddRowV2 export with a commerce connector (Shopify, etc.) writing localized fields directly.
- Glossary scope
- Use flowlibs_targetlocale on glossary rows to apply locale-specific protected translations (filter the glossary ListRecords per locale).
- On-change trigger
- Swap the Recurrence trigger for a Dataverse SubscribeWebhookTrigger on the product table to localize on edit instead of on schedule.
Key Expressions
The flow is intentionally light on Power Fx / WDL gymnastics — the heaviest expressions are the branch-name concatenation and the approval outcome check. They are listed below in the order they appear in the flow.
EXPR.01Glossary markup
Protects brand/SKU terms.
EXPR.02Translate body (array)
V3 takes a [{Text}] body with from/to query params.
EXPR.03Read translation (V3 flattened)
Flattened V3 result.
EXPR.04Localized key
Unique per product x locale.
Customize & download
Generate a ready-to-import copy of this solution with your environment-variable values baked in — available on Base, Pro, or Team.
Upgrade to customize
Comments
Sign in to join the conversation.
Sign inNo comments yet. Be the first to share your experience with this flow.