Why a Salesforce translation is not showing
On this page 6 sections
When a user still sees the default language after you saved a translation, check four things, in this order. Do the words on the page come from the component you translated, or from another one? Is the user's language the one you translated, and is it active? Was the text typed somewhere Salesforce does not translate, such as a label entered as plain text in Lightning App Builder? And was the translation actually saved? Start by finding which component supplies the words, then run the checks for that kind of text.
1. Find which component supplies the text
The same words can come from a field label, a picklist value, a record type, a layout section, a button, a related list title, a Custom Label read by a component, a label typed in Lightning App Builder, a flow, or a standard name changed in Rename Tabs and Labels. Each is translated in a different place, and translating the wrong one changes nothing on the page. The map of where each label is translated says where each one lives; the guide to finding the metadata behind Lightning text covers how to tell which one you are looking at.
2. The checks, by kind of text
For every kind: the user's language
- Open the user's record and read Language: that is the language Salesforce shows them.
- In Setup, open Translation Language Settings and check that the language is Active. Translations reach users only once their language is active, and users can still choose a language that is not, in which case they do not see its translations (adding languages and translators).
- Compare the user's exact language, regional variant included, with the language you translated. For your own translations, Salesforce documents that Spanish (Mexico) uses the Spanish one (supported languages).
- Translations installed by a managed package appear to users whether or not the language is active, so a page in an inactive language can show some labels translated and others not (adding languages and translators).
A field label, picklist value, record type, layout section or button
These are translated in Translation Workbench (Setup → Translate), choosing the language, the setup component and the object. Check that the translation sits on the component the page actually shows: the same words on two objects, or on a field and a Custom Label, are separate components with separate translations. A standard field's label is changed per language in Rename Tabs and Labels, not in Translation Workbench's Custom Field list (rename object, tab and field labels). For a picklist value that keeps showing the default text, the picklist guide has a checklist of its own.
A label typed in Lightning App Builder
On a Lightning page, custom tab labels in a Tabs component, field section header labels and other component attribute values are not localized when they are entered as plain text in Lightning App Builder: every user sees the words as typed (Salesforce Help: localized component labels). The fix Salesforce documents is a Custom Label:
- Create a Custom Label with the text, and add its translations (the Custom Labels guide).
- In Lightning App Builder, select the component and replace the plain text with
{!$Label.Your_Label_Name}. - Save the page.
Expressions work only in text (String) properties of components on app, Home and record pages, not in page-level properties.
A Custom Label read by code
Code gets the Custom Label in the running user's language. In an automated context, such as a scheduled job, that is the context user's language, not the recipient's; on an Experience Cloud site, the site's own language rules apply. The Custom Labels guide covers both.
A renamed standard object or field
Names changed in Rename Tabs and Labels appear on the pages users see, but some places keep the old name until someone changes them by hand (considerations for renaming tab and field labels):
- list views whose name was edited before, and every list view users created;
- standard report names and descriptions;
- email templates that mention the object or field;
- custom fields, page layouts and record types whose names contain the old word;
- Setup pages from Salesforce Classic, which keep the original labels.
Text in a flow
Whether a flow can be translated at all depends on its type: Salesforce's flow types table says which are supported in Translation Workbench. Within a flow, text templates and the values of merge fields are not translated, and right-to-left languages are not supported. When a label has no translation for a language, Salesforce uses its fallback language and then the original label (considerations for translating flows).
A translation that was never saved
An import that finished is not proof that a translation exists. Salesforce does not save an exported label that was left unchanged in the translation file (import translated files). Open Translate, choose the language and the component, and check that the value is there.
3. Confirm it as the user would see it
Change your own language, or log in as a test user who has it, and open the page that showed the problem. If a label is still in the default language after the checks above, go back to step 1 and check again which component supplies the words.
The causes at a glance
| What you see | The likely cause | The fix |
|---|---|---|
| The whole page is in the default language for one user | Their Language is another language, or it is not active | Set the language on the user; activate it in Translation Language Settings |
| One label stays in the default language, others are translated | The words come from another component than the one translated | Find the component (step 1) and translate that one |
| A tab, section header or component title on a Lightning page never translates | It was typed as plain text in Lightning App Builder | Use {!$Label.Name} with a translated Custom Label |
| Labels from an installed package appear in an inactive language | Managed package translations are shown whether or not the language is active | Expected behavior |
| An old object name survives after a rename | List views, reports, templates or names not updated by hand | Rename them by hand |
| Flow text stays in one language | The flow type is not supported, or the text is a template or a merge field value | Check the flow type, then whether the text is a template or merge-field value. |
| Nothing changed after an import | The labels were left unchanged in the file, or the import did not include them | Check the value in Translate |
What to check next
- The map of where every label is translated, for the place each component's translation lives.
- Finding missing translations, to find the next gap before a user reports it.
Related guides
- Translating a Salesforce org: where every label is translatedA map of which Setup page translates which label, how to translate many at once, the metadata types behind them, and how to check the result.
- How to find the Salesforce metadata behind text in LightningA word on a Lightning page can be a field, a picklist value, a Custom Label, a section or a button. How to tell which, and find its API name in Setup, with a query or from the page itself.
- How to translate picklist values in SalesforceCustom picklists, global value sets and standard picklists each keep their translations in a different place; how SOQL, reports and formulas treat them; and a checklist for a value that will not translate.