Commit 50064ec1 authored by JC Brand's avatar JC Brand

Translation bugfix. Wait until after `locales` attribute is there

parent 80b36921
...@@ -39,6 +39,7 @@ Backbone.Overview ...@@ -39,6 +39,7 @@ Backbone.Overview
tags tags
stamp-npm stamp-npm
stamp-bundler stamp-bundler
transpile
# Sphinx # Sphinx
docs/html docs/html
......
...@@ -153,9 +153,8 @@ watch: stamp-bundler ...@@ -153,9 +153,8 @@ watch: stamp-bundler
watchjs: stamp-npm watchjs: stamp-npm
$(BABEL) --source-maps --watch=./src --out-dir=./builds $(BABEL) --source-maps --watch=./src --out-dir=./builds
.PHONY: transpile transpile: stamp-npm src
transpile: stamp-npm $(BABEL) --source-maps --out-dir=./builds ./src && touch transpile
$(BABEL) --source-maps --out-dir=./builds ./src
BUILDS = dist/converse.js \ BUILDS = dist/converse.js \
dist/converse.min.js \ dist/converse.min.js \
...@@ -174,31 +173,31 @@ BUILDS = dist/converse.js \ ...@@ -174,31 +173,31 @@ BUILDS = dist/converse.js \
dist/converse.js: transpile src node_modules *.js dist/converse.js: transpile src node_modules *.js
$(RJS) -o src/build.js include=converse out=dist/converse.js optimize=none $(RJS) -o src/build.js include=converse out=dist/converse.js optimize=none
dist/converse.min.js: src node_modules *.js dist/converse.min.js: transpile src node_modules *.js
$(RJS) -o src/build.js include=converse out=dist/converse.min.js $(RJS) -o src/build.js include=converse out=dist/converse.min.js
dist/converse-esnext.js: src node_modules *.js transpile dist/converse-esnext.js: src node_modules *.js
$(RJS) -o src/build-esnext.js include=converse out=dist/converse-esnext.js optimize=none $(RJS) -o src/build-esnext.js include=converse out=dist/converse-esnext.js optimize=none
dist/converse-esnext.min.js: src node_modules *.js transpile dist/converse-esnext.min.js: src node_modules *.js
$(RJS) -o src/build-esnext.js include=converse out=dist/converse-esnext.min.js $(RJS) -o src/build-esnext.js include=converse out=dist/converse-esnext.min.js
dist/inverse.js: transpile src node_modules *.js dist/inverse.js: transpile src node_modules *.js
$(RJS) -o src/build-inverse.js include=inverse out=dist/inverse.js optimize=none $(RJS) -o src/build-inverse.js include=inverse out=dist/inverse.js optimize=none
dist/inverse.min.js: src node_modules *.js dist/inverse.min.js: transpile src node_modules *.js
$(RJS) -o src/build-inverse.js include=inverse out=dist/inverse.min.js $(RJS) -o src/build-inverse.js include=inverse out=dist/inverse.min.js
dist/converse-no-jquery.js: transpile src node_modules *.js dist/converse-no-jquery.js: transpile src node_modules *.js
$(RJS) -o src/build.js include=converse wrap.endFile=end-no-jquery.frag exclude=jquery exclude=jquery.noconflict out=dist/converse-no-jquery.js optimize=none $(RJS) -o src/build.js include=converse wrap.endFile=end-no-jquery.frag exclude=jquery exclude=jquery.noconflict out=dist/converse-no-jquery.js optimize=none
dist/converse-no-jquery.min.js: src node_modules *.js transpile dist/converse-no-jquery.min.js: transpile src node_modules *.js transpile
$(RJS) -o src/build.js include=converse wrap.endFile=end-no-jquery.frag exclude=jquery exclude=jquery.noconflict out=dist/converse-no-jquery.min.js $(RJS) -o src/build.js include=converse wrap.endFile=end-no-jquery.frag exclude=jquery exclude=jquery.noconflict out=dist/converse-no-jquery.min.js
dist/converse-no-dependencies.js: transpile src node_modules *.js dist/converse-no-dependencies.js: transpile src node_modules *.js
$(RJS) -o src/build-no-dependencies.js optimize=none out=dist/converse-no-dependencies.js $(RJS) -o src/build-no-dependencies.js optimize=none out=dist/converse-no-dependencies.js
dist/converse-no-dependencies.min.js: src node_modules *.js dist/converse-no-dependencies.min.js: transpile src node_modules *.js
$(RJS) -o src/build-no-dependencies.js out=dist/converse-no-dependencies.min.js $(RJS) -o src/build-no-dependencies.js out=dist/converse-no-dependencies.min.js
dist/converse-mobile.js: transpile src node_modules *.js dist/converse-mobile.js: transpile src node_modules *.js
$(RJS) -o src/build.js paths.converse=src/converse-mobile include=converse out=dist/converse-mobile.js optimize=none $(RJS) -o src/build.js paths.converse=src/converse-mobile include=converse out=dist/converse-mobile.js optimize=none
dist/converse-mobile.min.js: src node_modules *.js dist/converse-mobile.min.js: transpile src node_modules *.js
$(RJS) -o src/build.js paths.converse=src/converse-mobile include=converse out=dist/converse-mobile.min.js $(RJS) -o src/build.js paths.converse=src/converse-mobile include=converse out=dist/converse-mobile.min.js
dist/converse-muc-embedded.js: transpile src node_modules *.js dist/converse-muc-embedded.js: transpile src node_modules *.js
$(RJS) -o src/build.js paths.converse=src/converse-embedded include=converse out=dist/converse-muc-embedded.js optimize=none $(RJS) -o src/build.js paths.converse=src/converse-embedded include=converse out=dist/converse-muc-embedded.js optimize=none
dist/converse-muc-embedded.min.js: src node_modules *.js dist/converse-muc-embedded.min.js: transpile src node_modules *.js
$(RJS) -o src/build.js paths.converse=src/converse-embedded include=converse out=dist/converse-muc-embedded.min.js $(RJS) -o src/build.js paths.converse=src/converse-embedded include=converse out=dist/converse-muc-embedded.min.js
.PHONY: jsmin .PHONY: jsmin
......
...@@ -7782,7 +7782,10 @@ ...@@ -7782,7 +7782,10 @@
"version": "0.2.16", "version": "0.2.16",
"resolved": "https://registry.npmjs.org/otr/-/otr-0.2.16.tgz", "resolved": "https://registry.npmjs.org/otr/-/otr-0.2.16.tgz",
"integrity": "sha1-BKdTRPUi38sHeMVDjA9V5p0+i8E=", "integrity": "sha1-BKdTRPUi38sHeMVDjA9V5p0+i8E=",
"dev": true "dev": true,
"requires": {
"webworker-threads": "0.4.13"
}
}, },
"output-file-sync": { "output-file-sync": {
"version": "1.1.2", "version": "1.1.2",
...@@ -9661,6 +9664,25 @@ ...@@ -9661,6 +9664,25 @@
"integrity": "sha1-03Uy1bfv9oJwIMtE2OyqIzyWeMU=", "integrity": "sha1-03Uy1bfv9oJwIMtE2OyqIzyWeMU=",
"dev": true "dev": true
}, },
"webworker-threads": {
"version": "0.4.13",
"resolved": "https://registry.npmjs.org/webworker-threads/-/webworker-threads-0.4.13.tgz",
"integrity": "sha1-1zvf0AIb9wkxy4XCTMP0zvvrH5g=",
"dev": true,
"optional": true,
"requires": {
"nan": "0.8.0"
},
"dependencies": {
"nan": {
"version": "0.8.0",
"resolved": "https://registry.npmjs.org/nan/-/nan-0.8.0.tgz",
"integrity": "sha1-AiqPpen+hCCWSsH7PclOF/RJ9f0=",
"dev": true,
"optional": true
}
}
},
"which": { "which": {
"version": "1.3.0", "version": "1.3.0",
"resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz",
......
...@@ -197,9 +197,9 @@ ...@@ -197,9 +197,9 @@
} else { } else {
return t.fetch(); return t.fetch();
} }
}; }
const detectLocale = function (library_check) { function detectLocale (library_check) {
/* Determine which locale is supported by the user's system as well /* Determine which locale is supported by the user's system as well
* as by the relevant library (e.g. converse.js or moment.js). * as by the relevant library (e.g. converse.js or moment.js).
* *
...@@ -226,23 +226,23 @@ ...@@ -226,23 +226,23 @@
locale = isLocaleAvailable(window.navigator.systemLanguage, library_check); locale = isLocaleAvailable(window.navigator.systemLanguage, library_check);
} }
return locale || 'en'; return locale || 'en';
}; }
const isMomentLocale = function (locale) { function isMomentLocale (locale) {
if (!_.isString(locale)) { return false; } if (!_.isString(locale)) { return false; }
return moment.locale() !== moment.locale(locale); return moment.locale() !== moment.locale(locale);
}; }
const getLocale = function (preferred_locale, isSupportedByLibrary) { function getLocale (preferred_locale, isSupportedByLibrary) {
if (_.isString(preferred_locale)) { if (_.isString(preferred_locale)) {
if (preferred_locale === 'en' || isSupportedByLibrary(preferred_locale)) { if (preferred_locale === 'en' || isSupportedByLibrary(preferred_locale)) {
return preferred_locale; return preferred_locale;
} }
} }
return _converse.detectLocale(isSupportedByLibrary) || 'en'; return detectLocale(isSupportedByLibrary) || 'en';
}; }
const isLocaleAvailable = function (locale, available) { function isLocaleAvailable (locale, available) {
/* Check whether the locale or sub locale (e.g. en-US, en) is supported. /* Check whether the locale or sub locale (e.g. en-US, en) is supported.
* *
* Parameters: * Parameters:
...@@ -257,9 +257,9 @@ ...@@ -257,9 +257,9 @@
return sublocale; return sublocale;
} }
} }
}; }
const isLocaleSupported = function (locale) { function isLocaleSupported (locale) {
/* Check whether the passed in locale is supported by Converse /* Check whether the passed in locale is supported by Converse
* *
* Parameters: * Parameters:
...@@ -267,25 +267,21 @@ ...@@ -267,25 +267,21 @@
*/ */
if (!_.isString(locale)) { return false; } if (!_.isString(locale)) { return false; }
return _.includes(_converse.locales, locale); return _.includes(_converse.locales, locale);
}; }
const fetchLocale = (locale, locale_url) => function fetchTranslations (locale, locale_url) {
/* Fetch the translations for the given local at the given URL. /* Fetch the translations for the given local at the given URL.
* *
* Parameters: * Parameters:
* (String) locale: The given i18n locale * (String) locale: The given i18n locale
* (String) locale_url: The URL from which the translations should be fetched * (String) locale_url: The URL from which the translations should be fetched
*/ */
new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
if (!isLocaleSupported(locale) || locale === 'en') { if (!isLocaleSupported(locale) || locale === 'en') {
return resolve(); return resolve();
} }
const xhr = new XMLHttpRequest(); const xhr = new XMLHttpRequest();
xhr.open( xhr.open('GET', locale_url, true);
'GET',
locale_url,
true
);
xhr.setRequestHeader( xhr.setRequestHeader(
'Accept', 'Accept',
"application/json, text/javascript" "application/json, text/javascript"
...@@ -302,6 +298,7 @@ ...@@ -302,6 +298,7 @@
}; };
xhr.send(); xhr.send();
}); });
}
// -------------------------- // --------------------------
// END: Translation machinery // END: Translation machinery
// -------------------------- // --------------------------
...@@ -377,11 +374,6 @@ ...@@ -377,11 +374,6 @@
'INACTIVE': 90000 'INACTIVE': 90000
}; };
/* Internationalization */
moment.locale(getLocale(settings.i18n, isMomentLocale));
_converse.locale = getLocale(settings.i18n, isLocaleSupported);
const __ = _converse.__;
// XEP-0085 Chat states // XEP-0085 Chat states
// http://xmpp.org/extensions/xep-0085.html // http://xmpp.org/extensions/xep-0085.html
this.INACTIVE = 'inactive'; this.INACTIVE = 'inactive';
...@@ -453,6 +445,11 @@ ...@@ -453,6 +445,11 @@
} }
} }
/* Internationalization */
moment.locale(getLocale(settings.i18n, isMomentLocale));
_converse.locale = getLocale(settings.i18n, isLocaleSupported);
const __ = _converse.__;
// Module-level variables // Module-level variables
// ---------------------- // ----------------------
this.callback = callback || _.noop; this.callback = callback || _.noop;
...@@ -2033,7 +2030,7 @@ ...@@ -2033,7 +2030,7 @@
finishInitialization(); finishInitialization();
return _converse; return _converse;
} else { } else {
fetchLocale( fetchTranslations(
_converse.locale, _converse.locale,
_.template(_converse.locales_url)({'locale': _converse.locale}) _.template(_converse.locales_url)({'locale': _converse.locale})
).then((jed) => { ).then((jed) => {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment