Multi-language support is something that often comes up in global organizations, and I’ve implemented it a few times in enterprise environments where users from different regions needed the same report localized in their preferred language.
My general approach is to design a dynamic translation framework rather than maintaining separate reports for each language. I typically use a translation table that contains key-value pairs — for example, “Sales Amount” → “Montant des ventes” → “Umsatzbetrag” — with columns for each supported language. This table is maintained centrally in a database or Excel file and loaded into Power BI as a lookup table.
Then, I create a Language Selection mechanism — either using a slicer or by detecting the user’s language automatically through USERPRINCIPALNAME() and mapping it to their preferred language in a user profile table. Based on the selected language, I use DAX measures like SELECTEDVALUE() or LOOKUPVALUE() to dynamically display translated labels. For example, instead of hardcoding “Total Sales” in a card, I’ll use something like:LOOKUPVALUE(Translations[Label], Translations[Key], "Total_Sales", Translations[Language], SELECTEDVALUE(Language[Language])).
In one of my previous projects for a multinational manufacturing company, we implemented this approach for eight languages including English, French, German, and Japanese. We used a combination of DAX translation measures for visuals and field parameter logic for switching dimension names dynamically. For page titles and static text, I leveraged Bookmarks and conditional formatting with measures, so even static elements would respond to language changes.
A challenge I faced was managing the performance impact — especially when the translation table grew large. To optimize, we prefiltered only active keys and kept the table lightweight. Another issue was limitations with column and table names, since Power BI model metadata doesn’t natively support multilingual names. We overcame that by keeping model names in English and handling translation purely at the visual layer.
One limitation is that Power BI still doesn’t provide out-of-the-box localization for dataset field names, measure names, or model metadata. However, with Power BI’s Tabular Editor and JSON translation files, we can automate the process to some extent — especially when deploying enterprise-level models.
As an alternative, if the organization is using Power BI Embedded, localization can be handled at the application layer, where the host app dynamically injects language context into Power BI through APIs, allowing finer control and better performance.
