diff options
| author | Narayan Kamath <narayan@google.com> | 2014-06-16 09:39:57 +0000 |
|---|---|---|
| committer | Android Git Automerger <android-git-automerger@android.com> | 2014-06-16 09:39:57 +0000 |
| commit | 031dec4acd384ae6c5ab183139c7f91289a05f62 (patch) | |
| tree | b3cde866a180a14b9cd3484f071946511619692d | |
| parent | 23315095f1d1f647311ad0fcf05ddb152ad9452d (diff) | |
| parent | bfa6ddd02d699f43915cba8027ab324d234b4836 (diff) | |
| download | frameworks_base-031dec4acd384ae6c5ab183139c7f91289a05f62.zip frameworks_base-031dec4acd384ae6c5ab183139c7f91289a05f62.tar.gz frameworks_base-031dec4acd384ae6c5ab183139c7f91289a05f62.tar.bz2 | |
am bfa6ddd0: Merge "Support deprecated language codes."
* commit 'bfa6ddd02d699f43915cba8027ab324d234b4836':
Support deprecated language codes.
| -rw-r--r-- | core/java/android/content/res/Resources.java | 43 |
1 files changed, 42 insertions, 1 deletions
diff --git a/core/java/android/content/res/Resources.java b/core/java/android/content/res/Resources.java index 3d9daca..3db9ddb 100644 --- a/core/java/android/content/res/Resources.java +++ b/core/java/android/content/res/Resources.java @@ -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. |
