From e0892eb1b7b33ebe475f43733f1639eac800d904 Mon Sep 17 00:00:00 2001 From: John Firebaugh Date: Mon, 22 Apr 2013 14:55:30 -0700 Subject: [PATCH] Don't request locales we don't have; use fallback locales --- build.js | 1 + data/data_dev.js | 4 +++- data/locales.json | 25 +++++++++++++++++++++++++ data/update_locales.js | 1 + js/id/id.js | 7 ++++++- 5 files changed, 36 insertions(+), 2 deletions(-) create mode 100644 data/locales.json diff --git a/build.js b/build.js index f4d9cb63a..069199127 100644 --- a/build.js +++ b/build.js @@ -123,5 +123,6 @@ fs.writeFileSync('data/data.js', 'iD.data = ' + stringify({ }, imperial: r('imperial.json'), maki: r('maki-sprite.json'), + locales: r('locales.json'), en: read('dist/locales/en.json') }) + ';'); diff --git a/data/data_dev.js b/data/data_dev.js index 0446feab7..8e36e3e8a 100644 --- a/data/data_dev.js +++ b/data/data_dev.js @@ -15,6 +15,7 @@ iD.data = { path + 'data/presets/fields.json', path + 'data/imperial.json', path + 'data/maki-sprite.json', + path + 'data/locales.json', path + 'dist/locales/en.json' ], d3.json, function (err, data) { @@ -31,7 +32,8 @@ iD.data = { }, imperial: data[8], maki: data[9], - en: data[10] + locales: data[10], + en: data[11] }; callback(); diff --git a/data/locales.json b/data/locales.json new file mode 100644 index 000000000..de7b13482 --- /dev/null +++ b/data/locales.json @@ -0,0 +1,25 @@ +[ + "af", + "bs", + "zh", + "zh_TW", + "cs", + "da", + "nl", + "fr", + "de", + "hu", + "it", + "ja", + "lv", + "pl", + "pt", + "ru", + "sr", + "sk", + "es", + "sv", + "tr", + "uk", + "vi" +] \ No newline at end of file diff --git a/data/update_locales.js b/data/update_locales.js index 2b3a9e898..3d3d3cf91 100644 --- a/data/update_locales.js +++ b/data/update_locales.js @@ -56,6 +56,7 @@ function getResource(resource, callback) { }); + fs.writeFileSync('data/locales.json', JSON.stringify(codes, null, 4)); }); } diff --git a/js/id/id.js b/js/id/id.js index 4539d20d4..a72d602e8 100644 --- a/js/id/id.js +++ b/js/id/id.js @@ -38,7 +38,12 @@ window.iD = function () { context.container(container); var detectedLocale = iD.detect().locale; - if (detectedLocale !== 'en') { + + if (iD.data.locales.indexOf(detectedLocale) === -1) { + detectedLocale = detectedLocale.split('-')[0]; + } + + if (detectedLocale !== 'en' && iD.data.locales.indexOf(detectedLocale) !== -1) { d3.json(context.assetPath() + 'locales/' + detectedLocale + '.json', function(err, result) { locale[detectedLocale] = result; locale.current(detectedLocale);