aboutsummaryrefslogtreecommitdiffstats
path: root/i18n
diff options
context:
space:
mode:
Diffstat (limited to 'i18n')
-rw-r--r--i18n/spec/closureI18nExtractorSpec.js11
-rw-r--r--i18n/src/closureI18nExtractor.js11
2 files changed, 19 insertions, 3 deletions
diff --git a/i18n/spec/closureI18nExtractorSpec.js b/i18n/spec/closureI18nExtractorSpec.js
index f4f190d5..87a9d455 100644
--- a/i18n/spec/closureI18nExtractorSpec.js
+++ b/i18n/spec/closureI18nExtractorSpec.js
@@ -248,3 +248,14 @@ describe("pluralExtractor", function() {
})
});
+describe("serializeContent", function() {
+ it("should not make any modifications to the content of the locale", function() {
+ var serializedContent = closureI18nExtractor.serializeContent(newTestLocaleInfo());
+ expect(eval("(" + serializedContent + ")")).toEqual(newTestLocaleInfo());
+ });
+ it("should only have ascii characters", function() {
+ var serializedContent = closureI18nExtractor.serializeContent(newTestLocaleInfo());
+ expect((/[^\u0001-\u007f]/).test(serializedContent)).toBe(false);
+ });
+});
+
diff --git a/i18n/src/closureI18nExtractor.js b/i18n/src/closureI18nExtractor.js
index a26f89b7..13d42143 100644
--- a/i18n/src/closureI18nExtractor.js
+++ b/i18n/src/closureI18nExtractor.js
@@ -9,6 +9,7 @@ exports.pluralExtractor = pluralExtractor;
exports.outputLocale = outputLocale;
exports.correctedLocaleId = correctedLocaleId;
exports.findLocaleId = findLocaleId;
+exports.serializeContent = serializeContent;
var goog = { provide: function() {},
require: function() {},
@@ -125,6 +126,12 @@ function canonicalizeForJsonStringify(unused_key, object) {
return result;
}
+function serializeContent(localeObj) {
+ return JSON.stringify(localeObj, canonicalizeForJsonStringify, ' ')
+ .replace(new RegExp('[\\u007f-\\uffff]', 'g'), function(c) { return '\\u'+('0000'+c.charCodeAt(0).toString(16)).slice(-4); })
+ .replace(/"@@|@@"/g, '');
+}
+
function outputLocale(localeInfo, localeID) {
var fallBackID = localeID.match(/[A-Za-z]+/)[0],
localeObj = localeInfo[localeID],
@@ -167,9 +174,7 @@ function outputLocale(localeInfo, localeID) {
id: localeObj.id
};
- var content = JSON.stringify(localeInfo[localeID], canonicalizeForJsonStringify, ' ')
- .replace(/\ยค/g, '\\u00A4')
- .replace(/"@@|@@"/g, '');
+ var content = serializeContent(localeInfo[localeID]);
return prefix + content + suffix;
}