<commit_before>---
description: Internationalization in Universal Login
topics:
  - universal-login
  - internationalization
toc: true
---
# Universal Login Internationalization

## Internationalization in the New Universal Login Experience

The New Universal Login Experience is currently localized to the following languages:

| Code   | Language |
|--------|----------|
| en     | English  |
| es     | Spanish  |

More languages will be added over time. It is currently not possible to add additional languages, or to change the text for a specific language.

### Language Selection

There are several variables that are taken into consideration when deciding in which language the Universal Login pages are going to be rendered:

- The languages supported by Auth0, listed above.
- The list of languages configured in Tenant Settings, where you can limit the languages you want to support and select a default one. 
- The value of the `ui_locales` parameter sent to the [authorization request endpoint](https://openid.net/specs/openid-connect-core-1_0.html#AuthRequest), which specifies the languages that the application redirecting to the Universal Login flow wants the login page to be rendered with. This parameter is only supported in the OAuth2 flow, as there is no equivalent for WS-Federation or SAML.  
- The `Accept-Language` HTTP header sent by the browser. The pages will be rendered in this language if it's allowed by the settings below. If not, pages will be rendered in the default language.

If you don't configure the list of languages in Tenant Settings:
  - if you don't specify the `ui_locales` parameter, the pages will be rendered in English.
  - if you specify the `ui_locales` parameter, pages will be rendered the browser's language when it's in that list, or English otherwise.

### Localization Use Cases

#### Fixed set of languages

All applications support a limited set of languages, and you probably want the login pages to be rendered in one of those. If your website is in English your probably don't want to render a login page in Spanish even if the user's browser is set to Spanish.

You should configure the languages your application supports in the Languages section in Tenant Settings, including a default one. The login page will be rendered in the language configured in the browser when it's also supported by the tenant, and in the default language when not.



The login pages will be rendered in one of those languages, depending on the user's browser settings. 

If your website supports being rendered in a few languages, and you want to respect the users browser's settings when possible, you just need to configure your tenant to support those languages and select a default one. If the user's browser is configured to use one of the supported languages, it will be respected, if not, pages will be rendered in the tenant default language. 

#### Language decided by the Application

Some applications let you select a language before you authenticate. If that's the case, you'd want to use the selected language when rendering the login pages, by specifying the `ui_locales` parameter when directing to the `/authorize` endpoint.


## Internationalization in the Classic Universal Login Experience

In the Classic Universal Login experience, localization is done using our JavaScript widgets for [login](/libraries/lock/v11/i18n), the [password reset page](/universal-login/password-reset) and [password policies](/i18n/password-options). 

The [Guardian MFA page](/universal-login/guardian) by default uses the MFA Widget, which cannot be localized. You can create localized versions by using [guardian.js](https://github.com/auth0/auth0-guardian.js).

It is not possible to localize the Consent page.
<commit_msg>Simplified structure<commit_after>---
description: Internationalization in Universal Login
topics:
  - universal-login
  - internationalization
toc: true
---
# Universal Login Internationalization

## Internationalization in the New Universal Login Experience

The New Universal Login Experience is currently localized to the languages above, with more languages to be added over time:

| Code   | Language  |
|--------|-----------|
| en     | English   |
| es     | Spanish   |
| da     | Danish    |
| de     | German    |
| fi     | Finnish   |
| fr     | French    |
| ja     | Japanese  |
| nb     | Norwegian |
| nl     | Dutch     |
| pt-PT  | Portuguese|
| sv     | Swedish   |

### Language Selection

The language to render the pages will be selected based on:

- The languages supported by Auth0, listed above.
- The list of languages configured in Tenant Settings, where you can select the languages your tenant supports and select a default one.
- The value of the `ui_locales` parameter sent to the [authorization request endpoint](https://openid.net/specs/openid-connect-core-1_0.html#AuthRequest), which can be used to constrain the language list for an application or session.
- The `Accept-Language` HTTP header sent by the browser. The pages will be rendered in this language if it's allowed by the settings below. If not, pages will be rendered in the default language.

If you don't configure the list of languages in Tenant Settings:
  - if you don't specify the `ui_locales` parameter, the pages will be rendered in English.
  - if you specify the `ui_locales` parameter, pages will be rendered the browser's language when it's in that list, or English otherwise.

### Current Limitations

- It's not possible to add additional languages.
- It's not possible to override the copy for a specific text.
- The ui_locales parameter can only be used in OAuth0 flows, as it’s not available in SAML or WS-Federation.
- The ui_locales parameter is not forwarded to upstream IdPs.
- The tenant languages can only be specified using the Management API.

## Internationalization in the Classic Universal Login Experience

In the Classic Universal Login experience, localization is done using our JavaScript widgets for [login](/libraries/lock/v11/i18n), the [password reset page](/universal-login/password-reset) and [password policies](/i18n/password-options). 

The [Guardian MFA page](/universal-login/guardian) by default uses the MFA Widget, which cannot be localized. You can create localized versions by using [guardian.js](https://github.com/auth0/auth0-guardian.js).

It is not possible to localize the Consent page.

{'fraction_non_alphanumeric': 0.06395258150054593, 'fraction_numerical': 0.003743565746373421, 'mean_word_length': 4.068774703557312, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 4, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6792830', 'n_tokens_mistral': 1595, 'n_tokens_neox': 1529, 'n_words': 867}