If you’ve ever had to translate hundreds of field labels in Dynamics 365 from Norwegian to English (or the other way around), you know the drill. Easy Translator in XrmToolBox exports everything neatly to Excel. Great. But then you’re either staring at a spreadsheet full of empty cells that need translating, or you’ve got hundreds of labels that exist but need rewording to match your terminology.
Or you go the built-in route: download the translations from the solution, unzip the file, open the XML in Excel, make your changes, zip it back up, and import it again. It works, but it’s clunky and easy to break if you accidentally touch the wrong cell in that XML structure.
I used to copy labels one by one into Google Translate, tweak the output, paste it back. It worked. It was also mind-numbingly slow.
And translation is only half the problem. The same label often appears across multiple forms, attributes, and option sets. Spread across different sheets in the export. Trying to fix an inconsistent term with Excel’s Search and Replace means running it per sheet, double-checking partial matches, and hoping you didn’t miss a tab. For a label that shows up 20 times across four sheets, that’s a lot of clicking for what should be a simple change.
Then it hit me: Claude has an Excel add-in. Easy Translator exports to Excel. What if I just let Claude handle the entire sheet: translations, cleanup, all of it?
It works. Really well, actually.
What you need
- XrmToolBox — free tool for Dynamics 365 / Dataverse administration (link)
- Easy Translator — free plugin for XrmToolBox (link)
- Claude for Excel — add-in from Microsoft Marketplace (link)
- A Claude Pro or Max subscription
The workflow
1. Export labels from Easy Translator
Connect to your environment in XrmToolBox, open Easy Translator, and select the tables and components you want to translate. Export to Excel.
You’ll get a spreadsheet with columns for each enabled language. One column with your base language filled in, one or more empty columns for the target language.

2. Open the Excel file and activate Claude
Open the exported file in Excel. Press Ctrl+Alt+C on Windows (or Ctrl+Option+C on Mac) to open the Claude sidebar. Or, click the add-in in the toolbar.

3. Ask Claude to translate
Here’s the prompt I used:
I have an Easy Translator export with the standard industrycode picklist. Can you translate the missing Norwegian labels in column F?
Claude reads the sheet, spots the gaps, and proposes translations. In my case it found 22 missing Norwegian translations out of 46 industry codes.
For this post I’m using a separate demo tab with the standard industrycode picklist. In a real scenario you’d be working directly on the sheets Easy Translator exports, like OptionSets, Attributes, or Forms Fields.

What got me was the context-awareness. It doesn’t translate word by word. It picks up that these are CRM labels and chooses accordingly. “Brokers” becomes “Meglere”, not “Meklere”. “Legal Services” becomes “Juridiske tjenester”. “SIG Affiliations” becomes “Interesseorganisasjoner”. You’d have to look those up one by one to get that right manually.
You can also tell it to keep specific terms untranslated. Business-specific terms that shouldn’t be touched? Just say so in the prompt.

4. Review and adjust
One thing worth mentioning: Claude asks permission before touching your spreadsheet. For each cell change you get a dialog: “Deny”, “Always allow”, or “Allow once”. Want full control? Click “Allow once” and Claude checks with you before each update. Trust the batch? Hit “Always allow” with Ctrl+Enter.
I’d recommend “Allow once” on your first run so you see exactly what’s changing. Once you’re comfortable, switch to “Always allow” for bigger batches. That’s what I did. Verified the first few, then let Claude run.

Then go through the results. Most will be spot on, but domain-specific terms might need a tweak. Same review you’d do after any translation, AI or human. Difference is it takes five minutes instead of being the entire job.
5. Import back via Easy Translator
Save the Excel file and import it back through Easy Translator in XrmToolBox. Publish your customizations, and the translated labels are live.
A word of warning: The import is the slowest part. Claude does its thing in minutes, but Easy Translator needs time to push every change back into Dataverse. Keep your PC awake and XrmToolBox in the foreground during the import. If your machine goes to sleep or the app loses focus mid-import, you risk the process aborting. And then you get to figure out which labels made it in and which didn’t.

