зеркало из https://github.com/mozilla/gecko-dev.git
cc30b8a270
Add additional logic to our language negotation to do apply likelySubtags when a direct match is not available. Currently, if the user specifies the locale with region, and we do not have a direct for that region, we pick all locales for the same language and other regions in no order. The example of where it returns suboptimal results: 1) Requested locale "en-CA" 2) Available locales ["en-ZA", "en-GB", "en-US"] 3) Negotiated locales ["en-ZA", "en-GB", "en-US"] This would not happen, if the user requested a generic "de", "en" etc.: 1) Requested locale "en" 2) Available locales ["en-ZA", "en-GB", "en-US"] 3) Negotiated locales ["en-US", "en-ZA", "en-GB"] because after not finding a direct match, we would use likelySubtags to extend "en" to "en-Latn-US" and then find the priority match in "en-US". This patch extends this logic to "en-US" or "de-LU" by adding a step which strips the region tag and then applies likelySubtag on the result. This means that in absence of direct match the following fallbacks would happen: "de-LU" -> "de-DE" "es-CL" -> "es-ES" "en-CA" -> "en-US" This does not affect languages that use multiple scripts, so ar, sr and zh are not affected. MozReview-Commit-ID: BR1WrgXSf6a --HG-- extra : rebase_source : abc205c4f993680ab0cd0c8b8c016543d5462d01 |
||
---|---|---|
.. | ||
android | ||
gtk | ||
mac | ||
tests | ||
unix | ||
windows | ||
DateTimeFormat.cpp | ||
DateTimeFormat.h | ||
DateTimeFormatAndroid.cpp | ||
LocaleService.cpp | ||
LocaleService.h | ||
OSPreferences.cpp | ||
OSPreferences.h | ||
PluralForm.jsm | ||
encodingsgroups.properties | ||
langGroups.properties | ||
language.properties | ||
moz.build | ||
mozILocaleService.idl | ||
mozIOSPreferences.idl | ||
nsCollation.cpp | ||
nsCollation.h | ||
nsCollationAndroid.cpp | ||
nsCollationCID.h | ||
nsCollationFactory.cpp | ||
nsCollationFactory.h | ||
nsICollation.idl | ||
nsIPlatformCharset.h | ||
nsLanguageAtomService.cpp | ||
nsLanguageAtomService.h | ||
nsLocaleConstructors.h | ||
nsPlatformCharset.h | ||
nsUConvPropertySearch.cpp | ||
nsUConvPropertySearch.h | ||
props2arrays.py |