Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 031dec4a authored by Narayan Kamath's avatar Narayan Kamath Committed by Android Git Automerger
Browse files

am bfa6ddd0: Merge "Support deprecated language codes."

* commit 'bfa6ddd0':
  Support deprecated language codes.
parents 23315095 bfa6ddd0
Loading
Loading
Loading
Loading
+42 −1
Original line number Diff line number Diff line
@@ -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.