nl_tokens: Returns best matched supported locale and extension info using basic lookup algorithm .
pl_tokens: function lookupMatcher ( service , requestedLocales ) { if ( IS_NULL ( InternalRegExpMatch ( GetServiceRE ( ) , service ) ) ) { throw MakeError ( kWrongServiceType , <mask> ) ; } // Cache these, they don't ever change per service. if ( IS_UNDEFINED ( AVAILABLE_LOCALES [ service ] ) ) { AVAILABLE_LOCALES [ service ] = getAvailableLocalesOf ( service ) ; } for ( var i = 0 ; i < requestedLocales . length ; ++ i ) { // Remove all extensions. var locale = InternalRegExpReplace ( GetAnyExtensionRE ( ) , requestedLocales [ i ] , '' ) ; do { if ( ! IS_UNDEFINED ( AVAILABLE_LOCALES [ service ] [ locale ] ) ) { // Return the resolved locale and extension. var extensionMatch = InternalRegExpMatch ( GetUnicodeExtensionRE ( ) , requestedLocales [ i ] ) ; var extension = IS_NULL ( extensionMatch ) ? '' : extensionMatch [ 0 ] ; return { 'locale' : locale , 'extension' : extension , 'position' : i } ; } // Truncate locale if possible. var pos = % _Call ( StringLastIndexOf , locale , '-' ) ; if ( pos === - 1 ) { break ; } locale = % _Call ( StringSubstring , locale , 0 , pos ) ; } while ( true ) ; } // Didn't find a match, return default. return { 'locale' : GetDefaultICULocaleJS ( ) , 'extension' : '' , 'position' : - 1 } ; }