src/cm/media/js/lib/yui/yui_3.10.3/build/widget-locale/widget-locale.js
author gibus
Tue, 16 Jul 2013 14:29:46 +0200
changeset 525 89ef5ed3c48b
permissions -rw-r--r--
Upgrades to yui 3.10.3
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('widget-locale', 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
 * Provides string support for widget with BCP 47 language tag lookup. This module has been deprecated.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    12
 * It's replaced by the "intl" module which provides generic internationalization and BCP 47 language tag
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    13
 * support with externalization.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    14
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    15
 * @module widget-locale
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    16
 * @deprecated This module has been deprecated. It's replaced by the "intl" module which provides
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    17
 * generic internationalization and BCP 47 language tag support with externalization.
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 TRUE = true,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    20
    LOCALE = "locale",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    21
    INIT_VALUE = "initValue",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    22
    HYPHEN = "-",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    23
    EMPTY_STR = "",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    24
    Widget = Y.Widget;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    25
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    26
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    27
 * @attribute locale
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    28
 * @deprecated Use Y.config.lang and Y.Intl externalization support
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    29
 * @description
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    30
 * The default locale for the widget. NOTE: Using get/set on the "strings" attribute will
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    31
 * return/set strings for this locale.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    32
 * @default "en"
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    33
 * @type String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    34
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    35
Widget.ATTRS[LOCALE] = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    36
    value: "en"
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    37
};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    38
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    39
// Since strings support with locale needs the private _strs setup
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    40
Widget.ATTRS.strings.lazyAdd = false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    41
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    42
Y.mix(Widget.prototype, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    43
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    44
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    45
     * Sets strings for a particular locale, merging with any existing
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    46
     * strings which may already be defined for the locale.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    47
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    48
     * @method _setStrings
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    49
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    50
     * @param {Object} strings The hash of string key/values to set
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    51
     * @param {Object} locale The locale for the string values being set
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    52
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    53
    _setStrings : function(strings, locale) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    54
        var strs = this._strs;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    55
        locale = locale.toLowerCase();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    56
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    57
        if (!strs[locale]) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    58
            strs[locale] = {};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    59
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    60
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    61
        Y.aggregate(strs[locale], strings, TRUE);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    62
        return strs[locale];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    63
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    64
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    65
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    66
     * Returns the strings key/value hash for a paricular locale, without locale lookup applied.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    67
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    68
     * @method _getStrings
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    69
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    70
     * @param {Object} locale
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    71
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    72
    _getStrings : function(locale) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    73
        return this._strs[locale.toLowerCase()];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    74
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    75
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    76
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    77
     * Gets the entire strings hash for a particular locale, performing locale lookup.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    78
     * <p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    79
     * If no values of the key are defined for a particular locale the value for the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    80
     * default locale (in initial locale set for the class) is returned.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    81
     * </p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    82
     * @method getStrings
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    83
     * @param {String} locale (optional) The locale for which the string value is required. Defaults to the current locale, if not provided.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    84
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    85
    // TODO: Optimize/Cache. Clear cache on _setStrings call.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    86
    getStrings : function(locale) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    87
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    88
        locale = (locale || this.get(LOCALE)).toLowerCase();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    89
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    90
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    91
        var defLocale = this.getDefaultLocale().toLowerCase(),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    92
            defStrs = this._getStrings(defLocale),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    93
            strs = (defStrs) ? Y.merge(defStrs) : {},
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    94
            localeSegments = locale.split(HYPHEN),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    95
            localeStrs,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    96
            i, l,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    97
            lookup;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    98
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    99
        // If locale is different than the default, or needs lookup support
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   100
        if (locale !== defLocale || localeSegments.length > 1) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   101
            lookup = EMPTY_STR;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   102
            for (i = 0, l = localeSegments.length; i < l; ++i) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   103
                lookup += localeSegments[i];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   104
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   105
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   106
                localeStrs = this._getStrings(lookup);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   107
                if (localeStrs) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   108
                    Y.aggregate(strs, localeStrs, TRUE);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   109
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   110
                lookup += HYPHEN;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   111
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   112
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   113
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   114
        return strs;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   115
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   116
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   117
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   118
     * Gets the string for a particular key, for a particular locale, performing locale lookup.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   119
     * <p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   120
     * If no values if defined for the key, for the given locale, the value for the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   121
     * default locale (in initial locale set for the class) is returned.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   122
     * </p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   123
     * @method getString
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   124
     * @param {String} key The key.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   125
     * @param {String} locale (optional) The locale for which the string value is required. Defaults to the current locale, if not provided.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   126
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   127
    getString : function(key, locale) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   128
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   129
        locale = (locale || this.get(LOCALE)).toLowerCase();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   130
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   131
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   132
        var defLocale = (this.getDefaultLocale()).toLowerCase(),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   133
            strs = this._getStrings(defLocale) || {},
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   134
            str = strs[key],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   135
            idx = locale.lastIndexOf(HYPHEN);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   136
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   137
        // If locale is different than the default, or needs lookup support
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   138
        if (locale !== defLocale || idx != -1) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   139
            do {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   140
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   141
                strs = this._getStrings(locale);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   142
                if (strs && key in strs) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   143
                    str = strs[key];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   144
                    break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   145
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   146
                idx = locale.lastIndexOf(HYPHEN);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   147
                // Chop of last locale segment
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   148
                if (idx != -1) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   149
                    locale = locale.substring(0, idx);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   150
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   151
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   152
            } while (idx != -1);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   153
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   154
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   155
        return str;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   156
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   157
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   158
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   159
     * Returns the default locale for the widget (the locale value defined by the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   160
     * widget class, or provided by the user during construction).
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   161
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   162
     * @method getDefaultLocale
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   163
     * @return {String} The default locale for the widget
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   164
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   165
    getDefaultLocale : function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   166
        return this._state.get(LOCALE, INIT_VALUE);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   167
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   168
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   169
    _strSetter : function(val) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   170
        return this._setStrings(val, this.get(LOCALE));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   171
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   172
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   173
    _strGetter : function(val) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   174
        return this._getStrings(this.get(LOCALE));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   175
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   176
}, true);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   177
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   178
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   179
}, '3.10.3', {"requires": ["widget-base"]});