Explicitly use en_US when picking a Locale using "en"
In the absence of a clear country, this change adds an explicit
FALLBACK entry for Locale.ENGLISH to ensure the device defaults
to en_US. There were reports of en_AU being chosen, which covers
fewer users than en_US.
The code was previously using the first locale that matches the
language obtained from the list returned by:
The ordering for this list is not well defined. The existing
arbitrary behavior will continue for other language-only matches.
This fallback behavior is only used when the device only has a
language signal and other sources on device (i.e. ro.carrier /
R.array.carrier_properties, or MCC code) have not yielded a
language AND country. An example being when the user's sim has
a sim lock set and they have not unlocked the sim yet.
diff --git a/src/java/com/android/internal/telephony/MccTable.java b/src/java/com/android/internal/telephony/MccTable.java
index 1e1fea2..2a531c4 100644
@@ -226,6 +226,8 @@
private static final Map<Locale, Locale> FALLBACKS = new HashMap<Locale, Locale>();
+ // If we have English (without a country) explicitly prioritize en_US. http://b/28998094
+ FALLBACKS.put(Locale.ENGLISH, Locale.US);