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

Commit bfa6ddd0 authored by Narayan Kamath's avatar Narayan Kamath Committed by Gerrit Code Review
Browse files

Merge "Support deprecated language codes."

parents 748f4b8d e79c8ce6
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.