src/cm/media/js/lib/yui/yui3-3.15.0/build/intl/intl-debug.js
author gibus
Mon, 10 Mar 2014 15:19:48 +0100
changeset 602 e16a97fb364a
permissions -rw-r--r--
Use YUI 3.15
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
602
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     1
YUI.add('intl', function (Y, NAME) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     2
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     3
var _mods = {},
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     4
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     5
    ROOT_LANG = "yuiRootLang",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     6
    ACTIVE_LANG = "yuiActiveLang",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     7
    NONE = [];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     8
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     9
/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    10
 * Provides utilities to support the management of localized resources (strings and formatting patterns).
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    11
 *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    12
 * @module intl
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    13
 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    14
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    15
/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    16
 * The Intl utility provides a central location for managing sets of localized resources (strings and formatting patterns).
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    17
 *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    18
 * @class Intl
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    19
 * @uses EventTarget
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    20
 * @static
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    21
 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    22
Y.mix(Y.namespace("Intl"), {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    23
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    24
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    25
     * Private method to retrieve the language hash for a given module.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    26
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    27
     * @method _mod
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    28
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    29
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    30
     * @param {String} module The name of the module
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    31
     * @return {Object} The hash of localized resources for the module, keyed by BCP language tag
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    32
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    33
    _mod : function(module) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    34
        if (!_mods[module]) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    35
            _mods[module] = {};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    36
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    37
        return _mods[module];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    38
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    39
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    40
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    41
     * Sets the active language for the given module.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    42
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    43
     * Returns false on failure, which would happen if the language had not been registered through the <a href="#method_add">add()</a> method.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    44
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    45
     * @method setLang
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    46
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    47
     * @param {String} module The module name.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    48
     * @param {String} lang The BCP 47 language tag.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    49
     * @return boolean true if successful, false if not.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    50
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    51
    setLang : function(module, lang) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    52
        var langs = this._mod(module),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    53
            currLang = langs[ACTIVE_LANG],
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    54
            exists = !!langs[lang];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    55
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    56
        if (exists && lang !== currLang) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    57
            langs[ACTIVE_LANG] = lang;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    58
            this.fire("intl:langChange", {module: module, prevVal: currLang, newVal: (lang === ROOT_LANG) ? "" : lang});
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    59
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    60
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    61
        return exists;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    62
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    63
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    64
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    65
     * Get the currently active language for the given module.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    66
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    67
     * @method getLang
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    68
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    69
     * @param {String} module The module name.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    70
     * @return {String} The BCP 47 language tag.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    71
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    72
    getLang : function(module) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    73
        var lang = this._mod(module)[ACTIVE_LANG];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    74
        return (lang === ROOT_LANG) ? "" : lang;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    75
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    76
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    77
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    78
     * Register a hash of localized resources for the given module and language
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    79
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    80
     * @method add
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    81
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    82
     * @param {String} module The module name.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    83
     * @param {String} lang The BCP 47 language tag.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    84
     * @param {Object} strings The hash of localized values, keyed by the string name.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    85
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    86
    add : function(module, lang, strings) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    87
        lang = lang || ROOT_LANG;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    88
        this._mod(module)[lang] = strings;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    89
        this.setLang(module, lang);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    90
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    91
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    92
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    93
     * Gets the module's localized resources for the currently active language (as provided by the <a href="#method_getLang">getLang</a> method).
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    94
     * <p>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    95
     * Optionally, the localized resources for alternate languages which have been added to Intl (see the <a href="#method_add">add</a> method) can
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    96
     * be retrieved by providing the BCP 47 language tag as the lang parameter.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    97
     * </p>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    98
     * @method get
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    99
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   100
     * @param {String} module The module name.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   101
     * @param {String} key Optional. A single resource key. If not provided, returns a copy (shallow clone) of all resources.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   102
     * @param {String} lang Optional. The BCP 47 language tag. If not provided, the module's currently active language is used.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   103
     * @return String | Object A copy of the module's localized resources, or a single value if key is provided.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   104
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   105
    get : function(module, key, lang) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   106
        var mod = this._mod(module),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   107
            strs;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   108
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   109
        lang = lang || mod[ACTIVE_LANG];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   110
        strs = mod[lang] || {};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   111
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   112
        return (key) ? strs[key] : Y.merge(strs);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   113
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   114
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   115
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   116
     * Gets the list of languages for which localized resources are available for a given module, based on the module
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   117
     * meta-data (part of loader). If loader is not on the page, returns an empty array.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   118
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   119
     * @method getAvailableLangs
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   120
     * @param {String} module The name of the module
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   121
     * @return {Array} The array of languages available.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   122
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   123
    getAvailableLangs : function(module) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   124
        var loader = Y.Env._loader,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   125
            mod = loader && loader.moduleInfo[module],
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   126
            langs = mod && mod.lang;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   127
        return (langs) ? langs.concat() : NONE;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   128
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   129
    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   130
});
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   131
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   132
Y.augment(Y.Intl, Y.EventTarget);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   133
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   134
/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   135
 * Notification event to indicate when the lang for a module has changed. There is no default behavior associated with this event,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   136
 * so the on and after moments are equivalent.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   137
 *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   138
 * @event intl:langChange
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   139
 * @param {EventFacade} e The event facade
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   140
 * <p>The event facade contains:</p>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   141
 * <dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   142
 *     <dt>module</dt><dd>The name of the module for which the language changed</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   143
 *     <dt>newVal</dt><dd>The new language tag</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   144
 *     <dt>prevVal</dt><dd>The current language tag</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   145
 * </dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   146
 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   147
Y.Intl.publish("intl:langChange", {emitFacade:true});
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   148
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   149
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   150
}, '@VERSION@', {"requires": ["intl-base", "event-custom"]});