public static ULocale addLikelySubtags(ULocale loc) {
        String[] tags = new String[3];
        String trailing = null;

        int trailingIndex = parseTagString(
                loc.localeID,
                tags);

        if (trailingIndex < loc.localeID.length()) {
            trailing = loc.localeID.substring(trailingIndex);
        }

        String newLocaleID =
                createLikelySubtagsString(
                        tags[0],
                        tags[1],
                        tags[2],
                        trailing);

        return newLocaleID == null ? loc : new ULocale(newLocaleID);
    }
public static ULocale addLikelySubtags ( ULocale loc ) { String [ ] tags = new String [ 3 ] ; String trailing = null ; int trailingIndex = parseTagString ( loc . localeID , tags ) ; if ( trailingIndex < loc . localeID . length ( ) ) { trailing = loc . localeID . substring ( trailingIndex ) ; } String newLocaleID = createLikelySubtagsString ( tags [ 0 ] , tags [ 1 ] , tags [ 2 ] , trailing ) ; return newLocaleID == null ? loc : new ULocale ( newLocaleID ) ; }
<strong>[icu]</strong> Adds the likely subtags for a provided locale ID, per the algorithm
described in the following CLDR technical report:

http://www.unicode.org/reports/tr35/#Likely_Subtags

If the provided ULocale instance is already in the maximal form, or there is no
data available available for maximization, it will be returned.  For example,
"und-Zzzz" cannot be maximized, since there is no reasonable maximization.
Otherwise, a new ULocale instance with the maximal form is returned.

Examples:

"en" maximizes to "en_Latn_US"

"de" maximizes to "de_Latn_US"

"sr" maximizes to "sr_Cyrl_RS"

"sh" maximizes to "sr_Latn_RS" (Note this will not reverse.)

"zh_Hani" maximizes to "zh_Hans_CN" (Note this will not reverse.)

@param loc The ULocale to maximize
@return The maximized ULocale instance.