Language Detection

Replace default en language to autodetection if no i18n setting is set.
This commit is contained in:
thierrytiti 2015-05-11 17:36:12 +02:00
parent 0511f9a588
commit f521532f2f
3 changed files with 30 additions and 1 deletions

View File

@ -215,7 +215,32 @@
// Translation machinery // Translation machinery
// --------------------- // ---------------------
this.i18n = settings.i18n ? settings.i18n : locales.en; this.isAvailableLocale=function(locale){
ret=null;
if (locales[locale]) ret=locales[locale];
else{
sublocale=locale.split("-")[0];
if (sublocale!=locale && locales[sublocale]) ret=locales[sublocale];
}
return ret;
};
this.detectLocale=function(){
ret=null;
if (window.navigator.userLanguage) ret=this.isAvailableLocale(window.navigator.userLanguage);
else if (window.navigator.languages && !ret){
for (var i = 0; i < window.navigator.languages.length && !ret; i++) {
ret=this.isAvailableLocale(window.navigator.languages[i]);
}
}
else if (window.navigator.browserLanguage && !ret) ret=this.isAvailableLocale(window.navigator.browserLanguage);
else if (window.navigator.language && !ret) ret=this.isAvailableLocale(window.navigator.language);
else if (window.navigator.systemLanguage && !ret) ret=this.isAvailableLocale(window.navigator.systemLanguage);
else {ret=locales.en}
return ret;
};
this.i18n = settings.i18n ? settings.i18n : this.detectLocale();
var __ = $.proxy(utils.__, this); var __ = $.proxy(utils.__, this);
var ___ = utils.___; var ___ = utils.___;

View File

@ -8,6 +8,7 @@ Changelog
* Bugfix. Manual login doesn't work when only websocket_url is set and not bosh_service_url. [jcbrand] * Bugfix. Manual login doesn't work when only websocket_url is set and not bosh_service_url. [jcbrand]
* Bugfix. clearSessions during unload event would throw an error when not logged in. [gbonvehi] * Bugfix. clearSessions during unload event would throw an error when not logged in. [gbonvehi]
* #389 Allow login panel placeholders and roster item 'Name' translations. [gbonvehi] * #389 Allow login panel placeholders and roster item 'Name' translations. [gbonvehi]
* I18N: Autodetection of User Locale if no i18n setting is set. [thierrytiti]
0.9.3 (2015-05-01) 0.9.3 (2015-05-01)
------------------ ------------------

View File

@ -360,6 +360,9 @@ If set to ``true``, then don't show offline users.
i18n i18n
---- ----
* Default: Auto-detection of the User/Browser language
If no locale is matching available locales, the default is ``en``.
Specify the locale/language. The language must be in the ``locales`` object. Refer to Specify the locale/language. The language must be in the ``locales`` object. Refer to
``./locale/locales.js`` to see which locales are supported. ``./locale/locales.js`` to see which locales are supported.