Skip to content

Commit 24de351

Browse files
committed
Merge pull request #188 from RocketChat/change-language
Change language in settings menu;
2 parents 60fcd44 + 917c15b commit 24de351

9 files changed

+68
-8
lines changed

client/lib/tapi18n.coffee

+4
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,7 @@
33
return TAPi18n.__ key, replaces
44
else
55
return TAPi18n.__ key, { postProcess: 'sprintf', sprintf: replaces }
6+
7+
@isRtl = (language) ->
8+
# https://en.wikipedia.org/wiki/Right-to-left#cite_note-2
9+
return language.split('-').shift().toLowerCase() in ['ar', 'dv', 'fa', 'he', 'ku', 'ps', 'sd', 'ug', 'ur', 'yi']

client/views/app/layout.coffee

+3-1
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,7 @@ Template.appLayout.helpers
44

55
Template.appLayout.rendered = ->
66
$('html').addClass("noscroll").removeClass "scroll"
7+
78
# RTL Support - Need config option on the UI
8-
# $('html').addClass("rtl")
9+
if isRtl localStorage.getItem "userLanguage"
10+
$('html').addClass "rtl"

client/views/app/sideNav/createChannelFlex.html

+2-2
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,8 @@ <h4>{{_ "chatRooms.Create_new_channel" }}</h4>
3535
</div>
3636
{{/if}}
3737
<div class="input-submit">
38-
<button class="button clean primary save-channel">{{_ "chatRooms.Save" }}</button>
39-
<button class="button clean cancel-channel">{{_ "chatRooms.Cancel" }}</button>
38+
<button class="button clean primary save-channel">{{_ "general.Save" }}</button>
39+
<button class="button clean cancel-channel">{{_ "general.Cancel" }}</button>
4040
</div>
4141
</div>
4242
</div>

client/views/app/sideNav/privateGroupsFlex.html

+2-2
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@ <h4>Create a new private group</h4>
2929
</div>
3030
{{/if}}
3131
<div class="input-submit">
32-
<button class="button clean primary save-pvt-group">{{_ "chatRooms.Save" }}</button>
33-
<button class="button clean cancel-pvt-group">{{_ "chatRooms.Cancel" }}</button>
32+
<button class="button clean primary save-pvt-group">{{_ "general.Save" }}</button>
33+
<button class="button clean cancel-pvt-group">{{_ "general.Cancel" }}</button>
3434
</div>
3535
</div>
3636
</div>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
Template.userSettingsFlex.helpers
2+
languages: ->
3+
languages = TAPi18n.getLanguages()
4+
result = []
5+
for key, language of languages
6+
result.push _.extend(language, { key: key })
7+
return _.sortBy(result, 'key')
8+
9+
userLanguage: (key) ->
10+
return localStorage.getItem('userLanguage')?.split('-').shift().toLowerCase() is key
11+
12+
Template.userSettingsFlex.events
13+
'mouseenter header': ->
14+
SideNav.overArrow()
15+
16+
'mouseleave header': ->
17+
SideNav.leaveArrow()
18+
19+
'click header': ->
20+
SideNav.closeFlex()
21+
22+
'click footer .save': ->
23+
selectedLanguage = $('#language').val()
24+
if localStorage.getItem('userLanguage') isnt selectedLanguage
25+
localStorage.setItem 'userLanguage', selectedLanguage
26+
Meteor._reload.reload()
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<template name="userSettingsFlex">
2+
<header>
3+
<div>
4+
<h4>{{_ "userStatus.Settings"}}</h4>
5+
</div>
6+
</header>
7+
<div class="content">
8+
<div class="wrapper">
9+
<div class="input-line">
10+
<label for="language">{{_ "general.Language"}}</label>
11+
<select id="language" class="required" dir="auto">
12+
{{#each languages}}
13+
<option value="{{key}}" selected="{{userLanguage key}}">{{name}}</option>
14+
{{/each}}
15+
</select>
16+
</div>
17+
</div>
18+
</div>
19+
<footer>
20+
<div>
21+
<button class="button clean save">{{_ "general.Save"}}</button>
22+
</div>
23+
</footer>
24+
</template>

client/views/app/sideNav/userStatus.coffee

+4
Original file line numberDiff line numberDiff line change
@@ -32,5 +32,9 @@ Template.userStatus.events
3232
'click #avatar': (event) ->
3333
Meteor.call('resetAvatar')
3434

35+
'click #settings': (event) ->
36+
SideNav.setFlex "userSettingsFlex"
37+
SideNav.openFlex()
38+
3539
Template.userStatus.rendered = ->
3640
AccountBox.init()

client/views/app/sideNav/userStatus.html

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ <h4>{{username}}</h4>
1919
<a href="" data-status="busy" class="status busy"><span>{{_ "userStatus.Busy"}}</span></a>
2020
<a href="" data-status="offline" class="status offline"><span>{{_ "userStatus.Invisible"}}</span></a>
2121
<a href="" id="avatar"><i class="icon-camera"></i><span>{{_ "userStatus.Change_avatar"}}</span></a>
22-
<a href=""><i class="icon-sliders"></i><span>{{_ "userStatus.Settings"}}</span><span class="soon">{{_ "userStatus.coming_soon"}}</span></a>
22+
<a href="" id="settings"><i class="icon-sliders"></i><span>{{_ "userStatus.Settings"}}</span></a>
2323
<a href=""><i class="icon-lock"></i><span>{{_ "userStatus.Privacy"}}</span><span class="soon">{{_ "userStatus.coming_soon"}}</span></a>
2424
<a href="" id="logout"><i class="icon-logout"></i><span>{{_ "userStatus.Logout"}}</span></a>
2525
</nav>

i18n/en.i18n.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,6 @@
2828
"Name" : "Name",
2929
"Members" : "Members",
3030
"Selected_users" : "Selected members",
31-
"Save" : "Save",
32-
"Cancel" : "Cancel",
3331
"No_channels_yet" : "You aren't part of any channel yet.",
3432
"No_direct_messages_yet" : "You haven't started any conversations yet.",
3533
"No_groups_yet" : "You have no private groups yet.",
@@ -72,12 +70,14 @@
7270
"Contact" : "Contact",
7371
"Conversation" : "Conversation",
7472
"History" : "History",
73+
"Language" : "Language",
7574
"Load_more" : "Load more",
7675
"Login" : "Login",
7776
"Name" : "Name",
7877
"Please_wait" : "Please wait",
7978
"Remove" : "Remove",
8079
"Reset_password" : "Reset password",
80+
"Save" : "Save",
8181
"Search" : "Search",
8282
"Send_confirmation_email" : "Send confirmation email",
8383
"Submit" : "Submit",

0 commit comments

Comments
 (0)