src/console/simpleyui.js
function (preferredLanguages, availableLanguages) {

        var i, language, result, index;

        // check whether the list of available languages contains language; if so return it
        function scan(language) {
            var i;
            for (i = 0; i < availableLanguages.length; i += 1) {
                if (language.toLowerCase() === availableLanguages[i].toLowerCase()) {
                    return availableLanguages[i];
                }
            }
        }

        if (Y.Lang.isString(preferredLanguages)) {
            preferredLanguages = preferredLanguages.split(SPLIT_REGEX);
        }

        for (i = 0; i < preferredLanguages.length; i += 1) {
            language = preferredLanguages[i];
            if (!language || language === "*") {
                continue;
            }
            // check the fallback sequence for one language
            while (language.length > 0) {
                result = scan(language);
                if (result) {
                    return result;
                } else {
                    index = language.lastIndexOf("-");
                    if (index >= 0) {
                        language = language.substring(0, index);
                        // one-character subtags get cut along with the following subtag
                        if (index >= 2 && language.charAt(index - 2) === "-") {
                            language = language.substring(0, index - 2);
                        }
                    } else {
                        // nothing available for this language
                        break;
                    }
                }
            }
        }

        return "";
    }
function (preferredLanguages, availableLanguages) {

        var i, language, result, index;

        // check whether the list of available languages contains language; if so return it
        function scan(language) {
            var i;
            for (i = 0; i < availableLanguages.length; i += 1) {
                if (language.toLowerCase() === availableLanguages[i].toLowerCase()) {
                    return availableLanguages[i];
                }
            }
        }

        if (Y.Lang.isString(preferredLanguages)) {
            preferredLanguages = preferredLanguages.split(SPLIT_REGEX);
        }

        for (i = 0; i < preferredLanguages.length; i += 1) {
            language = preferredLanguages[i];
            if (!language || language === "*") {
                continue;
            }
            // check the fallback sequence for one language
            while (language.length > 0) {
                result = scan(language);
                if (result) {
                    return result;
                } else {
                    index = language.lastIndexOf("-");
                    if (index >= 0) {
                        language = language.substring(0, index);
                        // one-character subtags get cut along with the following subtag
                        if (index >= 2 && language.charAt(index - 2) === "-") {
                            language = language.substring(0, index - 2);
                        }
                    } else {
                        // nothing available for this language
                        break;
                    }
                }
            }
        }

        return "";
    }
function ( preferredLanguages , availableLanguages ) { var i , language , result , index ; // check whether the list of available languages contains language; if so return it function scan ( language ) { var i ; for ( i = 0 ; i < availableLanguages . length ; i += 1 ) { if ( language . toLowerCase ( ) === availableLanguages [ i ] . toLowerCase ( ) ) { return availableLanguages [ i ] ; } } } if ( Y . Lang . isString ( preferredLanguages ) ) { preferredLanguages = preferredLanguages . split ( SPLIT_REGEX ) ; } for ( i = 0 ; i < preferredLanguages . length ; i += 1 ) { language = preferredLanguages [ i ] ; if ( ! language || language === "*" ) { continue ; } // check the fallback sequence for one language while ( language . length > 0 ) { result = scan ( language ) ; if ( result ) { return result ; } else { index = language . lastIndexOf ( "-" ) ; if ( index >= 0 ) { language = language . substring ( 0 , index ) ; // one-character subtags get cut along with the following subtag if ( index >= 2 && language . charAt ( index - 2 ) === "-" ) { language = language . substring ( 0 , index - 2 ) ; } } else { // nothing available for this language break ; } } } } return "" ; }
Returns the language among those available that
best matches the preferred language list, using the Lookup
algorithm of BCP 47.
If none of the available languages meets the user's preferences,
then "" is returned.
Extended language ranges are not supported.

@method lookupBestLang
@param {String[] | String} preferredLanguages The list of preferred languages
in descending preference order, represented as BCP 47 language
tags. A string array or a comma-separated list.
@param {String[]} availableLanguages The list of languages
that the application supports, represented as BCP 47 language
tags.

@return {String} The available language that best matches the
preferred language list, or "".
@since 3.1.0
Returns the language among those available that best matches the preferred language list using the Lookup algorithm of BCP 47 . If none of the available languages meets the user s preferences then is returned . Extended language ranges are not supported .