[FIX] Login change language button (#16085)

pull/16128/head
Maria Eduarda Cunha 6 years ago committed by Guilherme Gazzo
parent 4bdcb30ab7
commit a9ae0bb47c
  1. 45
      app/ui-login/client/login/footer.js

@ -5,24 +5,44 @@ import { TAPi18n } from 'meteor/rocketchat:tap-i18n';
import { settings } from '../../../settings';
Template.loginFooter.onCreated(function() {
this.suggestedLanguage = new ReactiveVar();
const filterLanguage = (language) => {
// Fix browsers having all-lowercase language settings eg. pt-br, en-us
const regex = /([a-z]{2,3})-([a-z]{2,4})/;
const matches = regex.exec(language);
if (matches) {
return `${ matches[1] }-${ matches[2].toUpperCase() }`;
}
this.suggestAnotherLanguageFor = (language) => {
const loadAndSetSuggestedLanguage = (language) => TAPi18n._loadLanguage(language)
.then(() => this.suggestedLanguage.set(language));
return language;
};
const serverLanguage = settings.get('Language');
Template.loginFooter.onCreated(function() {
this.suggestedLanguage = new ReactiveVar();
if (serverLanguage !== language) {
loadAndSetSuggestedLanguage(serverLanguage || 'en');
} else if (!/^en/.test(language)) {
loadAndSetSuggestedLanguage('en');
} else {
this.suggestedLanguage.set(undefined);
const loadAndSetSuggestedLanguage = async (language = 'en') => {
const lng = filterLanguage(language);
try {
await TAPi18n._loadLanguage(filterLanguage(lng));
window.setLanguage(lng);
const serverLanguage = filterLanguage(settings.get('Language'));
if (serverLanguage !== lng) {
return serverLanguage;
}
if (serverLanguage !== 'en') {
return 'en';
}
} catch (e) {
return null;
}
};
this.suggestAnotherLanguageFor = async (language) => {
const suggest = await loadAndSetSuggestedLanguage(language);
this.suggestedLanguage.set(suggest);
};
const currentLanguage = Meteor._localStorage.getItem('userLanguage');
this.suggestAnotherLanguageFor(currentLanguage);
});
@ -37,7 +57,6 @@ Template.loginFooter.helpers({
Template.loginFooter.events({
'click button.js-switch-language'(e, t) {
const language = t.suggestedLanguage.get();
window.setLanguage(language);
t.suggestAnotherLanguageFor(language);
return false;
},

Loading…
Cancel
Save