intl-messageformat 1.0.4 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +44 -18
- package/dist/intl-messageformat-with-locales.js +1247 -320
- package/dist/intl-messageformat-with-locales.js.map +1 -1
- package/dist/intl-messageformat-with-locales.min.js +3 -2
- package/dist/intl-messageformat-with-locales.min.js.map +1 -1
- package/dist/intl-messageformat.js +265 -160
- package/dist/intl-messageformat.js.map +1 -1
- package/dist/intl-messageformat.min.js +1 -1
- package/dist/intl-messageformat.min.js.map +1 -1
- package/dist/locale-data/aa.js +4 -0
- package/dist/locale-data/af.js +3 -1
- package/dist/locale-data/agq.js +2 -0
- package/dist/locale-data/ak.js +2 -1
- package/dist/locale-data/am.js +2 -1
- package/dist/locale-data/ar.js +29 -1
- package/dist/locale-data/as.js +2 -1
- package/dist/locale-data/asa.js +2 -1
- package/dist/locale-data/ast.js +2 -1
- package/dist/locale-data/az.js +5 -1
- package/dist/locale-data/bas.js +2 -0
- package/dist/locale-data/be.js +2 -1
- package/dist/locale-data/bem.js +2 -1
- package/dist/locale-data/bez.js +2 -1
- package/dist/locale-data/bg.js +2 -1
- package/dist/locale-data/bh.js +1 -0
- package/dist/locale-data/bm.js +4 -1
- package/dist/locale-data/bn.js +3 -1
- package/dist/locale-data/bo.js +3 -1
- package/dist/locale-data/br.js +2 -1
- package/dist/locale-data/brx.js +2 -1
- package/dist/locale-data/bs.js +5 -1
- package/dist/locale-data/ca.js +6 -1
- package/dist/locale-data/cgg.js +2 -1
- package/dist/locale-data/chr.js +2 -1
- package/dist/locale-data/ckb.js +1 -0
- package/dist/locale-data/cs.js +2 -1
- package/dist/locale-data/cy.js +2 -1
- package/dist/locale-data/da.js +3 -1
- package/dist/locale-data/dav.js +2 -0
- package/dist/locale-data/de.js +7 -1
- package/dist/locale-data/dje.js +2 -0
- package/dist/locale-data/dsb.js +2 -0
- package/dist/locale-data/dua.js +2 -0
- package/dist/locale-data/dv.js +1 -0
- package/dist/locale-data/dyo.js +2 -0
- package/dist/locale-data/dz.js +2 -1
- package/dist/locale-data/ebu.js +2 -0
- package/dist/locale-data/ee.js +3 -1
- package/dist/locale-data/el.js +3 -1
- package/dist/locale-data/en.js +96 -1
- package/dist/locale-data/eo.js +2 -1
- package/dist/locale-data/es.js +27 -1
- package/dist/locale-data/et.js +2 -1
- package/dist/locale-data/eu.js +2 -1
- package/dist/locale-data/ewo.js +2 -0
- package/dist/locale-data/fa.js +3 -1
- package/dist/locale-data/ff.js +5 -1
- package/dist/locale-data/fi.js +2 -1
- package/dist/locale-data/fil.js +2 -1
- package/dist/locale-data/fo.js +2 -1
- package/dist/locale-data/fr.js +47 -1
- package/dist/locale-data/fur.js +2 -1
- package/dist/locale-data/fy.js +2 -1
- package/dist/locale-data/ga.js +2 -1
- package/dist/locale-data/gd.js +2 -1
- package/dist/locale-data/gl.js +2 -1
- package/dist/locale-data/gsw.js +4 -1
- package/dist/locale-data/gu.js +2 -1
- package/dist/locale-data/guw.js +1 -0
- package/dist/locale-data/guz.js +2 -0
- package/dist/locale-data/gv.js +2 -1
- package/dist/locale-data/ha.js +6 -1
- package/dist/locale-data/haw.js +2 -1
- package/dist/locale-data/he.js +2 -1
- package/dist/locale-data/hi.js +2 -1
- package/dist/locale-data/hr.js +3 -1
- package/dist/locale-data/hsb.js +2 -0
- package/dist/locale-data/hu.js +2 -1
- package/dist/locale-data/hy.js +2 -1
- package/dist/locale-data/ia.js +2 -0
- package/dist/locale-data/id.js +2 -1
- package/dist/locale-data/ig.js +2 -1
- package/dist/locale-data/ii.js +2 -1
- package/dist/locale-data/in.js +1 -0
- package/dist/locale-data/is.js +2 -1
- package/dist/locale-data/it.js +4 -1
- package/dist/locale-data/iu.js +1 -0
- package/dist/locale-data/iw.js +1 -0
- package/dist/locale-data/ja.js +2 -1
- package/dist/locale-data/jbo.js +1 -0
- package/dist/locale-data/jgo.js +2 -1
- package/dist/locale-data/ji.js +1 -0
- package/dist/locale-data/jmc.js +2 -1
- package/dist/locale-data/jv.js +1 -0
- package/dist/locale-data/jw.js +1 -0
- package/dist/locale-data/ka.js +2 -1
- package/dist/locale-data/kab.js +2 -1
- package/dist/locale-data/kaj.js +1 -0
- package/dist/locale-data/kam.js +2 -0
- package/dist/locale-data/kcg.js +1 -0
- package/dist/locale-data/kde.js +2 -1
- package/dist/locale-data/kea.js +2 -1
- package/dist/locale-data/khq.js +2 -0
- package/dist/locale-data/ki.js +2 -0
- package/dist/locale-data/kk.js +3 -1
- package/dist/locale-data/kkj.js +2 -1
- package/dist/locale-data/kl.js +2 -1
- package/dist/locale-data/kln.js +2 -0
- package/dist/locale-data/km.js +2 -1
- package/dist/locale-data/kn.js +2 -1
- package/dist/locale-data/ko.js +3 -1
- package/dist/locale-data/kok.js +2 -0
- package/dist/locale-data/ks.js +3 -1
- package/dist/locale-data/ksb.js +2 -1
- package/dist/locale-data/ksf.js +2 -0
- package/dist/locale-data/ksh.js +2 -1
- package/dist/locale-data/ku.js +1 -0
- package/dist/locale-data/kw.js +2 -1
- package/dist/locale-data/ky.js +3 -1
- package/dist/locale-data/lag.js +2 -1
- package/dist/locale-data/lb.js +2 -0
- package/dist/locale-data/lg.js +2 -1
- package/dist/locale-data/lkt.js +2 -1
- package/dist/locale-data/ln.js +5 -1
- package/dist/locale-data/lo.js +2 -1
- package/dist/locale-data/lt.js +2 -1
- package/dist/locale-data/lu.js +2 -0
- package/dist/locale-data/luo.js +2 -0
- package/dist/locale-data/luy.js +2 -0
- package/dist/locale-data/lv.js +2 -1
- package/dist/locale-data/mas.js +3 -1
- package/dist/locale-data/mer.js +2 -0
- package/dist/locale-data/mfe.js +2 -0
- package/dist/locale-data/mg.js +2 -1
- package/dist/locale-data/mgh.js +2 -0
- package/dist/locale-data/mgo.js +2 -1
- package/dist/locale-data/mk.js +2 -1
- package/dist/locale-data/ml.js +2 -1
- package/dist/locale-data/mn.js +4 -1
- package/dist/locale-data/mo.js +1 -0
- package/dist/locale-data/mr.js +2 -1
- package/dist/locale-data/ms.js +6 -1
- package/dist/locale-data/mt.js +2 -1
- package/dist/locale-data/mua.js +2 -0
- package/dist/locale-data/my.js +2 -1
- package/dist/locale-data/nah.js +1 -0
- package/dist/locale-data/naq.js +2 -1
- package/dist/locale-data/nb.js +3 -1
- package/dist/locale-data/nd.js +2 -1
- package/dist/locale-data/ne.js +3 -1
- package/dist/locale-data/nl.js +8 -1
- package/dist/locale-data/nmg.js +2 -0
- package/dist/locale-data/nn.js +2 -1
- package/dist/locale-data/nnh.js +2 -1
- package/dist/locale-data/no.js +1 -0
- package/dist/locale-data/nqo.js +1 -0
- package/dist/locale-data/nr.js +2 -1
- package/dist/locale-data/nso.js +2 -1
- package/dist/locale-data/nus.js +2 -0
- package/dist/locale-data/ny.js +1 -0
- package/dist/locale-data/nyn.js +2 -1
- package/dist/locale-data/om.js +3 -1
- package/dist/locale-data/or.js +2 -1
- package/dist/locale-data/os.js +3 -1
- package/dist/locale-data/pa.js +5 -1
- package/dist/locale-data/pap.js +1 -0
- package/dist/locale-data/pl.js +2 -1
- package/dist/locale-data/prg.js +1 -0
- package/dist/locale-data/ps.js +2 -1
- package/dist/locale-data/pt.js +10 -1
- package/dist/locale-data/qu.js +4 -0
- package/dist/locale-data/rm.js +2 -1
- package/dist/locale-data/rn.js +2 -0
- package/dist/locale-data/ro.js +3 -1
- package/dist/locale-data/rof.js +2 -1
- package/dist/locale-data/ru.js +7 -1
- package/dist/locale-data/rw.js +2 -0
- package/dist/locale-data/rwk.js +2 -1
- package/dist/locale-data/sah.js +2 -1
- package/dist/locale-data/saq.js +2 -1
- package/dist/locale-data/sbp.js +2 -0
- package/dist/locale-data/se.js +4 -1
- package/dist/locale-data/seh.js +2 -1
- package/dist/locale-data/ses.js +2 -1
- package/dist/locale-data/sg.js +2 -1
- package/dist/locale-data/sh.js +1 -0
- package/dist/locale-data/shi.js +5 -1
- package/dist/locale-data/si.js +2 -1
- package/dist/locale-data/sk.js +2 -1
- package/dist/locale-data/sl.js +2 -1
- package/dist/locale-data/sma.js +1 -0
- package/dist/locale-data/smi.js +1 -0
- package/dist/locale-data/smj.js +1 -0
- package/dist/locale-data/smn.js +2 -0
- package/dist/locale-data/sms.js +1 -0
- package/dist/locale-data/sn.js +2 -1
- package/dist/locale-data/so.js +5 -1
- package/dist/locale-data/sq.js +4 -1
- package/dist/locale-data/sr.js +11 -1
- package/dist/locale-data/ss.js +3 -1
- package/dist/locale-data/ssy.js +2 -1
- package/dist/locale-data/st.js +1 -1
- package/dist/locale-data/sv.js +4 -1
- package/dist/locale-data/sw.js +4 -1
- package/dist/locale-data/swc.js +2 -0
- package/dist/locale-data/syr.js +1 -0
- package/dist/locale-data/ta.js +5 -1
- package/dist/locale-data/te.js +2 -1
- package/dist/locale-data/teo.js +3 -1
- package/dist/locale-data/th.js +2 -1
- package/dist/locale-data/ti.js +3 -1
- package/dist/locale-data/tig.js +1 -1
- package/dist/locale-data/tk.js +1 -0
- package/dist/locale-data/tl.js +1 -0
- package/dist/locale-data/tn.js +3 -1
- package/dist/locale-data/to.js +2 -1
- package/dist/locale-data/tr.js +3 -1
- package/dist/locale-data/ts.js +2 -1
- package/dist/locale-data/twq.js +2 -0
- package/dist/locale-data/tzm.js +3 -1
- package/dist/locale-data/ug.js +3 -1
- package/dist/locale-data/uk.js +2 -1
- package/dist/locale-data/ur.js +3 -1
- package/dist/locale-data/uz.js +7 -1
- package/dist/locale-data/vai.js +5 -0
- package/dist/locale-data/ve.js +2 -1
- package/dist/locale-data/vi.js +2 -1
- package/dist/locale-data/vo.js +2 -1
- package/dist/locale-data/vun.js +2 -1
- package/dist/locale-data/wa.js +1 -0
- package/dist/locale-data/wae.js +2 -1
- package/dist/locale-data/wo.js +1 -0
- package/dist/locale-data/xh.js +1 -1
- package/dist/locale-data/xog.js +2 -1
- package/dist/locale-data/yav.js +2 -0
- package/dist/locale-data/yi.js +2 -0
- package/dist/locale-data/yo.js +3 -1
- package/dist/locale-data/zgh.js +2 -0
- package/dist/locale-data/zh.js +10 -1
- package/dist/locale-data/zu.js +2 -1
- package/lib/compiler.js +21 -10
- package/lib/core.js +52 -33
- package/lib/en.js +2 -1
- package/lib/es5.js +8 -0
- package/lib/locales.js +751 -160
- package/lib/main.js +2 -0
- package/lib/utils.js +8 -0
- package/package.json +6 -6
- package/src/compiler.js +13 -10
- package/src/core.js +44 -33
- package/src/en.js +1 -1
- package/bower.json +0 -40
package/lib/core.js
CHANGED
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
/*
|
|
2
|
+
Copyright (c) 2014, Yahoo! Inc. All rights reserved.
|
|
3
|
+
Copyrights licensed under the New BSD License.
|
|
4
|
+
See the accompanying LICENSE file for terms.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
/* jslint esnext: true */
|
|
8
|
+
|
|
1
9
|
"use strict";
|
|
2
10
|
var src$utils$$ = require("./utils"), src$es5$$ = require("./es5"), src$compiler$$ = require("./compiler"), intl$messageformat$parser$$ = require("intl-messageformat-parser");
|
|
3
11
|
exports["default"] = MessageFormat;
|
|
@@ -20,12 +28,11 @@ function MessageFormat(message, locales, formats) {
|
|
|
20
28
|
// Defined first because it's used to build the format pattern.
|
|
21
29
|
src$es5$$.defineProperty(this, '_locale', {value: this._resolveLocale(locales)});
|
|
22
30
|
|
|
23
|
-
var pluralFn = MessageFormat.__localeData__[this._locale].pluralRuleFunction;
|
|
24
|
-
|
|
25
31
|
// Compile the `ast` to a pattern that is highly optimized for repeated
|
|
26
32
|
// `format()` invocations. **Note:** This passes the `locales` set provided
|
|
27
33
|
// to the constructor instead of just the resolved locale.
|
|
28
|
-
var
|
|
34
|
+
var pluralFn = this._findPluralRuleFunction(this._locale);
|
|
35
|
+
var pattern = this._compilePattern(ast, locales, formats, pluralFn);
|
|
29
36
|
|
|
30
37
|
// "Bind" `format()` method to `this` so it can be passed by reference like
|
|
31
38
|
// the other `Intl` APIs.
|
|
@@ -118,17 +125,7 @@ src$es5$$.defineProperty(MessageFormat, '__addLocaleData', {value: function (dat
|
|
|
118
125
|
);
|
|
119
126
|
}
|
|
120
127
|
|
|
121
|
-
|
|
122
|
-
throw new Error(
|
|
123
|
-
'Locale data provided to IntlMessageFormat is missing a ' +
|
|
124
|
-
'`pluralRuleFunction` property'
|
|
125
|
-
);
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
// Message format locale data only requires the first part of the tag.
|
|
129
|
-
var locale = data.locale.toLowerCase().split('-')[0];
|
|
130
|
-
|
|
131
|
-
MessageFormat.__localeData__[locale] = data;
|
|
128
|
+
MessageFormat.__localeData__[data.locale.toLowerCase()] = data;
|
|
132
129
|
}});
|
|
133
130
|
|
|
134
131
|
// Defines `__parse()` static method as an exposed private.
|
|
@@ -154,6 +151,26 @@ MessageFormat.prototype._compilePattern = function (ast, locales, formats, plura
|
|
|
154
151
|
return compiler.compile(ast);
|
|
155
152
|
};
|
|
156
153
|
|
|
154
|
+
MessageFormat.prototype._findPluralRuleFunction = function (locale) {
|
|
155
|
+
var localeData = MessageFormat.__localeData__;
|
|
156
|
+
var data = localeData[locale.toLowerCase()];
|
|
157
|
+
|
|
158
|
+
// The locale data is de-duplicated, so we have to traverse the locale's
|
|
159
|
+
// hierarchy until we find a `pluralRuleFunction` to return.
|
|
160
|
+
while (data) {
|
|
161
|
+
if (data.pluralRuleFunction) {
|
|
162
|
+
return data.pluralRuleFunction;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
data = data.parentLocale && localeData[data.parentLocale.toLowerCase()];
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
throw new Error(
|
|
169
|
+
'Locale data added to IntlMessageFormat is missing a ' +
|
|
170
|
+
'`pluralRuleFunction` for :' + locale
|
|
171
|
+
);
|
|
172
|
+
};
|
|
173
|
+
|
|
157
174
|
MessageFormat.prototype._format = function (pattern, values) {
|
|
158
175
|
var result = '',
|
|
159
176
|
i, len, part, id, value;
|
|
@@ -207,38 +224,40 @@ MessageFormat.prototype._mergeFormats = function (defaults, formats) {
|
|
|
207
224
|
};
|
|
208
225
|
|
|
209
226
|
MessageFormat.prototype._resolveLocale = function (locales) {
|
|
210
|
-
if (!locales) {
|
|
211
|
-
locales = MessageFormat.defaultLocale;
|
|
212
|
-
}
|
|
213
|
-
|
|
214
227
|
if (typeof locales === 'string') {
|
|
215
228
|
locales = [locales];
|
|
216
229
|
}
|
|
217
230
|
|
|
231
|
+
// Create a copy of the array so we can push on the default locale.
|
|
232
|
+
locales = (locales || []).concat(MessageFormat.defaultLocale);
|
|
233
|
+
|
|
218
234
|
var localeData = MessageFormat.__localeData__;
|
|
219
|
-
var i, len,
|
|
235
|
+
var i, len, localeParts, data;
|
|
220
236
|
|
|
237
|
+
// Using the set of locales + the default locale, we look for the first one
|
|
238
|
+
// which that has been registered. When data does not exist for a locale, we
|
|
239
|
+
// traverse its ancestors to find something that's been registered within
|
|
240
|
+
// its hierarchy of locales. Since we lack the proper `parentLocale` data
|
|
241
|
+
// here, we must take a naive approach to traversal.
|
|
221
242
|
for (i = 0, len = locales.length; i < len; i += 1) {
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
}
|
|
243
|
+
localeParts = locales[i].toLowerCase().split('-');
|
|
244
|
+
|
|
245
|
+
while (localeParts.length) {
|
|
246
|
+
data = localeData[localeParts.join('-')];
|
|
247
|
+
if (data) {
|
|
248
|
+
// Return the normalized locale string; e.g., we return "en-US",
|
|
249
|
+
// instead of "en-us".
|
|
250
|
+
return data.locale;
|
|
251
|
+
}
|
|
232
252
|
|
|
233
|
-
|
|
234
|
-
if (src$utils$$.hop.call(localeData, locale)) {
|
|
235
|
-
return locale;
|
|
253
|
+
localeParts.pop();
|
|
236
254
|
}
|
|
237
255
|
}
|
|
238
256
|
|
|
257
|
+
var defaultLocale = locales.pop();
|
|
239
258
|
throw new Error(
|
|
240
259
|
'No locale data has been added to IntlMessageFormat for: ' +
|
|
241
|
-
locales.join(', ')
|
|
260
|
+
locales.join(', ') + ', or the default locale: ' + defaultLocale
|
|
242
261
|
);
|
|
243
262
|
};
|
|
244
263
|
|
package/lib/en.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
+
// GENERATED FILE
|
|
1
2
|
"use strict";
|
|
2
|
-
exports["default"] = {"locale":"en","pluralRuleFunction":function (n)
|
|
3
|
+
exports["default"] = {"locale":"en","pluralRuleFunction":function (n,ord){var s=String(n).split("."),v0=!s[1],t0=Number(s[0])==n,n10=t0&&s[0].slice(-1),n100=t0&&s[0].slice(-2);if(ord)return n10==1&&n100!=11?"one":n10==2&&n100!=12?"two":n10==3&&n100!=13?"few":"other";return n==1&&v0?"one":"other"}};
|
|
3
4
|
|
|
4
5
|
//# sourceMappingURL=en.js.map
|
package/lib/es5.js
CHANGED