From 966cbd4cf8d795b1706ff400f604c6002d7e81f9 Mon Sep 17 00:00:00 2001 From: Di Peng Date: Fri, 29 Jul 2011 14:22:37 -0700 Subject: 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 --- i18n/src/converter.js | 60 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 i18n/src/converter.js (limited to 'i18n/src/converter.js') 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; +} -- cgit v1.2.3