Bonus: standardize inconsistent labels
Translation isn’t the only thing this is good for. In most environments I’ve worked with, the same label has been spelled differently by different people over the years. Nobody notices until you export them all to one spreadsheet.
In my export, after Claude translated the missing labels, I asked a simple follow-up:
Can you outline the labels with inconsistencies first?
Claude scanned all 46 labels and found 5 casing inconsistencies:
| English | Norwegian (before) | Issue |
|---|---|---|
| Consulting | konsulentvirksomhet | Starts with lowercase |
| Financial | finansielle tjenester | Starts with lowercase |
| Transportation | TRANSPORT | ALL CAPS |
| Manufacturing | produksjon | Starts with lowercase |
| Health and social services | helse og sosiale tjenester | Starts with lowercase |
This is the kind of stuff that builds up over time. Someone typed a label in lowercase, someone else used all caps, and it went unnoticed because it’s buried in a list of 46 values. Or someone updates a form label, column label in one language in the make.powerapps.com portal and forget to translations. Happens all the time. Users see it, though. Inconsistent labels look sloppy and may make filtering unreliable.

I told Claude to fix all 5, and it standardized everything to sentence case in one pass:
- konsulentvirksomhet → Konsulentvirksomhet
- finansielle tjenester → Finansielle tjenester
- TRANSPORT → Transport
- produksjon → Produksjon
- helse og sosiale tjenester → Helse og sosiale tjenester

Below is a Gif showing the update process:

Always double-check
After the first round, I asked: “Are there any labels that still have inconsistent casing or formatting?” There were. More cells that weren’t part of the original search. Variations I hadn’t thought to include in my prompt. Claude found and fixed them.
Get in the habit of asking Claude to verify its own work after a batch. A quick “did we miss anything?” catches what the initial prompt didn’t.
Cross-sheet cleanup
Claude also handles standardization across sheets. In a real export I worked on, the same label appeared in four different sheets: OptionSets, Attributes, Forms Fields, and Booleans. It had been written with three different formatting conventions. Slash, hyphen, and inconsistent casing.
I asked Claude to find and fix all variations across the entire workbook. It found 101 cells across 7 variation groups and fixed them all in one session. Try doing that with Find and Replace. You’d be running it per sheet, per variation, per tab, hoping you caught everything.
You stay in control the whole time. Claude proposes, you confirm. You’re just not the one hunting through hundreds of rows.
Export once, clean up everything, import once.
A safe example you can try
If you want to test this without client data, use the standard Dynamics 365 industrycode picklist. Create a sheet matching the Easy Translator export format:
| Entity | Attribute | Type | Value | English (1033) | Norwegian (1044) |
|---|---|---|---|---|---|
| lead | industrycode | Picklist | 1 | Accounting | Regnskap |
| lead | industrycode | Picklist | 2 | Agriculture and Non-petrol Natural Resource Extraction | |
| lead | industrycode | Picklist | 4 | Brokers | |
| lead | industrycode | Picklist | 7 | Consulting | konsulentvirksomhet |
| lead | industrycode | Picklist | 15 | Equipment Rental and Leasing | Utleie av utstyr |
| lead | industrycode | Picklist | 16 | Financial | finansielle tjenester |
| lead | industrycode | Picklist | 20 | Insurance | |
| lead | industrycode | Picklist | 21 | Legal Services | |
| lead | industrycode | Picklist | 30 | Transportation | TRANSPORT |
| lead | industrycode | Picklist | 33 | Wholesale |
This gives you a mix of: already translated, missing translations, and casing inconsistencies. Run the translation prompt, then ask Claude to find inconsistencies. You should see it translate the 4 empty labels and catch the 3 casing issues.
Why this works better than Google Translate
Google Translate is fine for general text. But CRM labels are short, context-dependent terms where a literal translation is often wrong. “Sak” means “Case” in a CRM context, but Google might give you “Thing” or “Cause” depending on its mood.
With Claude you tell it the context up front, “these are CRM field labels”, and it adjusts. It also sees the entire sheet at once, so it stays consistent. If it translates “Sak” as “Case” in row 5, it uses “Case” in row 47 too. Google Translate has no memory between cells.
How long does it take?
A typical export of 100–200 labels: about two minutes for Claude to translate, plus five minutes for review. Compare that to an hour or more of copy-paste-tweak.
When you’re setting up a new environment or adding a language to an existing one, that adds up.
Fair warning though: the actual translation may take minutes. Writing a blog post about how fast it is? That took considerably longer than I like to admit. So I hope you found it useful!
Give it a try next time you’re staring updating translations, you might find it more fun and faster then by doing it manually.



