It started under the Official Languages Act.
We were a Canadian BI team working under Canada's bilingual-publication requirements. Every report, every dashboard, every measure label had to ship in both English and French. Bilingualism wasn't a nice-to-have, it was a legal obligation.
We spent months looking for the right solution.
Open-source utilities, paid extensions, custom scripts. We tried all of it. Nothing held up at our scale: a large team, fast turn-around, multiple analysts editing the same report at the same time.
We didn't want two reports.
The obvious workaround, maintain a French clone of every English report, doubled the maintenance burden overnight. Every visual change, every new measure, every KPI tweak had to happen twice. We rejected it.
We didn't want a manual process either.
A shared spreadsheet to track report translations. Hand-merged before every deploy. That's a process built to break for a large team. We rejected that too.
Which left one bad option.
Concatenate both languages in every text on the report. Every caption a long "Sales | Ventes" string. Ugly, but defensible.
And no reliable tool from Microsoft.
Power BI ships with cultures and translation tables baked into the Tabular Object Model. The plumbing is there. But Microsoft's first-party tooling stops at "you can put data in those tables", leaving teams to figure out how to edit, validate, and ship translations at scale. We waited for it. It didn't come.
So we built Daxlate.
A desktop app that talks to the model directly. A grid that shows every culture side by side. An Excel round-trip for translators who don't live in Power BI Desktop. PBIX files with data models are never overwritten on save, so a careless write can't clobber a quarter of localization work. Nothing leaves the machine.
Where we are now.
This is version 1. It covers the semantic-model surface: cultures, captions, descriptions, and hierarchies. Two pieces of the full vision are still left to build:
- Visual-level translation: titles, slicers, text boxes.
- A first-class CLI for CI/CD pipelines.
We'll get there.