aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDi Peng2011-08-17 14:43:38 -0700
committerIgor Minar2011-08-30 02:11:09 -0700
commit545b31aa2ef20ad241be0a3d87ae328fdbf2404a (patch)
tree6009e16d818d968198c67cb47b9084ac34e5ffef
parente068addadb14b44374ebb5353b860700731c866f (diff)
downloadangular.js-545b31aa2ef20ad241be0a3d87ae328fdbf2404a.tar.bz2
feat(closureSlurper): closureSlurper plural rules
- fetch plural rules from closure - distribtue pluralization rules into each locale specific files
-rw-r--r--i18n/closure/pluralRules.js738
-rw-r--r--i18n/src/closureSlurper.js38
-rwxr-xr-xi18n/update-closure.sh1
3 files changed, 770 insertions, 7 deletions
diff --git a/i18n/closure/pluralRules.js b/i18n/closure/pluralRules.js
new file mode 100644
index 00000000..5f9dd416
--- /dev/null
+++ b/i18n/closure/pluralRules.js
@@ -0,0 +1,738 @@
+// Copyright 2011 The Closure Library Authors. All Rights Reserved
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS-IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+/**
+ * @fileoverview Plural rules.
+ *
+ * This file is autogenerated by script:
+ * http://go/generate_pluralrules.py
+ * using the --for_closure flag.
+ *
+ * To reduce the file size (which may cause issues in some JS
+ * developing environments), this file will only contain locales
+ * that are usually supported by google products. This is defined as
+ * closure_tier1_locales and will change (most likely addition)
+ * over time. Rest of the data can be found in another file named
+ * "pluralrulesext.js", which will be generated at the
+ * same time together with this file.
+ *
+ * Before checkin, this file could have been manually edited. This is
+ * to incorporate changes before we could fix CLDR. All manual
+ * modification must be documented in this section, and should be
+ * removed after those changes land to CLDR.
+ */
+
+goog.provide('goog.i18n.pluralRules');
+
+
+/**
+ * Plural pattern keyword
+ * @enum {string}
+ */
+goog.i18n.pluralRules.Keyword = {
+ ZERO: 'zero',
+ ONE: 'one',
+ TWO: 'two',
+ FEW: 'few',
+ MANY: 'many',
+ OTHER: 'other'
+};
+
+
+/**
+ * Default plural select rule.
+ * @param {number} n The count of items.
+ * @return {goog.i18n.pluralRules.Keyword} Default plural value.
+ * @private
+ */
+goog.i18n.pluralRules.defaultSelect_ = function(n) {
+ return goog.i18n.pluralRules.Keyword.OTHER;
+};
+
+
+/**
+ * Plural select rules for ar locale
+ *
+ * @param {number} n The count of items.
+ * @return {goog.i18n.pluralRules.Keyword} Locale specific plural value.
+ * @private
+ */
+goog.i18n.pluralRules.arSelect_ = function(n) {
+ if (n == 0) {
+ return goog.i18n.pluralRules.Keyword.ZERO;
+ }
+ if (n == 1) {
+ return goog.i18n.pluralRules.Keyword.ONE;
+ }
+ if (n == 2) {
+ return goog.i18n.pluralRules.Keyword.TWO;
+ }
+ if ((n % 100) >= 3 && (n % 100) <= 10 && n == Math.floor(n)) {
+ return goog.i18n.pluralRules.Keyword.FEW;
+ }
+ if ((n % 100) >= 11 && (n % 100) <= 99 && n == Math.floor(n)) {
+ return goog.i18n.pluralRules.Keyword.MANY;
+ }
+ return goog.i18n.pluralRules.Keyword.OTHER;
+};
+
+
+/**
+ * Plural select rules for en locale
+ *
+ * @param {number} n The count of items.
+ * @return {goog.i18n.pluralRules.Keyword} Locale specific plural value.
+ * @private
+ */
+goog.i18n.pluralRules.enSelect_ = function(n) {
+ if (n == 1) {
+ return goog.i18n.pluralRules.Keyword.ONE;
+ }
+ return goog.i18n.pluralRules.Keyword.OTHER;
+};
+
+
+/**
+ * Plural select rules for fil locale
+ *
+ * @param {number} n The count of items.
+ * @return {goog.i18n.pluralRules.Keyword} Locale specific plural value.
+ * @private
+ */
+goog.i18n.pluralRules.filSelect_ = function(n) {
+ if (n == 0 || n == 1) {
+ return goog.i18n.pluralRules.Keyword.ONE;
+ }
+ return goog.i18n.pluralRules.Keyword.OTHER;
+};
+
+
+/**
+ * Plural select rules for fr locale
+ *
+ * @param {number} n The count of items.
+ * @return {goog.i18n.pluralRules.Keyword} Locale specific plural value.
+ * @private
+ */
+goog.i18n.pluralRules.frSelect_ = function(n) {
+ if (n >= 0 && n < 2) {
+ return goog.i18n.pluralRules.Keyword.ONE;
+ }
+ return goog.i18n.pluralRules.Keyword.OTHER;
+};
+
+
+/**
+ * Plural select rules for lv locale
+ *
+ * @param {number} n The count of items.
+ * @return {goog.i18n.pluralRules.Keyword} Locale specific plural value.
+ * @private
+ */
+goog.i18n.pluralRules.lvSelect_ = function(n) {
+ if (n == 0) {
+ return goog.i18n.pluralRules.Keyword.ZERO;
+ }
+ if ((n % 10) == 1 && (n % 100) != 11) {
+ return goog.i18n.pluralRules.Keyword.ONE;
+ }
+ return goog.i18n.pluralRules.Keyword.OTHER;
+};
+
+
+/**
+ * Plural select rules for ga locale
+ *
+ * @param {number} n The count of items.
+ * @return {goog.i18n.pluralRules.Keyword} Locale specific plural value.
+ * @private
+ */
+goog.i18n.pluralRules.gaSelect_ = function(n) {
+ if (n == 1) {
+ return goog.i18n.pluralRules.Keyword.ONE;
+ }
+ if (n == 2) {
+ return goog.i18n.pluralRules.Keyword.TWO;
+ }
+ return goog.i18n.pluralRules.Keyword.OTHER;
+};
+
+
+/**
+ * Plural select rules for ro locale
+ *
+ * @param {number} n The count of items.
+ * @return {goog.i18n.pluralRules.Keyword} Locale specific plural value.
+ * @private
+ */
+goog.i18n.pluralRules.roSelect_ = function(n) {
+ if (n == 1) {
+ return goog.i18n.pluralRules.Keyword.ONE;
+ }
+ if (n == 0 || n != 1 && (n % 100) >= 1 &&
+ (n % 100) <= 19 && n == Math.floor(n)) {
+ return goog.i18n.pluralRules.Keyword.FEW;
+ }
+ return goog.i18n.pluralRules.Keyword.OTHER;
+};
+
+
+/**
+ * Plural select rules for lt locale
+ *
+ * @param {number} n The count of items.
+ * @return {goog.i18n.pluralRules.Keyword} Locale specific plural value.
+ * @private
+ */
+goog.i18n.pluralRules.ltSelect_ = function(n) {
+ if ((n % 10) == 1 && ((n % 100) < 11 || (n % 100) > 19)) {
+ return goog.i18n.pluralRules.Keyword.ONE;
+ }
+ if ((n % 10) >= 2 && (n % 10) <= 9 &&
+ ((n % 100) < 11 || (n % 100) > 19) && n == Math.floor(n)) {
+ return goog.i18n.pluralRules.Keyword.FEW;
+ }
+ return goog.i18n.pluralRules.Keyword.OTHER;
+};
+
+
+/**
+ * Plural select rules for hr locale
+ *
+ * @param {number} n The count of items.
+ * @return {goog.i18n.pluralRules.Keyword} Locale specific plural value.
+ * @private
+ */
+goog.i18n.pluralRules.hrSelect_ = function(n) {
+ if ((n % 10) == 1 && (n % 100) != 11) {
+ return goog.i18n.pluralRules.Keyword.ONE;
+ }
+ if ((n % 10) >= 2 && (n % 10) <= 4 &&
+ ((n % 100) < 12 || (n % 100) > 14) && n == Math.floor(n)) {
+ return goog.i18n.pluralRules.Keyword.FEW;
+ }
+ if ((n % 10) == 0 || ((n % 10) >= 5 && (n % 10) <= 9) ||
+ ((n % 100) >= 11 && (n % 100) <= 14) && n == Math.floor(n)) {
+ return goog.i18n.pluralRules.Keyword.MANY;
+ }
+ return goog.i18n.pluralRules.Keyword.OTHER;
+};
+
+
+/**
+ * Plural select rules for cs locale
+ *
+ * @param {number} n The count of items.
+ * @return {goog.i18n.pluralRules.Keyword} Locale specific plural value.
+ * @private
+ */
+goog.i18n.pluralRules.csSelect_ = function(n) {
+ if (n == 1) {
+ return goog.i18n.pluralRules.Keyword.ONE;
+ }
+ if (n == 2 || n == 3 || n == 4) {
+ return goog.i18n.pluralRules.Keyword.FEW;
+ }
+ return goog.i18n.pluralRules.Keyword.OTHER;
+};
+
+
+/**
+ * Plural select rules for pl locale
+ *
+ * @param {number} n The count of items.
+ * @return {goog.i18n.pluralRules.Keyword} Locale specific plural value.
+ * @private
+ */
+goog.i18n.pluralRules.plSelect_ = function(n) {
+ if (n == 1) {
+ return goog.i18n.pluralRules.Keyword.ONE;
+ }
+ if ((n % 10) >= 2 && (n % 10) <= 4 &&
+ ((n % 100) < 12 || (n % 100) > 14) && n == Math.floor(n)) {
+ return goog.i18n.pluralRules.Keyword.FEW;
+ }
+ if ((n % 10) == 0 || n != 1 && (n % 10) == 1 ||
+ ((n % 10) >= 5 && (n % 10) <= 9 || (n % 100) >= 12 && (n % 100) <= 14) &&
+ n == Math.floor(n)) {
+ return goog.i18n.pluralRules.Keyword.MANY;
+ }
+ return goog.i18n.pluralRules.Keyword.OTHER;
+};
+
+
+/**
+ * Plural select rules for sl locale
+ *
+ * @param {number} n The count of items.
+ * @return {goog.i18n.pluralRules.Keyword} Locale specific plural value.
+ * @private
+ */
+goog.i18n.pluralRules.slSelect_ = function(n) {
+ if ((n % 100) == 1) {
+ return goog.i18n.pluralRules.Keyword.ONE;
+ }
+ if ((n % 100) == 2) {
+ return goog.i18n.pluralRules.Keyword.TWO;
+ }
+ if ((n % 100) == 3 || (n % 100) == 4) {
+ return goog.i18n.pluralRules.Keyword.FEW;
+ }
+ return goog.i18n.pluralRules.Keyword.OTHER;
+};
+
+
+/**
+ * Plural select rules for mt locale
+ *
+ * @param {number} n The count of items.
+ * @return {goog.i18n.pluralRules.Keyword} Locale specific plural value.
+ * @private
+ */
+goog.i18n.pluralRules.mtSelect_ = function(n) {
+ if (n == 1) {
+ return goog.i18n.pluralRules.Keyword.ONE;
+ }
+ if (n == 0 || ((n % 100) >= 2 && (n % 100) <= 4 && n == Math.floor(n))) {
+ return goog.i18n.pluralRules.Keyword.FEW;
+ }
+ if ((n % 100) >= 11 && (n % 100) <= 19 && n == Math.floor(n)) {
+ return goog.i18n.pluralRules.Keyword.MANY;
+ }
+ return goog.i18n.pluralRules.Keyword.OTHER;
+};
+
+
+/**
+ * Plural select rules for mk locale
+ *
+ * @param {number} n The count of items.
+ * @return {goog.i18n.pluralRules.Keyword} Locale specific plural value.
+ * @private
+ */
+goog.i18n.pluralRules.mkSelect_ = function(n) {
+ if ((n % 10) == 1 && n != 11) {
+ return goog.i18n.pluralRules.Keyword.ONE;
+ }
+ return goog.i18n.pluralRules.Keyword.OTHER;
+};
+
+
+/**
+ * Plural select rules for cy locale
+ *
+ * @param {number} n The count of items.
+ * @return {goog.i18n.pluralRules.Keyword} Locale specific plural value.
+ * @private
+ */
+goog.i18n.pluralRules.cySelect_ = function(n) {
+ if (n == 0) {
+ return goog.i18n.pluralRules.Keyword.ZERO;
+ }
+ if (n == 1) {
+ return goog.i18n.pluralRules.Keyword.ONE;
+ }
+ if (n == 2) {
+ return goog.i18n.pluralRules.Keyword.TWO;
+ }
+ if (n == 3) {
+ return goog.i18n.pluralRules.Keyword.FEW;
+ }
+ if (n == 6) {
+ return goog.i18n.pluralRules.Keyword.MANY;
+ }
+ return goog.i18n.pluralRules.Keyword.OTHER;
+};
+
+
+/**
+ * Plural select rules for lag locale
+ *
+ * @param {number} n The count of items.
+ * @return {goog.i18n.pluralRules.Keyword} Locale specific plural value.
+ * @private
+ */
+goog.i18n.pluralRules.lagSelect_ = function(n) {
+ if (n == 0) {
+ return goog.i18n.pluralRules.Keyword.ZERO;
+ }
+ if (n > 0 && n < 2) {
+ return goog.i18n.pluralRules.Keyword.ONE;
+ }
+ return goog.i18n.pluralRules.Keyword.OTHER;
+};
+
+
+/**
+ * Plural select rules for shi locale
+ *
+ * @param {number} n The count of items.
+ * @return {goog.i18n.pluralRules.Keyword} Locale specific plural value.
+ * @private
+ */
+goog.i18n.pluralRules.shiSelect_ = function(n) {
+ if (n >= 0 && n <= 1) {
+ return goog.i18n.pluralRules.Keyword.ONE;
+ }
+ if (n >= 2 && n <= 10 && n == Math.floor(n)) {
+ return goog.i18n.pluralRules.Keyword.FEW;
+ }
+ return goog.i18n.pluralRules.Keyword.OTHER;
+};
+
+
+/**
+ * Plural select rules for br locale
+ *
+ * @param {number} n The count of items.
+ * @return {goog.i18n.pluralRules.Keyword} Locale specific plural value.
+ * @private
+ */
+goog.i18n.pluralRules.brSelect_ = function(n) {
+ if (n == 0) {
+ return goog.i18n.pluralRules.Keyword.ZERO;
+ }
+ if (n == 1) {
+ return goog.i18n.pluralRules.Keyword.ONE;
+ }
+ if (n == 2) {
+ return goog.i18n.pluralRules.Keyword.TWO;
+ }
+ if (n == 3) {
+ return goog.i18n.pluralRules.Keyword.FEW;
+ }
+ if (n == 6) {
+ return goog.i18n.pluralRules.Keyword.MANY;
+ }
+ return goog.i18n.pluralRules.Keyword.OTHER;
+};
+
+
+/**
+ * Selected plural rules by locale.
+ */
+goog.i18n.pluralRules.select = goog.i18n.pluralRules.enSelect_;
+
+if (goog.LOCALE == 'am') {
+ goog.i18n.pluralRules.select = goog.i18n.pluralRules.filSelect_;
+}
+
+if (goog.LOCALE == 'ar') {
+ goog.i18n.pluralRules.select = goog.i18n.pluralRules.arSelect_;
+}
+
+if (goog.LOCALE == 'bg') {
+ goog.i18n.pluralRules.select = goog.i18n.pluralRules.enSelect_;
+}
+
+if (goog.LOCALE == 'bn') {
+ goog.i18n.pluralRules.select = goog.i18n.pluralRules.enSelect_;
+}
+
+if (goog.LOCALE == 'br') {
+ goog.i18n.pluralRules.select = goog.i18n.pluralRules.brSelect_;
+}
+
+if (goog.LOCALE == 'ca') {
+ goog.i18n.pluralRules.select = goog.i18n.pluralRules.enSelect_;
+}
+
+if (goog.LOCALE == 'cs') {
+ goog.i18n.pluralRules.select = goog.i18n.pluralRules.csSelect_;
+}
+
+if (goog.LOCALE == 'da') {
+ goog.i18n.pluralRules.select = goog.i18n.pluralRules.enSelect_;
+}
+
+if (goog.LOCALE == 'de') {
+ goog.i18n.pluralRules.select = goog.i18n.pluralRules.enSelect_;
+}
+
+if (goog.LOCALE == 'de_AT' || goog.LOCALE == 'de-AT') {
+ goog.i18n.pluralRules.select = goog.i18n.pluralRules.enSelect_;
+}
+
+if (goog.LOCALE == 'de_CH' || goog.LOCALE == 'de-CH') {
+ goog.i18n.pluralRules.select = goog.i18n.pluralRules.enSelect_;
+}
+
+if (goog.LOCALE == 'el') {
+ goog.i18n.pluralRules.select = goog.i18n.pluralRules.enSelect_;
+}
+
+if (goog.LOCALE == 'en') {
+ goog.i18n.pluralRules.select = goog.i18n.pluralRules.enSelect_;
+}
+
+if (goog.LOCALE == 'en_AU' || goog.LOCALE == 'en-AU') {
+ goog.i18n.pluralRules.select = goog.i18n.pluralRules.enSelect_;
+}
+
+if (goog.LOCALE == 'en_GB' || goog.LOCALE == 'en-GB') {
+ goog.i18n.pluralRules.select = goog.i18n.pluralRules.enSelect_;
+}
+
+if (goog.LOCALE == 'en_IE' || goog.LOCALE == 'en-IE') {
+ goog.i18n.pluralRules.select = goog.i18n.pluralRules.enSelect_;
+}
+
+if (goog.LOCALE == 'en_IN' || goog.LOCALE == 'en-IN') {
+ goog.i18n.pluralRules.select = goog.i18n.pluralRules.enSelect_;
+}
+
+if (goog.LOCALE == 'en_SG' || goog.LOCALE == 'en-SG') {
+ goog.i18n.pluralRules.select = goog.i18n.pluralRules.enSelect_;
+}
+
+if (goog.LOCALE == 'en_US' || goog.LOCALE == 'en-US') {
+ goog.i18n.pluralRules.select = goog.i18n.pluralRules.enSelect_;
+}
+
+if (goog.LOCALE == 'en_ZA' || goog.LOCALE == 'en-ZA') {
+ goog.i18n.pluralRules.select = goog.i18n.pluralRules.enSelect_;
+}
+
+if (goog.LOCALE == 'es') {
+ goog.i18n.pluralRules.select = goog.i18n.pluralRules.enSelect_;
+}
+
+if (goog.LOCALE == 'et') {
+ goog.i18n.pluralRules.select = goog.i18n.pluralRules.enSelect_;
+}
+
+if (goog.LOCALE == 'eu') {
+ goog.i18n.pluralRules.select = goog.i18n.pluralRules.enSelect_;
+}
+
+if (goog.LOCALE == 'fa') {
+ goog.i18n.pluralRules.select = goog.i18n.pluralRules.defaultSelect_;
+}
+
+if (goog.LOCALE == 'fi') {
+ goog.i18n.pluralRules.select = goog.i18n.pluralRules.enSelect_;
+}
+
+if (goog.LOCALE == 'fil') {
+ goog.i18n.pluralRules.select = goog.i18n.pluralRules.filSelect_;
+}
+
+if (goog.LOCALE == 'fr') {
+ goog.i18n.pluralRules.select = goog.i18n.pluralRules.frSelect_;
+}
+
+if (goog.LOCALE == 'fr_CA' || goog.LOCALE == 'fr-CA') {
+ goog.i18n.pluralRules.select = goog.i18n.pluralRules.frSelect_;
+}
+
+if (goog.LOCALE == 'gl') {
+ goog.i18n.pluralRules.select = goog.i18n.pluralRules.enSelect_;
+}
+
+if (goog.LOCALE == 'gsw') {
+ goog.i18n.pluralRules.select = goog.i18n.pluralRules.enSelect_;
+}
+
+if (goog.LOCALE == 'gu') {
+ goog.i18n.pluralRules.select = goog.i18n.pluralRules.enSelect_;
+}
+
+if (goog.LOCALE == 'he') {
+ goog.i18n.pluralRules.select = goog.i18n.pluralRules.enSelect_;
+}
+
+if (goog.LOCALE == 'hi') {
+ goog.i18n.pluralRules.select = goog.i18n.pluralRules.filSelect_;
+}
+
+if (goog.LOCALE == 'hr') {
+ goog.i18n.pluralRules.select = goog.i18n.pluralRules.hrSelect_;
+}
+
+if (goog.LOCALE == 'hu') {
+ goog.i18n.pluralRules.select = goog.i18n.pluralRules.defaultSelect_;
+}
+
+if (goog.LOCALE == 'id') {
+ goog.i18n.pluralRules.select = goog.i18n.pluralRules.defaultSelect_;
+}
+
+if (goog.LOCALE == 'in') {
+ goog.i18n.pluralRules.select = goog.i18n.pluralRules.defaultSelect_;
+}
+
+if (goog.LOCALE == 'is') {
+ goog.i18n.pluralRules.select = goog.i18n.pluralRules.enSelect_;
+}
+
+if (goog.LOCALE == 'it') {
+ goog.i18n.pluralRules.select = goog.i18n.pluralRules.enSelect_;
+}
+
+if (goog.LOCALE == 'iw') {
+ goog.i18n.pluralRules.select = goog.i18n.pluralRules.enSelect_;
+}
+
+if (goog.LOCALE == 'ja') {
+ goog.i18n.pluralRules.select = goog.i18n.pluralRules.defaultSelect_;
+}
+
+if (goog.LOCALE == 'kn') {
+ goog.i18n.pluralRules.select = goog.i18n.pluralRules.defaultSelect_;
+}
+
+if (goog.LOCALE == 'ko') {
+ goog.i18n.pluralRules.select = goog.i18n.pluralRules.defaultSelect_;
+}
+
+if (goog.LOCALE == 'ln') {
+ goog.i18n.pluralRules.select = goog.i18n.pluralRules.filSelect_;
+}
+
+if (goog.LOCALE == 'lt') {
+ goog.i18n.pluralRules.select = goog.i18n.pluralRules.ltSelect_;
+}
+
+if (goog.LOCALE == 'lv') {
+ goog.i18n.pluralRules.select = goog.i18n.pluralRules.lvSelect_;
+}
+
+if (goog.LOCALE == 'ml') {
+ goog.i18n.pluralRules.select = goog.i18n.pluralRules.enSelect_;
+}
+
+if (goog.LOCALE == 'mo') {
+ goog.i18n.pluralRules.select = goog.i18n.pluralRules.roSelect_;
+}
+
+if (goog.LOCALE == 'mr') {
+ goog.i18n.pluralRules.select = goog.i18n.pluralRules.enSelect_;
+}
+
+if (goog.LOCALE == 'ms') {
+ goog.i18n.pluralRules.select = goog.i18n.pluralRules.defaultSelect_;
+}
+
+if (goog.LOCALE == 'mt') {
+ goog.i18n.pluralRules.select = goog.i18n.pluralRules.mtSelect_;
+}
+
+if (goog.LOCALE == 'nl') {
+ goog.i18n.pluralRules.select = goog.i18n.pluralRules.enSelect_;
+}
+
+if (goog.LOCALE == 'no') {
+ goog.i18n.pluralRules.select = goog.i18n.pluralRules.enSelect_;
+}
+
+if (goog.LOCALE == 'or') {
+ goog.i18n.pluralRules.select = goog.i18n.pluralRules.enSelect_;
+}
+
+if (goog.LOCALE == 'pl') {
+ goog.i18n.pluralRules.select = goog.i18n.pluralRules.plSelect_;
+}
+
+if (goog.LOCALE == 'pt') {
+ goog.i18n.pluralRules.select = goog.i18n.pluralRules.enSelect_;
+}
+
+if (goog.LOCALE == 'pt_BR' || goog.LOCALE == 'pt-BR') {
+ goog.i18n.pluralRules.select = goog.i18n.pluralRules.enSelect_;
+}
+
+if (goog.LOCALE == 'pt_PT' || goog.LOCALE == 'pt-PT') {
+ goog.i18n.pluralRules.select = goog.i18n.pluralRules.enSelect_;
+}
+
+if (goog.LOCALE == 'ro') {
+ goog.i18n.pluralRules.select = goog.i18n.pluralRules.roSelect_;
+}
+
+if (goog.LOCALE == 'ru') {
+ goog.i18n.pluralRules.select = goog.i18n.pluralRules.hrSelect_;
+}
+
+if (goog.LOCALE == 'sk') {
+ goog.i18n.pluralRules.select = goog.i18n.pluralRules.csSelect_;
+}
+
+if (goog.LOCALE == 'sl') {
+ goog.i18n.pluralRules.select = goog.i18n.pluralRules.slSelect_;
+}
+
+if (goog.LOCALE == 'sq') {
+ goog.i18n.pluralRules.select = goog.i18n.pluralRules.enSelect_;
+}
+
+if (goog.LOCALE == 'sr') {
+ goog.i18n.pluralRules.select = goog.i18n.pluralRules.hrSelect_;
+}
+
+if (goog.LOCALE == 'sv') {
+ goog.i18n.pluralRules.select = goog.i18n.pluralRules.enSelect_;
+}
+
+if (goog.LOCALE == 'sw') {
+ goog.i18n.pluralRules.select = goog.i18n.pluralRules.enSelect_;
+}
+
+if (goog.LOCALE == 'ta') {
+ goog.i18n.pluralRules.select = goog.i18n.pluralRules.enSelect_;
+}
+
+if (goog.LOCALE == 'te') {
+ goog.i18n.pluralRules.select = goog.i18n.pluralRules.enSelect_;
+}
+
+if (goog.LOCALE == 'th') {
+ goog.i18n.pluralRules.select = goog.i18n.pluralRules.defaultSelect_;
+}
+
+if (goog.LOCALE == 'tl') {
+ goog.i18n.pluralRules.select = goog.i18n.pluralRules.filSelect_;
+}
+
+if (goog.LOCALE == 'tr') {
+ goog.i18n.pluralRules.select = goog.i18n.pluralRules.defaultSelect_;
+}
+
+if (goog.LOCALE == 'uk') {
+ goog.i18n.pluralRules.select = goog.i18n.pluralRules.hrSelect_;
+}
+
+if (goog.LOCALE == 'ur') {
+ goog.i18n.pluralRules.select = goog.i18n.pluralRules.enSelect_;
+}
+
+if (goog.LOCALE == 'vi') {
+ goog.i18n.pluralRules.select = goog.i18n.pluralRules.defaultSelect_;
+}
+
+if (goog.LOCALE == 'zh') {
+ goog.i18n.pluralRules.select = goog.i18n.pluralRules.defaultSelect_;
+}
+
+if (goog.LOCALE == 'zh_CN' || goog.LOCALE == 'zh-CN') {
+ goog.i18n.pluralRules.select = goog.i18n.pluralRules.defaultSelect_;
+}
+
+if (goog.LOCALE == 'zh_HK' || goog.LOCALE == 'zh-HK') {
+ goog.i18n.pluralRules.select = goog.i18n.pluralRules.defaultSelect_;
+}
+
+if (goog.LOCALE == 'zh_TW' || goog.LOCALE == 'zh-TW') {
+ goog.i18n.pluralRules.select = goog.i18n.pluralRules.defaultSelect_;
+}
+
diff --git a/i18n/src/closureSlurper.js b/i18n/src/closureSlurper.js
index 32ef022c..69c94e10 100644
--- a/i18n/src/closureSlurper.js
+++ b/i18n/src/closureSlurper.js
@@ -11,7 +11,7 @@ var Q = require('qq'),
currencySymbols,
goog = { provide: function() {},
require: function() {},
- i18n: {currency: {}} };
+ i18n: {currency: {}, pluralRules: {}} };
createFolder('../locale/').then(function() {
var promiseA = Q.defer(),
@@ -58,9 +58,29 @@ createFolder('../locale/').then(function() {
promiseB.resolve();
});
-
+
return Q.join(promiseA.promise, promiseB.promise, noop);
}).then(function() {
+ var promise = Q.defer();
+
+ qfs.read(__dirname + '/../closure/pluralRules.js').then(function(content) {
+ for(var i = 0; i < localeIds.length; i++) {
+ //We don't need to care about country ID because the plural rules in more specific id are
+ //always the same as those in its language ID.
+ // e.g. plural rules for en_SG is the same as those for en.
+ goog.LOCALE = localeIds[i].match(/[^_]+/)[0];
+ eval(content);
+ var temp = goog.i18n.pluralRules.select.toString().
+ replace(/goog.i18n.pluralRules.Keyword/g, 'PLURAL_CATEGORY').replace(/\n/g, '');
+
+ ///@@ is a crazy place holder to be replaced before writing to file
+ localeInfo[localeIds[i]].pluralCat = "@@" + temp + "@@";
+ }
+ promise.resolve();
+ });
+
+ return promise.promise;
+}).then(function() {
localeIds.forEach(function(localeID) {
var fallBackID = localeID.match(/[A-Za-z]+/)[0],
localeObj = localeInfo[localeID],
@@ -80,14 +100,18 @@ createFolder('../locale/').then(function() {
var correctedLocaleId = localeID.replace(/_/g, '-').toLowerCase();
localeObj.id = correctedLocaleId;
- var prefix = 'angular.service("$locale", function() {\nreturn ',
- content = JSON.stringify(localeInfo[localeID]).replace(/\¤/g,'\\u00A4'),
- suffix;
+ var prefix = 'angular.service("$locale", function() {\n' +
+ 'var PLURAL_CATEGORY = {' +
+ 'ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"' +
+ '};\n' +
+ 'return ';
- suffix = ';\n});';
+ var suffix = ';\n});';
- var toWrite = prefix + content + suffix;
+ var content = JSON.stringify(localeInfo[localeID]).replace(/\¤/g,'\\u00A4').
+ replace(/"@@|@@"/g, '');
+ var toWrite = prefix + content + suffix;
qfs.write(__dirname + '/../locale/' + 'angular-locale_' + correctedLocaleId + '.js', toWrite);
});
console.log('Generated ' + localeIds.length + ' locale files!');
diff --git a/i18n/update-closure.sh b/i18n/update-closure.sh
index ea3e262c..80337f13 100755
--- a/i18n/update-closure.sh
+++ b/i18n/update-closure.sh
@@ -6,3 +6,4 @@ cd $BASE_DIR
curl http://closure-library.googlecode.com/svn/trunk/closure/goog/i18n/currency.js > closure/currencySymbols.js
curl http://closure-library.googlecode.com/svn/trunk/closure/goog/i18n/datetimesymbols.js > closure/datetimeSymbols.js
curl http://closure-library.googlecode.com/svn/trunk/closure/goog/i18n/numberformatsymbols.js > closure/numberSymbols.js
+curl http://closure-library.googlecode.com/svn/trunk/closure/goog/i18n/pluralrules.js > closure/pluralRules.js