src/cm/media/js/lib/yui/yui_3.10.3/build/intl-base/intl-base-debug.js
author Yves-Marie Haussonne <ymh.work+github@gmail.com>
Fri, 09 May 2014 18:35:26 +0200
changeset 656 a84519031134
parent 525 89ef5ed3c48b
permissions -rw-r--r--
add link to "privacy policy" in the header test
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
525
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     1
/*
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     2
YUI 3.10.3 (build 2fb5187)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     3
Copyright 2013 Yahoo! Inc. All rights reserved.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     4
Licensed under the BSD License.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     5
http://yuilibrary.com/license/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     6
*/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     7
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     8
YUI.add('intl-base', function (Y, NAME) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     9
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    10
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    11
 * The Intl utility provides a central location for managing sets of
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    12
 * localized resources (strings and formatting patterns).
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    13
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    14
 * @class Intl
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    15
 * @uses EventTarget
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    16
 * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    17
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    18
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    19
var SPLIT_REGEX = /[, ]/;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    20
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    21
Y.mix(Y.namespace('Intl'), {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    22
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    23
 /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    24
    * Returns the language among those available that
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    25
    * best matches the preferred language list, using the Lookup
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    26
    * algorithm of BCP 47.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    27
    * If none of the available languages meets the user's preferences,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    28
    * then "" is returned.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    29
    * Extended language ranges are not supported.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    30
    *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    31
    * @method lookupBestLang
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    32
    * @param {String[] | String} preferredLanguages The list of preferred
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    33
    * languages in descending preference order, represented as BCP 47
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    34
    * language tags. A string array or a comma-separated list.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    35
    * @param {String[]} availableLanguages The list of languages
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    36
    * that the application supports, represented as BCP 47 language
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    37
    * tags.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    38
    *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    39
    * @return {String} The available language that best matches the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    40
    * preferred language list, or "".
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    41
    * @since 3.1.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    42
    */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    43
    lookupBestLang: function(preferredLanguages, availableLanguages) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    44
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    45
        var i, language, result, index;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    46
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    47
        // check whether the list of available languages contains language;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    48
        // if so return it
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    49
        function scan(language) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    50
            var i;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    51
            for (i = 0; i < availableLanguages.length; i += 1) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    52
                if (language.toLowerCase() ===
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    53
                            availableLanguages[i].toLowerCase()) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    54
                    return availableLanguages[i];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    55
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    56
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    57
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    58
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    59
        if (Y.Lang.isString(preferredLanguages)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    60
            preferredLanguages = preferredLanguages.split(SPLIT_REGEX);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    61
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    62
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    63
        for (i = 0; i < preferredLanguages.length; i += 1) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    64
            language = preferredLanguages[i];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    65
            if (!language || language === '*') {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    66
                continue;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    67
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    68
            // check the fallback sequence for one language
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    69
            while (language.length > 0) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    70
                result = scan(language);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    71
                if (result) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    72
                    return result;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    73
                } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    74
                    index = language.lastIndexOf('-');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    75
                    if (index >= 0) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    76
                        language = language.substring(0, index);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    77
                        // one-character subtags get cut along with the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    78
                        // following subtag
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    79
                        if (index >= 2 && language.charAt(index - 2) === '-') {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    80
                            language = language.substring(0, index - 2);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    81
                        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    82
                    } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    83
                        // nothing available for this language
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    84
                        break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    85
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    86
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    87
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    88
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    89
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    90
        return '';
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    91
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    92
});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    93
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    94
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    95
}, '3.10.3', {"requires": ["yui-base"]});