am bfa6ddd0: Merge "Support deprecated language codes."

* commit 'bfa6ddd02d699f43915cba8027ab324d234b4836':
  Support deprecated language codes.
This commit is contained in:
Narayan Kamath
2014-06-16 09:39:57 +00:00
committed by Android Git Automerger

View File

@ -1569,7 +1569,7 @@ public class Resources {
String locale = null;
if (mConfiguration.locale != null) {
locale = mConfiguration.locale.toLanguageTag();
locale = adjustLanguageTag(localeToLanguageTag(mConfiguration.locale));
}
int width, height;
if (mMetrics.widthPixels >= mMetrics.heightPixels) {
@ -1650,6 +1650,47 @@ public class Resources {
}
}
// Locale.toLanguageTag() is not available in Java6. LayoutLib overrides
// this method to enable users to use Java6.
private String localeToLanguageTag(Locale locale) {
return locale.toLanguageTag();
}
/**
* {@code Locale.toLanguageTag} will transform the obsolete (and deprecated)
* language codes "in", "ji" and "iw" to "id", "yi" and "he" respectively.
*
* All released versions of android prior to "L" used the deprecated language
* tags, so we will need to support them for backwards compatibility.
*
* Note that this conversion needs to take place *after* the call to
* {@code toLanguageTag} because that will convert all the deprecated codes to
* the new ones, even if they're set manually.
*/
private static String adjustLanguageTag(String languageTag) {
final int separator = languageTag.indexOf('-');
final String language;
final String remainder;
if (separator == -1) {
language = languageTag;
remainder = "";
} else {
language = languageTag.substring(0, separator);
remainder = languageTag.substring(separator);
}
if ("id".equals(language)) {
return "in" + remainder;
} else if ("yi".equals(language)) {
return "ji" + remainder;
} else if ("he".equals(language)) {
return "iw" + remainder;
} else {
return languageTag;
}
}
/**
* Update the system resources configuration if they have previously
* been initialized.