From 9a4d42e2695d24419478115ef340e41c8e312ae8 Mon Sep 17 00:00:00 2001 From: Tasso Evangelista Date: Thu, 14 Jun 2018 12:03:03 -0300 Subject: [PATCH 1/7] Fix default selected language in administration page --- packages/rocketchat-ui-admin/client/admin.html | 2 +- packages/rocketchat-ui-admin/client/admin.js | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/rocketchat-ui-admin/client/admin.html b/packages/rocketchat-ui-admin/client/admin.html index a0c8b5cd21376..2a90fd7492166 100644 --- a/packages/rocketchat-ui-admin/client/admin.html +++ b/packages/rocketchat-ui-admin/client/admin.html @@ -92,7 +92,7 @@
{{> icon block="rc-select__arrow" icon="arrow-down" }} diff --git a/packages/rocketchat-ui-admin/client/admin.js b/packages/rocketchat-ui-admin/client/admin.js index 43c1c0fa377f4..46836425251e6 100644 --- a/packages/rocketchat-ui-admin/client/admin.js +++ b/packages/rocketchat-ui-admin/client/admin.js @@ -99,9 +99,9 @@ Template.admin.helpers({ return result; }, - appLanguage(key) { + isAppLanguage(key) { const setting = RocketChat.settings.get('Language'); - return setting && setting.split('-').shift().toLowerCase() === key; + return typeof setting === 'string' && setting.split('-').shift().toLowerCase() === key; }, group() { const groupId = FlowRouter.getParam('group'); From de9deef52e3b54355b0f346c7b032f62240c9e51 Mon Sep 17 00:00:00 2001 From: Tasso Evangelista Date: Mon, 18 Jun 2018 16:05:43 -0300 Subject: [PATCH 2/7] Fix language selection in Administration > General --- packages/rocketchat-ui-admin/client/admin.js | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/packages/rocketchat-ui-admin/client/admin.js b/packages/rocketchat-ui-admin/client/admin.js index 46836425251e6..6baea91ea436e 100644 --- a/packages/rocketchat-ui-admin/client/admin.js +++ b/packages/rocketchat-ui-admin/client/admin.js @@ -85,11 +85,9 @@ Template.admin.helpers({ languages() { const languages = TAPi18n.getLanguages(); - const result = Object.entries(languages).map(language => { - const obj = language[1]; - obj.key = language[0]; - return obj; - }).sort((a, b) => a.key - b.key); + const result = Object.entries(languages) + .map(([ key, language ]) => ({ ...language, key: key.toLowerCase() })) + .sort((a, b) => a.key - b.key); result.unshift({ 'name': 'Default', @@ -100,8 +98,8 @@ Template.admin.helpers({ return result; }, isAppLanguage(key) { - const setting = RocketChat.settings.get('Language'); - return typeof setting === 'string' && setting.split('-').shift().toLowerCase() === key; + const languageKey = RocketChat.settings.get('Language'); + return typeof languageKey === 'string' && languageKey.toLowerCase() === key; }, group() { const groupId = FlowRouter.getParam('group'); From 8e56d59c4e8d9e32d25c9042129e24a593448fed Mon Sep 17 00:00:00 2001 From: Tasso Evangelista Date: Mon, 18 Jun 2018 16:07:59 -0300 Subject: [PATCH 3/7] Fix default selected language in Account > Preferences --- .../client/accountPreferences.html | 2 +- .../client/accountPreferences.js | 25 +++++++++---------- 2 files changed, 13 insertions(+), 14 deletions(-) diff --git a/packages/rocketchat-ui-account/client/accountPreferences.html b/packages/rocketchat-ui-account/client/accountPreferences.html index 54f5fc161b852..d44beaa013aa8 100644 --- a/packages/rocketchat-ui-account/client/accountPreferences.html +++ b/packages/rocketchat-ui-account/client/accountPreferences.html @@ -17,7 +17,7 @@

{{_ "Localization"}}

{{> icon block="rc-select__arrow" icon="arrow-down" }} diff --git a/packages/rocketchat-ui-account/client/accountPreferences.js b/packages/rocketchat-ui-account/client/accountPreferences.js index 16bf02b978945..691328873181e 100644 --- a/packages/rocketchat-ui-account/client/accountPreferences.js +++ b/packages/rocketchat-ui-account/client/accountPreferences.js @@ -37,23 +37,22 @@ Template.accountPreferences.helpers({ languages() { const languages = TAPi18n.getLanguages(); - const result = Object.keys(languages).map((key) => { - const language = languages[key]; - return _.extend(language, { key }); + const result = Object.entries(languages) + .map(([ key, language ]) => ({ ...language, key: key.toLowerCase() })) + .sort((a, b) => a.key - b.key); + + result.unshift({ + 'name': 'Default', + 'en': 'Default', + 'key': '' }); - return _.sortBy(result, 'key'); - }, - userLanguage(key) { - const user = Meteor.user(); - let result = undefined; - if (user.language) { - result = user.language === key; - } else if (defaultUserLanguage()) { - result = defaultUserLanguage() === key; - } return result; }, + isUserLanguage(key) { + const languageKey = Meteor.user().language; + return typeof languageKey === 'string' && languageKey.toLowerCase() === key; + }, checked(property, value, defaultValue=undefined) { return checkedSelected(property, value, defaultValue); }, From 684aeda662a3762d4f9edaa9ab0628a95c67da4f Mon Sep 17 00:00:00 2001 From: Tasso Evangelista Date: Mon, 18 Jun 2018 18:49:23 -0300 Subject: [PATCH 4/7] Refactor and remove unused code --- client/startup/startup.js | 8 ++------ .../rocketchat-ui-account/client/accountPreferences.html | 2 +- .../rocketchat-ui-account/client/accountPreferences.js | 2 +- 3 files changed, 4 insertions(+), 8 deletions(-) diff --git a/client/startup/startup.js b/client/startup/startup.js index a4e4e35c7175d..2cdcb436afa64 100644 --- a/client/startup/startup.js +++ b/client/startup/startup.js @@ -17,8 +17,6 @@ if (window.DISABLE_ANIMATION) { Meteor.startup(function() { TimeSync.loggingEnabled = false; - - Session.setDefault('AvatarRandom', 0); window.lastMessageWindow = {}; @@ -26,7 +24,7 @@ Meteor.startup(function() { TAPi18n.conf.i18n_files_route = Meteor._relativeToSiteRootUrl('/tap-i18n'); - const defaultAppLanguage = function() { + const defaultAppLanguage = () => { let lng = window.navigator.userLanguage || window.navigator.language || 'en'; // Fix browsers having all-lowercase language settings eg. pt-br, en-us const re = /([a-z]{2}-)([a-z]{2})/; @@ -38,9 +36,7 @@ Meteor.startup(function() { return lng; }; - window.defaultUserLanguage = function() { - return RocketChat.settings.get('Language') || defaultAppLanguage(); - }; + window.defaultUserLanguage = () => RocketChat.settings.get('Language') || defaultAppLanguage(); const availableLanguages = TAPi18n.getLanguages(); const loadedLanguages = []; diff --git a/packages/rocketchat-ui-account/client/accountPreferences.html b/packages/rocketchat-ui-account/client/accountPreferences.html index d44beaa013aa8..2f708bd0d8b4d 100644 --- a/packages/rocketchat-ui-account/client/accountPreferences.html +++ b/packages/rocketchat-ui-account/client/accountPreferences.html @@ -20,7 +20,7 @@

{{_ "Localization"}}

{{/each}} - {{> icon block="rc-select__arrow" icon="arrow-down" }} + {{> icon block="rc-select__arrow" icon="arrow-down"}}
diff --git a/packages/rocketchat-ui-account/client/accountPreferences.js b/packages/rocketchat-ui-account/client/accountPreferences.js index 691328873181e..d5088d5df7f14 100644 --- a/packages/rocketchat-ui-account/client/accountPreferences.js +++ b/packages/rocketchat-ui-account/client/accountPreferences.js @@ -1,4 +1,4 @@ -/*globals defaultUserLanguage, KonchatNotification */ +/*globals KonchatNotification */ import _ from 'underscore'; import s from 'underscore.string'; import toastr from 'toastr'; From 92ed5716f65d297cfee7b9ee6afbcbc6da3ddf29 Mon Sep 17 00:00:00 2001 From: Tasso Evangelista Date: Mon, 18 Jun 2018 18:55:48 -0300 Subject: [PATCH 5/7] Change language initialization --- client/startup/startup.js | 31 ++++++++++++++++++++++++------- 1 file changed, 24 insertions(+), 7 deletions(-) diff --git a/client/startup/startup.js b/client/startup/startup.js index 2cdcb436afa64..698162af99ce9 100644 --- a/client/startup/startup.js +++ b/client/startup/startup.js @@ -90,7 +90,6 @@ Meteor.startup(function() { const user = RocketChat.models.Users.findOne(Meteor.userId(), { fields: { status: 1, - language: 1, 'settings.preferences.idleTimeLimit': 1, 'settings.preferences.enableAutoAway': 1 } @@ -100,12 +99,6 @@ Meteor.startup(function() { return; } - const userLanguage = user.language ? user.language : window.defaultUserLanguage(); - if (localStorage.getItem('userLanguage') !== userLanguage) { - localStorage.setItem('userLanguage', userLanguage); - window.setLanguage(userLanguage); - } - if (RocketChat.getUserPreference(user, 'enableAutoAway')) { const idleTimeLimit = RocketChat.getUserPreference(user, 'idleTimeLimit') || 300; UserPresence.awayTime = idleTimeLimit * 1000; @@ -121,4 +114,28 @@ Meteor.startup(function() { fireGlobalEvent('status-changed', status); } }); + + Tracker.autorun(() => { + if (!Meteor.userId()) { + return; + } + + const user = RocketChat.models.Users.findOne(Meteor.userId(), { + fields: { + language: 1 + } + }); + + if (!(user && user.language)) { + return; + } + + window.setLanguage(user.language); + + const userLanguage = user.language ? user.language : window.defaultUserLanguage(); + if (localStorage.getItem('userLanguage') !== userLanguage) { + localStorage.setItem('userLanguage', userLanguage); + //window.setLanguage(userLanguage); + } + }); }); From 5f6d4f85ce34631d76628b6bf9c2a42120dc1048 Mon Sep 17 00:00:00 2001 From: Tasso Evangelista Date: Tue, 19 Jun 2018 01:13:31 -0300 Subject: [PATCH 6/7] Fix language definition startup --- client/startup/startup.js | 21 +++------------------ 1 file changed, 3 insertions(+), 18 deletions(-) diff --git a/client/startup/startup.js b/client/startup/startup.js index 698162af99ce9..14a24f10b94ac 100644 --- a/client/startup/startup.js +++ b/client/startup/startup.js @@ -116,26 +116,11 @@ Meteor.startup(function() { }); Tracker.autorun(() => { - if (!Meteor.userId()) { - return; - } - - const user = RocketChat.models.Users.findOne(Meteor.userId(), { - fields: { - language: 1 - } - }); - - if (!(user && user.language)) { - return; - } - - window.setLanguage(user.language); + const userLanguage = Meteor.user() && Meteor.user().language || RocketChat.settings.get('Language') || 'en'; - const userLanguage = user.language ? user.language : window.defaultUserLanguage(); - if (localStorage.getItem('userLanguage') !== userLanguage) { + if (loadedLanguages.length === 0 || localStorage.getItem('userLanguage') !== userLanguage) { localStorage.setItem('userLanguage', userLanguage); - //window.setLanguage(userLanguage); + window.setLanguage(userLanguage); } }); }); From db13b336e18162d72717dca683640f9b77b70bbc Mon Sep 17 00:00:00 2001 From: Tasso Evangelista Date: Tue, 19 Jun 2018 01:48:31 -0300 Subject: [PATCH 7/7] Show which language is the default in Account > Preferences --- packages/rocketchat-ui-account/client/accountPreferences.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/rocketchat-ui-account/client/accountPreferences.js b/packages/rocketchat-ui-account/client/accountPreferences.js index d5088d5df7f14..23972e48cb92e 100644 --- a/packages/rocketchat-ui-account/client/accountPreferences.js +++ b/packages/rocketchat-ui-account/client/accountPreferences.js @@ -41,8 +41,11 @@ Template.accountPreferences.helpers({ .map(([ key, language ]) => ({ ...language, key: key.toLowerCase() })) .sort((a, b) => a.key - b.key); + const appLanguageKey = RocketChat.settings.get('Language') || 'en'; + const appLanguage = result.filter(({ key }) => key === appLanguageKey.toLowerCase())[0]; + result.unshift({ - 'name': 'Default', + 'name': appLanguage ? `Default (${ appLanguage.name })` : 'Default', 'en': 'Default', 'key': '' });