public ULocale getFunctionalEquivalent ( ULocale locale , boolean [ ] isAvailable ) { if ( isAvailable != null && isAvailable . length > 0 ) { String localeId = ULocale . canonicalize ( locale . getBaseName ( ) ) ; Map < String , String > idMap = getLocaleIdToRulesIdMap ( PluralType . CARDINAL ) ; isAvailable [ 0 ] = idMap . containsKey ( localeId ) ; } String rulesId = getRulesIdForLocale ( locale , PluralType . CARDINAL ) ; if ( rulesId == null || rulesId . trim ( ) . length ( ) == 0 ) { return ULocale . ROOT ; // ultimate fallback } ULocale result = getRulesIdToEquivalentULocaleMap ( ) . get ( rulesId ) ; if ( result == null ) { return ULocale . ROOT ; // ultimate fallback } return result ; }
Returns the functionally equivalent locale .