Translations are one of those parts of Salesforce that people really struggle to deploy and with good reason - they're a pain and come from the earliest days of the platform.

How do I include translations in my comparison?

Gearset will compare your translation settings if Custom object translation and Custom object are both selected in your metadata comparison filter. They are included in the Default comparison filter, or you can create your own custom metadata filter.

What do translations look like in the comparison results?

Historically, one of the issues with deploying translations on Salesforce was that you had to deploy all the translated strings for a given language at the same time. This often failed if the language had a translated string for a component that didn't exist in the target or if only some of the translated strings in the org had been reviewed and were ready for deployment.

Gearset solves this problem by making each translated string individually selectable and deployable. This allows you to deploy the translated strings that are ready for a given language and do partial translations of your org's strings.

When it makes sense, Gearset will still group translated strings together into a common parent. For example, if Gearset detects that all the custom field translations for a given object are New, then they'll be grouped into a single row in the results.

Common gotchas

Inactive languages

If a language is Enabled in an org but not marked Active, then the metadata API doesn't return the translations when Gearset requests them. This can be confusing, as Gearset will sometimes display one side of the translated string comparison as blank.

Deploying over inactive languages

If a language is Enabled in an org but not marked Active, then the metadata API does still allow the deployment to happen. This means you can accidentally overwrite a translated string because Gearset reported the target as blank. This is a limitation of the metadata API that Gearset is built on.

Deploying languages as part of a managed package

If your languages or translations are part of a managed package, try running the comparison with All selected for Include managed packages in the custom metadata filter. 

Seeing something else you don't understand?

Translations are complex! If you're seeing something strange that you don't understand about translations, then open up the chat widget and get support direct from one of the team.

Did this answer your question?