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.
pull/1708/head
sweetvvck 10 years ago
parent 592291a0eb
commit 7e9fa0a3e6
  1. 26
      client/startup/startup.coffee
  2. 1
      packages/rocketchat-lib/server/startup/settings.coffee
  3. 2
      packages/rocketchat-ui-account/account/accountProfile.coffee
  4. 11
      packages/rocketchat-ui-admin/admin/admin.coffee
  5. 8
      packages/rocketchat-ui-admin/admin/admin.html
  6. 3
      packages/rocketchat-ui-sidenav/side-nav/accountBox.coffee

@ -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) ->

Loading…
Cancel
Save