Make WordPress Core

Opened 4 years ago

Last modified 5 months ago

#47547 new defect (bug)

switch_to_locale( 'en_US' ) is unreliable

Reported by: johnbillion's profile johnbillion Owned by:
Milestone: Awaiting Review Priority: normal
Severity: normal Version:
Component: I18N Keywords: needs-patch reporter-feedback
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 (4)

#1 @garrett-eclipse
4 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
4 years ago

  • Description modified (diff)

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

#3 @swissspidy
5 months ago

  • Keywords reporter-feedback added

Is this still an issue?

#4 @johnbillion
5 months ago

I believe it is but I'll do some testing to confirm

Note: See TracTickets for help on using tickets.