Make WordPress Core

Opened 2 years ago

Last modified 2 years ago

#47547 new defect (bug)

switch_to_locale( 'en_US' ) is unreliable

Reported by: johnbillion Owned by:
Milestone: Awaiting Review Priority: normal
Severity: normal Version:
Component: I18N Keywords: needs-patch
Focuses: administration Cc:

Description (last modified by garrett-eclipse)

Given a site that uses en_US as its language, a user with their user language set to something else, and that user logged into the admin dashboard, calling switch_to_locale( 'en_US' ) appears to be unreliable.

  1. ❌The return value of determine_locale() is the user's language, not en_US.
  2. ✅Localised text without a textdomain (ie. text from core) is correctly displayed in en_US.
  3. ❌Localised text with a textdomain (ie. text from plugins or themes) is incorrectly displayed in the user's language. This may be related to #39210.

Given a site that itself uses a language other than en_US, calling switch_to_locale( 'en_US' ) does appear to work although I haven't tested it extensively.

Change History (2)

#1 @garrett-eclipse
2 years ago

  • Description modified (diff)

I may be off-base but I believe some findings here can shed some light;
"switch_to_locale() only does something if the locale passed to it is different than the value of get_locale() outside of the admin. Inside the admin, it only switches if it's different than the locale of the current user."

#2 @garrett-eclipse
2 years ago

  • Description modified (diff)

Sorry about the emoji's disappearing, was fixed in meta#3838 so added them back.

Note: See TracTickets for help on using tickets.