Skip to content
Snippets Groups Projects
Commit 7e9fa0a3 authored by sweetvvck's avatar sweetvvck
Browse files

Settings for server default language #1614

Add the ability to set the default language for new users.
Admin can set server default language in admin/General section.
parent 592291a0
No related branches found
No related tags found
No related merge requests found
......@@ -10,7 +10,7 @@ Meteor.startup ->
window.lastMessageWindow = {}
window.lastMessageWindowHistory = {}
@defaultUserLanguage = ->
@defaultAppLanguage = ->
lng = window.navigator.userLanguage || window.navigator.language || 'en'
# Fix browsers having all-lowercase language settings eg. pt-br, en-us
re = /([a-z]{2}-)([a-z]{2})/
......@@ -18,6 +18,9 @@ Meteor.startup ->
lng = lng.replace re, (match, parts...) -> return parts[0] + parts[1].toUpperCase()
return lng
@defaultUserLanguage = ->
return RocketChat.settings.get('Language') || defaultAppLanguage()
loadedLaguages = []
setLanguage = (language) ->
......@@ -35,17 +38,14 @@ Meteor.startup ->
Function(localeFn)()
moment.locale(language)
Tracker.autorun (c) ->
if Meteor.user()?.language?
c.stop()
if localStorage.getItem('userLanguage') isnt Meteor.user().language
localStorage.setItem("userLanguage", Meteor.user().language)
setLanguage Meteor.user().language
if isRtl localStorage.getItem "userLanguage"
$('html').addClass "rtl"
Meteor.subscribe("userData", () ->
userLanguage = Meteor.user()?.language
userLanguage ?= defaultUserLanguage()
userLanguage = localStorage.getItem("userLanguage")
userLanguage ?= defaultUserLanguage()
if localStorage.getItem('userLanguage') isnt userLanguage
localStorage.setItem('userLanguage', userLanguage)
if isRtl localStorage.getItem 'userLanguage'
$('html').addClass "rtl"
setLanguage userLanguage
setLanguage userLanguage
)
......@@ -72,6 +72,7 @@ RocketChat.settings.addGroup 'FileUpload', ->
RocketChat.settings.addGroup 'General', ->
@add 'Site_Url', __meteor_runtime_config__?.ROOT_URL, { type: 'string', i18nDescription: 'Site_Url_Description', public: true }
@add 'Site_Name', 'Rocket.Chat', { type: 'string', public: true }
@add 'Language', '', { type: 'language', public: true }
@add 'Allow_Invalid_SelfSigned_Certs', false, { type: 'boolean' }
@add 'Disable_Favorite_Rooms', false, { type: 'boolean' }
@add 'CDN_PREFIX', '', { type: 'string' }
......
......@@ -7,7 +7,7 @@ Template.accountProfile.helpers
return _.sortBy(result, 'key')
userLanguage: (key) ->
return (localStorage.getItem('userLanguage') or defaultUserLanguage())?.split('-').shift().toLowerCase() is key
return (localStorage.getItem('userLanguage') or Meteor.user().language or defaultUserLanguage())?.split('-').shift().toLowerCase() is key
realname: ->
return Meteor.user().name
......
......@@ -9,6 +9,17 @@
Template.admin.helpers
languages: ->
languages = TAPi18n.getLanguages()
result = []
for key, language of languages
result.push _.extend(language, { key: key })
return _.sortBy(result, 'key')
appLanguage: (key) ->
selected = (RocketChat.settings.get('Language') or defaultUserLanguage())?.split('-').shift().toLowerCase() is key
return selected
group: ->
group = FlowRouter.getParam('group')
group ?= TempSettings.findOne({ type: 'group' })?._id
......
......@@ -70,6 +70,14 @@
</select>
{{/if}}
{{#if $eq type 'language'}}
<select class="input-monitor" name="{{_id}}" {{isDisabled}}>
{{#each languages}}
<option value="{{key}}" selected="{{appLanguage key}}" dir="auto">{{name}}</option>
{{/each}}
</select>
{{/if}}
{{#if $eq type 'color'}}
<input class="input-monitor minicolors" type="text" name="{{_id}}" value="{{value}}" {{isDisabled}}/>
{{/if}}
......
......@@ -36,6 +36,9 @@ Template.accountBox.events
user = Meteor.user()
Meteor.logout ->
FlowRouter.go 'home'
# remove userLanguage in localStorage
# in case of another account with different language login
localStorage.removeItem('userLanguage')
Meteor.call('logoutCleanUp', user)
'click #avatar': (event) ->
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment