diff --git a/src/js/app/index.js b/src/js/app/index.js index ef6e6fac..67b07755 100644 --- a/src/js/app/index.js +++ b/src/js/app/index.js @@ -233,7 +233,14 @@ function changeLocaleFromHeaders(langString) { var languages = langString.split(','); var desiredLocale; for (var i = 0; i < languages.length; i++) { - var lang = languages[i].slice(0, 2); + var header = languages[i].split(';')[0]; + // first check the full string raw + if (intl.headerLocaleMap[header]) { + desiredLocale = intl.headerLocaleMap[header]; + break; + } + + var lang = header.slice(0, 2); if (intl.langLocaleMap[lang]) { desiredLocale = intl.langLocaleMap[lang]; break; diff --git a/src/js/intl/index.js b/src/js/intl/index.js index 2f299be7..721064a4 100644 --- a/src/js/intl/index.js +++ b/src/js/intl/index.js @@ -9,6 +9,11 @@ var getDefaultLocale = exports.getDefaultLocale = function() { return 'en_US'; }; +var headerLocaleMap = exports.headerLocaleMap = { + 'zh-CN': 'zh_CN', + 'zh-TW': 'zh_TW', +}; + // resolve the messy mapping between browser language // and our supported locales var langLocaleMap = exports.langLocaleMap = {