aboutsummaryrefslogtreecommitdiffstats
path: root/i18n/src/converter.js
diff options
context:
space:
mode:
authorDi Peng2011-07-29 14:22:37 -0700
committerIgor Minar2011-08-14 23:44:20 -0700
commit966cbd4cf8d795b1706ff400f604c6002d7e81f9 (patch)
tree3ca9c42d7bad4f151c72d39f3ef9b053de6cc861 /i18n/src/converter.js
parent8534b7c7c0aa352eb0f17dbe8b22ba34f995654d (diff)
downloadangular.js-966cbd4cf8d795b1706ff400f604c6002d7e81f9.tar.bz2
feat(i18n): collect and convert locale info from closure
- add i18n/closure directory with closure i18n files and update-closure.sh script to update them - generate.sh script runs node.js scripts that extract localization rules from the closure library, transform them to a more suitable format and dumps them into i18n/locale directory as angular's $locale services - update Rakefile to copy i18n files to build/ and pkg/ dirs - copy i18n stuff during rake build - e2e tests for several locales
Diffstat (limited to 'i18n/src/converter.js')
-rw-r--r--i18n/src/converter.js60
1 files changed, 60 insertions, 0 deletions
diff --git a/i18n/src/converter.js b/i18n/src/converter.js
new file mode 100644
index 00000000..586bdb95
--- /dev/null
+++ b/i18n/src/converter.js
@@ -0,0 +1,60 @@
+/**
+ * after obtaining data from closure files, use converter to massage the data into the formats
+ * we want
+ */
+exports.convertDatetimeData = convertDatetimeData;
+exports.convertNumberData = convertNumberData;
+
+
+require.paths.push(__dirname);
+
+
+var parsePattern = require('parser').parsePattern;
+
+
+function convertNumberData(dataObj, currencySymbols) {
+ var numberFormats = {},
+
+ numberFormats = {
+ DECIMAL_SEP: dataObj.DECIMAL_SEP,
+ GROUP_SEP: dataObj.GROUP_SEP,
+ PATTERNS: [parsePattern(dataObj.DECIMAL_PATTERN),
+ parsePattern(dataObj.CURRENCY_PATTERN)]
+ }
+
+ if (currencySymbols[dataObj.DEF_CURRENCY_CODE]) {
+ numberFormats.CURRENCY_SYM = currencySymbols[dataObj.DEF_CURRENCY_CODE][1];
+ } else {
+ if (dataObj.DEF_CURRENCY_CODE == 'MTL') {
+ numberFormats.CURRENCY_SYM = '₤'; //for some reason this is missing in closure
+ } else {
+ // if there is no corresponding currency symbol, just use currency code.
+ var code = numberFormats.CURRENCY_SYM = dataObj.DEF_CURRENCY_CODE;
+ console.log(code +' has no currency symbol in closure, used ' + code + ' instead!');
+ }
+ }
+ return numberFormats;
+}
+
+
+function convertDatetimeData(dataObj) {
+ var datetimeFormats = {};
+
+ datetimeFormats.MONTH = dataObj.MONTHS;
+ datetimeFormats.SHORTMONTH = dataObj.SHORTMONTHS;
+ datetimeFormats.DAY = dataObj.WEEKDAYS;
+ datetimeFormats.SHORTDAY = dataObj.SHORTWEEKDAYS;
+ datetimeFormats.AMPMS = dataObj.AMPMS;
+
+
+ datetimeFormats.medium = dataObj.DATEFORMATS[2] + ' ' + dataObj.TIMEFORMATS[2];
+ datetimeFormats.short = dataObj.DATEFORMATS[3] + ' ' + dataObj.TIMEFORMATS[3];
+ datetimeFormats.fullDate = dataObj.DATEFORMATS[0];
+ datetimeFormats.longDate = dataObj.DATEFORMATS[1];
+ datetimeFormats.mediumDate = dataObj.DATEFORMATS[2];
+ datetimeFormats.shortDate = dataObj.DATEFORMATS[3];
+ datetimeFormats.mediumTime = dataObj.TIMEFORMATS[2];
+ datetimeFormats.shortTime = dataObj.TIMEFORMATS[3];
+
+ return datetimeFormats;
+}