Universal login - changing language in underlying widgets

Hi everyone,

I have configured multiple languages for my application, and Universal Login seems to be working fine when passing &ui_locales parameter.
However it seems this parameter does not change language in any Widgets like ‘login’ ‘reset-password’ etc

What is the reason? How to make these widgets switch to a target language as well?
I have checked Universal Login template via auth0 CLI editor, it seems that all text values are hardcoded for widgets, is there a way configure it to work as intended?

Hi @mykola.revutskyi,

The behavior you’re seeing occurs because the New Universal Login (NUL) uses a centralized Text Customization engine. While passing the ui_locales parameter tells Auth0 which language to display, it will only render that language if the specific “prompts” (the text inside the widgets like ‘login’ or ‘reset-password’) have been localized within your Auth0 tenant settings. If you see hardcoded values in your CLI editor, they are likely overrides that bypass the automatic localization.

You can read more about Universal Login Internationalization from our official docs:

If you have any other questions, feel free to reach out!

Have a good one,
Vlad

Hi @vlad.murarasu

I have read through this page, it did leave a practical question

I have updated my browser to use ‘fr’ locale(supposedly it is sent in ‘Accept-Language’ header from browser), and I try to enter page with &ui_locales=en

My tenant has both languages selected - now widgets are translated to French always.
If I switch browser setting to English and reverse &ui_locales=fr
Widgets are always in English!

is this how localization works? Does it ignore &ui_locales and always use ‘Accept-Language’ header?

Hi again @mykola.revutskyi,

No, ui_locales should not be ignored. However, Auth0 determines the display language based on a specific hierarchy (from highest priority to lowest):

  1. The ui_locales parameter: If this is present in the login request, it should take top priority.
  2. The Accept-Language header: If no parameter is sent, Auth0 looks at the browser settings.
  3. Tenant Default Language: If neither of the above matches a supported language in your tenant, it falls back to your “Tenant Default.”

If your widgets are following the browser instead of the parameter, one of two things is likely happening:

  1. Parameter Delivery: The ui_locales parameter is being lost or stripped before it reaches the Auth0 /authorize endpoint (common when using certain SDK wrappers).

Open your browser’s Network Tab and trigger the login. Look for the request to /authorize. Verify that ui_locales=fr is actually present in the Query String Parameters. If it’s not, you probably need to update your SDK configuration.

  1. Language Selection: The value passed in ui_locales must exactly match the “Supported Languages” enabled in your Auth0 Dashboard (under Settings > General > Languages).

Have a good one,
Vlad