intl-messageformat 1.0.1 → 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 +1249 -321
- package/dist/intl-messageformat-with-locales.js.map +1 -0
- package/dist/intl-messageformat-with-locales.min.js +4 -2
- package/dist/intl-messageformat-with-locales.min.js.map +1 -0
- 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/index.js +4 -6
- package/lib/compiler.js +21 -21
- package/lib/core.js +54 -46
- package/lib/en.js +2 -12
- package/lib/es5.js +8 -18
- package/lib/locales.js +752 -161
- package/lib/main.js +5 -14
- package/lib/utils.js +9 -18
- package/package.json +18 -12
- 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,17 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
return src$core$$default;
|
|
7
|
-
},
|
|
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
|
+
*/
|
|
8
6
|
|
|
9
|
-
|
|
10
|
-
}
|
|
11
|
-
}));
|
|
7
|
+
/* jslint esnext: true */
|
|
12
8
|
|
|
9
|
+
"use strict";
|
|
13
10
|
var src$utils$$ = require("./utils"), src$es5$$ = require("./es5"), src$compiler$$ = require("./compiler"), intl$messageformat$parser$$ = require("intl-messageformat-parser");
|
|
14
|
-
|
|
11
|
+
exports["default"] = MessageFormat;
|
|
15
12
|
|
|
16
13
|
// -- MessageFormat --------------------------------------------------------
|
|
17
14
|
|
|
@@ -31,12 +28,11 @@ function MessageFormat(message, locales, formats) {
|
|
|
31
28
|
// Defined first because it's used to build the format pattern.
|
|
32
29
|
src$es5$$.defineProperty(this, '_locale', {value: this._resolveLocale(locales)});
|
|
33
30
|
|
|
34
|
-
var pluralFn = MessageFormat.__localeData__[this._locale].pluralRuleFunction;
|
|
35
|
-
|
|
36
31
|
// Compile the `ast` to a pattern that is highly optimized for repeated
|
|
37
32
|
// `format()` invocations. **Note:** This passes the `locales` set provided
|
|
38
33
|
// to the constructor instead of just the resolved locale.
|
|
39
|
-
var
|
|
34
|
+
var pluralFn = this._findPluralRuleFunction(this._locale);
|
|
35
|
+
var pattern = this._compilePattern(ast, locales, formats, pluralFn);
|
|
40
36
|
|
|
41
37
|
// "Bind" `format()` method to `this` so it can be passed by reference like
|
|
42
38
|
// the other `Intl` APIs.
|
|
@@ -129,21 +125,11 @@ src$es5$$.defineProperty(MessageFormat, '__addLocaleData', {value: function (dat
|
|
|
129
125
|
);
|
|
130
126
|
}
|
|
131
127
|
|
|
132
|
-
|
|
133
|
-
throw new Error(
|
|
134
|
-
'Locale data provided to IntlMessageFormat is missing a ' +
|
|
135
|
-
'`pluralRuleFunction` property'
|
|
136
|
-
);
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
// Message format locale data only requires the first part of the tag.
|
|
140
|
-
var locale = data.locale.toLowerCase().split('-')[0];
|
|
141
|
-
|
|
142
|
-
MessageFormat.__localeData__[locale] = data;
|
|
128
|
+
MessageFormat.__localeData__[data.locale.toLowerCase()] = data;
|
|
143
129
|
}});
|
|
144
130
|
|
|
145
131
|
// Defines `__parse()` static method as an exposed private.
|
|
146
|
-
src$es5$$.defineProperty(MessageFormat, '__parse', {value: intl$messageformat$parser
|
|
132
|
+
src$es5$$.defineProperty(MessageFormat, '__parse', {value: intl$messageformat$parser$$["default"].parse});
|
|
147
133
|
|
|
148
134
|
// Define public `defaultLocale` property which defaults to English, but can be
|
|
149
135
|
// set by the developer.
|
|
@@ -161,10 +147,30 @@ MessageFormat.prototype.resolvedOptions = function () {
|
|
|
161
147
|
};
|
|
162
148
|
|
|
163
149
|
MessageFormat.prototype._compilePattern = function (ast, locales, formats, pluralFn) {
|
|
164
|
-
var compiler = new src$compiler
|
|
150
|
+
var compiler = new src$compiler$$["default"](locales, formats, pluralFn);
|
|
165
151
|
return compiler.compile(ast);
|
|
166
152
|
};
|
|
167
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
|
+
|
|
168
174
|
MessageFormat.prototype._format = function (pattern, values) {
|
|
169
175
|
var result = '',
|
|
170
176
|
i, len, part, id, value;
|
|
@@ -218,38 +224,40 @@ MessageFormat.prototype._mergeFormats = function (defaults, formats) {
|
|
|
218
224
|
};
|
|
219
225
|
|
|
220
226
|
MessageFormat.prototype._resolveLocale = function (locales) {
|
|
221
|
-
if (!locales) {
|
|
222
|
-
locales = MessageFormat.defaultLocale;
|
|
223
|
-
}
|
|
224
|
-
|
|
225
227
|
if (typeof locales === 'string') {
|
|
226
228
|
locales = [locales];
|
|
227
229
|
}
|
|
228
230
|
|
|
231
|
+
// Create a copy of the array so we can push on the default locale.
|
|
232
|
+
locales = (locales || []).concat(MessageFormat.defaultLocale);
|
|
233
|
+
|
|
229
234
|
var localeData = MessageFormat.__localeData__;
|
|
230
|
-
var i, len,
|
|
235
|
+
var i, len, localeParts, data;
|
|
231
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.
|
|
232
242
|
for (i = 0, len = locales.length; i < len; i += 1) {
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
}
|
|
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
|
+
}
|
|
243
252
|
|
|
244
|
-
|
|
245
|
-
if (src$utils$$.hop.call(localeData, locale)) {
|
|
246
|
-
return locale;
|
|
253
|
+
localeParts.pop();
|
|
247
254
|
}
|
|
248
255
|
}
|
|
249
256
|
|
|
257
|
+
var defaultLocale = locales.pop();
|
|
250
258
|
throw new Error(
|
|
251
259
|
'No locale data has been added to IntlMessageFormat for: ' +
|
|
252
|
-
locales.join(', ')
|
|
260
|
+
locales.join(', ') + ', or the default locale: ' + defaultLocale
|
|
253
261
|
);
|
|
254
262
|
};
|
|
255
263
|
|
package/lib/en.js
CHANGED
|
@@ -1,15 +1,5 @@
|
|
|
1
|
+
// GENERATED FILE
|
|
1
2
|
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.seal(Object.defineProperties(exports, {
|
|
4
|
-
default: {
|
|
5
|
-
get: function() {
|
|
6
|
-
return src$en$$default;
|
|
7
|
-
},
|
|
8
|
-
|
|
9
|
-
enumerable: true
|
|
10
|
-
}
|
|
11
|
-
}));
|
|
12
|
-
|
|
13
|
-
var src$en$$default = {"locale":"en","pluralRuleFunction":function (n) {var i=Math.floor(Math.abs(n)),v=n.toString().replace(/^[^.]*\.?/,"").length;n=Math.floor(n);if(i===1&&v===0)return"one";return"other";}};
|
|
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"}};
|
|
14
4
|
|
|
15
5
|
//# sourceMappingURL=en.js.map
|
package/lib/es5.js
CHANGED
|
@@ -1,23 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
return defineProperty;
|
|
7
|
-
},
|
|
8
|
-
|
|
9
|
-
enumerable: true
|
|
10
|
-
},
|
|
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
|
+
*/
|
|
11
6
|
|
|
12
|
-
|
|
13
|
-
get: function() {
|
|
14
|
-
return objCreate;
|
|
15
|
-
},
|
|
16
|
-
|
|
17
|
-
enumerable: true
|
|
18
|
-
}
|
|
19
|
-
}));
|
|
7
|
+
/* jslint esnext: true */
|
|
20
8
|
|
|
9
|
+
"use strict";
|
|
21
10
|
var src$utils$$ = require("./utils");
|
|
22
11
|
|
|
23
12
|
// Purposely using the same implementation as the Intl.js `Intl` polyfill.
|
|
@@ -55,5 +44,6 @@ var objCreate = Object.create || function (proto, props) {
|
|
|
55
44
|
|
|
56
45
|
return obj;
|
|
57
46
|
};
|
|
47
|
+
exports.defineProperty = defineProperty, exports.objCreate = objCreate;
|
|
58
48
|
|
|
59
49
|
//# sourceMappingURL=es5.js.map
|