Loading core/java/android/content/res/Resources.java +42 −1 Original line number Diff line number Diff line Loading @@ -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) { Loading Loading @@ -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. Loading Loading
core/java/android/content/res/Resources.java +42 −1 Original line number Diff line number Diff line Loading @@ -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) { Loading Loading @@ -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. Loading