Show:
                            /**
                             * The Intl utility provides a central location for managing sets of
                             * localized resources (strings and formatting patterns).
                             *
                             * @class Intl
                             * @uses EventTarget
                             * @static
                             */
                            
                            var SPLIT_REGEX = /[, ]/;
                            
                            Y.mix(Y.namespace('Intl'), {
                            
                             /**
                                * 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
                                */
                                lookupBestLang: 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 '';
                                }
                            });