);
+ });
+
+ const summary = _t('%(senderName)s changed the addresses of this room.', {senderName});
+ return
+ {changes}
+ ;
+ }
+
+ // return ;
+ }
+}
diff --git a/src/components/views/rooms/EventTile.js b/src/components/views/rooms/EventTile.js
index 647b8a0f5d..10f0b85936 100644
--- a/src/components/views/rooms/EventTile.js
+++ b/src/components/views/rooms/EventTile.js
@@ -33,7 +33,7 @@ var ObjectUtils = require('../../../ObjectUtils');
var eventTileTypes = {
'm.room.message': 'messages.MessageEvent',
- 'm.room.aliases': 'messages.TextualEvent',
+ 'm.room.aliases': 'messages.RoomAliasesEvent',
'm.room.member' : 'messages.TextualEvent',
'm.call.invite' : 'messages.TextualEvent',
'm.call.answer' : 'messages.TextualEvent',
diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json
index de0b8e9ebb..5ee29b6314 100644
--- a/src/i18n/strings/en_EN.json
+++ b/src/i18n/strings/en_EN.json
@@ -853,5 +853,10 @@
"%(widgetName)s widget added by %(senderName)s": "%(widgetName)s widget added by %(senderName)s",
"%(widgetName)s widget removed by %(senderName)s": "%(widgetName)s widget removed by %(senderName)s",
"%(widgetName)s widget modified by %(senderName)s": "%(widgetName)s widget modified by %(senderName)s",
- "Robot check is currently unavailable on desktop - please use a web browser": "Robot check is currently unavailable on desktop - please use a web browser"
+ "Robot check is currently unavailable on desktop - please use a web browser": "Robot check is currently unavailable on desktop - please use a web browser",
+ "%(senderName)s added %(count)s %(addedAddresses)s as addresses for this room.|one": "%(senderName)s added %(addedAddresses)s as an address for this room.",
+ "%(senderName)s added %(count)s %(addedAddresses)s as addresses for this room.|other": "%(senderName)s added %(addedAddresses)s as addresses for this room.",
+ "%(senderName)s removed %(count)s %(removedAddresses)s as addresses for this room.|one": "%(senderName)s removed %(removedAddresses)s as an address for this room.",
+ "%(senderName)s removed %(count)s %(removedAddresses)s as addresses for this room.|other": "%(senderName)s removed %(removedAddresses)s as addresses for this room.",
+ "%(senderName)s changed the addresses of this room.": "%(senderName)s changed the addresses of this room."
}
From ffe0b355047ea818ff53f20b1f823d68f1d12a6b Mon Sep 17 00:00:00 2001
From: Michael Telatynski <7t3chguy@gmail.com>
Date: Sun, 15 Jul 2018 22:33:00 +0100
Subject: [PATCH 003/343] while logging out ignore `Session.logged_out` as it
is intentional
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---
src/Lifecycle.js | 8 ++++++++
src/components/structures/MatrixChat.js | 1 +
2 files changed, 9 insertions(+)
diff --git a/src/Lifecycle.js b/src/Lifecycle.js
index 7378e982ef..65ff2d6511 100644
--- a/src/Lifecycle.js
+++ b/src/Lifecycle.js
@@ -385,6 +385,8 @@ function _persistCredentialsToLocalStorage(credentials) {
console.log(`Session persisted for ${credentials.userId}`);
}
+let _isLoggingOut = false;
+
/**
* Logs the current session out and transitions to the logged-out state
*/
@@ -404,6 +406,7 @@ export function logout() {
return;
}
+ _isLoggingOut = true;
MatrixClientPeg.get().logout().then(onLoggedOut,
(err) => {
// Just throwing an error here is going to be very unhelpful
@@ -419,6 +422,10 @@ export function logout() {
).done();
}
+export function isLoggingOut() {
+ return _isLoggingOut;
+}
+
/**
* Starts the matrix client and all other react-sdk services that
* listen for events while a session is logged in.
@@ -449,6 +456,7 @@ async function startMatrixClient() {
* storage. Used after a session has been logged out.
*/
export function onLoggedOut() {
+ _isLoggingOut = false;
stopMatrixClient();
_clearStorage().done();
dis.dispatch({action: 'on_logged_out'});
diff --git a/src/components/structures/MatrixChat.js b/src/components/structures/MatrixChat.js
index 9ea0cb42c8..e1c21f27e1 100644
--- a/src/components/structures/MatrixChat.js
+++ b/src/components/structures/MatrixChat.js
@@ -1262,6 +1262,7 @@ export default React.createClass({
}, true);
});
cli.on('Session.logged_out', function(call) {
+ if (Lifecycle.isLoggingOut()) return;
const ErrorDialog = sdk.getComponent("dialogs.ErrorDialog");
Modal.createTrackedDialog('Signed out', '', ErrorDialog, {
title: _t('Signed Out'),
From 29d48e5dad8aad4bd7288f85aaf146d60ede3844 Mon Sep 17 00:00:00 2001
From: Michael Telatynski <7t3chguy@gmail.com>
Date: Sun, 15 Jul 2018 22:48:25 +0100
Subject: [PATCH 004/343] guests trying to join communities should fire the
ILAG flow.
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---
src/components/structures/GroupView.js | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/src/components/structures/GroupView.js b/src/components/structures/GroupView.js
index 801d2e282e..9498c2aa2a 100644
--- a/src/components/structures/GroupView.js
+++ b/src/components/structures/GroupView.js
@@ -723,6 +723,11 @@ export default React.createClass({
},
_onJoinClick: async function() {
+ if (this._matrixClient.isGuest()) {
+ dis.dispatch({action: 'view_set_mxid'});
+ return;
+ }
+
this.setState({membershipBusy: true});
// Wait 500ms to prevent flashing. Do this before sending a request otherwise we risk the
From a11e1cc2f9e37e1261eade4d9c3c141dc7ae43fb Mon Sep 17 00:00:00 2001
From: Luke Barnard
Date: Wed, 27 Jun 2018 17:39:20 +0100
Subject: [PATCH 005/343] [WIP] Send lazy_load_memberers filter when syncing
---
src/MatrixClientPeg.js | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/src/MatrixClientPeg.js b/src/MatrixClientPeg.js
index 9d86a62de4..01a411663c 100644
--- a/src/MatrixClientPeg.js
+++ b/src/MatrixClientPeg.js
@@ -34,6 +34,14 @@ interface MatrixClientCreds {
guest: boolean,
}
+const FILTER_CONTENT = {
+ room: {
+ state: {
+ lazy_load_members: true,
+ },
+ },
+};
+
/**
* Wrapper object for handling the js-sdk Matrix Client object in the react-sdk
* Handles the creation/initialisation of client objects.
@@ -99,6 +107,8 @@ class MatrixClientPeg {
// the react sdk doesn't work without this, so don't allow
opts.pendingEventOrdering = "detached";
+ opts.filter = await this.matrixClient.createFilter(FILTER_CONTENT);
+
try {
const promise = this.matrixClient.store.startup();
console.log(`MatrixClientPeg: waiting for MatrixClient store to initialise`);
From 8c985bd049a639e46db9698ed3a8ca96235ffb99 Mon Sep 17 00:00:00 2001
From: Bruno Windels
Date: Tue, 10 Jul 2018 17:20:52 +0200
Subject: [PATCH 006/343] ask client to lazy load room members when viewing a
room
---
src/stores/RoomViewStore.js | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/stores/RoomViewStore.js b/src/stores/RoomViewStore.js
index fed0d7b4a1..05ad16912c 100644
--- a/src/stores/RoomViewStore.js
+++ b/src/stores/RoomViewStore.js
@@ -133,6 +133,7 @@ class RoomViewStore extends Store {
_viewRoom(payload) {
if (payload.room_id) {
+ MatrixClientPeg.get().loadRoomMembersIfNeeded(payload.room_id);
const newState = {
roomId: payload.room_id,
roomAlias: payload.room_alias,
From de3e143a8fd68bf1b9d6e1f01fd2808958375fae Mon Sep 17 00:00:00 2001
From: Bruno Windels
Date: Thu, 12 Jul 2018 19:38:08 +0200
Subject: [PATCH 007/343] only lazy load the members when viewing a joined room
---
src/components/structures/RoomView.js | 3 +++
src/stores/RoomViewStore.js | 1 -
2 files changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/components/structures/RoomView.js b/src/components/structures/RoomView.js
index 0325b3d9a6..2c322b269d 100644
--- a/src/components/structures/RoomView.js
+++ b/src/components/structures/RoomView.js
@@ -312,6 +312,9 @@ module.exports = React.createClass({
// Stop peeking because we have joined this room previously
MatrixClientPeg.get().stopPeeking();
this.setState({isPeeking: false});
+
+ //viewing a previously joined room, try to lazy load members
+ MatrixClientPeg.get().loadRoomMembersIfNeeded(room.roomId);
}
}
},
diff --git a/src/stores/RoomViewStore.js b/src/stores/RoomViewStore.js
index 05ad16912c..fed0d7b4a1 100644
--- a/src/stores/RoomViewStore.js
+++ b/src/stores/RoomViewStore.js
@@ -133,7 +133,6 @@ class RoomViewStore extends Store {
_viewRoom(payload) {
if (payload.room_id) {
- MatrixClientPeg.get().loadRoomMembersIfNeeded(payload.room_id);
const newState = {
roomId: payload.room_id,
roomAlias: payload.room_alias,
From 19387805ac3a95a8f0eaa84406c50767be0f0492 Mon Sep 17 00:00:00 2001
From: Bruno Windels
Date: Thu, 12 Jul 2018 19:39:52 +0200
Subject: [PATCH 008/343] Don't assume RoomMember has a state event in direct
chat detection
Instead call the method on the member that takes lazy loading into account
---
src/components/structures/RoomView.js | 23 +++++++----------------
1 file changed, 7 insertions(+), 16 deletions(-)
diff --git a/src/components/structures/RoomView.js b/src/components/structures/RoomView.js
index 2c322b269d..3a9b3ae748 100644
--- a/src/components/structures/RoomView.js
+++ b/src/components/structures/RoomView.js
@@ -749,21 +749,15 @@ module.exports = React.createClass({
},
_updateDMState() {
- const me = this.state.room.getMember(MatrixClientPeg.get().credentials.userId);
+ const me = this.state.room.getMember(MatrixClientPeg.get().getUserId());
if (!me || me.membership !== "join") {
return;
}
+ const roomId = this.state.room.roomId;
+ const dmInviter = me.getDirectChatInviter();
- // The user may have accepted an invite with is_direct set
- if (me.events.member.getPrevContent().membership === "invite" &&
- me.events.member.getPrevContent().is_direct
- ) {
- // This is a DM with the sender of the invite event (which we assume
- // preceded the join event)
- Rooms.setDMRoom(
- this.state.room.roomId,
- me.events.member.getUnsigned().prev_sender,
- );
+ if (dmInviter) {
+ Rooms.setDMRoom(roomId, dmInviter);
return;
}
@@ -777,11 +771,8 @@ module.exports = React.createClass({
// The user may have sent an invite with is_direct sent
const other = invitedMembers[0];
- if (other &&
- other.membership === "invite" &&
- other.events.member.getContent().is_direct
- ) {
- Rooms.setDMRoom(this.state.room.roomId, other.userId);
+ if (other && !!other.getDirectChatInviter()) {
+ Rooms.setDMRoom(roomId, other.userId);
return;
}
},
From 6ff92ede8f26b403cc05f5e18b0c0f445bfdff13 Mon Sep 17 00:00:00 2001
From: Bruno Windels
Date: Fri, 13 Jul 2018 12:51:32 +0200
Subject: [PATCH 009/343] this code actually never fires, so remove it
and that's ok because createRoom will already mark a DM as such
on the inviter's side. So here we just handle the invitees side.
---
src/components/structures/RoomView.js | 16 ----------------
1 file changed, 16 deletions(-)
diff --git a/src/components/structures/RoomView.js b/src/components/structures/RoomView.js
index 3a9b3ae748..a545eaab54 100644
--- a/src/components/structures/RoomView.js
+++ b/src/components/structures/RoomView.js
@@ -758,22 +758,6 @@ module.exports = React.createClass({
if (dmInviter) {
Rooms.setDMRoom(roomId, dmInviter);
- return;
- }
-
- const invitedMembers = this.state.room.getMembersWithMembership("invite");
- const joinedMembers = this.state.room.getMembersWithMembership("join");
-
- // There must be one invited member and one joined member
- if (invitedMembers.length !== 1 || joinedMembers.length !== 1) {
- return;
- }
-
- // The user may have sent an invite with is_direct sent
- const other = invitedMembers[0];
- if (other && !!other.getDirectChatInviter()) {
- Rooms.setDMRoom(roomId, other.userId);
- return;
}
},
From 54904c9282a14a31d9f01388b5341721f0f7a100 Mon Sep 17 00:00:00 2001
From: Bruno Windels
Date: Fri, 13 Jul 2018 14:21:15 +0200
Subject: [PATCH 010/343] use member helper method instead of digging inside
member
---
src/utils/DMRoomMap.js | 10 ++--------
1 file changed, 2 insertions(+), 8 deletions(-)
diff --git a/src/utils/DMRoomMap.js b/src/utils/DMRoomMap.js
index d6242719ba..186dc31c3a 100644
--- a/src/utils/DMRoomMap.js
+++ b/src/utils/DMRoomMap.js
@@ -97,14 +97,8 @@ export default class DMRoomMap {
// no entry? if the room is an invite, look for the is_direct hint.
const room = this.matrixClient.getRoom(roomId);
if (room) {
- const me = room.getMember(this.matrixClient.credentials.userId);
- if (me.membership == 'invite') {
- // The 'direct' hihnt is there, so declare that this is a DM room for
- // whoever invited us.
- if (me.events.member.getContent().is_direct) {
- return me.events.member.getSender();
- }
- }
+ const me = room.getMember(this.matrixClient.getUserId());
+ return me.getDirectChatInviter();
}
}
return this.roomToUser[roomId];
From e237a02fa5005e5ce23c0bef799e735eb7182abc Mon Sep 17 00:00:00 2001
From: Bruno Windels
Date: Fri, 13 Jul 2018 14:23:24 +0200
Subject: [PATCH 011/343] use more consistent naming
---
src/components/structures/RoomView.js | 2 +-
src/utils/DMRoomMap.js | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/components/structures/RoomView.js b/src/components/structures/RoomView.js
index a545eaab54..8d4a15642f 100644
--- a/src/components/structures/RoomView.js
+++ b/src/components/structures/RoomView.js
@@ -754,7 +754,7 @@ module.exports = React.createClass({
return;
}
const roomId = this.state.room.roomId;
- const dmInviter = me.getDirectChatInviter();
+ const dmInviter = me.getDMInviter();
if (dmInviter) {
Rooms.setDMRoom(roomId, dmInviter);
diff --git a/src/utils/DMRoomMap.js b/src/utils/DMRoomMap.js
index 186dc31c3a..d47282f370 100644
--- a/src/utils/DMRoomMap.js
+++ b/src/utils/DMRoomMap.js
@@ -98,7 +98,7 @@ export default class DMRoomMap {
const room = this.matrixClient.getRoom(roomId);
if (room) {
const me = room.getMember(this.matrixClient.getUserId());
- return me.getDirectChatInviter();
+ return me.getDMInviter();
}
}
return this.roomToUser[roomId];
From 8529bc55e3a7a7aa5176ad261740a3e6bedb8c17 Mon Sep 17 00:00:00 2001
From: Bruno Windels
Date: Fri, 13 Jul 2018 14:25:12 +0200
Subject: [PATCH 012/343] use helper method for knowing whether a user was
kicked
mainly for readability, but also to discourage grabbing into the member
because of lazy loading changes
---
src/Rooms.js | 3 +--
src/stores/RoomListStore.js | 3 +--
2 files changed, 2 insertions(+), 4 deletions(-)
diff --git a/src/Rooms.js b/src/Rooms.js
index ffa39141ff..607bd60b98 100644
--- a/src/Rooms.js
+++ b/src/Rooms.js
@@ -81,8 +81,7 @@ export function isConfCallRoom(room, me, conferenceHandler) {
}
export function looksLikeDirectMessageRoom(room, me) {
- if (me.membership == "join" || me.membership === "ban" ||
- (me.membership === "leave" && me.events.member.getSender() !== me.events.member.getStateKey())) {
+ if (me.membership == "join" || me.membership === "ban" || me.isKicked()) {
// Used to split rooms via tags
const tagNames = Object.keys(room.tags);
// Used for 1:1 direct chats
diff --git a/src/stores/RoomListStore.js b/src/stores/RoomListStore.js
index b6d0949dd3..8dbfca8875 100644
--- a/src/stores/RoomListStore.js
+++ b/src/stores/RoomListStore.js
@@ -178,8 +178,7 @@ class RoomListStore extends Store {
if (me.membership == "invite") {
lists["im.vector.fake.invite"].push(room);
- } else if (me.membership == "join" || me.membership === "ban" ||
- (me.membership === "leave" && me.events.member.getSender() !== me.events.member.getStateKey())) {
+ } else if (me.membership == "join" || me.membership === "ban" || me.isKicked()) {
// Used to split rooms via tags
let tagNames = Object.keys(room.tags);
From af77f0206af4f71895f9aea0f6ba3054f229adec Mon Sep 17 00:00:00 2001
From: Bruno Windels
Date: Fri, 13 Jul 2018 15:46:46 +0200
Subject: [PATCH 013/343] don't assume a member has events associated
---
src/Rooms.js | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/Rooms.js b/src/Rooms.js
index 607bd60b98..aa025d7dc5 100644
--- a/src/Rooms.js
+++ b/src/Rooms.js
@@ -166,7 +166,7 @@ export function guessDMRoomTarget(room, me) {
for (const user of room.getJoinedMembers()) {
if (user.userId == me.userId) continue;
- if (oldestTs === undefined || user.events.member.getTs() < oldestTs) {
+ if (oldestTs === undefined || (user.events.member && user.events.member.getTs() < oldestTs)) {
oldestUser = user;
oldestTs = user.events.member.getTs();
}
@@ -177,7 +177,7 @@ export function guessDMRoomTarget(room, me) {
for (const user of room.currentState.getMembers()) {
if (user.userId == me.userId) continue;
- if (oldestTs === undefined || user.events.member.getTs() < oldestTs) {
+ if (oldestTs === undefined || (user.events.member && user.events.member.getTs() < oldestTs)) {
oldestUser = user;
oldestTs = user.events.member.getTs();
}
From 8c9ceca14f5057cf09a20291255bae679b75c16a Mon Sep 17 00:00:00 2001
From: Bruno Windels
Date: Fri, 13 Jul 2018 15:57:12 +0200
Subject: [PATCH 014/343] take into account lazy loading when enlarging avatar
---
src/components/views/rooms/MemberInfo.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/components/views/rooms/MemberInfo.js b/src/components/views/rooms/MemberInfo.js
index 67189ac90f..8b465cef9d 100644
--- a/src/components/views/rooms/MemberInfo.js
+++ b/src/components/views/rooms/MemberInfo.js
@@ -598,7 +598,7 @@ module.exports = withMatrixClient(React.createClass({
onMemberAvatarClick: function() {
const member = this.props.member;
- const avatarUrl = member.user ? member.user.avatarUrl : member.events.member.getContent().avatar_url;
+ const avatarUrl = member.getMxcAvatarUrl();
if (!avatarUrl) return;
const httpUrl = this.props.matrixClient.mxcUrlToHttp(avatarUrl);
From 866b4bb067576c30927344ef4e98df6dd22ccad3 Mon Sep 17 00:00:00 2001
From: Bruno Windels
Date: Fri, 13 Jul 2018 16:01:29 +0200
Subject: [PATCH 015/343] use isKicked method in preview bar
---
src/components/views/rooms/RoomPreviewBar.js | 6 +-----
1 file changed, 1 insertion(+), 5 deletions(-)
diff --git a/src/components/views/rooms/RoomPreviewBar.js b/src/components/views/rooms/RoomPreviewBar.js
index 536093807a..64c9b376df 100644
--- a/src/components/views/rooms/RoomPreviewBar.js
+++ b/src/components/views/rooms/RoomPreviewBar.js
@@ -101,11 +101,7 @@ module.exports = React.createClass({
const myMember = this.props.room ? this.props.room.currentState.members[
MatrixClientPeg.get().credentials.userId
] : null;
- const kicked = (
- myMember &&
- myMember.membership == 'leave' &&
- myMember.events.member.getSender() != MatrixClientPeg.get().credentials.userId
- );
+ const kicked = myMember.isKicked();
const banned = myMember && myMember.membership == 'ban';
if (this.props.inviterName) {
From af07d734325d6664af6a7e393a18b035591c1fc6 Mon Sep 17 00:00:00 2001
From: Bruno Windels
Date: Mon, 16 Jul 2018 15:07:53 +0200
Subject: [PATCH 016/343] hide lazy loading behind feature flag
---
src/MatrixClientPeg.js | 4 +++-
src/components/structures/RoomView.js | 6 +++++-
src/settings/Settings.js | 5 +++++
3 files changed, 13 insertions(+), 2 deletions(-)
diff --git a/src/MatrixClientPeg.js b/src/MatrixClientPeg.js
index 01a411663c..82d18d307d 100644
--- a/src/MatrixClientPeg.js
+++ b/src/MatrixClientPeg.js
@@ -107,7 +107,9 @@ class MatrixClientPeg {
// the react sdk doesn't work without this, so don't allow
opts.pendingEventOrdering = "detached";
- opts.filter = await this.matrixClient.createFilter(FILTER_CONTENT);
+ if (SettingsStore.isFeatureEnabled('feature_lazyloading')) {
+ opts.filter = await this.matrixClient.createFilter(FILTER_CONTENT);
+ }
try {
const promise = this.matrixClient.store.startup();
diff --git a/src/components/structures/RoomView.js b/src/components/structures/RoomView.js
index 8d4a15642f..2eaf0180a9 100644
--- a/src/components/structures/RoomView.js
+++ b/src/components/structures/RoomView.js
@@ -314,7 +314,11 @@ module.exports = React.createClass({
this.setState({isPeeking: false});
//viewing a previously joined room, try to lazy load members
- MatrixClientPeg.get().loadRoomMembersIfNeeded(room.roomId);
+
+ // lazy load members if enabled
+ if (SettingsStore.isFeatureEnabled('feature_lazyloading')) {
+ MatrixClientPeg.get().loadRoomMembersIfNeeded(room.roomId);
+ }
}
}
},
diff --git a/src/settings/Settings.js b/src/settings/Settings.js
index e3f5855f0d..d76c1fd8e8 100644
--- a/src/settings/Settings.js
+++ b/src/settings/Settings.js
@@ -83,6 +83,11 @@ export const SETTINGS = {
supportedLevels: LEVELS_FEATURE,
default: false,
},
+ "feature_lazyloading": {
+ isFeature: true,
+ displayName: _td("Increase performance by loading room members on first view"),
+ supportedLevels: LEVELS_FEATURE,
+ },
"MessageComposerInput.dontSuggestEmoji": {
supportedLevels: LEVELS_ACCOUNT_SETTINGS,
displayName: _td('Disable Emoji suggestions while typing'),
From 201332d96cde1ef154abca0c40d99cf7c70cc845 Mon Sep 17 00:00:00 2001
From: Bruno Windels
Date: Mon, 16 Jul 2018 15:39:19 +0200
Subject: [PATCH 017/343] move comment after rebase
---
src/components/structures/RoomView.js | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/components/structures/RoomView.js b/src/components/structures/RoomView.js
index 2eaf0180a9..9eb02999fd 100644
--- a/src/components/structures/RoomView.js
+++ b/src/components/structures/RoomView.js
@@ -309,12 +309,12 @@ module.exports = React.createClass({
}
});
} else if (room) {
+ //viewing a previously joined room, try to lazy load members
+
// Stop peeking because we have joined this room previously
MatrixClientPeg.get().stopPeeking();
this.setState({isPeeking: false});
- //viewing a previously joined room, try to lazy load members
-
// lazy load members if enabled
if (SettingsStore.isFeatureEnabled('feature_lazyloading')) {
MatrixClientPeg.get().loadRoomMembersIfNeeded(room.roomId);
From 34cb89e86a47b831a3d6bfea8add6b3b56746a50 Mon Sep 17 00:00:00 2001
From: Bruno Windels
Date: Wed, 18 Jul 2018 12:14:26 +0200
Subject: [PATCH 018/343] fix tests
---
test/components/views/rooms/RoomList-test.js | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/test/components/views/rooms/RoomList-test.js b/test/components/views/rooms/RoomList-test.js
index f40a89777b..c0a0b8eb67 100644
--- a/test/components/views/rooms/RoomList-test.js
+++ b/test/components/views/rooms/RoomList-test.js
@@ -14,7 +14,7 @@ import dis from '../../../../src/dispatcher';
import DMRoomMap from '../../../../src/utils/DMRoomMap.js';
import GroupStore from '../../../../src/stores/GroupStore.js';
-import { Room, RoomMember } from 'matrix-js-sdk';
+import { MatrixClient, Room, RoomMember } from 'matrix-js-sdk';
function generateRoomId() {
return '!' + Math.random().toString().slice(2, 10) + ':domain';
@@ -48,6 +48,8 @@ describe('RoomList', () => {
sandbox = TestUtils.stubClient(sandbox);
client = MatrixClientPeg.get();
client.credentials = {userId: myUserId};
+ //revert this to prototype method as the test-utils monkey-patches this to return a hardcoded value
+ client.getUserId = MatrixClient.prototype.getUserId;
clock = lolex.install();
From 33f556066636cebf2ac55264e0496a06cd308bca Mon Sep 17 00:00:00 2001
From: Bruno Windels
Date: Thu, 19 Jul 2018 15:04:39 +0200
Subject: [PATCH 019/343] move error message to caller of lazy loading
---
src/components/structures/RoomView.js | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/src/components/structures/RoomView.js b/src/components/structures/RoomView.js
index 9eb02999fd..c742975377 100644
--- a/src/components/structures/RoomView.js
+++ b/src/components/structures/RoomView.js
@@ -317,7 +317,12 @@ module.exports = React.createClass({
// lazy load members if enabled
if (SettingsStore.isFeatureEnabled('feature_lazyloading')) {
- MatrixClientPeg.get().loadRoomMembersIfNeeded(room.roomId);
+ MatrixClientPeg.get().loadRoomMembersIfNeeded(room.roomId).catch((err) => {
+ const errorMessage = `Fetching room members for ${this.roomId} failed.` +
+ " Room members will appear incomplete.";
+ console.error(errorMessage);
+ console.error(err);
+ });
}
}
}
From f79e2eae40b75a87702e6dfcc7bcdb9176b6b4ef Mon Sep 17 00:00:00 2001
From: Bruno Windels
Date: Wed, 25 Jul 2018 12:39:46 +0200
Subject: [PATCH 020/343] might not have loaded members here yet
---
src/components/views/rooms/RoomPreviewBar.js | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/src/components/views/rooms/RoomPreviewBar.js b/src/components/views/rooms/RoomPreviewBar.js
index 64c9b376df..5ec19d185e 100644
--- a/src/components/views/rooms/RoomPreviewBar.js
+++ b/src/components/views/rooms/RoomPreviewBar.js
@@ -98,11 +98,11 @@ module.exports = React.createClass({
);
}
- const myMember = this.props.room ? this.props.room.currentState.members[
- MatrixClientPeg.get().credentials.userId
- ] : null;
- const kicked = myMember.isKicked();
- const banned = myMember && myMember.membership == 'ban';
+ const myMember = this.props.room ?
+ this.props.room.getMember(MatrixClientPeg.get().getUserId()) :
+ null;
+ const kicked = myMember && myMember.isKicked();
+ const banned = myMember && myMember && myMember.membership == 'ban';
if (this.props.inviterName) {
let emailMatchBlock;
From 7ea913ccecbae5ccf887e16358bb3faa93bd7f57 Mon Sep 17 00:00:00 2001
From: Bruno Windels
Date: Wed, 25 Jul 2018 14:14:36 +0200
Subject: [PATCH 021/343] fall back to synced membership when own membership is
not yet available (due to lazy loading)
---
src/stores/RoomListStore.js | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/src/stores/RoomListStore.js b/src/stores/RoomListStore.js
index 8dbfca8875..b95eafa2ab 100644
--- a/src/stores/RoomListStore.js
+++ b/src/stores/RoomListStore.js
@@ -174,11 +174,11 @@ class RoomListStore extends Store {
this._matrixClient.getRooms().forEach((room, index) => {
const me = room.getMember(this._matrixClient.credentials.userId);
- if (!me) return;
+ const membership = me ? me.membership : room.getSyncedMembership();
- if (me.membership == "invite") {
+ if (membership == "invite") {
lists["im.vector.fake.invite"].push(room);
- } else if (me.membership == "join" || me.membership === "ban" || me.isKicked()) {
+ } else if (membership == "join" || membership === "ban" || me.isKicked()) {
// Used to split rooms via tags
let tagNames = Object.keys(room.tags);
@@ -205,10 +205,10 @@ class RoomListStore extends Store {
} else {
lists["im.vector.fake.recent"].push(room);
}
- } else if (me.membership === "leave") {
+ } else if (membership === "leave") {
lists["im.vector.fake.archived"].push(room);
} else {
- console.error("unrecognised membership: " + me.membership + " - this should never happen");
+ console.error("unrecognised membership: " + membership + " - this should never happen");
}
});
From d87d34030aff688b6cf811e540f6bea2e3ff64da Mon Sep 17 00:00:00 2001
From: Bruno Windels
Date: Wed, 25 Jul 2018 14:54:10 +0200
Subject: [PATCH 022/343] fix dm detection and conf call code with lazy loading
---
src/Rooms.js | 46 ++++++++++++++------------
src/components/views/rooms/RoomList.js | 4 +--
src/stores/RoomListStore.js | 3 +-
src/utils/DMRoomMap.js | 3 +-
4 files changed, 29 insertions(+), 27 deletions(-)
diff --git a/src/Rooms.js b/src/Rooms.js
index aa025d7dc5..2fda46450f 100644
--- a/src/Rooms.js
+++ b/src/Rooms.js
@@ -31,26 +31,26 @@ export function getDisplayAliasForRoom(room) {
* If the room contains only two members including the logged-in user,
* return the other one. Otherwise, return null.
*/
-export function getOnlyOtherMember(room, me) {
- const joinedMembers = room.getJoinedMembers();
+export function getOnlyOtherMember(room, myUserId) {
- if (joinedMembers.length === 2) {
- return joinedMembers.filter(function(m) {
- return m.userId !== me.userId;
+ if (room.currentState.getJoinedMemberCount() === 2) {
+ return room.getJoinedMembers().filter(function(m) {
+ return m.userId !== myUserId;
})[0];
}
return null;
}
-function _isConfCallRoom(room, me, conferenceHandler) {
+function _isConfCallRoom(room, myUserId, conferenceHandler) {
if (!conferenceHandler) return false;
- if (me.membership != "join") {
+ const myMembership = room.getMyMembership(myUserId);
+ if (myMembership != "join") {
return false;
}
- const otherMember = getOnlyOtherMember(room, me);
+ const otherMember = getOnlyOtherMember(room, myUserId);
if (otherMember === null) {
return false;
}
@@ -68,28 +68,30 @@ const isConfCallRoomCache = {
// $roomId: bool
};
-export function isConfCallRoom(room, me, conferenceHandler) {
+export function isConfCallRoom(room, myUserId, conferenceHandler) {
if (isConfCallRoomCache[room.roomId] !== undefined) {
return isConfCallRoomCache[room.roomId];
}
- const result = _isConfCallRoom(room, me, conferenceHandler);
+ const result = _isConfCallRoom(room, myUserId, conferenceHandler);
isConfCallRoomCache[room.roomId] = result;
return result;
}
-export function looksLikeDirectMessageRoom(room, me) {
- if (me.membership == "join" || me.membership === "ban" || me.isKicked()) {
+export function looksLikeDirectMessageRoom(room, myUserId) {
+ const myMembership = room.getMyMembership(myUserId);
+ const me = room.getMember(myUserId);
+
+ if (myMembership == "join" || myMembership === "ban" || (me && me.isKicked())) {
// Used to split rooms via tags
const tagNames = Object.keys(room.tags);
// Used for 1:1 direct chats
- const members = room.currentState.getMembers();
-
// Show 1:1 chats in seperate "Direct Messages" section as long as they haven't
// been moved to a different tag section
- if (members.length === 2 && !tagNames.length) {
+ // TODO: Use SUMMARYAPI to take invited users into account
+ if (room.currentState.getJoinedMemberCount() === 2 && !tagNames.length) {
return true;
}
}
@@ -99,10 +101,10 @@ export function looksLikeDirectMessageRoom(room, me) {
export function guessAndSetDMRoom(room, isDirect) {
let newTarget;
if (isDirect) {
- const guessedTarget = guessDMRoomTarget(
- room, room.getMember(MatrixClientPeg.get().credentials.userId),
+ const guessedUserId = guessDMRoomTargetId(
+ room, MatrixClientPeg.get().getUserId()
);
- newTarget = guessedTarget.userId;
+ newTarget = guessedUserId;
} else {
newTarget = null;
}
@@ -158,13 +160,13 @@ export function setDMRoom(roomId, userId) {
* Given a room, estimate which of its members is likely to
* be the target if the room were a DM room and return that user.
*/
-export function guessDMRoomTarget(room, me) {
+function guessDMRoomTargetId(room, myUserId) {
let oldestTs;
let oldestUser;
// Pick the joined user who's been here longest (and isn't us),
for (const user of room.getJoinedMembers()) {
- if (user.userId == me.userId) continue;
+ if (user.userId == myUserId) continue;
if (oldestTs === undefined || (user.events.member && user.events.member.getTs() < oldestTs)) {
oldestUser = user;
@@ -175,7 +177,7 @@ export function guessDMRoomTarget(room, me) {
// if there are no joined members other than us, use the oldest member
for (const user of room.currentState.getMembers()) {
- if (user.userId == me.userId) continue;
+ if (user.userId == myUserId) continue;
if (oldestTs === undefined || (user.events.member && user.events.member.getTs() < oldestTs)) {
oldestUser = user;
@@ -183,6 +185,6 @@ export function guessDMRoomTarget(room, me) {
}
}
- if (oldestUser === undefined) return me;
+ if (oldestUser === undefined) return myUserId;
return oldestUser;
}
diff --git a/src/components/views/rooms/RoomList.js b/src/components/views/rooms/RoomList.js
index 8533e3f61a..9d48ed32c9 100644
--- a/src/components/views/rooms/RoomList.js
+++ b/src/components/views/rooms/RoomList.js
@@ -342,8 +342,8 @@ module.exports = React.createClass({
if (!taggedRoom) {
return;
}
- const me = taggedRoom.getMember(MatrixClientPeg.get().credentials.userId);
- if (HIDE_CONFERENCE_CHANS && Rooms.isConfCallRoom(taggedRoom, me, this.props.ConferenceHandler)) {
+ const myUserId = MatrixClientPeg.get().getUserId();
+ if (HIDE_CONFERENCE_CHANS && Rooms.isConfCallRoom(taggedRoom, myUserId, this.props.ConferenceHandler)) {
return;
}
diff --git a/src/stores/RoomListStore.js b/src/stores/RoomListStore.js
index b95eafa2ab..38ad7e0b3d 100644
--- a/src/stores/RoomListStore.js
+++ b/src/stores/RoomListStore.js
@@ -173,8 +173,7 @@ class RoomListStore extends Store {
if (!this._matrixClient) return;
this._matrixClient.getRooms().forEach((room, index) => {
- const me = room.getMember(this._matrixClient.credentials.userId);
- const membership = me ? me.membership : room.getSyncedMembership();
+ const membership = room.getMyMembership(this._matrixClient.getUserId());
if (membership == "invite") {
lists["im.vector.fake.invite"].push(room);
diff --git a/src/utils/DMRoomMap.js b/src/utils/DMRoomMap.js
index d47282f370..acb1573cbf 100644
--- a/src/utils/DMRoomMap.js
+++ b/src/utils/DMRoomMap.js
@@ -96,9 +96,10 @@ export default class DMRoomMap {
if (this.roomToUser[roomId] === undefined) {
// no entry? if the room is an invite, look for the is_direct hint.
const room = this.matrixClient.getRoom(roomId);
+ // TODO Use SUMMARYAPI to fix DM detection?
if (room) {
const me = room.getMember(this.matrixClient.getUserId());
- return me.getDMInviter();
+ return me && me.getDMInviter();
}
}
return this.roomToUser[roomId];
From cfd20c7e85c75671bf408c8eea6e3114bd78696d Mon Sep 17 00:00:00 2001
From: Bruno Windels
Date: Wed, 25 Jul 2018 16:08:44 +0200
Subject: [PATCH 023/343] fix error/tests
---
src/stores/RoomListStore.js | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/src/stores/RoomListStore.js b/src/stores/RoomListStore.js
index 38ad7e0b3d..e415389423 100644
--- a/src/stores/RoomListStore.js
+++ b/src/stores/RoomListStore.js
@@ -173,11 +173,13 @@ class RoomListStore extends Store {
if (!this._matrixClient) return;
this._matrixClient.getRooms().forEach((room, index) => {
- const membership = room.getMyMembership(this._matrixClient.getUserId());
+ const myUserId = this._matrixClient.getUserId();
+ const membership = room.getMyMembership(myUserId);
+ const me = room.getMember(myUserId);
if (membership == "invite") {
lists["im.vector.fake.invite"].push(room);
- } else if (membership == "join" || membership === "ban" || me.isKicked()) {
+ } else if (membership == "join" || membership === "ban" || (me && me.isKicked())) {
// Used to split rooms via tags
let tagNames = Object.keys(room.tags);
From 137c5068b0edac440c96e53afafa6fdba0bf4bf9 Mon Sep 17 00:00:00 2001
From: Kyf Lee
Date: Thu, 26 Jul 2018 11:25:14 +0000
Subject: [PATCH 024/343] Translated using Weblate (Korean)
Currently translated at 96.7% (1179 of 1218 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/ko/
---
src/i18n/strings/ko.json | 746 +++++++++++++++++++++++++--------------
1 file changed, 478 insertions(+), 268 deletions(-)
diff --git a/src/i18n/strings/ko.json b/src/i18n/strings/ko.json
index 1be837261b..86257b4f63 100644
--- a/src/i18n/strings/ko.json
+++ b/src/i18n/strings/ko.json
@@ -5,14 +5,14 @@
"Custom Server Options": "사용자 지정 서버 설정",
"Dismiss": "없애기",
"Error": "오류",
- "Mute": "알림 끄기",
+ "Mute": "음소거",
"Notifications": "알림",
- "powered by Matrix": "Matrix의 지원을 받고 있어요",
- "Remove": "삭제",
+ "powered by Matrix": "Matrix의 지원을 받고 있습니다",
+ "Remove": "제거",
"Room directory": "방 목록",
"Search": "찾기",
"Settings": "설정",
- "Start chat": "이야기하기",
+ "Start chat": "대화하기",
"unknown error code": "알 수 없는 오류 코드",
"OK": "네",
"Continue": "게속하기",
@@ -24,20 +24,20 @@
"Admin": "관리자",
"Admin Tools": "관리 도구",
"VoIP": "VoIP",
- "No Microphones detected": "마이크를 찾지 못했어요",
- "No Webcams detected": "카메라를 찾지 못했어요",
- "No media permissions": "미디어 권한이 없어요",
+ "No Microphones detected": "마이크를 찾지 못했습니다.",
+ "No Webcams detected": "카메라를 찾지 못했습니다.",
+ "No media permissions": "미디어 권한이 없습니다.",
"Default Device": "기본 기기",
"Microphone": "마이크",
"Camera": "카메라",
"Advanced": "고급",
"Algorithm": "알고리즘",
- "Hide removed messages": "삭제된 메시지 숨기기",
+ "Hide removed messages": "제거된 메시지 숨기기",
"Always show message timestamps": "항상 메시지의 시간을 보여주기",
"Authentication": "인증",
"Alias (optional)": "별명 (선택)",
"A new password must be entered.": "새 비밀번호를 입력해주세요.",
- "An error has occurred.": "오류가 일어났어요.",
+ "An error has occurred.": "오류가 일어났습니다.",
"Anyone": "누구나",
"Are you sure?": "정말이세요?",
"Are you sure you want to leave the room '%(roomName)s'?": "정말로 '%(roomName)s'를 떠나시겠어요?",
@@ -47,7 +47,7 @@
"Ban": "차단하기",
"Banned users": "차단된 사용자",
"Blacklisted": "요주의",
- "Can't load user settings": "사용사 설정을 불러올 수 없어요",
+ "Can't load user settings": "사용사 설정을 불러올 수 없습니다.",
"Change Password": "비밀번호 바꾸기",
"Changes your display nickname": "별명 바꾸기",
"Clear Cache and Reload": "캐시 지우고 다시 시작하기",
@@ -59,25 +59,25 @@
"Custom": "사용자 지정",
"Device ID": "기기 ID",
"Default": "기본",
- "Device already verified!": "기기를 이미 확인했어요!",
+ "Device already verified!": "이미 인증한 기기입니다!",
"device id: ": "기기 id: ",
"Devices": "기기",
- "Direct chats": "직접 여러 명에게 이야기하기",
+ "Direct chats": "직접 대화하기",
"Disable Notifications": "알림 끄기",
"Display name": "별명",
"Don't send typing notifications": "입력 중이라는 알림 보내지 않기",
"Email": "이메일",
"Email address": "이메일 주소",
"Email, name or matrix ID": "이메일, 이름 혹은 매트릭스 ID",
- "Failed to forget room %(errCode)s": "방 %(errCode)s를 잊지 못했어요",
+ "Failed to forget room %(errCode)s": "%(errCode)s 방을 지우지 못했습니다.",
"Favourite": "즐겨찾기",
"Operation failed": "작업 실패",
- "Failed to change password. Is your password correct?": "비밀번호를 바꾸지 못했어요. 이 비밀번호가 정말 맞으세요?",
- "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "+%(msisdn)s로 문자 메시지를 보냈어요. 인증 번호를 입력해주세요",
- "%(targetName)s accepted an invitation.": "%(targetName)s님이 초대를 수락했어요.",
+ "Failed to change password. Is your password correct?": "비밀번호를 바꾸지 못했습니다. 이 비밀번호가 맞나요?",
+ "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "+%(msisdn)s로 문자 메시지를 보냈습니다. 인증 번호를 입력해주세요.",
+ "%(targetName)s accepted an invitation.": "%(targetName)s님이 초대를 수락했습니다.",
"%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s님이 %(displayName)s 초대를 수락했습니다.",
"Access Token:": "접근 토큰:",
- "Active call (%(roomName)s)": "(%(roomName)s)에서 전화를 걸고 받을 수 있어요",
+ "Active call (%(roomName)s)": "(%(roomName)s)에서 전화를 걸고 받을 수 있습니다.",
"Add a topic": "주제 추가",
"Missing Media Permissions, click here to request.": "미디어 권한이 없습니다. 여기를 눌러 다시 요청해주세요.",
"You may need to manually permit Riot to access your microphone/webcam": "수동으로 Riot에 마이크와 카메라를 허용할 수도 있습니다",
@@ -93,33 +93,33 @@
"Bans user with given id": "받은 ID로 사용자 차단하기",
"Bulk Options": "대규모 설정",
"Call Timeout": "전화 대기 시간 초과",
- "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "홈 서버에 연결할 수 없어요 - 연결을 확인해주시고, 홈 서버의 SSL 인증서가 믿을 수 있는지 확인하시고, 브라우저 확장기능이 요청을 차단하고 있는지 확인해주세요.",
- "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.": "주소창에 HTTPS URL이 있을 때는 HTTP로 홈 서버를 연결할 수 없어요. HTTPS를 쓰거나 안전하지 않은 스크립트를 허용해주세요.",
+ "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "홈 서버에 연결할 수 없으니 연결을 확인하고, 홈 서버의 SSL 인증서가 믿을 수 있는지 확인하고, 브라우저 확장기능이 요청을 차단하고 있는지 확인해 주세요.",
+ "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.": "주소창에 HTTPS URL이 있을 때는 HTTP로 홈 서버를 연결할 수 없습니다. HTTPS를 쓰거나 안전하지 않은 스크립트를 허용해주세요.",
"%(senderName)s changed their profile picture.": "%(senderName)s님이 프로필 사진을 바꿨습니다.",
"%(senderName)s changed the power level of %(powerLevelDiffText)s.": "%(senderName)s님이 %(powerLevelDiffText)s의 권한 등급을 바꿨습니다.",
"%(senderDisplayName)s changed the room name to %(roomName)s.": "%(senderDisplayName)s님이 방 이름을 %(roomName)s(으)로 바꿨습니다.",
- "%(senderDisplayName)s removed the room name.": "%(senderDisplayName)s님이 방 이름을 삭제했습니다.",
+ "%(senderDisplayName)s removed the room name.": "%(senderDisplayName)s님이 방 이름을 제거했습니다.",
"%(senderDisplayName)s changed the topic to \"%(topic)s\".": "%(senderDisplayName)s님이 주제를 \"%(topic)s\"로 바꿨습니다.",
"Changes to who can read history will only apply to future messages in this room": "이제부터의 메시지에만 이 방에서 누가 기록을 읽을 수 있는지에 대한 변경 내역이 적용됩니다",
- "Changing password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "비밀번호를 바꾸면 현재 모든 기기의 종단간 암호화 키가 다시 설정되고, 먼저 방의 키를 내보내고 나중에 다시 불러오지 않는 한, 암호화한 이야기 기록을 읽을 수 없게 되어요. 앞으로는 이 부분은 발전할 겁니다.",
+ "Changing password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "비밀번호를 바꾸면 현재 모든 기기의 종단 간 암호화 키가 다시 설정되고, 먼저 방의 키를 내보내고 나중에 다시 불러오지 않는 한, 암호화한 대화 기록을 읽을 수 없게 됩니다. 이 부분은 향상시키겠습니다.",
"Claimed Ed25519 fingerprint key": "Ed25519 지문 키가 필요",
"Click here to join the discussion!": "여기를 눌러서 같이 논의해요!",
"Click here to fix": "해결하려면 여기를 누르세요",
- "Click to mute audio": "소리를 끄려면 누르세요",
- "Click to mute video": "동영상 소리를 끄려면 누르세요",
+ "Click to mute audio": "음소거하려면 누르세요",
+ "Click to mute video": "동영상을 음소거하려면 누르세요",
"click to reveal": "누르면 나타나요",
- "Click to unmute video": "동영상 소리를 켜려면 누르세요",
- "Click to unmute audio": "소리를 켜려면 누르세요",
+ "Click to unmute video": "동영상 음소거를 끄려면 누르세요",
+ "Click to unmute audio": "음소거를 끄려면 누르세요",
"Command error": "명령 오류",
"Commands": "명령",
- "Conference call failed.": "전화 회의를 실패했어요.",
- "Conference calling is in development and may not be reliable.": "전화 회의는 개발 중이며 신뢰하기 힘들 수 있습니다.",
+ "Conference call failed.": "전화 회의를 실패했습니다.",
+ "Conference calling is in development and may not be reliable.": "전화 회의는 개발 중이고, 따라서 신뢰하기 힘들 수 있습니다.",
"Conference calls are not supported in encrypted rooms": "암호화된 방에서는 전화 회의가 지원되지 않습니다",
"Conference calls are not supported in this client": "이 클라이언트에서는 전화 회의가 지원되지 않습니다",
- "Could not connect to the integration server": "통합 서버에 연결할 수 없어요",
+ "Could not connect to the integration server": "통합 서버에 연결할 수 없습니다.",
"%(count)s new messages|one": "%(count)s 새 메시지",
"%(count)s new messages|other": "%(count)s 새 메시지",
- "Create a new chat or reuse an existing one": "새 이야기를 시작하거나 기존에 하던 이야기를 이어하세요",
+ "Create a new chat or reuse an existing one": "새 대화를 시작하거나 전에 하던 대화를 계속하세요.",
"Cryptography": "암호화",
"Current password": "현재 비밀번호",
"Curve25519 identity key": "Curve25519 신원 키",
@@ -133,81 +133,81 @@
"Delete": "지우기",
"Deops user with given id": "받은 ID로 사용자의 등급을 낮추기",
"Device ID:": "기기 ID:",
- "Device key:": "기기 키:",
- "Devices will not yet be able to decrypt history from before they joined the room": "방에 들어가기 전에는 기기에서 기록을 해독할 수 없어요",
+ "Device key:": "기기 열쇠:",
+ "Devices will not yet be able to decrypt history from before they joined the room": "아직 방에 들어가기 전의 기록은 복호화 하지 못 합니다",
"Disinvite": "초대 취소",
"Displays action": "활동 보이기",
"Download %(text)s": "%(text)s 받기",
"Drop File Here": "여기에 파일을 놓아주세요",
- "Drop here to tag %(section)s": "%(section)s 지정하려면 여기에 놓아주세요",
+ "Drop here to tag %(section)s": "%(section)s를(을) 태그하려면 여기에 놓아주세요.",
"Ed25519 fingerprint": "Ed25519 지문",
"Email address (optional)": "이메일 주소 (선택)",
"Emoji": "이모지",
- "Enable encryption": "암호화 켜기",
- "Enable Notifications": "알림 켜기",
- "Encrypted by a verified device": "인증한 기기로 암호화했어요",
- "Encrypted by an unverified device": "인증하지 않은 기기로 암호화했어요",
- "Encrypted messages will not be visible on clients that do not yet implement encryption": "암호화한 메시지는 아직 암호화를 구현하지 않은 클라이언트에서는 볼 수 없어요",
+ "Enable encryption": "암호화 사용하기",
+ "Enable Notifications": "알림 사용하기",
+ "Encrypted by a verified device": "인증된 기기에서 암호화 됐습니다.",
+ "Encrypted by an unverified device": "인증하지 않은 기기에서 암호화 됐습니다.",
+ "Encrypted messages will not be visible on clients that do not yet implement encryption": "암호화 한 메시지는 아직 암호화를 구현하지 않은 클라이언트에서는 볼 수 없습니다.",
"Encrypted room": "암호화한 방",
- "Encryption is enabled in this room": "이 방은 암호화중이에요",
- "Encryption is not enabled in this room": "이 방은 암호화하고 있지 않아요",
+ "Encryption is enabled in this room": "이 방에서는 암호화 사용 중입니다.",
+ "Encryption is not enabled in this room": "이 방에서는 암호화를 사용하고 있지 않습니다.",
"%(senderName)s ended the call.": "%(senderName)s님이 전화를 끊었습니다.",
"End-to-end encryption information": "종단간 암호화 정보",
- "End-to-end encryption is in beta and may not be reliable": "종단간 암호화는 시험중이며 믿을 수 없어요",
+ "End-to-end encryption is in beta and may not be reliable": "종단 간 암호화는 베타 테스트 중이며 신뢰하기 힘들 수 있습니다.",
"Enter Code": "코드를 입력하세요",
"Enter passphrase": "암호를 입력하세요",
- "Error decrypting attachment": "첨부 파일 해독중 문제가 일어났어요",
- "Error: Problem communicating with the given homeserver.": "오류: 지정한 홈 서버와 통신에 문제가 있어요.",
- "Event information": "사건 정보",
+ "Error decrypting attachment": "첨부 파일 해독중 문제가 일어났습니다",
+ "Error: Problem communicating with the given homeserver.": "오류: 지정한 홈 서버와 통신에 문제가 있습니다.",
+ "Event information": "이벤트 정보",
"Existing Call": "기존 전화",
"Export": "내보내기",
- "Export E2E room keys": "종단간 암호화 방 키 내보내기",
+ "Export E2E room keys": "종단 간 암호화 방 열쇠 내보내기",
"Failed to ban user": "사용자를 차단하지 못했습니다",
- "Failed to change power level": "권한 등급을 바꾸지 못했어요",
- "Failed to fetch avatar URL": "아바타 URL을 불러오지 못했어요",
+ "Failed to change power level": "권한 등급을 바꾸지 못했습니다",
+ "Failed to fetch avatar URL": "아바타 URL을 불러오지 못했습니다.",
"Failed to join room": "방에 들어가지 못했습니다",
- "Failed to kick": "내쫓지 못했어요",
+ "Failed to kick": "추방하지 못했습니다.",
"Failed to leave room": "방을 떠나지 못했습니다",
- "Failed to load timeline position": "타임라인 위치를 불러오지 못했어요",
- "Failed to mute user": "사용자의 알림을 끄지 못했어요",
- "Failed to reject invite": "초대를 거절하지 못했어요",
- "Failed to reject invitation": "초대를 거절하지 못했어요",
- "Failed to save settings": "설정을 저장하지 못했어요",
- "Failed to send email": "이메일을 보내지 못했어요",
- "Failed to send request.": "요청을 보내지 못했어요.",
- "Failed to set avatar.": "아바타를 설정하지 못했어요.",
+ "Failed to load timeline position": "타임라인 위치를 불러오지 못했습니다.",
+ "Failed to mute user": "사용자를 음소거하지 못했습니다.",
+ "Failed to reject invite": "초대를 거절하지 못했습니다.",
+ "Failed to reject invitation": "초대를 거절하지 못했습니다",
+ "Failed to save settings": "설정을 저장하지 못했습니다.",
+ "Failed to send email": "이메일을 보내지 못했습니다.",
+ "Failed to send request.": "요청을 보내지 못했습니다.",
+ "Failed to set avatar.": "아바타를 설정하지 못했습니다.",
"Failed to set display name": "별명을 설정하지 못했습니다",
- "Failed to set up conference call": "전화 회의를 시작하지 못했어요",
- "Failed to toggle moderator status": "조정자 상태를 설정하지 못했어요",
- "Failed to unban": "차단을 해제하지 못했습니다",
- "Failed to upload file": "파일을 올리지 못했어요",
+ "Failed to set up conference call": "전화 회의를 시작하지 못했습니다.",
+ "Failed to toggle moderator status": "조정자 상태를 설정하지 못했습니다",
+ "Failed to unban": "차단을 해제하지 못했습니다.",
+ "Failed to upload file": "파일을 올리지 못했습니다.",
"Failed to upload profile picture!": "프로필 사진을 올리지 못했어요!",
"Failed to verify email address: make sure you clicked the link in the email": "이메일 주소를 인증하지 못했습니다. 메일에 나온 주소를 눌렀는지 확인해 보세요",
"Failure to create room": "방을 만들지 못했습니다",
"Favourites": "즐겨찾기",
"Fill screen": "화면 채우기",
"Filter room members": "방 구성원 찾기",
- "Forget room": "방 잊기",
+ "Forget room": "방 지우기",
"Forgot your password?": "비밀번호를 잊어버리셨어요?",
- "For security, this session has been signed out. Please sign in again.": "보안을 위해서, 이 세션에서 로그아웃했어요. 다시 로그인해주세요.",
- "For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.": "보안을 위해서, 로그아웃하면 이 브라우저에서 모든 종단간 암호화 키를 없앨 거에요. 이후 라이엇에서 이야기를 해독하고 싶으시면, 방 키를 내보내서 안전하게 보관하세요.",
+ "For security, this session has been signed out. Please sign in again.": "안전을 위해서 이 세션에서 로그아웃했습니다. 다시 로그인해주세요.",
+ "For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.": "로그아웃하시면 보안을 위해 이 브라우저에 저장된 모든 종단 간 암호화 열쇠가 삭제됩니다. 다음에 Riot을 사용할 때 대화 기록을 복호화할 수 있길 원한다면, 방 열쇠를 내보내서 안전하게 보관하세요.",
"%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s를 %(fromPowerLevel)s에서 %(toPowerLevel)s로",
- "Guest access is disabled on this Home Server.": "손님은 이 홈 서버에 접근하실 수 없어요.",
- "Guests cannot join this room even if explicitly invited.": "손님은 분명하게 초대받았어도 이 방에 들어가실 수 없어요.",
+ "Guest access is disabled on this Home Server.": "이 홈 서버는 손님으로서 접근하실 수 없습니다.",
+ "Guests cannot join this room even if explicitly invited.": "명시적으로 초대 받은 손님이라도 이 방에는 들어가실 수 없습니다.",
"Hangup": "전화 끊기",
"Hide read receipts": "읽음 확인 표시 숨기기",
"Hide Text Formatting Toolbar": "문자 서식 도구 숨기기",
- "Historical": "보관",
+ "Historical": "보관한 방",
"Home": "홈",
"Homeserver is": "홈 서버:",
"Identity Server is": "ID 서버:",
- "I have verified my email address": "제 이메일 주소를 확인했어요",
+ "I have verified my email address": "제 이메일 주소를 확인했습니다.",
"Import": "불러오기",
- "Import E2E room keys": "종단간 암호화 방 키 불러오기",
+ "Import E2E room keys": "종단 간 암호화 방 키 불러오기",
"Import room keys": "방 키 불러오기",
- "Incoming call from %(name)s": "%(name)s님이 전화를 걸어왔어요",
- "Incoming video call from %(name)s": "%(name)s님이 영상 통화를 걸어왔어요",
- "Incoming voice call from %(name)s": "%(name)s님이 음성 통화를 걸어왔어요",
+ "Incoming call from %(name)s": "%(name)s님에게서 전화가 왔습니다.",
+ "Incoming video call from %(name)s": "%(name)s님으로부터 영상 통화가 왔습니다.",
+ "Incoming voice call from %(name)s": "%(name)s님으로부터 음성 통화가 왔습니다.",
"Incorrect username and/or password.": "사용자 이름 혹은 비밀번호가 맞지 않아요.",
"Incorrect verification code": "인증 번호가 맞지 않아요",
"Interface Language": "인터페이스 언어",
@@ -215,10 +215,10 @@
"Invalid address format": "잘못된 주소 형식입니다",
"Invalid Email Address": "잘못된 이메일 주소입니다",
"Invalid file%(extra)s": "잘못된 %(extra)s 파일입니다.",
- "%(senderName)s invited %(targetName)s.": "%(senderName)s님이 %(targetName)s님을 초대하셨어요.",
+ "%(senderName)s invited %(targetName)s.": "%(senderName)s님이 %(targetName)s님을 초대했습니다.",
"Invite new room members": "새 구성원 초대하기",
"Invited": "초대받기",
- "Invites": "초대하기",
+ "Invites": "초대",
"Invites user with given id to current room": "받은 ID로 사용자를 현재 방에 초대하기",
"'%(alias)s' is not a valid format for an address": "'%(alias)s'는 주소에 맞는 형식이 아니에요",
"'%(alias)s' is not a valid format for an alias": "'%(alias)s'는 가명에 맞는 형식이 아니에요",
@@ -226,33 +226,33 @@
"Sign in with": "로그인",
"Join as voice or video.": "음성 또는 영상으로 참여하세요.",
"Join Room": "방에 들어가기",
- "%(targetName)s joined the room.": "%(targetName)s님이 방에 들어오셨습니다.",
+ "%(targetName)s joined the room.": "%(targetName)s님이 방에 들어왔습니다.",
"Joins room with given alias": "받은 별칭으로 방에 들어가기",
- "Jump to first unread message.": "읽지 않은 첫 메시지로 이동할래요.",
- "%(senderName)s kicked %(targetName)s.": "%(senderName)s님이 %(targetName)s님을 내쫓았습니다.",
- "Kick": "내쫓기",
- "Kicks user with given id": "받은 ID로 사용자 내쫓기",
+ "Jump to first unread message.": "읽지 않은 첫 메시지로 이동하려면 누르세요.",
+ "%(senderName)s kicked %(targetName)s.": "%(senderName)s님이 %(targetName)s님을 추방했습니다.",
+ "Kick": "추방",
+ "Kicks user with given id": "받은 ID로 사용자 추방하기",
"Labs": "실험실",
- "Last seen": "마지막으로 본 곳",
+ "Last seen": "마지막 위치",
"Leave room": "방 떠나기",
"%(targetName)s left the room.": "%(targetName)s님이 방을 떠났습니다.",
"Level:": "등급:",
"Local addresses for this room:": "이 방의 로컬 주소:",
"Logged in as:": "아이디:",
"Logout": "로그아웃",
- "Low priority": "낮은 우선순위",
+ "Low priority": "숨긴 방",
"%(senderName)s made future room history visible to all room members, from the point they are invited.": "%(senderName)s님이 이후 방 구성원 모두, 초대받은 시점부터 방의 기록을 볼 수 있게 했습니다.",
"%(senderName)s made future room history visible to all room members, from the point they joined.": "%(senderName)s님이 이후 방 구성원 모두, 들어온 시점부터 방의 기록을 볼 수 있게 했습니다.",
"%(senderName)s made future room history visible to all room members.": "%(senderName)s님이 이후 방 구성원 모두 방의 기록을 볼 수 있게 했습니다.",
"%(senderName)s made future room history visible to anyone.": "%(senderName)s님이 이후 누구나 방의 기록을 볼 수 있게 했습니다.",
"%(senderName)s made future room history visible to unknown (%(visibility)s).": "%(senderName)s님이 이후 알 수 없음(%(visibility)s)이 방의 기록을 볼 수 있게 했습니다.",
"Manage Integrations": "통합 관리",
- "Markdown is disabled": "마크다운이 꺼져있어요",
- "Markdown is enabled": "마크다운이 켜져있어요",
+ "Markdown is disabled": "마크다운이 꺼져 있습니다.",
+ "Markdown is enabled": "마크다운이 켜져 있습니다.",
"matrix-react-sdk version:": "matrix-react-sdk 버전:",
- "Message not sent due to unknown devices being present": "알 수 없는 기기가 있어 메시지를 보내지 못했어요",
- "Missing room_id in request": "요청에서 방_id가 빠졌어요",
- "Missing user_id in request": "요청에서 사용자_id가 빠졌어요",
+ "Message not sent due to unknown devices being present": "알 수 없는 기기가 있어 메시지를 보내지 못했습니다.",
+ "Missing room_id in request": "요청에서 room_id가 빠졌습니다.",
+ "Missing user_id in request": "요청에서 user_id가 빠졌습니다",
"Mobile phone number": "휴대 전화번호",
"Mobile phone number (optional)": "휴대 전화번호 (선택)",
"Moderator": "조정자",
@@ -264,20 +264,20 @@
"New passwords don't match": "새 비밀번호가 맞지 않아요",
"New passwords must match each other.": "새 비밀번호는 서로 같아야 해요.",
"none": "없음",
- "not set": "설정하지 않았어요",
- "not specified": "지정하지 않았어요",
+ "not set": "설정하지 않았습니다.",
+ "not specified": "지정하지 않았습니다.",
"(not supported by this browser)": "(이 브라우저에서 지원하지 않습니다.)",
"": "<지원하지 않아요>",
"NOT verified": "확인하지 않음",
- "No devices with registered encryption keys": "등록한 암호화 키가 있는 기기가 없어요",
- "No display name": "별명이 없어요",
- "No more results": "더 이상 결과가 없어요",
+ "No devices with registered encryption keys": "등록된 암호화 열쇠가 있는 기기가 없습니다.",
+ "No display name": "별명이 없습니다.",
+ "No more results": "더 이상 결과가 없습니다.",
"No results": "결과 없음",
- "No users have specific privileges in this room": "이 방에 지정한 권한의 사용자가 없어요",
+ "No users have specific privileges in this room": "이 방에 지정한 권한의 사용자가 없습니다.",
"olm version:": "olm 버전:",
"Password": "비밀번호",
"Password:": "비밀번호:",
- "Passwords can't be empty": "비밀번호는 비울 수 없어요",
+ "Passwords can't be empty": "비밀번호를 입력해 주세요.",
"Permissions": "권한",
"People": "사람들",
"Phone": "전화",
@@ -287,28 +287,28 @@
"Please check your email and click on the link it contains. Once this is done, click continue.": "이메일을 확인하시고 그 안에 있는 주소를 누르세요. 이 일을 하고 나서, 계속하기를 누르세요.",
"Power level must be positive integer.": "권한 등급은 양의 정수여야만 해요.",
"%(userName)s (power %(powerLevelNumber)s)": "%(userName)s (권한 %(powerLevelNumber)s)",
- "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "사용자를 자신과 같은 권한 등급으로 승급시키면 되돌릴 수 없어요.",
+ "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "사용자를 자신과 같은 권한 등급으로 승급시는 것이기에 되돌릴 수 없습니다.",
"Privacy warning": "개인정보 경고",
- "Private Chat": "비공개 이야기",
+ "Private Chat": "비공개 대화",
"Privileged Users": "권한 있는 사용자",
"Profile": "프로필",
- "%(senderName)s removed their profile picture.": "%(senderName)s님이 프로필 사진을 삭제했습니다.",
+ "%(senderName)s removed their profile picture.": "%(senderName)s님이 프로필 사진을 제거했습니다.",
"%(senderName)s set a profile picture.": "%(senderName)s님이 프로필 사진을 설정했습니다.",
- "Public Chat": "공개 이야기",
+ "Public Chat": "공개 대화",
"Reason": "이유",
"Reason: %(reasonText)s": "이유: %(reasonText)s",
"Revoke Moderator": "조정자 철회",
- "Refer a friend to Riot:": "라이엇을 친구에게 추천해주세요:",
+ "Refer a friend to Riot:": "Riot을 친구에게 추천해주세요:",
"Register": "등록",
- "%(targetName)s rejected the invitation.": "%(targetName)s님이 초대를 거절하셨어요.",
+ "%(targetName)s rejected the invitation.": "%(targetName)s님이 초대를 거절했습니다.",
"Reject invitation": "초대 거절",
"Rejoin": "다시 들어가기",
"Remote addresses for this room:": "이 방의 원격 주소:",
- "Remove Contact Information?": "연락처를 지우시겠어요?",
- "%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName)s님이 별명(%(oldDisplayName)s)을 삭제했습니다.",
- "Remove %(threePid)s?": "%(threePid)s 지우시겠어요?",
+ "Remove Contact Information?": "연락처 정보를 제거하시겠어요?",
+ "%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName)s님이 별명(%(oldDisplayName)s)을 제거했습니다.",
+ "Remove %(threePid)s?": "%(threePid)s를(을) 제거하시겠어요?",
"%(senderName)s requested a VoIP conference.": "%(senderName)s님이 VoIP 회의를 요청했습니다.",
- "Resetting password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "비밀번호를 다시 설정하면 현재 모든 기기의 종단간 암호화 키가 다시 설정되고, 먼저 방의 키를 내보내고 나중에 다시 불러오지 않는 한, 암호화한 이야기 기록을 읽을 수 없게 되어요. 앞으로는 이 기능을 더 좋게 만들 거에요.",
+ "Resetting password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "비밀번호를 다시 설정하면 현재 모든 기기의 종단 간 암호화 키가 다시 설정되고, 먼저 방의 키를 내보내고 나중에 다시 불러오지 않는 한, 암호화한 대화 기록을 읽을 수 없게 됩니다. 이 부분은 향상시키겠습니다.",
"Results from DuckDuckGo": "덕덕고에서 검색한 결과",
"Return to login screen": "로그인 화면으로 돌아가기",
"Riot does not have permission to send you notifications - please check your browser settings": "Riot은 알림을 보낼 권한을 가지고 있지 않습니다. 브라우저 설정을 확인해주세요",
@@ -316,10 +316,10 @@
"riot-web version:": "Riot 웹 버전:",
"Room %(roomId)s not visible": "방 %(roomId)s은 보이지 않아요",
"Room Colour": "방 색",
- "Room contains unknown devices": "방에 알 수 없는 기기가 있어요",
+ "Room contains unknown devices": "방에 알 수 없는 기기가 있습니다.",
"Room name (optional)": "방 이름 (선택)",
"%(roomName)s does not exist.": "%(roomName)s은 없는 방이에요.",
- "%(roomName)s is not accessible at this time.": "현재는 %(roomName)s에 들어갈 수 없어요.",
+ "%(roomName)s is not accessible at this time.": "현재는 %(roomName)s에 들어갈 수 없습니다.",
"Rooms": "방",
"Save": "저장",
"Scroll to bottom of page": "화면 맨 아래로 이동",
@@ -334,11 +334,11 @@
"%(senderDisplayName)s sent an image.": "%(senderDisplayName)s님이 사진을 보냈습니다.",
"%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "방에 들어오라고 %(senderName)s님이 %(targetDisplayName)s님에게 초대를 보냈습니다.",
"Server error": "서버 오류",
- "Server may be unavailable or overloaded": "서버를 쓸 수 없거나 과부하일 수 있어요",
+ "Server may be unavailable or overloaded": "서버가 사용 불가하거나 과부하가 걸렸을 수 있습니다.",
"Server may be unavailable, overloaded, or search timed out :(": "서버를 쓸 수 없거나 과부하거나, 검색 시간을 초과했어요 :(",
"Server may be unavailable, overloaded, or the file too big": "서버를 쓸 수 없거나 과부하거나, 파일이 너무 커요",
"Server may be unavailable, overloaded, or you hit a bug.": "서버를 쓸 수 없거나 과부하거나, 오류입니다.",
- "Server unavailable, overloaded, or something else went wrong.": "서버를 쓸 수 없거나 과부하거나, 다른 문제가 있어요.",
+ "Server unavailable, overloaded, or something else went wrong.": "서버를 쓸 수 없거나 과부하거나, 다른 문제가 있습니다.",
"Session ID": "세션 ID",
"%(senderName)s set their display name to %(displayName)s.": "%(senderName)s님이 별명을 %(displayName)s로 설정했습니다.",
"Show panel": "패널 보이기",
@@ -347,53 +347,53 @@
"Signed Out": "로그아웃함",
"Sign in": "로그인",
"Sign out": "로그아웃",
- "%(count)s of your messages have not been sent.|other": "일부 메시지는 보내지 못했어요.",
+ "%(count)s of your messages have not been sent.|other": "일부 메시지는 보내지 못했습니다.",
"Someone": "다른 사람",
- "Start a chat": "이야기하기",
+ "Start a chat": "대화 시작하기",
"Start authentication": "인증하기",
- "Start Chat": "이야기하기",
+ "Start Chat": "대화하기",
"Submit": "보내기",
"Success": "성공",
- "Tagged as: ": "지정함: ",
+ "Tagged as: ": "태그: ",
"The default role for new room members is": "방 새 구성원의 기본 역할",
"The main address for this room is": "이 방의 주요 주소",
"The phone number entered looks invalid": "입력된 전화번호가 잘못된 것 같습니다",
"The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.": "입력한 서명 키는 %(userId)s님의 기기 %(deviceId)s에서 받은 서명 키와 일치하네요. 인증한 기기라고 표시했습니다.",
"This email address is already in use": "이 이메일 주소는 이미 사용 중입니다",
- "This email address was not found": "이 이메일 주소를 찾지 못했어요",
+ "This email address was not found": "이 이메일 주소를 찾지 못했습니다.",
"The email address linked to your account must be entered.": "계정에 연결한 이메일 주소를 입력해야 해요.",
- "The file '%(fileName)s' exceeds this home server's size limit for uploads": "'%(fileName)s' 파일이 홈 서버에 올릴 수 있는 한계 크기를 초과했어요",
- "The file '%(fileName)s' failed to upload": "'%(fileName)s' 파일을 올리지 못했어요",
+ "The file '%(fileName)s' exceeds this home server's size limit for uploads": "'%(fileName)s' 파일이 홈 서버에 올릴 수 있는 한계 크기를 초과했습니다.",
+ "The file '%(fileName)s' failed to upload": "'%(fileName)s' 파일을 올리지 못했습니다.",
"The remote side failed to pick up": "상대방이 받지 못했습니다",
"This Home Server does not support login using email address.": "이 홈 서버는 이메일 주소 로그인을 지원하지 않아요.",
- "This invitation was sent to an email address which is not associated with this account:": "이 초대는 이 계정과 연결되지 않은 이메일 주소로 보냈어요:",
- "This room has no local addresses": "이 방은 로컬 주소가 없어요",
+ "This invitation was sent to an email address which is not associated with this account:": "이 초대는 이 계정과 연결되지 않은 이메일 주소로 보냈습니다:",
+ "This room has no local addresses": "이 방은 로컬 주소가 없습니다.",
"This room is not recognised.": "이 방은 드러나지 않아요.",
"These are experimental features that may break in unexpected ways": "예상치 못하게 망가질 수 있는 실험적인 기능입니다",
"The visibility of existing history will be unchanged": "기존 기록은 이전처럼 계속 볼 수 있습니다",
"This doesn't appear to be a valid email address": "올바르지 않은 이메일 주소로 보여요",
- "This is a preview of this room. Room interactions have been disabled": "방 미리보기입니다. 아직 아무것도 할 수 없습니다",
+ "This is a preview of this room. Room interactions have been disabled": "방을 미리 보고 있습니다. 방에 들어가셔야 방 구성원들과 소통하실 수 있습니다.",
"This phone number is already in use": "이 전화번호는 이미 사용 중입니다",
"This room": "이 방",
- "This room is not accessible by remote Matrix servers": "이 방은 원격 매트릭스 서버에 접근할 수 없어요",
+ "This room is not accessible by remote Matrix servers": "이 방은 원격 매트릭스 서버에 접근할 수 없습니다.",
"This room's internal ID is": "방의 내부 ID",
"To link to a room it must have an address.": "방에 연결하려면 주소가 있어야 해요.",
"To reset your password, enter the email address linked to your account": "비밀번호을 다시 설정하려면, 계정과 연결한 이메일 주소를 입력해주세요",
"To use it, just wait for autocomplete results to load and tab through them.": "이 기능을 사용하시려면, 자동완성 결과가 나오길 기다리신 뒤에 탭으로 움직여주세요.",
- "Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "이 방의 타임라인에서 특정 시점을 불러오려고 했지만, 문제의 메시지를 볼 수 있는 권한이 없어요.",
- "Tried to load a specific point in this room's timeline, but was unable to find it.": "이 방의 타임라인에서 특정 시점을 불러오려고 했지만, 찾을 수 없었어요.",
+ "Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "이 방의 타임라인에서 특정 시점을 불러오려고 했지만, 문제의 메시지를 볼 수 있는 권한이 없습니다.",
+ "Tried to load a specific point in this room's timeline, but was unable to find it.": "이 방의 타임라인에서 특정 시점을 불러오려고 했지만, 찾을 수 없었습니다.",
"Turn Markdown off": "마크다운 끄기",
"Turn Markdown on": "마크다운 켜기",
"%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).": "%(senderName)s님이 종단 간 암호화를 켰습니다(%(algorithm)s 알고리즘).",
- "Unable to add email address": "이메일 주소를 추가할 수 없어요",
- "Unable to remove contact information": "연락처를 지울 수 없어요",
- "Unable to verify email address.": "이메일 주소를 인증할 수 없어요.",
+ "Unable to add email address": "이메일 주소를 추가할 수 없습니다.",
+ "Unable to remove contact information": "연락처 정보를 제거할 수 없습니다.",
+ "Unable to verify email address.": "이메일 주소를 인증할 수 없습니다.",
"Unban": "차단 해제",
"%(senderName)s unbanned %(targetName)s.": "%(senderName)s님이 %(targetName)s님에 대한 차단을 해제했습니다.",
- "Unable to ascertain that the address this invite was sent to matches one associated with your account.": "이 이매알 주소가 초대를 받은 계정과 연결된 주소가 맞는지 확인할 수 없어요.",
+ "Unable to ascertain that the address this invite was sent to matches one associated with your account.": "이 이매알 주소가 초대를 받은 계정과 연결된 주소가 맞는지 확인할 수 없습니다.",
"Unable to capture screen": "화면을 찍을 수 없습니다",
- "Unable to enable Notifications": "알림을 켤 수 없어요",
- "Unable to load device list": "기기 목록을 불러올 수 없어요",
+ "Unable to enable Notifications": "알림을 사용할 수 없습니다.",
+ "Unable to load device list": "기기 목록을 불러올 수 없습니다.",
"Undecryptable": "해독할 수 없는",
"Unencrypted room": "암호화하지 않은 방",
"unencrypted": "암호화하지 않음",
@@ -402,7 +402,7 @@
"unknown device": "알 수 없는 기기",
"Unknown room %(roomId)s": "알 수 없는 방 %(roomId)s",
"Unknown (user, device) pair:": "알 수 없는 (사용자, 기기) 연결:",
- "Unmute": "소리 켜기",
+ "Unmute": "음소거 끄기",
"Unnamed Room": "이름 없는 방",
"Unrecognised command:": "인식 할 수 없는 명령:",
"Unrecognised room alias:": "인식할 수 없는 방 별칭:",
@@ -411,7 +411,7 @@
"Uploading %(filename)s and %(count)s others|one": "%(filename)s 외 %(count)s 올리는 중",
"Uploading %(filename)s and %(count)s others|other": "%(filename)s 외 %(count)s 올리는 중",
"Upload avatar": "아바타 올리기",
- "Upload Failed": "파일을 올리지 못했어요",
+ "Upload Failed": "파일을 올리지 못했습니다.",
"Upload Files": "파일 올리기",
"Upload file": "파일 올리기",
"Upload new:": "새로 올리기:",
@@ -427,10 +427,10 @@
"Verification": "인증",
"verified": "인증함",
"Verified": "인증함",
- "Verified key": "인증한 키",
- "Video call": "영상통화",
- "Voice call": "음성통화",
- "VoIP conference finished.": "VoIP 회의를 마쳤어요.",
+ "Verified key": "인증한 열쇠",
+ "Video call": "영상 통화하기",
+ "Voice call": "음성 통화하기",
+ "VoIP conference finished.": "VoIP 회의를 마쳤습니다.",
"VoIP conference started.": "VoIP 회의를 시작했습니다.",
"VoIP is unsupported": "VoIP는 지원하지 않습니다",
"(could not connect media)": "(미디어에 연결할 수 없었습니다.)",
@@ -438,41 +438,41 @@
"(unknown failure: %(reason)s)": "(알 수 없는 오류: %(reason)s)",
"(warning: cannot be disabled again!)": "(주의: 다시 끌 수 없어요!)",
"Warning!": "주의!",
- "WARNING: Device already verified, but keys do NOT MATCH!": "주의: 기기는 이미 인증했지만, 키가 맞지 않아요!",
+ "WARNING: Device already verified, but keys do NOT MATCH!": "주의: 기기는 이미 인증했지만, 열쇠가 맞지 않아요!",
"Who can access this room?": "누가 이 방에 들어올 수 있나요?",
"Who can read history?": "누가 기록을 읽을 수 있나요?",
"Who would you like to add to this room?": "이 방에 누구를 초대하고 싶으세요?",
- "Who would you like to communicate with?": "누구와 이야기하고 싶으세요?",
+ "Who would you like to communicate with?": "누구와 대화하고 싶으세요?",
"%(senderName)s withdrew %(targetName)s's invitation.": "%(senderName)s님이 %(targetName)s님의 초대를 거절했습니다.",
"Would you like to accept or decline this invitation?": "초대를 받아들이거나거절하시겠어요?",
- "You already have existing direct chats with this user:": "이미 이 사용자와 직접 이야기하는 중이에요:",
- "You are already in a call.": "통화 이미 하고 계시잖아요.",
- "Press to start a chat with someone": "다른 사람과 이야기하려면 을 누르세요",
- "WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and device %(deviceId)s is \"%(fprint)s\" which does not match the provided key \"%(fingerprint)s\". This could mean your communications are being intercepted!": "주의: 키 확인 실패! %(userId)s와 %(deviceId)s 기기의 서명 키 \"%(fprint)s\"는 주어진 키 \"%(fingerprint)s\"와 맞지 않아요. 누가 이야기를 가로채는 중일 수도 있어요!",
+ "You already have existing direct chats with this user:": "이미 직접 대화 중인 사용자:",
+ "You are already in a call.": "이미 통화하고 계시잖아요.",
+ "Press to start a chat with someone": "다른 사람과 대화하려면 을 누르세요.",
+ "WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and device %(deviceId)s is \"%(fprint)s\" which does not match the provided key \"%(fingerprint)s\". This could mean your communications are being intercepted!": "주의: 열쇠 확인에 실패했습니다! %(userId)s와 %(deviceId)s 기기의 서명 키 \"%(fprint)s\"는 주어진 키 \"%(fingerprint)s\"와 맞지 않습니다. 누군가 대화를 엿듣는 중일 수도 있습니다!",
"You're not in any rooms yet! Press to make a room or to browse the directory": "아직 어떤 방에도 들어가 있지 않아요! 을 눌러서 방을 만들거나 을 눌러 목록에서 방을 찾아보세요",
"You are trying to access %(roomName)s.": "%(roomName)s에 들어가려고 하는 중입니다.",
"You cannot place a call with yourself.": "자기 자신에게는 전화를 걸 수 없습니다.",
"You cannot place VoIP calls in this browser.": "이 브라우저에서는 VoIP 전화를 걸 수 없습니다.",
- "You do not have permission to post to this room": "이 방에서 글을 올릴 권한이 없어요",
- "You have been banned from %(roomName)s by %(userName)s.": "%(userName)s님이 %(roomName)s에서 차단하셨어요.",
- "You have been invited to join this room by %(inviterName)s": "%(inviterName)s님이 이 방에 초대하셨어요",
- "You have been kicked from %(roomName)s by %(userName)s.": "%(userName)s님이 %(roomName)s에서 추방하셨어요.",
- "You have been logged out of all devices and will no longer receive push notifications. To re-enable notifications, sign in again on each device": "모든 기기에서 로그아웃되었고 더 이상 알림을 받지 않으실 거에요. 다시 알림을 받으시려면, 각 기기에 로그인해주세요",
- "You have disabled URL previews by default.": "URL 미리보기 쓰지 않기를 기본으로 하셨어요.",
- "You have enabled URL previews by default.": "URL 미리보기 쓰기를 기본으로 하셨어요.",
- "You have no visible notifications": "보여드릴 알림이 없어요",
- "You may wish to login with a different account, or add this email to this account.": "다른 계정으로 로그인하거나, 이 이메일을 이 계정에 추가할 수도 있어요.",
+ "You do not have permission to post to this room": "이 방에서 글을 올릴 권한이 없습니다.",
+ "You have been banned from %(roomName)s by %(userName)s.": "%(userName)s님에 의해 %(roomName)s에서 차단당했습니다.",
+ "You have been invited to join this room by %(inviterName)s": "%(inviterName)s님이 이 방에 초대하셨습니다.",
+ "You have been kicked from %(roomName)s by %(userName)s.": "%(userName)s님에 의해 %(roomName)s에서 추방당했습니다.",
+ "You have been logged out of all devices and will no longer receive push notifications. To re-enable notifications, sign in again on each device": "모든 기기에서 로그아웃되었고 더 이상 알림을 받지 않으실 거에요. 다시 알림을 받으시려면, 각 기기에 로그인해주세요.",
+ "You have disabled URL previews by default.": "기본으로 URL 미리보기를 사용 중지했습니다.",
+ "You have enabled URL previews by default.": "URL 미리보기를 기본으로 사용했습니다.",
+ "You have no visible notifications": "보여줄 수 있는 알림이 없습니다.",
+ "You may wish to login with a different account, or add this email to this account.": "다른 계정으로 로그인하거나, 이 이메일을 이 계정에 추가할 수도 있습니다.",
"You must register to use this functionality": "이 기능을 쓰시려면 계정을 등록하셔야 해요",
"You need to be able to invite users to do that.": "그러려면 사용자를 초대하실 수 있어야 해요.",
"You need to be logged in.": "로그인하셔야 해요.",
"You need to enter a user name.": "사용자 이름을 입력하셔야 해요.",
- "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "이메일 주소가 이 홈 서버의 매트릭스 ID와 관련이 없어요.",
- "Your password has been reset": "비밀번호를 다시 설정했어요",
+ "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "이메일 주소가 이 홈 서버의 매트릭스 ID와 관련이 없는 것 같습니다.",
+ "Your password has been reset": "비밀번호를 다시 설정했습니다.",
"Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them": "비밀번호를 바꿨습니다. 다른 기기에서는 다시 로그인할 때까지 푸시 알림을 받지 않을 겁니다",
"You seem to be in a call, are you sure you want to quit?": "전화 중인데, 끊으시겠어요?",
"You seem to be uploading files, are you sure you want to quit?": "파일을 올리는 중인데, 그만두시겠어요?",
"You should not yet trust it to secure data": "안전한 자료를 위해서는 아직 믿으시면 안돼요",
- "Your home server does not support device management.": "홈 서버가 기기 관리를 지원하지 않아요.",
+ "Your home server does not support device management.": "홈 서버가 기기 관리를 지원하지 않습니다.",
"Sun": "일",
"Mon": "월",
"Tue": "화",
@@ -492,29 +492,29 @@
"Oct": "10월",
"Nov": "11월",
"Dec": "12월",
- "%(weekDayName)s, %(monthName)s %(day)s %(time)s": "%(weekDayName)s, %(monthName)s %(day)s일 %(time)s",
- "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s": "%(weekDayName)s, %(monthName)s %(day)s일 %(fullYear)s년 %(time)s",
+ "%(weekDayName)s, %(monthName)s %(day)s %(time)s": "%(monthName)s %(day)s일 %(weekDayName)s요일 %(time)s",
+ "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s": "%(fullYear)s년 %(monthName)s %(day)s일 %(weekDayName)s요일 %(time)s",
"%(weekDayName)s %(time)s": "%(weekDayName)s, %(time)s",
"Set a display name:": "별명 설정하기:",
"Upload an avatar:": "아바타 올리기:",
"This server does not support authentication with a phone number.": "이 서버는 전화번호 인증을 지원하지 않아요.",
- "Missing password.": "비밀번호를 틀렸어요.",
+ "Missing password.": "비밀번호가 없습니다.",
"Passwords don't match.": "비밀번호가 맞지 않아요.",
"Password too short (min %(MIN_PASSWORD_LENGTH)s).": "비밀번호가 너무 짧아요 (min %(MIN_PASSWORD_LENGTH)s).",
"This doesn't look like a valid email address.": "유효한 이메일 주소가 아니에요.",
"This doesn't look like a valid phone number.": "유효한 전화번호가 아니에요.",
- "User names may only contain letters, numbers, dots, hyphens and underscores.": "사용자 이름은 문자, 숫자, 점, -(붙임표), _(밑줄 문자)만 쓸 수 있어요.",
- "An unknown error occurred.": "알 수 없는 오류가 일어났어요.",
- "I already have an account": "이미 계정이 있어요",
- "An error occurred: %(error_string)s": "오류가 일어났어요: %(error_string)s",
+ "User names may only contain letters, numbers, dots, hyphens and underscores.": "사용자 이름은 문자, 숫자, 점, -(붙임표), _(밑줄 문자)만 쓸 수 있습니다.",
+ "An unknown error occurred.": "알 수 없는 오류가 일어났습니다.",
+ "I already have an account": "이미 계정이 있습니다.",
+ "An error occurred: %(error_string)s": "%(error_string)s 오류가 일어났습니다.",
"Topic": "주제",
"Make Moderator": "조정자 임명하기",
"Make this room private": "이 방을 비공개로 만들기",
"Share message history with new users": "메시지 기록을 새 사용자와 공유하기",
"Encrypt room": "암호화한 방",
- "There are no visible files in this room": "이 방에서 보여드릴 파일이 없어요",
+ "There are no visible files in this room": "이 방에는 보여줄 수 있는 파일이 없습니다.",
"Room": "방",
- "Connectivity to the server has been lost.": "서버 연결이 끊어졌어요.",
+ "Connectivity to the server has been lost.": "서버 연결이 끊어졌습니다.",
"Sent messages will be stored until your connection has returned.": "보내신 메시지는 다시 연결될 때까지 저장할 거에요.",
"(~%(count)s results)|one": "(~%(count)s 결과)",
"(~%(count)s results)|other": "(~%(count)s 결과)",
@@ -535,38 +535,38 @@
"Options": "선택권",
"Riot collects anonymous analytics to allow us to improve the application.": "Riot은 이 앱을 발전시키기 위해 익명으로 정보 분석을 수집합니다.",
"Passphrases must match": "암호가 일치해야 해요",
- "Passphrase must not be empty": "암호를 비우시면 안돼요",
+ "Passphrase must not be empty": "암호를 입력해 주세요.",
"Export room keys": "방 키를 내보내기",
"Confirm passphrase": "암호 확인",
"File to import": "가져올 파일",
"You must join the room to see its files": "파일을 보려면 방에 들어가야만 해요",
"Reject all %(invitedRooms)s invites": "모든 %(invitedRooms)s의 초대를 거절하기",
- "Start new chat": "새로 이야기하기",
- "Failed to invite": "초대하지 못했어요",
- "Failed to invite user": "사용자를 초대하지 못했어요",
- "Failed to invite the following users to the %(roomName)s room:": "다음 사용자들을 %(roomName)s 방으로 초대하지 못했어요:",
+ "Start new chat": "새로 대화하기",
+ "Failed to invite": "초대하지 못했습니다.",
+ "Failed to invite user": "사용자를 초대하지 못했습니다.",
+ "Failed to invite the following users to the %(roomName)s room:": "다음 사용자들을 %(roomName)s 방으로 초대하지 못했습니다:",
"Confirm Removal": "삭제 확인",
"Unknown error": "알 수 없는 오류",
"Incorrect password": "맞지 않는 비밀번호",
"To continue, please enter your password.": "계속하시려면, 비밀번호를 입력해주세요.",
- "This process allows you to export the keys for messages you have received in encrypted rooms to a local file. You will then be able to import the file into another Matrix client in the future, so that client will also be able to decrypt these messages.": "이 과정으로 암호화한 방에서 받은 메시지의 키를 로컬 파일로 내보낼 수 있어요. 너중에 다른 매트릭스 클라이언트로 파일을 불러올 수 있기 때문에, 그 클라이언트에서 메시지를 해독할 수도 있지요.",
- "The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a passphrase below, which will be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.": "내보낸 파일은 누구든지 암호화한 메시지를 해독해서 읽을 수 있게 하므로, 보안에 신경 써 주세요. 이를 위해, 내보낸 파일을 암호화하려하니, 아래에 암호를 입력해주세요. 같은 암호를 쓰셔야만 자료를 불러올 수 있어요.",
- "This process allows you to import encryption keys that you had previously exported from another Matrix client. You will then be able to decrypt any messages that the other client could decrypt.": "이 과정으로 전에 다른 매트릭스 클라이언트에서 내보낸 암호화 키를 불러올 수 있어요. 그 다음에는 다른 클라이언트에서 해독할 수 있던 어떤 메시지라도 해독할 수 있을 거에요.",
- "The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.": "내보낸 파일은 암호로 보호하고 있어요. 파일을 해독하려면, 여기에 암호를 입력해주세요.",
- "Are you sure you wish to remove (delete) this event? Note that if you delete a room name or topic change, it could undo the change.": "이 사건을 지우길 (없애길) 원하세요? 방 이름을 지우거나 주제를 바꾸시면, 되돌릴 수 없다는 걸 명심해주세요.",
+ "This process allows you to export the keys for messages you have received in encrypted rooms to a local file. You will then be able to import the file into another Matrix client in the future, so that client will also be able to decrypt these messages.": "이 과정으로 암호화한 방에서 받은 메시지의 키를 로컬 파일로 내보낼 수 있습니다. 너중에 다른 매트릭스 클라이언트로 파일을 불러올 수 있기 때문에, 그 클라이언트에서 메시지를 해독할 수도 있죠.",
+ "The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a passphrase below, which will be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.": "내보낸 파일이 있으면 누구든 암호화한 메시지를 해독해서 읽을 수 있으므로, 보안에 신경 써 주세요. 이런 이유로 인해, 아래에 암호를 입력해 내보낸 파일을 암호화하는 걸 추천합니다. 같은 암호를 사용해야만 자료를 불러올 수 있습니다.",
+ "This process allows you to import encryption keys that you had previously exported from another Matrix client. You will then be able to decrypt any messages that the other client could decrypt.": "이 과정으로 전에 다른 매트릭스 클라이언트에서 내보낸 암호화 키를 불러올 수 있습니다. 그 다음에는 다른 클라이언트에서 해독할 수 있던 어떤 메시지라도 해독할 수 있습니다.",
+ "The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.": "내보낸 파일은 암호로 보호하고 있습니다. 파일을 해독하려면, 여기에 암호를 입력해주세요.",
+ "Are you sure you wish to remove (delete) this event? Note that if you delete a room name or topic change, it could undo the change.": "이 이벤트를 제거(삭제)하길 원하세요? 방 이름을 삭제하거나 주제를 바꾸면, 다시 복귀될 수도 있습니다.",
"To verify that this device can be trusted, please contact its owner using some other means (e.g. in person or a phone call) and ask them whether the key they see in their User Settings for this device matches the key below:": "이 기기를 믿을 수 있는지 인증하시려면, 몇 가지 방법(예를 들자면 직접 만나거나 전화를 걸어서)으로 소유자에게 연락하시고 그들이 사용자 설정에서 보는 키와 아래 키가 같은지 물어보세요:",
"Device name": "기기 이름",
"Device Name": "기기 이름",
- "Device key": "기기 키",
+ "Device key": "기기 열쇠",
"If it matches, press the verify button below. If it doesn't, then someone else is intercepting this device and you probably want to press the blacklist button instead.": "맞다면, 아래 인증 버튼을 누르세요. 맞지 않다면, 다른 사람이 이 기기를 가로채고 있으니 요주의 버튼을 누르시고 싶으실 거 같네요.",
"In future this verification process will be more sophisticated.": "앞으로는 이 확인 과정이 더 정교해질 거에요.",
- "Verify device": "인증한 기기",
- "I verify that the keys match": "키가 맞다는 걸 인증했어요",
- "Unable to restore session": "세션을 복구할 수 없어요",
- "If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.": "이전에 더 최근 버전의 라이엇을 쓰셨다면, 이 버전과 맞지 않을 거에요. 창을 닫고 더 최근 버전으로 돌아가세요.",
- "You are currently blacklisting unverified devices; to send messages to these devices you must verify them.": "현재 인증하지 않은 기기를 요주의로 지정하셨어요. 이 기기들에 메시지를 보내려면 인증을 해야 해요.",
- "We recommend you go through the verification process for each device to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.": "각 기기가 알맞은 소유자에게 속해 있는지 인증 과정을 거치길 추천하지만, 원하신다면 그러지 않고 메시지를 다시 보내실 수 있어요.",
- "\"%(RoomName)s\" contains devices that you haven't seen before.": "\"%(RoomName)s\"에 본 적 없는 기기가 있어요.",
+ "Verify device": "기기 인증하기",
+ "I verify that the keys match": "열쇠가 맞는지 인증합니다",
+ "Unable to restore session": "세션을 복구할 수 없습니다.",
+ "If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.": "이전에 더 최근 버전의 Riot을 쓰셨다면, 이 버전과 맞지 않을 거에요. 창을 닫고 더 최근 버전으로 돌아가세요.",
+ "You are currently blacklisting unverified devices; to send messages to these devices you must verify them.": "현재 인증하지 않은 기기를 요주의로 지정하셨습니다. 이 기기들에 메시지를 보내려면 인증해야 합니다.",
+ "We recommend you go through the verification process for each device to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.": "각 기기가 알맞은 소유자에게 속해 있는지 인증 과정을 거치길 추천하지만, 원하신다면 그러지 않고도 메시지를 다시 보내실 수 있습니다.",
+ "\"%(RoomName)s\" contains devices that you haven't seen before.": "\"%(RoomName)s\"에 본 적이 없는 기기가 있습니다.",
"Unknown devices": "알 수 없는 기기",
"Unknown Address": "알 수 없는 주소",
"Unblacklist": "요주의 취소",
@@ -575,17 +575,17 @@
"Verify...": "인증...",
"ex. @bob:example.com": "예. @bob:example.com",
"Add User": "사용자 추가",
- "This Home Server would like to make sure you are not a robot": "이 홈 서버는 당신이 로봇이 아닌지 확인하고 싶다네요",
+ "This Home Server would like to make sure you are not a robot": "이 홈 서버는 당신이 로봇이 아닌지 확인하고 싶다고 합니다.",
"Sign in with CAS": "CAS로 로그인 하기",
"Please check your email to continue registration.": "등록하시려면 이메일을 확인해주세요.",
"Token incorrect": "토큰이 안 맞아요",
"Please enter the code it contains:": "들어있던 코드를 입력해주세요:",
- "If you don't specify an email address, you won't be able to reset your password. Are you sure?": "이메일 주소를 정하지 않으시면, 비밀번호를 다시 설정하실 수 없어요. 괜찮으신가요?",
+ "If you don't specify an email address, you won't be able to reset your password. Are you sure?": "이메일 주소를 정하지 않으면, 비밀번호를 다시 설정할 수 없습니다. 괜찮으신가요?",
"You are registering with %(SelectedTeamName)s": "%(SelectedTeamName)s로 등록할게요",
"Default server": "기본 서버",
"What does this mean?": "무슨 뜻인가요?",
- "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.": "사용자 지정 서버 설정에서 다른 홈 서버 URL을 지정해 다른 매트릭스 서버에 로그인 할 수 있어요.",
- "This allows you to use this app with an existing Matrix account on a different home server.": "이를 통해 이 앱과 다른 홈 서버의 기존 매트릭스 계정을 함께 쓸 수 있죠.",
+ "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.": "사용자 지정 서버 설정에서 다른 홈 서버 URL을 지정해 다른 매트릭스 서버에 로그인 할 수 있습니다.",
+ "This allows you to use this app with an existing Matrix account on a different home server.": "이를 통해 이 앱과 다른 홈 서버의 기존 매트릭스 계정을 함께 쓸 수 있습니다.",
"You can also set a custom identity server but this will typically prevent interaction with users based on email address.": "사용자 지정 ID 서버를 설정할 수도 있지만 보통 그런 경우엔 이메일 주소를 기반으로 한 사용자와 상호작용이 막힐 거에요.",
"Custom server": "사용자 지정 서버",
"Home server URL": "홈 서버 URL",
@@ -594,8 +594,8 @@
"Error decrypting image": "사진 해독 오류",
"Error decrypting video": "영상 해독 오류",
"Add an Integration": "통합 추가",
- "You are about to be taken to a third-party site so you can authenticate your account for use with %(integrationsUrl)s. Do you wish to continue?": "타사 사이트로 이동하는데 %(integrationsUrl)s에서 쓰도록 계정을 인증할 수 있어요. 계속하시겠어요?",
- "Removed or unknown message type": "삭제했거나 알 수 없는 메시지 유형",
+ "You are about to be taken to a third-party site so you can authenticate your account for use with %(integrationsUrl)s. Do you wish to continue?": "%(integrationsUrl)s에서 쓸 수 있도록 계정을 인증하려고 다른 사이트로 이동하고 있습니다. 계속하시겠어요?",
+ "Removed or unknown message type": "제거했거나 알 수 없는 메시지 유형",
"URL Previews": "URL 미리보기",
"Drop file here to upload": "올릴 파일을 여기에 놓으세요",
" (unsupported)": " (지원하지 않음)",
@@ -605,11 +605,11 @@
"Offline": "미접속",
"Updates": "업데이트",
"Check for update": "업데이트 확인",
- "Start chatting": "이야기하기",
- "Start Chatting": "이야기하기",
- "Click on the button below to start chatting!": "이야기하려면 아래 버튼을 누르세요!",
+ "Start chatting": "대화하기",
+ "Start Chatting": "대화하기",
+ "Click on the button below to start chatting!": "대화하려면 아래 버튼을 누르세요!",
"%(senderDisplayName)s changed the room avatar to ": "%(senderDisplayName)s님이 방 아바타를 로 바꿨습니다",
- "%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s님이 방 아바타를 삭제했습니다.",
+ "%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s님이 방 아바타를 제거했습니다.",
"%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s님이 %(roomName)s의 아바타를 바꿨습니다",
"Username available": "쓸 수 있는 사용자 이름",
"Username not available": "쓸 수 없는 사용자 이름",
@@ -617,33 +617,33 @@
"This will be your account name on the homeserver, or you can pick a different server.": "이건 홈 서버의 계정 이름이에요, 다른 서버를 고를 수도 있다는 거죠.",
"If you already have a Matrix account you can log in instead.": "매트릭스 계정을 가지고 계시면 로그인하실 수도 있죠.",
"Your browser does not support the required cryptography extensions": "필요한 암호화 확장 기능을 브라우저가 지원하지 않습니다",
- "Not a valid Riot keyfile": "올바른 Riot 키 파일이 아닙니다",
+ "Not a valid Riot keyfile": "올바른 Riot 열쇠 파일이 아닙니다",
"Authentication check failed: incorrect password?": "검증 확인 실패: 비밀번호를 틀리셨나요?",
"Disable Peer-to-Peer for 1:1 calls": "1:1 통화할 때는 P2P 비활성화하기",
"Do you want to set an email address?": "이메일 주소를 설정하시겠어요?",
- "This will allow you to reset your password and receive notifications.": "이렇게 하면 비밀번호를 다시 설정하고 알림을 받으실 수 있어요.",
+ "This will allow you to reset your password and receive notifications.": "이렇게 하면 비밀번호를 다시 설정하고 알림을 받으실 수 있습니다.",
"To return to your account in future you need to set a password": "나중에 계정으로 돌아가려면 비밀번호를 설정하셔야 해요",
"Skip": "건너뛰기",
"Start verification": "인증 시작",
"Share without verifying": "인증하지 않고 공유하기",
"Ignore request": "요청 무시하기",
- "You added a new device '%(displayName)s', which is requesting encryption keys.": "새 기기 '%(displayName)s'를 추가했고, 이 기기는 암호화 키를 요청하고 있습니다.",
- "Your unverified device '%(displayName)s' is requesting encryption keys.": "인증되지 않은 기기 '%(displayName)s'이(가) 암호화 키를 요청하고 있습니다.",
+ "You added a new device '%(displayName)s', which is requesting encryption keys.": "암호화 열쇠를 요청하고 있는 새 기기 '%(displayName)s'를(을) 추가했습니다.",
+ "Your unverified device '%(displayName)s' is requesting encryption keys.": "인증되지 않은 기기 '%(displayName)s'가(이) 암호화 키를 요청하고 있습니다.",
"Encryption key request": "암호화 키 요청",
"Edit": "수정하기",
- "Fetching third party location failed": "타사 위치를 불러오지 못했어요",
- "A new version of Riot is available.": "라이엇의 새 버전을 사용하실 수 있어요.",
+ "Fetching third party location failed": "타사 위치를 불러오지 못했습니다.",
+ "A new version of Riot is available.": "Riot의 새 버전을 사용하실 수 있습니다.",
"Couldn't load home page": "홈 페이지를 불러올 수 없었습니다",
- "All notifications are currently disabled for all targets.": "현재 모든 알림이 모든 상대에게서 꺼졌어요.",
+ "All notifications are currently disabled for all targets.": "현재 모든 알림이 모든 대상에 대해 비활성화 돼 있습니다.",
"Uploading report": "보고를 올리는 중",
"Sunday": "일요일",
- "Guests can join": "손님이 들어올 수 있어요",
+ "Guests can join": "손님이 들어올 수 있습니다",
"Messages sent by bot": "봇이 보낸 메시지를 받을 때",
"Notification targets": "알림 대상",
- "Failed to set direct chat tag": "직접 이야기 지정을 설정하지 못했어요",
+ "Failed to set direct chat tag": "직접 대화 태그를 설정하지 못했습니다.",
"Today": "오늘",
- "Failed to get protocol list from Home Server": "홈 서버에서 프로토콜 목록을 얻지 못했어요",
- "You are not receiving desktop notifications": "컴퓨터 알림을 받지 않고 있어요",
+ "Failed to get protocol list from Home Server": "홈 서버에서 프로토콜 목록을 얻지 못했습니다.",
+ "You are not receiving desktop notifications": "컴퓨터 알림을 받지 않고 있습니다",
"Friday": "금요일",
"Update": "업데이트",
"What's New": "새로운 점",
@@ -657,36 +657,36 @@
"Advanced notification settings": "고급 알림 설정",
"delete the alias.": "가명을 지울게요.",
"To return to your account in future you need to set a password": "나중에 계정으로 돌아가려면 비밀번호 설정을 해야만 해요",
- "Forget": "잊기",
+ "Forget": "지우기",
"World readable": "세계에 보이기",
"Hide panel": "패널 숨기기",
- "You cannot delete this image. (%(code)s)": "이 사진을 지우실 수 없어요. (%(code)s)",
+ "You cannot delete this image. (%(code)s)": "이 사진을 삭제하실 수 없습니다. (%(code)s)",
"Cancel Sending": "보내기 취소",
"Warning": "주의",
"This Room": "방",
- "The Home Server may be too old to support third party networks": "타사 네트워크를 지원하기에는 홈 서버가 너무 오래된 걸 수 있어요",
+ "The Home Server may be too old to support third party networks": "타사 네트워크를 지원하기에는 홈 서버가 너무 오래된 걸 수 있어요.",
"Resend": "다시 보내기",
- "Error saving email notification preferences": "이메일 알림을 설정하는데 오류가 일어났어요",
+ "Error saving email notification preferences": "이메일 알림을 설정하는 중에 오류가 났습니다.",
"Messages containing my display name": "내 별명이 포함된 메시지를 받을 때",
"Messages in one-to-one chats": "1:1 대화 메시지 받을 때",
"Unavailable": "이용할 수 없음",
"View Decrypted Source": "해독된 출처 보기",
"Send": "보내기",
- "remove %(name)s from the directory.": "목록에서 %(name)s을 지웠어요.",
+ "remove %(name)s from the directory.": "목록에서 %(name)s를(을) 제거했습니다.",
"Notifications on the following keywords follow rules which can’t be displayed here:": "여기에 표시될 수 없는 규칙에 따르는 다음 키워드에 대한 알림:",
"Please set a password!": "비밀번호를 설정해주세요!",
- "You have successfully set a password!": "비밀번호를 설정했어요!",
- "An error occurred whilst saving your email notification preferences.": "이메일 알림을 설정하다가 오류가 일어났어요.",
+ "You have successfully set a password!": "비밀번호를 설정하셨어요!",
+ "An error occurred whilst saving your email notification preferences.": "이메일 알림 설정을 저장하는 중에 오류가 났습니다.",
"Source URL": "출처 URL",
- "Failed to add tag %(tagName)s to room": "방에 %(tagName)s로 지정하지 못했어요",
+ "Failed to add tag %(tagName)s to room": "방에 %(tagName)s 태그를 달지 못했습니다.",
"Members": "구성원",
- "No update available.": "업데이트가 없어요.",
+ "No update available.": "업데이트가 없습니다.",
"Noisy": "소리",
"Files": "파일",
"Collecting app version information": "앱 버전 정보를 수집하는 중",
- "Delete the room alias %(alias)s and remove %(name)s from the directory?": "방 가명 %(alias)s 을 지우고 목록에서 %(name)s를 지우시겠어요?",
- "This will allow you to return to your account after signing out, and sign in on other devices.": "이런 식으로 로그아웃한 뒤 계정으로 돌아가, 다른 기기에서 로그인하실 수 있어요.",
- "Enable notifications for this account": "이 계정의 알림 받기",
+ "Delete the room alias %(alias)s and remove %(name)s from the directory?": "방 별칭 %(alias)s를(을) 삭제하고 목록에서 %(name)s를(을) 제거하시겠어요?",
+ "This will allow you to return to your account after signing out, and sign in on other devices.": "이런 식으로 로그아웃한 뒤 계정으로 돌아가, 다른 기기에서 로그인하실 수 있습니다.",
+ "Enable notifications for this account": "이 계정의 알림 사용하기",
"Directory": "목록",
"Search for a room": "방에서 찾기",
"Messages containing keywords": "키워드가 적힌 메시지",
@@ -694,18 +694,18 @@
"Tuesday": "화요일",
"Enter keywords separated by a comma:": "키워드를 쉼표로 구분해 입력해주세요:",
"Search…": "찾기…",
- "Remove %(name)s from the directory?": "목록에서 %(name)s을 지우시겠어요?",
- "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "라이엇은 많은 고급 브라우저 기능을 사용해요. 일부는 현재 브라우저에서 쓸 수 없거나 실험적이에요.",
+ "Remove %(name)s from the directory?": "목록에서 %(name)s를(을) 제거하시겠어요?",
+ "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Riot은 많은 고급 브라우저 기능을 사용해요. 일부는 현재 브라우저에서 쓸 수 없거나 실험적이에요.",
"Developer Tools": "개발자 도구",
- "Enable desktop notifications": "컴퓨터에서 알림 받기",
+ "Enable desktop notifications": "컴퓨터에서 알림 사용하기",
"Unnamed room": "이름없는 방",
- "Remove from Directory": "목록에서 지우기",
+ "Remove from Directory": "목록에서 제거하기",
"Saturday": "토요일",
"Remember, you can always set an email address in user settings if you change your mind.": "잊지마세요, 마음이 바뀌면 언제라도 사용자 설정에서 이메일 주소를 바꾸실 수 있다는 걸요.",
- "Direct Chat": "직접 이야기하기",
- "The server may be unavailable or overloaded": "서버를 쓸 수 없거나 과부하일 수 있어요",
+ "Direct Chat": "직접 대화하기",
+ "The server may be unavailable or overloaded": "서버가 사용 불가하거나 과부하가 걸렸을 수 있습니다.",
"Reject": "거절하기",
- "Failed to set Direct Message status of room": "방의 쪽지 상태를 설정하지 못했어요",
+ "Failed to set Direct Message status of room": "방의 쪽지 상태를 설정하지 못했습니다.",
"Monday": "월요일",
"All messages (noisy)": "모든 메시지 (크게)",
"Enable them now": "지금 켜기",
@@ -716,58 +716,58 @@
"more": "더 보기",
"(HTTP status %(httpStatus)s)": "(HTTP 상태 %(httpStatus)s)",
"All Rooms": "모든 방",
- "Failed to get public room list": "공개한 방 목록을 얻지 못했어요",
+ "Failed to get public room list": "공개한 방 목록을 얻지 못했습니다.",
"Quote": "인용하기",
- "Failed to update keywords": "키워드를 갱신하지 못했어요",
+ "Failed to update keywords": "키워드를 갱신하지 못했습니다.",
"Send logs": "로그 보내기",
"All messages": "모든 메시지",
"Call invitation": "전화가 올 때",
"Downloading update...": "업데이트를 받는 중...",
- "You have successfully set a password and an email address!": "비밀번호와 이메일 주소를 설정했어요!",
+ "You have successfully set a password and an email address!": "비밀번호와 이메일 주소를 설정하셨어요!",
"What's new?": "새로운 점은?",
"Notify me for anything else": "모든 걸 알리기",
"When I'm invited to a room": "방에 초대받았을 때",
"Keywords": "키워드",
- "Can't update user notification settings": "사용자 알림 설정을 갱신할 수 없어요",
+ "Can't update user notification settings": "사용자 알림 설정을 갱신할 수 없습니다.",
"Notify for all other messages/rooms": "다른 모든 메시지/방 알리기",
- "Unable to look up room ID from server": "서버에서 방 ID를 찾아볼 수 없어요",
+ "Unable to look up room ID from server": "서버에서 방 ID를 찾아볼 수 없습니다.",
"Couldn't find a matching Matrix room": "일치하는 매트릭스 방을 찾을 수 없었습니다",
"Invite to this room": "이 방에 초대하기",
- "You cannot delete this message. (%(code)s)": "이 메시지를 지우실 수 없어요. (%(code)s)",
+ "You cannot delete this message. (%(code)s)": "이 메시지를 삭제하실 수 없습니다. (%(code)s)",
"Thursday": "목요일",
"I understand the risks and wish to continue": "위험할 수 있는 걸 알고 계속하기를 바라요",
"Back": "돌아가기",
- "Failed to change settings": "설정을 바꾸지 못했어요",
+ "Failed to change settings": "설정을 바꾸지 못했습니다.",
"Show message in desktop notification": "컴퓨터 알림에서 내용 보이기",
"Unhide Preview": "미리보기를 숨기지 않기",
- "Unable to join network": "네트워크에 들어갈 수 없어요",
- "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "라이엇이 아닌 다른 클라이언트에서 구성하셨을 수도 있어요. 라이엇에서 조정할 수는 없지만 여전히 적용되있을 거에요",
- "Sorry, your browser is not able to run Riot.": "죄송해요. 브라우저에서 라이엇을 켤 수가 없어요.",
+ "Unable to join network": "네트워크에 들어갈 수 없습니다.",
+ "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "Riot이 아닌 다른 클라이언트에서 설정하셨을 수도 있습니다. Riot에서 바꿀 수는 없지만, 여전히 적용돼 있습니다.",
+ "Sorry, your browser is not able to run Riot.": "죄송합니다. 쓰고 계신 브라우저에서는 Riot를 사용할 수 없습니다.",
"Uploaded on %(date)s by %(user)s": "by %(user)s가 %(date)s에 올림",
"Messages in group chats": "그룹 대화 메시지를 받을 때",
"Yesterday": "어제",
- "Error encountered (%(errorDetail)s).": "오류가 일어났어요 (%(errorDetail)s).",
+ "Error encountered (%(errorDetail)s).": "오류가 일어났습니다 (%(errorDetail)s).",
"Low Priority": "낮은 우선순위",
- "Riot does not know how to join a room on this network": "라이엇이 이 네트워크에서 방에 들어가는 법을 알 수 없어요",
+ "Riot does not know how to join a room on this network": "Riot이 이 네트워크에서 방에 들어가는 법을 알 수 없습니다.",
"Set Password": "비밀번호 설정",
- "Enable audible notifications in web client": "웹 클라이언트에서 알림 소리 켜기",
+ "Enable audible notifications in web client": "웹 클라이언트에서 알림 소리 사용하기",
"Off": "끄기",
"#example": "#예",
"Mentions only": "답만 하기",
- "Failed to remove tag %(tagName)s from room": "방에서 %(tagName)s 지정을 지우지 못했어요",
+ "Failed to remove tag %(tagName)s from room": "방에서 %(tagName)s 태그를 제거하지 못했습니다.",
"Wednesday": "수요일",
- "You can now return to your account after signing out, and sign in on other devices.": "계정을 로그아웃하신 뒤에 계정으로 돌아가, 다른 기기에서 로그인하실 수 있어요.",
- "Enable email notifications": "이메일로 알림 받기",
+ "You can now return to your account after signing out, and sign in on other devices.": "이제 계정을 로그아웃하신 뒤에 계정으로 돌아가, 다른 기기에서 로그인할 수 있습니다.",
+ "Enable email notifications": "이메일로 알림 사용하기",
"Login": "로그인",
- "No rooms to show": "보여드릴 방이 없어요",
+ "No rooms to show": "보여줄 수 있는 방이 없습니다.",
"Download this file": "이 파일 받기",
"Thank you!": "감사합니다!",
"View Source": "출처 보기",
- "Unable to fetch notification target list": "알림 대상 목록을 불러올 수 없어요",
+ "Unable to fetch notification target list": "알림 대상 목록을 불러올 수 없습니다.",
"Collapse panel": "패널 접기",
- "With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "현재 브라우저에서는, 응용 프로그램의 모양과 기능이 완벽하게 맞지 않거나, 일부 혹은 모든 기능이 작동하지 않을 수 있어요. 계속할 수는 있지만, 맞닥뜨리는 모든 문제는 직접 해결하셔야해요!",
+ "With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "현재 쓰고 계신 브라우저에서는, 보고 느끼기에 응용 프로그램이 완전히 맞지 않거나, 일부 혹은 모든 기능이 작동하지 않을 수 있습니다. 어쨋든 사용하고 싶으시다면 계속할 수는 있지만, 부딛치는 모든 문제는 직접 해결하셔야 해요!",
"Checking for an update...": "업데이트를 확인하는 중...",
- "There are advanced notifications which are not shown here": "여기 보이지 않는 고급 알림이 있어요",
+ "There are advanced notifications which are not shown here": "여기에는 보여지지 않는 고급 알림이 있습니다.",
"%(oldDisplayName)s changed their display name to %(displayName)s.": "%(oldDisplayName)s님이 별명을 %(displayName)s(으)로 바꿨습니다.",
"%(senderName)s changed the pinned messages for the room.": "%(senderName)s가 방의 고정된 메시지를 바꿨습니다.",
"%(severalUsers)schanged their name %(count)s times|other": "%(severalUsers)s님이 이름을 %(count)s번 바꿨습니다",
@@ -781,18 +781,18 @@
"This setting cannot be changed later!": "이 설정은 나중에 바꿀 수 없습니다!",
"Data from an older version of Riot has been detected. This will have caused end-to-end cryptography to malfunction in the older version. End-to-end encrypted messages exchanged recently whilst using the older version may not be decryptable in this version. This may also cause messages exchanged with this version to fail. If you experience problems, log out and back in again. To retain message history, export and re-import your keys.": "이전 버전 Riot의 데이터가 발견됐습니다. 이전 버전에서는 종단 간 암호화에 오작동을 일으켰을 겁니다. 이전 버전을 사용한 최근의 종단 간 암호화된 메시지는 이 버전에서 복호화가 불가능할 수 있습니다. 이 버전과 메시지를 주고받지 못할 수도 있습니다. 문제가 생긴다면 로그아웃하고 다시 로그인 해 보세요. 메시지 기록을 유지하고 싶다면 키를 내보냈다가 다시 불러오세요.",
"Hide display name changes": "별명 변경 내역 숨기기",
- "This event could not be displayed": "이 이벤트는 표시될 수 없었습니다",
+ "This event could not be displayed": "이 이벤트는 표시될 수 없었습니다.",
"Seen by %(displayName)s (%(userName)s) at %(dateTime)s": "%(displayName)s(%(userName)s)님이 %(dateTime)s에 봄",
"Banned by %(displayName)s": "%(displayName)s님이 차단함",
"Display your community flair in rooms configured to show it.": "커뮤니티 재능이 보이도록 설정된 방에서 커뮤니티 재능을 표시할 수 있습니다.",
- "The user '%(displayName)s' could not be removed from the summary.": "사용자 %(displayName)s님이 요약에서 제거되지 못했습니다.",
+ "The user '%(displayName)s' could not be removed from the summary.": "사용자 %(displayName)s님을 요약에서 제거하지 못했습니다.",
"These rooms are displayed to community members on the community page. Community members can join the rooms by clicking on them.": "이 방들은 커뮤니티 페이지에서 커뮤니티 구성원에게 보여집니다. 커뮤니티 구성원은 방을 클릭해 들어갈 수 있습니다.",
"Pinned Messages": "고정된 메시지",
"You're not currently a member of any communities.": "지금은 어떤 커뮤니티에도 속해 있지 않습니다.",
"Flair": "재능",
"Showing flair for these communities:": "이 커뮤니티에 재능을 공개 중:",
"This room is not showing flair for any communities": "이 방은 어떤 커뮤니티에도 재능을 보여주지 않습니다",
- "Flair will appear if enabled in room settings": "재능은 방 설정에서 활성화하면 나타날 겁니다",
+ "Flair will appear if enabled in room settings": "방 설정에서 사용하면 재능이 나타날 겁니다.",
"Flair will not appear": "재능은 나타나지 않을 겁니다",
"The platform you're on": "당신이 사용 중인 플랫폼",
"The version of Riot.im": "Riot 버전",
@@ -808,7 +808,7 @@
"Your User Agent": "사용자 에이전트",
"Your device resolution": "기기 해상도",
"The information being sent to us to help make Riot.im better includes:": "Riot을 발전시키기 위해 저희에게 보내는 정보는 다음을 포함합니다:",
- "Where this page includes identifiable information, such as a room, user or group ID, that data is removed before being sent to the server.": "이 페이지에서 방, 사용자, 혹은 그룹 ID와 같은 식별 가능한 정보를 포함하는 부분이 있는 데이터는 서버에 보내지기 전에 삭제됩니다.",
+ "Where this page includes identifiable information, such as a room, user or group ID, that data is removed before being sent to the server.": "이 페이지에서 방, 사용자, 혹은 그룹 ID와 같은 식별 가능한 정보를 포함하는 부분이 있는 데이터는 서버에 보내지기 전에 제거됩니다.",
"Call Failed": "전화할 수 없었습니다",
"There are unknown devices in this room: if you proceed without verifying them, it will be possible for someone to eavesdrop on your call.": "이 방에는 모르는 기기가 있습니다. 인증하지 않고 계속하면 전화를 도청할 수도 있을 겁니다.",
"Review Devices": "기기 검증하기",
@@ -820,7 +820,7 @@
"A call is already in progress!": "이미 전화 걸고 계세요!",
"PM": "오후",
"AM": "오전",
- "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s": "%(fullYear)s %(monthName)s %(day)s (%(weekDayName)s)",
+ "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s": "%(fullYear)s년 %(monthName)s %(day)s일 (%(weekDayName)s)",
"Who would you like to add to this community?": "이 커뮤니티에 누구를 추가하고 싶으세요?",
"Warning: any person you add to a community will be publicly visible to anyone who knows the community ID": "경고: 커뮤니티에 추가한 사람은 커뮤니티 ID를 아는 누구에게나 공개됩니다",
"Invite new community members": "새 커뮤니티 구성원 초대하기",
@@ -854,18 +854,18 @@
"Verifies a user, device, and pubkey tuple": "사용자, 기기, 그리고 공개키 튜플 인증하기",
"%(widgetName)s widget modified by %(senderName)s": "%(senderName)s님이 수정한 %(widgetName)s 위젯",
"%(widgetName)s widget added by %(senderName)s": "%(senderName)s님이 추가한 %(widgetName)s 위젯",
- "%(widgetName)s widget removed by %(senderName)s": "%(senderName)s님이 삭제한 %(widgetName)s 위젯",
- "Remove avatar": "아바타 삭제하기",
- "To remove other users' messages, you must be a": "다른 사용자의 메시지를 삭제하기 위해서, 당신은 -가 돼야 한다",
- "Message removed by %(userId)s": "%(userId)s님에 의해 삭제된 메시지",
- "Message removed": "메시지가 삭제됐습니다",
- "Remove from community": "커뮤니티에서 삭제하기",
- "Remove this user from community?": "이 사용자를 커뮤니티에서 삭제하시겠어요?",
- "Failed to remove user from community": "유저를 커뮤니티에서 삭제하지 못했습니다",
- "Are you sure you want to remove '%(roomName)s' from %(groupId)s?": "확실히 %(roomName)s를(을) %(groupId)s로부터 삭제하고 싶으세요?",
- "Removing a room from the community will also remove it from the community page.": "방을 커뮤니티로부터 삭제하면 커뮤니티 페이지에서도 삭제됩니다.",
- "Failed to remove room from community": "방을 커뮤니티로부터 삭제하지 못했습니다",
- "Failed to remove '%(roomName)s' from %(groupId)s": "%(roomName)s를(을) %(groupId)s로부터 삭제하지 못했습니다",
+ "%(widgetName)s widget removed by %(senderName)s": "%(senderName)s님이 제거한 %(widgetName)s 위젯",
+ "Remove avatar": "아바타 제거하기",
+ "To remove other users' messages, you must be a": "다른 사용자의 메시지를 제거하기 위해서는, 당신은 -가 돼야 한다",
+ "Message removed by %(userId)s": "%(userId)s님에 의해 제거된 메시지",
+ "Message removed": "메시지가 제거됐습니다",
+ "Remove from community": "커뮤니티에서 제거하기",
+ "Remove this user from community?": "이 사용자를 커뮤니티에서 제거하시겠어요?",
+ "Failed to remove user from community": "유저를 커뮤니티에서 제거하지 못했습니다",
+ "Are you sure you want to remove '%(roomName)s' from %(groupId)s?": "확실히 %(roomName)s를(을) %(groupId)s로부터 제거하고 싶으세요?",
+ "Removing a room from the community will also remove it from the community page.": "방을 커뮤니티로부터 삭제하면 커뮤니티 페이지에서도 제거됩니다.",
+ "Failed to remove room from community": "커뮤니티로부터 방을 제거하지 못했습니다",
+ "Failed to remove '%(roomName)s' from %(groupId)s": "%(roomName)s를(을) %(groupId)s(으)로부터 제거하지 못했습니다.",
"%(names)s and %(count)s others are typing|other": "%(names)s님과 %(count)s명 더 입력하는 중",
"%(names)s and %(count)s others are typing|one": "%(names)s님 외 1명이 입력하는 중",
"Message Pinning": "메시지 고정",
@@ -878,9 +878,9 @@
"Debug Logs Submission": "디버그 로그 제출",
"Submit debug logs": "디버그 로그 전송하기",
"Select devices": "기기 선택하기",
- "Enable inline URL previews by default": "기본으로 바로 URL 미리보기",
+ "Enable inline URL previews by default": "기본으로 바로 URL 미리보기 사용하기",
"Always show encryption icons": "암호화 아이콘을 언제나 보여주기",
- "Enable automatic language detection for syntax highlighting": "구문 강조를 위해 자동 언어 감지하기",
+ "Enable automatic language detection for syntax highlighting": "구문 강조를 위해 자동 언어 감지 사용하기",
"Hide avatars in user and room mentions": "사용자와 방 언급할 때 아바타 숨기기",
"Disable big emoji in chat": "대화에서 큰 이모지 비활성화하기",
"Automatically replace plain text Emoji": "일반 텍스트로 된 이모지 자동으로 변환하기",
@@ -906,7 +906,7 @@
"Encrypting": "암호화 중",
"Encrypted, not sent": "암호화 됨, 보내지지 않음",
"Disinvite this user?": "이 사용자에 대한 초대를 취소할까요?",
- "Kick this user?": "이 사용자를 내쫒을까요?",
+ "Kick this user?": "이 사용자를 추방할까요?",
"Unban this user?": "이 사용자를 차단 해제할까요?",
"%(duration)ss": "%(duration)s초",
"%(duration)sm": "%(duration)s분",
@@ -922,11 +922,11 @@
"Unpin Message": "메시지 고정 해제하기",
"No pinned messages.": "고정된 메시지가 없습니다.",
"At this time it is not possible to reply with an emote.": "지금은 이모트로 답장할 수 없습니다.",
- "Send a message (unencrypted)…": "(암호화 안 된)메시지를 보내세요…",
+ "Send a message (unencrypted)…": "(암호화 안 된) 메시지를 보내세요…",
"Send an encrypted message…": "메시지를 보내세요…",
"Unable to reply": "답장할 수 없습니다",
"Send an encrypted reply…": "답장을 보내세요…",
- "Send a reply (unencrypted)…": "(암호화 안 된)답장을 보내세요…",
+ "Send a reply (unencrypted)…": "(암호화 안 된) 답장을 보내세요…",
"User Options": "사용자 옵션",
"Share Link to User": "사용자에게 링크 공유하기",
"Invite": "초대하기",
@@ -937,7 +937,7 @@
"Demote": "강등하기",
"Demote yourself?": "자신을 강등하시겠어요?",
"Ban this user?": "이 사용자를 차단할까요?",
- "To ban users, you must be a": "사용자를 차단하기 위해서, 당신은 -가 돼야 한다",
+ "To ban users, you must be a": "사용자를 차단하기 위해서 필요한 권한:",
"were banned %(count)s times|other": "님은 %(count)s번 차단됐습니다",
"were banned %(count)s times|one": "님은 차단됐습니다",
"was banned %(count)s times|other": "님은 %(count)s번 차단됐습니다",
@@ -948,17 +948,17 @@
"was unbanned %(count)s times|one": "는 차단 해제됐습니다",
"Delete %(count)s devices|other": "%(count)s개 기기 지우기",
"Drop here to restore": "복원하려면 여기에 떨어뜨리세요",
- "Drop here to favourite": "즐겨찾기 하려면 여기에 떨어뜨리세요",
- "Drop here to tag direct chat": "직접 대화를 태그하려면 여기에 떨어뜨리세요",
+ "Drop here to favourite": "즐겨찾으시려면 여기에 떨어뜨리세요.",
+ "Drop here to tag direct chat": "직접 대화를 태그하려면 여기에 떨어뜨리세요.",
"You have entered an invalid address.": "잘못된 주소를 입력했습니다.",
"This room is not public. You will not be able to rejoin without an invite.": "이 방은 공개되지 않았습니다. 초대 없이는 다시 들어올 수 없습니다.",
- "Enable URL previews for this room (only affects you)": "이 방에 대해 URL 미리보기",
- "Enable URL previews by default for participants in this room": "이 방에 참여한 모두에게 기본으로 URL 미리보기 적용하기",
- "Enable widget screenshots on supported widgets": "지원되는 위젯에 대해 위젯 스크린샷 허용하기",
+ "Enable URL previews for this room (only affects you)": "이 방에 대해 URL 미리보기 사용하기",
+ "Enable URL previews by default for participants in this room": "이 방에 참여한 모두에게 기본으로 URL 미리보기 사용하기",
+ "Enable widget screenshots on supported widgets": "지원되는 위젯에 대해 위젯 스크린샷 사용하기",
"Hide join/leave messages (invites/kicks/bans unaffected)": "들어오거나 떠나는 메시지 숨기기(초대/추방/차단은 그대로)",
"Show empty room list headings": "빈 방 목록 표제 보이게 하기",
"When someone puts a URL in their message, a URL preview can be shown to give more information about that link such as the title, description, and an image from the website.": "누군가 메시지에 URL을 넣으면 URL 미리보기가 보여져 웹사이트에서 온 제목, 설명, 그리고 이미지 등 그 링크에 대해 더 알 수 있습니다.",
- "In encrypted rooms, like this one, URL previews are disabled by default to ensure that your homeserver (where the previews are generated) cannot gather information about links you see in this room.": "지금 이 방처럼, 암호화된 방에서는 홈서버(미리보기가 만들어지는 곳)에서 이 방에서 보여지는 링크에 대해 알 수 없도록 URL 미리보기가 기본적으로 비활성화돼 있습니다.",
+ "In encrypted rooms, like this one, URL previews are disabled by default to ensure that your homeserver (where the previews are generated) cannot gather information about links you see in this room.": "지금 이 방처럼, 암호화된 방에서는 홈 서버(미리보기가 만들어지는 곳)에서 이 방에서 보여지는 링크에 대해 알 수 없도록 URL 미리보기가 기본적으로 비활성화돼 있습니다.",
"Your key share request has been sent - please check your other devices for key share requests.": "키 공유 요청이 보내졌습니다. 키 공유 요청을 다른 기기에서 받아주세요.",
"Key share requests are sent to your other devices automatically. If you rejected or dismissed the key share request on your other devices, click here to request the keys for this session again.": "자동으로 다른 기기에 키 공유 요청을 보냈습니다. 다른 기기에서 키 공유 요청을 거절하거나 묵살하셨으면, 여기를 눌러 이번 세션에 다시 키를 요청하세요.",
"Re-request encryption keys from your other devices.": "다른 기기로부터 암호화 키 재요청",
@@ -969,11 +969,221 @@
"Share room": "방 공유하기",
"Drop here to demote": "강등하려면 여기에 떨어뜨리세요",
"Community Invites": "커뮤니티 초대",
- "You have no historical rooms": "오래된 방이 없습니다",
- "You have been kicked from this room by %(userName)s.": "%(userName)s님에 의해",
- "You have been banned from this room by %(userName)s.": "%(userName)s님이 이 방에서 내쫒았습니다.",
+ "You have no historical rooms": "보관하고 있는 방이 없습니다",
+ "You have been kicked from this room by %(userName)s.": "%(userName)s님에 의해 추방당했습니다.",
+ "You have been banned from this room by %(userName)s.": "%(userName)s님에 의해 이 방에서 차단당했습니다.",
"You are trying to access a room.": "방에 접근하고 있습니다.",
"To change the room's avatar, you must be a": "방의 아바타를 바꾸려면, -여야 합니다",
"To change the room's name, you must be a": "방 이름을 바꾸려면, -여야 합니다.",
- "To change the room's main address, you must be a": "방의 매인 주소를 바꾸려면, -여야 합니다."
+ "To change the room's main address, you must be a": "방의 매인 주소를 바꾸려면, -여야 합니다.",
+ "Members only (since they joined)": "구성원만(??한 시점부터)",
+ "%(severalUsers)sjoined %(count)s times|one": "%(severalUsers)s님이 들어왔습니다",
+ "%(severalUsers)sjoined %(count)s times|other": "%(severalUsers)s님이 %(count)s번 들어왔습니다",
+ "%(oneUser)sjoined %(count)s times|other": "%(oneUser)s님이 %(count)s번 들어왔습니다",
+ "%(oneUser)sjoined %(count)s times|one": "%(oneUser)s님이 들어왔습니다",
+ "%(severalUsers)sjoined and left %(count)s times|other": "%(severalUsers)s님이 %(count)s번 들어왔다가 나갔습니다",
+ "%(severalUsers)sjoined and left %(count)s times|one": "%(severalUsers)s님이 들어왔다가 나갔습니다",
+ "%(oneUser)sjoined and left %(count)s times|other": "%(oneUser)님이 %(count)s번 들어왔다가 나갔습니다",
+ "%(oneUser)sjoined and left %(count)s times|one": "%(oneUser)s님이 들어왔다가 나갔습니다",
+ "%(severalUsers)sleft and rejoined %(count)s times|one": "%(severalUsers)s님이 나갔다가 다시 들어왔습니다",
+ "%(oneUser)sleft and rejoined %(count)s times|other": "%(oneUser)s님이 %(count)s번 나갔다가 다시 들어왔습니다",
+ "%(oneUser)sleft and rejoined %(count)s times|one": "%(oneUser)s님이 나갔다가 다시 들어왔습니다",
+ "%(severalUsers)sleft %(count)s times|other": "%(severalUsers)s님이 %(count)s번 나갔습니다",
+ "%(severalUsers)sleft %(count)s times|one": "%(severalUsers)s님이 나갔습니다",
+ "%(oneUser)sleft %(count)s times|other": "%(oneUser)s님이 %(count)s번 나갔다가 들어왔습니다",
+ "%(oneUser)sleft %(count)s times|one": "%(oneUser)s님이 나갔습니다",
+ "%(items)s and %(count)s others|one": "%(items)s, 그리고 하나 더.",
+ "A call is currently being placed!": "전화 걸고 있습니다.",
+ "Permission Required": "권한이 필요합니다.",
+ "A conference call could not be started because the intgrations server is not available": "서버가 연결되지 않아 전화 회의를 시작하지 못했습니다.",
+ "You do not have permission to start a conference call in this room": "이 방에서는 전화 회의를 시작할 권한이 없습니다.",
+ "deleted": "삭제됐습니다.",
+ "underlined": "밑줄 쳤습니다.",
+ "
HTML for your community's page
\n
\n Use the long description to introduce new members to the community, or distribute\n some important links\n
\n
\n You can even use 'img' tags\n
\n": "
커뮤니티 페이지를 위한 HTML
\n
\n 커뮤니티에 새 구성원을 소개할 때 길게 설명하거나\n 좀 중요한 링크로 배포할 수 있습니다.\n
\n
\n 'img' 태그를 사용할 수도 있습니다.\n
\n",
+ "Copied!": "복사했습니다!",
+ "Failed to copy": "복사하지 못했습니다.",
+ "Show Stickers": "스티커 보내기",
+ "Hide Stickers": "스티커 숨기기",
+ "Stickerpack": "스티커 팩",
+ "Add a stickerpack": "스티커 팩 추가하기",
+ "You don't currently have any stickerpacks enabled": "사용하고 있는 스티커 팩이 없습니다.",
+ "An email has been sent to %(emailAddress)s": "%(emailAddress)s에 이메일을 보냈습니다.",
+ "Code": "코드",
+ "The email field must not be blank.": "이메일을 써 주십시오.",
+ "The user name field must not be blank.": "사용자 이름을 써 주십시오.",
+ "The phone number field must not be blank.": "전화번호를 써 주십시오.",
+ "The password field must not be blank.": "비밀번호를 써 주십시오.",
+ "Username on %(hs)s": "%(hs)s 사용자 이름",
+ "%(serverName)s Matrix ID": "%(serverName)s의 Matrix ID",
+ "Disinvite this user from community?": "이 사용자에게 보낸 커뮤니티 초대를 취소할까요?",
+ "Failed to withdraw invitation": "초대를 취소하지 못했습니다.",
+ "Filter community members": "커뮤니티 구성원 찾기",
+ "Filter results": "검색 결과",
+ "Filter community rooms": "커뮤니티 방 찾기",
+ "Clear filter": "검색 초기화하기",
+ "Did you know: you can use communities to filter your Riot.im experience!": "모르고 계셨다면: Riot에서의 경험을 커뮤니티 별로 정리할 수 있어요!",
+ "To set up a filter, drag a community avatar over to the filter panel on the far left hand side of the screen. You can click on an avatar in the filter panel at any time to see only the rooms and people associated with that community.": "필터를 사용하고 싶으시다면, 커뮤니티 아바타를 스크린 왼쪽의 필터판에 끌어다 놓으면 됩니다. 언제든지, 필터판에 있는 아바타를 누르면 그 커뮤니티와 괸련된 방과 사람만 볼 수 있습니다.",
+ "Muted Users": "음소거된 사용자",
+ "Delete Widget": "위젯 지우기",
+ "An error ocurred whilst trying to remove the widget from the room": "방에서 위젯을 제거하는 동안 에러가 났습니다.",
+ "Failed to remove widget": "위젯을 제거하지 못했습니다.",
+ "Deleting a widget removes it for all users in this room. Are you sure you want to delete this widget?": "위젯을 삭제하면 이 방의 모든 사용자에게도 제거됩니다. 정말 이 위젯을 삭제하고 싶으세요?",
+ "The room '%(roomName)s' could not be removed from the summary.": "'%(roomName)s' 방을 요약에서 제거하지 못했습니다.",
+ "Failed to remove the room from the summary of %(groupId)s": "방을 %(groupId)s의 요약에서 제거하지 못했습니다.",
+ "Log out and remove encryption keys?": "로그아웃하고 암호화 열쇠를 제거하시겠어요?",
+ "Failed to remove a user from the summary of %(groupId)s": "한 사용자를 %(groupId)s의 요약에서 제거하지 못했습니다.",
+ "This will make your account permanently unusable. You will not be able to log in, and no one will be able to re-register the same user ID. This will cause your account to leave all rooms it is participating in, and it will remove your account details from your identity server. This action is irreversible.": "계정을 일시적으로 사용할 수 없게 됩니다. 로그인할 수 없고, 누구도 같은 사용자 ID를 다시 등록할 수 없습니다. 들어가 있던 모든 방에서 나오게 되고, ID 서버에서 계정 상세 정보도 제거됩니다. 이 결정은 돌이킬 수 없습니다.",
+ "Yes, I want to help!": "네, 돕고 싶어요!",
+ "NOTE: Apps are not end-to-end encrypted": "참고: 앱은 종단 간 암호화가 돼 있지 않습니다.",
+ "Integrations Error": "통합 에러",
+ "If you've submitted a bug via GitHub, debug logs can help us track down the problem. Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited and the usernames of other users. They do not contain messages.": "Github를 통해 버그를 신고하셨다면, 디버그 로그가 문제를 해결하는데 도움을 줍니다. 디버그 로그에는 사용자 이름과 방문했던 방이나 그룹의 ID와 별칭, 그리고 다른 사용자의 사용자 이름이 포함됩니다. 대화 내용은 포함되지 않습니다.",
+ "Warning: This widget might use cookies.": "경고: 이 위젯은 쿠키를 사용할 수도 있습니다.",
+ "Delete widget": "위젯 삭제하기",
+ "Minimize apps": "앱 최소화하기",
+ "Reload widget": "위젯 다시 시작하기",
+ "Popout widget": "위젯 팝업",
+ "Picture": "사진",
+ "Communities": "커뮤니티",
+ "%(severalUsers)srejected their invitations %(count)s times|one": "%(severalUsers)s님이 초대를 거절했습니다.",
+ "%(oneUser)srejected their invitation %(count)s times|other": "%(oneUser)s님이 초대를 %(count)s번 거절했습니다.",
+ "%(oneUser)srejected their invitation %(count)s times|one": "%(oneUser)s님이 초대를 거절했습니다.",
+ "were invited %(count)s times|other": "님이 %(count)s번 초대받았습니다.",
+ "were invited %(count)s times|one": "님이 초대받았습니다.",
+ "%(user)s is a %(userRole)s": "%(user)s님은 %(userRole)s입니다.",
+ "To notify everyone in the room, you must be a": "방의 모두에게 알림을 보내기 위한 권한:",
+ "To kick users, you must be a": "사용자를 추방하기 위한 권한:",
+ "To configure the room, you must be a": "방을 설정하기 위한 권한:",
+ "To invite users into the room, you must be a": "사용자를 방에 초대하기 위한 권한:",
+ "To send messages, you must be a": "메시지를 보내기 위한 권한:",
+ "To modify widgets in the room, you must be a": "방의 위젯을 변경하기 위한 권한:",
+ "To change the topic, you must be a": "주제를 바꾸기 위한 권한:",
+ "To change the permissions in the room, you must be a": "방에서의 권한을 바꾸기 위한 권한:",
+ "To change the room's history visibility, you must be a": "방의 기록을 보이게 하기 위한 권한:",
+ "inline-code": "인라인 코드",
+ "block-quote": "인용 블록",
+ "bulleted-list": "글머리 기호 목록",
+ "numbered-list": "숫자 목록",
+ "To send events of type , you must be a": " 종류의 이벤트를 보내기 위한 권한:",
+ "Event Content": "이벤트 내용",
+ "Event Type": "이벤트 종류",
+ "Failed to send custom event.": "맞춤 이벤트를 보내지 못했습니다.",
+ "Event sent!": "이벤트를 보냈어요!",
+ "You must specify an event type!": "이벤트 종류를 명시해야 해요!",
+ "Send Custom Event": "맞춤 이벤트 보내기",
+ "Unable to load event that was replied to, it either does not exist or you do not have permission to view it.": "답장 온 이벤트를 가져오지 못했습니다. 이벤트가 아예 없거나, 이벤트를 볼 권한이 없으신 것 같습니다.",
+ "Autocomplete Delay (ms):": "자동입력 지연 시간(ms):",
+ "Light theme": "밝은 테마",
+ "Dark theme": "어두운 테마",
+ "Status.im theme": "Status.im식 테마",
+ "A text message has been sent to %(msisdn)s": "%(msisdn)s님에게 문자 메시지를 보냈습니다.",
+ "Something went wrong when trying to get your communities.": "커뮤니티를 받는 중에 뭔가 잘못됐습니다.",
+ "Please help improve Riot.im by sending anonymous usage data. This will use a cookie.": "익명으로 사용 데이터를 보내 Riot의 발전을 도와주세요. 이 과정에서 쿠키를 사용합니다.",
+ "Allow": "허가하기",
+ "Visible to everyone": "모두에게 보여짐",
+ "Only visible to community members": "커뮤니티 구성원에게만 보여짐",
+ "Visibility in Room List": "방 목록에서의 가시성",
+ "The visibility of '%(roomName)s' in %(groupId)s could not be updated.": "%(groupId)s에 있는 %(roomName)s 방에서의 가시성이 업데이트 되지 않았습니다.",
+ "was invited %(count)s times|one": "님이 초대됐습니다.",
+ "was invited %(count)s times|other": "님이 %(count)s번 초대됐습니다.",
+ "collapse": "줄이기",
+ "expand": "늘이기",
+ "Matrix ID": "Matrix ID",
+ "email address": "이메일 주소",
+ "Matrix Room ID": "Matrix 방 ID",
+ "Preparing to send logs": "로그 보내려고 준비 중",
+ "Logs sent": "로그 보냈습니다.",
+ "Failed to send logs: ": "다음 로그를 보내지 못했습니다: ",
+ "GitHub issue link:": "GitHub 이슈 링크:",
+ "Riot bugs are tracked on GitHub: create a GitHub issue.": "Riot의 버그는 Github에서 트랙됩니다. Github 이슈 만들기",
+ "Notes:": "참고:",
+ "Community IDs cannot be empty.": "커뮤니티 ID를 입력해 주세요.",
+ "Community IDs may only contain characters a-z, 0-9, or '=_-./'": "커뮤니티 ID에는 a-z, 0-9, 혹은 '=_-.'만 사용할 수 있습니다.",
+ "Something went wrong whilst creating your community": "커뮤니티를 생성하는 동안 뭔가 잘못됐습니다.",
+ "Create Community": "커뮤니티 만들기",
+ "Community Name": "커뮤니티 이름",
+ "Example": "예시",
+ "Community ID": "커뮤니티 ID",
+ "example": "예시",
+ "Create": "만들기",
+ "Advanced options": "고급 설정",
+ "Block users on other matrix homeservers from joining this room": "다른 Matrix 홈 서버에서 이 방에 들어오려는 사용자 막기",
+ "Failed to indicate account erasure": "계정이 지워졌다는 것을 표시하지 못했습니다.",
+ "Deactivating your account does not by default cause us to forget messages you have sent. If you would like us to forget your messages, please tick the box below.": "계정을 비활성화한다고 해서 보내셨던 메시지가 기본으로 지워지는 건 아닙니다. 저희가 갖고 있는 메시지를 지우시려면 밑의 박스를 눌러주세요.",
+ "There's no one else here! Would you like to invite others or stop warning about the empty room?": "다른 사람이 아무도 없군요! 다른 사람을 초대하거나방이 비었다는 걸 그만 알려드릴까요?",
+ "To continue, please enter your password:": "계속하려면 비밀번호를 입력해 주세요:",
+ "password": "비밀번호",
+ "Refresh": "새로고침",
+ "To get started, please pick a username!": "시작하시려면, 사용자 이름을 골라주세요!",
+ "Share Room": "방 공유하기",
+ "Share User": "사용자 공유하기",
+ "Share Community": "커뮤니티 공유하기",
+ "Share Room Message": "방 메시지 공유하기",
+ "Link to selected message": "선택한 메시지로 연결하기",
+ "COPY": "복사",
+ "Unable to reject invite": "초대를 거절하지 못했습니다.",
+ "Reply": "답장",
+ "Pin Message": "메시지 고정하기",
+ "Share Message": "메시지 공유하기",
+ "Collapse Reply Thread": "이어지는 답장 줄이기",
+ "View Community": "커뮤니티 보기",
+ "Please install Chrome or Firefox for the best experience.": "크롬이나 파이어폭스를 설치하면 가장 좋은 경험을 하실 수 있습니다.",
+ "Safari and Opera work too.": "사파리나 오페라도 가능합니다.",
+ "Add rooms to the community summary": "커뮤니티 요약에 방 추가하기",
+ "Everyone": "모두",
+ "were kicked %(count)s times|other": "님은 %(count)s번 추방당했습니다.",
+ "were kicked %(count)s times|one": "님은 추방당했습니다.",
+ "was kicked %(count)s times|other": "님은 %(count)s번 추방당했습니다.",
+ "was kicked %(count)s times|one": "님은 추방당했습니다.",
+ "Custom of %(powerLevel)s": "",
+ "And %(count)s more...|other": "%(count)s개 더...",
+ "Add a User": "사용자 추가하기",
+ "Failed to upload image": "이미지를 업로드하지 못했습니다.",
+ "Failed to update community": "커뮤니티를 업데이트하지 못했습니다.",
+ "Unable to accept invite": "초대를 승락하지 못했습니다.",
+ "Unable to join community": "커뮤니티에 들어갈 수 없습니다.",
+ "Leave Community": "커뮤니티 나가기",
+ "Leave %(groupName)s?": "%(groupName)s를(을) 나가시겠어요?",
+ "Unable to leave community": "커뮤니티를 나갈 수 없습니다.",
+ "Community Settings": "커뮤니티 설정",
+ "Add rooms to this community": "이 커뮤니티에 방 추가하기",
+ "Featured Rooms:": "추천하는 방:",
+ "Featured Users:": "추천하는 사용자:",
+ "Join this community": "이 커뮤니티에 들어가기",
+ "Leave this community": "이 커뮤니티에서 나오기",
+ "%(inviter)s has invited you to join this community": "%(inviter)s님이 이 커뮤니티에 초대했습니다.",
+ "You are an administrator of this community": "이 커뮤니티의 관리자이십니다.",
+ "You are a member of this community": "이 커뮤니티의 구성원이십니다.",
+ "Who can join this community?": "누가 이 커뮤니티에 들어올 수 있나요?",
+ "Your community hasn't got a Long Description, a HTML page to show to community members. Click here to open settings and give it one!": "커뮤니티에 긴 설명, 즉 커뮤니티 구성원에게 보여줄 HTML 페이지가 없습니다. 여기를 눌러 설정을 열고 설명을 부여하세요!",
+ "Long Description (HTML)": "긴 설명(HTML)",
+ "Description": "설명",
+ "Community %(groupId)s not found": "%(groupId)s 커뮤니티를 찾지 못했습니다.",
+ "This Home server does not support communities": "이 홈 서버는 커뮤니티를 지원하지 않습니다.",
+ "Failed to load %(groupId)s": "%(groupId)s를 받지 못했습니다.",
+ "Can't leave Server Notices room": "서버 알림 방을 떠날 수 없습니다.",
+ "This room is used for important messages from the Homeserver, so you cannot leave it.": "이 방은 홈 서버로부터 중요한 메시지를 받는 데 쓰이므로 떠나실 수 없습니다.",
+ "Terms and Conditions": "이용 약관",
+ "Review terms and conditions": "이용 약관 읽기",
+ "Old cryptography data detected": "오래된 암호 데이터를 발견했습니다.",
+ "Your Communities": "속한 커뮤니티",
+ "Create a new community": "새 커뮤니티 만들기",
+ "Error whilst fetching joined communities": "속한 커뮤니티를 받는 중, 에러가 났습니다.",
+ "Room Notification": "방 알림",
+ "Notify the whole room": "방 모두에게 알리기",
+ "Sign in to get started": "시작하시려면 로그인하세요.",
+ "Try the app first": "앱을 먼저 써 보세요.",
+ "This homeserver doesn't offer any login flows which are supported by this client.": "이 홈 서버는 이 클라이언트에서 지원되는 로그인 방식을 지원하지 않습니다.",
+ "To continue using the %(homeserverDomain)s homeserver you must review and agree to our terms and conditions.": "홈 서버 %(homeserverDomain)s를(을) 계속 사용하기 위해서는 저희 이용 약관을 읽어보시고 동의하셔야 합니다.",
+ "State Key": "상태 키",
+ "Send Account Data": "계정 정보 보내기",
+ "Loading device info...": "기기 정보 받는 중...",
+ "Clear Storage and Sign Out": "저장소 지우고 로그아웃하기",
+ "Send Logs": "로그 보내기",
+ "We encountered an error trying to restore your previous session.": "저번 활동을 복구하던 중 에러가 났습니다.",
+ "Add to summary": "요약에 추가하기",
+ "Which rooms would you like to add to this summary?": "이 요약에 어떤 방을 추가하시겠어요?",
+ "Add a Room": "방 추가하기",
+ "Add users to the community summary": "커뮤니티 요약에 사용자 추가하기",
+ "Who would you like to add to this summary?": "이 요약에 누구를 추가하고 싶으세요?",
+ "Link to most recent message": "가장 최근 메시지로 링크 걸기"
}
From 1e9f2f112d001d32f28ecf4d9a544c25873d40bf Mon Sep 17 00:00:00 2001
From: Kyf Lee
Date: Fri, 27 Jul 2018 04:47:50 +0000
Subject: [PATCH 025/343] Translated using Weblate (Korean)
Currently translated at 96.7% (1179 of 1218 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/ko/
---
src/i18n/strings/ko.json | 18 +++++++++---------
1 file changed, 9 insertions(+), 9 deletions(-)
diff --git a/src/i18n/strings/ko.json b/src/i18n/strings/ko.json
index 86257b4f63..cad2a0b441 100644
--- a/src/i18n/strings/ko.json
+++ b/src/i18n/strings/ko.json
@@ -46,7 +46,7 @@
"Autoplay GIFs and videos": "GIF와 동영상을 자동으로 재생하기",
"Ban": "차단하기",
"Banned users": "차단된 사용자",
- "Blacklisted": "요주의",
+ "Blacklisted": "블랙리스트에 올려짐",
"Can't load user settings": "사용사 설정을 불러올 수 없습니다.",
"Change Password": "비밀번호 바꾸기",
"Changes your display nickname": "별명 바꾸기",
@@ -497,7 +497,7 @@
"%(weekDayName)s %(time)s": "%(weekDayName)s, %(time)s",
"Set a display name:": "별명 설정하기:",
"Upload an avatar:": "아바타 올리기:",
- "This server does not support authentication with a phone number.": "이 서버는 전화번호 인증을 지원하지 않아요.",
+ "This server does not support authentication with a phone number.": "이 서버는 전화번호 인증을 지원하지 않습니다.",
"Missing password.": "비밀번호가 없습니다.",
"Passwords don't match.": "비밀번호가 맞지 않아요.",
"Password too short (min %(MIN_PASSWORD_LENGTH)s).": "비밀번호가 너무 짧아요 (min %(MIN_PASSWORD_LENGTH)s).",
@@ -554,25 +554,25 @@
"This process allows you to import encryption keys that you had previously exported from another Matrix client. You will then be able to decrypt any messages that the other client could decrypt.": "이 과정으로 전에 다른 매트릭스 클라이언트에서 내보낸 암호화 키를 불러올 수 있습니다. 그 다음에는 다른 클라이언트에서 해독할 수 있던 어떤 메시지라도 해독할 수 있습니다.",
"The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.": "내보낸 파일은 암호로 보호하고 있습니다. 파일을 해독하려면, 여기에 암호를 입력해주세요.",
"Are you sure you wish to remove (delete) this event? Note that if you delete a room name or topic change, it could undo the change.": "이 이벤트를 제거(삭제)하길 원하세요? 방 이름을 삭제하거나 주제를 바꾸면, 다시 복귀될 수도 있습니다.",
- "To verify that this device can be trusted, please contact its owner using some other means (e.g. in person or a phone call) and ask them whether the key they see in their User Settings for this device matches the key below:": "이 기기를 믿을 수 있는지 인증하시려면, 몇 가지 방법(예를 들자면 직접 만나거나 전화를 걸어서)으로 소유자에게 연락하시고 그들이 사용자 설정에서 보는 키와 아래 키가 같은지 물어보세요:",
+ "To verify that this device can be trusted, please contact its owner using some other means (e.g. in person or a phone call) and ask them whether the key they see in their User Settings for this device matches the key below:": "이 기기를 믿을 수 있는지 인증하시려면, 다른 방법(예를 들자면 직접 만나거나 전화를 걸어서)으로 소유자 분에게 연락해, 사용자 설정에 있는 키가 아래 키와 같은지 물어보세요:",
"Device name": "기기 이름",
"Device Name": "기기 이름",
"Device key": "기기 열쇠",
- "If it matches, press the verify button below. If it doesn't, then someone else is intercepting this device and you probably want to press the blacklist button instead.": "맞다면, 아래 인증 버튼을 누르세요. 맞지 않다면, 다른 사람이 이 기기를 가로채고 있으니 요주의 버튼을 누르시고 싶으실 거 같네요.",
- "In future this verification process will be more sophisticated.": "앞으로는 이 확인 과정이 더 정교해질 거에요.",
+ "If it matches, press the verify button below. If it doesn't, then someone else is intercepting this device and you probably want to press the blacklist button instead.": "키가 동일하다면, 아래의 인증하기 버튼을 누르세요. 혹시 키가 다르다면, 이 기기가 중간자 공격을 받고 있는 중인 것이므로 블랙리스트에 올려야 합니다.",
+ "In future this verification process will be more sophisticated.": "이 인증 과정은 앞으로 더 정교하게 개선시키겠습니다.",
"Verify device": "기기 인증하기",
"I verify that the keys match": "열쇠가 맞는지 인증합니다",
"Unable to restore session": "세션을 복구할 수 없습니다.",
"If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.": "이전에 더 최근 버전의 Riot을 쓰셨다면, 이 버전과 맞지 않을 거에요. 창을 닫고 더 최근 버전으로 돌아가세요.",
- "You are currently blacklisting unverified devices; to send messages to these devices you must verify them.": "현재 인증하지 않은 기기를 요주의로 지정하셨습니다. 이 기기들에 메시지를 보내려면 인증해야 합니다.",
+ "You are currently blacklisting unverified devices; to send messages to these devices you must verify them.": "인증되지 않은 기기를 블랙리스트에 올리고 있습니다. 메시지를 보내려면 인증해야 합니다.",
"We recommend you go through the verification process for each device to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.": "각 기기가 알맞은 소유자에게 속해 있는지 인증 과정을 거치길 추천하지만, 원하신다면 그러지 않고도 메시지를 다시 보내실 수 있습니다.",
"\"%(RoomName)s\" contains devices that you haven't seen before.": "\"%(RoomName)s\"에 본 적이 없는 기기가 있습니다.",
"Unknown devices": "알 수 없는 기기",
"Unknown Address": "알 수 없는 주소",
- "Unblacklist": "요주의 취소",
- "Blacklist": "요주의",
+ "Unblacklist": "블랙리스트에서 빼기",
+ "Blacklist": "블랙리스트에 올리기",
"Unverify": "인증 취소",
- "Verify...": "인증...",
+ "Verify...": "인증하기...",
"ex. @bob:example.com": "예. @bob:example.com",
"Add User": "사용자 추가",
"This Home Server would like to make sure you are not a robot": "이 홈 서버는 당신이 로봇이 아닌지 확인하고 싶다고 합니다.",
From 44b281083c5336d5df843f81e7e205508bfc439a Mon Sep 17 00:00:00 2001
From: Slavi Pantaleev
Date: Fri, 27 Jul 2018 19:08:39 +0000
Subject: [PATCH 026/343] Translated using Weblate (Bulgarian)
Currently translated at 100.0% (1218 of 1218 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/bg/
---
src/i18n/strings/bg.json | 13 ++++++++++++-
1 file changed, 12 insertions(+), 1 deletion(-)
diff --git a/src/i18n/strings/bg.json b/src/i18n/strings/bg.json
index 2762cccd9c..6fadf8265a 100644
--- a/src/i18n/strings/bg.json
+++ b/src/i18n/strings/bg.json
@@ -1211,5 +1211,16 @@
"Demote": "Понижение",
"This event could not be displayed": "Това събитие не може да бъде показано",
"A conference call could not be started because the intgrations server is not available": "Не може да бъде започнат конферентен разговор, защото сървърът с интеграции не е достъпен",
- "Permission Required": "Необходимо е разрешение"
+ "Permission Required": "Необходимо е разрешение",
+ "A call is currently being placed!": "В момента се осъществява разговор!",
+ "You do not have permission to start a conference call in this room": "Нямате достъп да започнете конферентен разговор в тази стая",
+ "Show empty room list headings": "Показване на заглавия за празни стаи",
+ "deleted": "изтрито",
+ "underlined": "подчертано",
+ "inline-code": "код",
+ "block-quote": "цитат",
+ "bulleted-list": "списък (с тирета)",
+ "numbered-list": "номериран списък",
+ "Failed to remove widget": "Неуспешно премахване на приспособление",
+ "An error ocurred whilst trying to remove the widget from the room": "Възникна грешка при премахването на приспособлението от стаята"
}
From 0a27b4d08028a85f58a50dff3a29f5de2c34e093 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=D0=9D=D0=B8=D0=BA=D0=BE=D0=BB=D0=B0?=
Date: Sun, 29 Jul 2018 18:18:02 +0000
Subject: [PATCH 027/343] Translated using Weblate (Serbian)
Currently translated at 98.9% (1205 of 1218 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/sr/
---
src/i18n/strings/sr.json | 15 ++++++++++++++-
1 file changed, 14 insertions(+), 1 deletion(-)
diff --git a/src/i18n/strings/sr.json b/src/i18n/strings/sr.json
index b9ccbe2089..3f842e4457 100644
--- a/src/i18n/strings/sr.json
+++ b/src/i18n/strings/sr.json
@@ -1196,5 +1196,18 @@
"COPY": "КОПИРАЈ",
"Share Message": "Подели поруку",
"No Audio Outputs detected": "Нема уочених излаза звука",
- "Audio Output": "Излаз звука"
+ "Audio Output": "Излаз звука",
+ "A conference call could not be started because the intgrations server is not available": "Конференцијски позив не може почети зато што интеграцијски сервер није доступан",
+ "Call in Progress": "Позив је у току",
+ "A call is currently being placed!": "Успостављамо позив!",
+ "A call is already in progress!": "Позив је у току!",
+ "Permission Required": "Неопходна је дозвола",
+ "You do not have permission to start a conference call in this room": "Немате дозволу да започињете конференцијски позив у овој соби",
+ "Show empty room list headings": "Прикажи листу наслова празних соба",
+ "This event could not be displayed": "Овај догађај не може бити приказан",
+ "Demote yourself?": "Снизите чин себи?",
+ "Demote": "Снизите чин",
+ "deleted": "обрисано",
+ "underlined": "подвучено",
+ "You have no historical rooms": "Ваша историја соба је празна"
}
From c77aa7d27e77d886d8c3ed8c83bfcc02cb797d0f Mon Sep 17 00:00:00 2001
From: Miguel L
Date: Sun, 29 Jul 2018 18:44:53 +0000
Subject: [PATCH 028/343] Translated using Weblate (Spanish)
Currently translated at 62.7% (764 of 1218 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/es/
---
src/i18n/strings/es.json | 46 +++++++++++++++++++++++++++++-----------
1 file changed, 34 insertions(+), 12 deletions(-)
diff --git a/src/i18n/strings/es.json b/src/i18n/strings/es.json
index 121d5bed3d..b44a06aeed 100644
--- a/src/i18n/strings/es.json
+++ b/src/i18n/strings/es.json
@@ -53,9 +53,9 @@
"Command error": "Error de comando",
"Commands": "Comandos",
"Conference call failed.": "La llamada de conferencia falló.",
- "Conference calling is in development and may not be reliable.": "La llamada en conferencia esta en desarrollo y no podría ser segura.",
- "Conference calls are not supported in encrypted rooms": "Las llamadas en conferencia no son soportadas en salas encriptadas",
- "Conference calls are not supported in this client": "Las llamadas en conferencia no son soportadas en este navegador",
+ "Conference calling is in development and may not be reliable.": "La llamada en conferencia está en desarrollo y puede no ser fiable.",
+ "Conference calls are not supported in encrypted rooms": "Las llamadas en conferencia no son soportadas en salas cifradas",
+ "Conference calls are not supported in this client": "Las llamadas en conferencia no están soportadas en este cliente",
"Confirm password": "Confirmar clave",
"Confirm your new password": "Confirma tu nueva clave",
"Continue": "Continuar",
@@ -379,10 +379,10 @@
"Show timestamps in 12 hour format (e.g. 2:30pm)": "Mostrar el tiempo en formato 12h (am/pm)",
"The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.": "La clave de firma que usted ha proporcionado coincide con la recibida del dispositivo %(deviceId)s de %(userId)s. Dispositivo verificado.",
"This email address is already in use": "Dirección e-mail en uso",
- "This email address was not found": "Dirección e-mail no encontrada",
+ "This email address was not found": "Esta dirección e-mail no se encontró",
"The email address linked to your account must be entered.": "Debe introducir el e-mail asociado a su cuenta.",
- "The file '%(fileName)s' exceeds this home server's size limit for uploads": "El fichero '%(fileName)s' excede el tamaño máximo permitido en este servidor",
- "The file '%(fileName)s' failed to upload": "Se produjo un fallo al enviar '%(fileName)s'",
+ "The file '%(fileName)s' exceeds this home server's size limit for uploads": "El fichero '%(fileName)s' supera el tamaño máximo permitido en este servidor",
+ "The file '%(fileName)s' failed to upload": "No se pudo subir '%(fileName)s'",
"The remote side failed to pick up": "El sitio remoto falló al sincronizar",
"This Home Server does not support login using email address.": "Este servidor no permite identificarse con direcciones e-mail.",
"This invitation was sent to an email address which is not associated with this account:": "Se envió la invitación a un e-mail no asociado con esta cuenta:",
@@ -509,7 +509,7 @@
"Unrecognised room alias:": "alias de sala no reconocido:",
"%(userName)s (power %(powerLevelNumber)s)": "%(userName)s (nivel de permisos %(powerLevelNumber)s)",
"WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and device %(deviceId)s is \"%(fprint)s\" which does not match the provided key \"%(fingerprint)s\". This could mean your communications are being intercepted!": "Atención: VERIFICACIÓN DE CLAVE FALLO\" La clave de firma para %(userId)s y el dispositivo %(deviceId)s es \"%(fprint)s\" la cual no concuerda con la clave provista por \"%(fingerprint)s\". Esto puede significar que sus comunicaciones están siendo interceptadas!",
- "You cannot place VoIP calls in this browser.": "no puede realizar llamadas de voz en este navegador.",
+ "You cannot place VoIP calls in this browser.": "No puede realizar llamadas VoIP en este navegador.",
"You do not have permission to post to this room": "no tiene permiso para publicar en esta sala",
"You have been banned from %(roomName)s by %(userName)s.": "Ha sido expulsado de %(roomName)s por %(userName)s.",
"You have been invited to join this room by %(inviterName)s": "Ha sido invitado a entrar a esta sala por %(inviterName)s",
@@ -545,7 +545,7 @@
"May": "May",
"Jun": "Jun",
"Jul": "Jul",
- "Aug": "August",
+ "Aug": "Ago",
"Add rooms to this community": "Agregar salas a esta comunidad",
"Call Failed": "La llamada falló",
"Review Devices": "Revisar Dispositivos",
@@ -565,14 +565,14 @@
"The version of Riot.im": "La versión de Riot.im",
"Whether or not you're logged in (we don't record your user name)": "Estés identificado o no (no almacenamos tu nombre de usuario)",
"Your language of choice": "El idioma que has elegido",
- "Your homeserver's URL": "La URL de tu homeserver",
+ "Your homeserver's URL": "La URL de tu servidor",
"Your identity server's URL": "La URL de tu servidor de identidad",
"The information being sent to us to help make Riot.im better includes:": "La información remitida a nosotros para ayudar a mejorar Riot.im incluye:",
"Drop here to demote": "Suelta aquí para degradar",
"Whether or not you're using the Richtext mode of the Rich Text Editor": "Estés o no usando el modo Richtext del Editor de Texto Enriquecido",
"Who would you like to add to this community?": "¿A quién deseas añadir a esta comunidad?",
"Warning: any person you add to a community will be publicly visible to anyone who knows the community ID": "Aviso: cualquier persona que añadas a una comunidad será públicamente visible a cualquiera que conozca el ID de la comunidad",
- "Invite new community members": "Invita nuevos miembros de la comunidad",
+ "Invite new community members": "Invita nuevos miembros a la comunidad",
"Name or matrix ID": "Nombre o ID de matrix",
"Invite to Community": "Invitar a la comunidad",
"Which rooms would you like to add to this community?": "¿Qué salas deseas añadir a esta comunidad?",
@@ -737,8 +737,30 @@
"With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "En su navegador actual, la apariencia y comportamiento de la aplicación puede ser completamente incorrecta, y algunas de las características podrían no funcionar. Si aún desea probarlo puede continuar, pero ¡no podremos ofrecer soporte por cualquier problema que pudiese tener!",
"Checking for an update...": "Comprobando actualizaciones...",
"There are advanced notifications which are not shown here": "Hay notificaciones avanzadas que no se muestran aquí",
- "Every page you use in the app": "Cada página que usas en la aplicación",
+ "Every page you use in the app": "Todas las páginas que usas en la aplicación",
"Your User Agent": "Tu Agente de Usuario",
"Your device resolution": "La resolución de tu dispositivo",
- "There are unknown devices in this room: if you proceed without verifying them, it will be possible for someone to eavesdrop on your call.": "Hay dispositivos desconocidos en esta sala: si procedes sin verificarlos, será posible que alguien escuche tu llamada."
+ "There are unknown devices in this room: if you proceed without verifying them, it will be possible for someone to eavesdrop on your call.": "Hay dispositivos desconocidos en esta sala: si procede sin verificarlos, será posible que alguien escuche su llamada.",
+ "Which officially provided instance you are using, if any": "Cuál instancia ofrecida oficialmente está usando, si existe",
+ "e.g. %(exampleValue)s": "e.g %(exampleValue)s",
+ "e.g. ": "e.g. ",
+ "Where this page includes identifiable information, such as a room, user or group ID, that data is removed before being sent to the server.": "Donde esta página incluye información identificable, como sala, usuario o ID del grupo, esa información se elimina antes de enviarla al servidor.",
+ "A conference call could not be started because the intgrations server is not available": "No se pudo iniciar una llamada de conferencia porque el servidor de integraciones no está disponible",
+ "Call in Progress": "Llamada en Curso",
+ "A call is currently being placed!": "¡Se está realizando una llamada en este momento!",
+ "A call is already in progress!": "¡Ya hay una llamada en curso!",
+ "Permission Required": "Permiso Requerido",
+ "You do not have permission to start a conference call in this room": "No tiene permiso para comenzar una llamada de conferencia en esta sala",
+ "%(weekDayName)s %(time)s": "%(weekDayName)s %(time)s",
+ "%(weekDayName)s, %(monthName)s %(day)s %(time)s": "%(weekDayName)s, %(monthName)s %(day)s %(time)s",
+ "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s": "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s",
+ "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s": "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s",
+ "Show these rooms to non-members on the community page and room list?": "¿Mostrar estas salas a personas no registradas en la página de la comunidad y la lista de salas?",
+ "Add rooms to the community": "Agregar salas a la comunidad",
+ "Room name or alias": "Nombre o alias de la sala",
+ "Add to community": "Agregar a comunidad",
+ "Failed to invite the following users to %(groupId)s:": "No se pudo invitar a los usuarios siguientes a %(groupId)s:",
+ "Failed to invite users to community": "Falló la invitación de usuarios a la comunidad",
+ "Failed to invite users to %(groupId)s": "Falló la invitación de usuarios a %(groupId)s",
+ "Failed to add the following rooms to %(groupId)s:": "Falló la a agregación de las salas siguientes a %(groupId)s:"
}
From d4d173c98c86e5687179585649a58c4ee7f7db7d Mon Sep 17 00:00:00 2001
From: Miguel L
Date: Sun, 29 Jul 2018 18:45:56 +0000
Subject: [PATCH 029/343] Translated using Weblate (Spanish)
Currently translated at 62.8% (765 of 1218 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/es/
---
src/i18n/strings/es.json | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/i18n/strings/es.json b/src/i18n/strings/es.json
index b44a06aeed..a49efb0498 100644
--- a/src/i18n/strings/es.json
+++ b/src/i18n/strings/es.json
@@ -379,7 +379,7 @@
"Show timestamps in 12 hour format (e.g. 2:30pm)": "Mostrar el tiempo en formato 12h (am/pm)",
"The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.": "La clave de firma que usted ha proporcionado coincide con la recibida del dispositivo %(deviceId)s de %(userId)s. Dispositivo verificado.",
"This email address is already in use": "Dirección e-mail en uso",
- "This email address was not found": "Esta dirección e-mail no se encontró",
+ "This email address was not found": "Esta dirección de correo electrónico no se encontró",
"The email address linked to your account must be entered.": "Debe introducir el e-mail asociado a su cuenta.",
"The file '%(fileName)s' exceeds this home server's size limit for uploads": "El fichero '%(fileName)s' supera el tamaño máximo permitido en este servidor",
"The file '%(fileName)s' failed to upload": "No se pudo subir '%(fileName)s'",
@@ -482,7 +482,7 @@
"Who can access this room?": "¿Quién puede acceder a esta sala?",
"Who can read history?": "¿Quién puede leer el historial?",
"Who would you like to add to this room?": "¿A quién quiere añadir a esta sala?",
- "Who would you like to communicate with?": "¿Con quién quiere comunicar?",
+ "Who would you like to communicate with?": "¿Con quién quiere comunicarse?",
"%(senderName)s withdrew %(targetName)s's invitation.": "%(senderName)s ha retirado la invitación de %(targetName)s.",
"Would you like to accept or decline this invitation?": "¿Quiere aceptar o rechazar esta invitación?",
"You already have existing direct chats with this user:": "Ya tiene chats directos con este usuario:",
@@ -523,7 +523,7 @@
"You need to be able to invite users to do that.": "Usted debe ser capaz de invitar usuarios para hacer eso.",
"You need to be logged in.": "Necesita estar autenticado.",
"You need to enter a user name.": "Tiene que ingresar un nombre de usuario.",
- "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Su e-mail parece no estar asociado con una Id Matrix en este Homeserver.",
+ "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Su correo electrónico parece no estar asociado con una ID de Matrix en este Homeserver.",
"Your password has been reset": "Su contraseña ha sido restablecida",
"Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them": "Su contraseña a sido cambiada exitosamente. No recibirá notificaciones en otros dispositivos hasta que ingrese de nuevo en ellos",
"You seem to be in a call, are you sure you want to quit?": "Parece estar en medio de una llamada, ¿esta seguro que desea salir?",
@@ -762,5 +762,6 @@
"Failed to invite the following users to %(groupId)s:": "No se pudo invitar a los usuarios siguientes a %(groupId)s:",
"Failed to invite users to community": "Falló la invitación de usuarios a la comunidad",
"Failed to invite users to %(groupId)s": "Falló la invitación de usuarios a %(groupId)s",
- "Failed to add the following rooms to %(groupId)s:": "Falló la a agregación de las salas siguientes a %(groupId)s:"
+ "Failed to add the following rooms to %(groupId)s:": "Falló la a agregación de las salas siguientes a %(groupId)s:",
+ "Restricted": "Restringido"
}
From fbdd618f58f895a7ca3ee65553bc507bcd77fdf5 Mon Sep 17 00:00:00 2001
From: Krombel
Date: Mon, 30 Jul 2018 13:14:25 +0000
Subject: [PATCH 030/343] Translated using Weblate (German)
Currently translated at 100.0% (1218 of 1218 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/de/
---
src/i18n/strings/de_DE.json | 14 +++++++++++++-
1 file changed, 13 insertions(+), 1 deletion(-)
diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json
index 380769935b..c433147ef1 100644
--- a/src/i18n/strings/de_DE.json
+++ b/src/i18n/strings/de_DE.json
@@ -1210,5 +1210,17 @@
"Show empty room list headings": "Zeite leere Raumlist-Köpfe",
"Demote yourself?": "Selbst zurückstufen?",
"Demote": "Zurückstufen",
- "This event could not be displayed": "Dieses Ereignis konnte nicht angezeigt werden"
+ "This event could not be displayed": "Dieses Ereignis konnte nicht angezeigt werden",
+ "A conference call could not be started because the intgrations server is not available": "Ein Konferenzgespräch konnte nicht gestartet werden, da der Integrations-Server nicht verfügbar ist",
+ "A call is currently being placed!": "Ein Anruf wurde schon gestartet!",
+ "Permission Required": "Berechtigung benötigt",
+ "You do not have permission to start a conference call in this room": "Du hast keine Berechtigung um ein Konferenzgespräch in diesem Raum zu starten",
+ "deleted": "gelöscht",
+ "underlined": "unterstrichen",
+ "bulleted-list": "Liste mit Punkten",
+ "numbered-list": "Liste mit Nummern",
+ "Failed to remove widget": "Widget konnte nicht entfernt werden",
+ "An error ocurred whilst trying to remove the widget from the room": "Ein Fehler trat auf, während versucht wurde das Widget aus diesem Raum zu entfernen",
+ "inline-code": "Quellcode im Satz",
+ "block-quote": "Quellcode im Block"
}
From 320f38a56a968710b5133c231d3bc0ab843f3eae Mon Sep 17 00:00:00 2001
From: Miguel L
Date: Mon, 30 Jul 2018 17:23:21 +0000
Subject: [PATCH 031/343] Translated using Weblate (Spanish)
Currently translated at 100.0% (1218 of 1218 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/es/
---
src/i18n/strings/es.json | 455 ++++++++++++++++++++++++++++++++++++++-
1 file changed, 454 insertions(+), 1 deletion(-)
diff --git a/src/i18n/strings/es.json b/src/i18n/strings/es.json
index a49efb0498..6c2ce3bf11 100644
--- a/src/i18n/strings/es.json
+++ b/src/i18n/strings/es.json
@@ -763,5 +763,458 @@
"Failed to invite users to community": "Falló la invitación de usuarios a la comunidad",
"Failed to invite users to %(groupId)s": "Falló la invitación de usuarios a %(groupId)s",
"Failed to add the following rooms to %(groupId)s:": "Falló la a agregación de las salas siguientes a %(groupId)s:",
- "Restricted": "Restringido"
+ "Restricted": "Restringido",
+ "Missing roomId.": "Id de sala ausente.",
+ "Ignores a user, hiding their messages from you": "Ignora a un usuario, ocultando sus mensajes",
+ "Ignored user": "Usuario ignorado",
+ "You are now ignoring %(userId)s": "Ahora está ignorando a %(userId)s",
+ "Stops ignoring a user, showing their messages going forward": "Deja de ignorar a un usuario, mostrando en adelante sus mensajes",
+ "Unignored user": "Usuario no ignorado",
+ "You are no longer ignoring %(userId)s": "Ya no está ignorando a %(userId)s",
+ "Opens the Developer Tools dialog": "Abre el diálogo de Herramientas de Desarrollador",
+ "Verifies a user, device, and pubkey tuple": "Verifica a un usuario, dispositivo, y tupla de clave pública",
+ "%(oldDisplayName)s changed their display name to %(displayName)s.": "%(oldDisplayName)s cambió su nombre visible a %(displayName)s.",
+ "%(senderName)s changed the pinned messages for the room.": "%(senderName)s cambió los mensajes con chincheta en la sala.",
+ "%(widgetName)s widget modified by %(senderName)s": "el widget %(widgetName)s fue modificado por %(senderName)s",
+ "%(widgetName)s widget added by %(senderName)s": "el widget %(widgetName)s fue agregado por %(senderName)s",
+ "%(widgetName)s widget removed by %(senderName)s": "el %(widgetName)s fue eliminado por %(senderName)s",
+ "%(names)s and %(count)s others are typing|other": "%(names)s y otros %(count)s están escribiendo",
+ "%(names)s and %(count)s others are typing|one": "%(names)s y uno más están escribiendo",
+ "Your browser does not support the required cryptography extensions": "Su navegador no soporta las extensiones de criptografía requeridas",
+ "Not a valid Riot keyfile": "No es un archivo de claves de Riot válido",
+ "Message Pinning": "Mensajes con chincheta",
+ "Jitsi Conference Calling": "Llamadas de conferencia Jitsi",
+ "Disable Emoji suggestions while typing": "Desactivar sugerencias de Emoji mientras escribe",
+ "Hide avatar changes": "Ocultar cambios del avatar",
+ "Hide display name changes": "Ocultar cambios del nombre visible",
+ "Always show encryption icons": "Mostrar siempre iconos de cifrado",
+ "Hide avatars in user and room mentions": "Ocultar avatares en las menciones de usuarios y salas",
+ "Disable big emoji in chat": "Desactivar emoji grande en la conversación",
+ "Automatically replace plain text Emoji": "Sustituir automáticamente Emojis de texto",
+ "Mirror local video feed": "Clonar transmisión de video local",
+ "Disable Community Filter Panel": "Desactivar Panel de Filtro de la Comunidad",
+ "Disable Peer-to-Peer for 1:1 calls": "Desactivar pares para llamadas 1:1",
+ "Send analytics data": "Enviar información de estadísticas",
+ "Enable inline URL previews by default": "Activar vistas previas de las URLs por defecto",
+ "Enable URL previews for this room (only affects you)": "Activar vista previa de URL en esta sala (sólo le afecta a ud.)",
+ "Enable URL previews by default for participants in this room": "Activar vista previa de URL por defecto para los participantes en esta sala",
+ "Enable widget screenshots on supported widgets": "Activar capturas de pantalla de widget en los widgets soportados",
+ "Show empty room list headings": "Mostrar encabezados de listas de sala vacíos",
+ "Delete %(count)s devices|other": "Borrar %(count)s dispositivos",
+ "Delete %(count)s devices|one": "Borrar dispositivo",
+ "Select devices": "Seleccionar dispositivos",
+ "Drop file here to upload": "Soltar aquí el fichero a subir",
+ " (unsupported)": " (no soportado)",
+ "Ongoing conference call%(supportedText)s.": "Llamada de conferencia en curso%(supportedText)s",
+ "This event could not be displayed": "No se pudo mostrar este evento",
+ "%(senderName)s sent an image": "%(senderName)s envió una imagen",
+ "%(senderName)s sent a video": "%(senderName)s envió un video",
+ "%(senderName)s uploaded a file": "%(senderName)s subió un fichero",
+ "Your key share request has been sent - please check your other devices for key share requests.": "Se envió su solicitud para compartir la clave - por favor, compruebe sus otros dispositivos para solicitudes de compartir clave.",
+ "Key share requests are sent to your other devices automatically. If you rejected or dismissed the key share request on your other devices, click here to request the keys for this session again.": "Las solicitudes para compartir la clave se envían a sus otros dispositivos automáticamente. Si rechazó o descartó la solicitud en sus otros dispositivos, pulse aquí para solicitar otra vez las claves durante esta sesión.",
+ "If your other devices do not have the key for this message you will not be able to decrypt them.": "Si sus otros dispositivos no tienen la clave para este mensaje no podrá descifrarlos.",
+ "Key request sent.": "Solicitud de clave enviada.",
+ "Re-request encryption keys from your other devices.": "Volver a solicitar claves de cifrado de sus otros dispositivos.",
+ "Encrypting": "Cifrando",
+ "Encrypted, not sent": "Cifrado, no enviado",
+ "Disinvite this user?": "¿Dejar de invitar a este usuario?",
+ "Kick this user?": "¿Echar a este usuario?",
+ "Unban this user?": "¿Dejar de bloquear a este usuario?",
+ "Ban this user?": "¿Proscribir a este usuario?",
+ "Demote yourself?": "¿Degradarse a ud mismo?",
+ "You will not be able to undo this change as you are demoting yourself, if you are the last privileged user in the room it will be impossible to regain privileges.": "No podrá deshacer este cambio ya que está degradándose a usted mismo, si es el usuario con menos privilegios de la sala le resultará imposible recuperarlos.",
+ "Demote": "Degradar",
+ "Unignore": "Dejar de ignorar",
+ "Ignore": "Ignorar",
+ "Jump to read receipt": "Saltar a recibo leído",
+ "Mention": "Mención",
+ "Invite": "Invitar",
+ "Share Link to User": "Compartir Enlace con Usuario",
+ "User Options": "Opciones de Usuario",
+ "Make Moderator": "Convertir en Moderador",
+ "bold": "negrita",
+ "italic": "cursiva",
+ "deleted": "borrado",
+ "underlined": "subrayado",
+ "inline-code": "código en línea",
+ "block-quote": "cita extensa",
+ "bulleted-list": "lista con viñetas",
+ "numbered-list": "lista numerada",
+ "At this time it is not possible to reply with a file so this will be sent without being a reply.": "En este momento no es posible responder con un fichero así que esto se enviará sin que sea una respuesta.",
+ "Send an encrypted reply…": "Enviar una respuesta cifrada…",
+ "Send a reply (unencrypted)…": "Enviar una respuesta (sin cifrar)…",
+ "Send an encrypted message…": "Enviar un mensaje cifrado…",
+ "Send a message (unencrypted)…": "Enviar un mensaje (sin cifrar)…",
+ "Unable to reply": "No se pudo responder",
+ "At this time it is not possible to reply with an emote.": "En este momento no es posible responder con un emoticono.",
+ "Jump to message": "Ir a mensaje",
+ "No pinned messages.": "No hay mensajes con chincheta.",
+ "Loading...": "Cargando...",
+ "Pinned Messages": "Mensajes con chincheta",
+ "%(duration)ss": "%(duration)ss",
+ "%(duration)sm": "%(duration)sm",
+ "%(duration)sh": "%(duration)sh",
+ "%(duration)sd": "%(duration)sd",
+ "Online for %(duration)s": "En línea para %(duration)s",
+ "Idle for %(duration)s": "En reposo durante %(duration)s",
+ "Offline for %(duration)s": "Desconectado durante %(duration)s",
+ "Unknown for %(duration)s": "Desconocido durante %(duration)s",
+ "Idle": "En reposo",
+ "Offline": "Desconectado",
+ "Unknown": "Desconocido",
+ "Seen by %(displayName)s (%(userName)s) at %(dateTime)s": "Visto por %(displayName)s %(userName)s a las %(dateTime)s",
+ "Replying": "Respondiendo",
+ "(~%(count)s results)|other": "(~%(count)s resultados)",
+ "(~%(count)s results)|one": "(~%(count)s resultado)",
+ "Remove avatar": "Eliminar avatar",
+ "Share room": "Compartir sala",
+ "Drop here to favourite": "Soltar aquí para agregar a favoritos",
+ "Drop here to tag direct chat": "Soltar aquí para etiquetar la conversación",
+ "Drop here to restore": "Soltar aquí para restaurar",
+ "Community Invites": "Invitaciones a comunidades",
+ "You have no historical rooms": "No tiene salas en su historial",
+ "You have been kicked from this room by %(userName)s.": "Ha sido echado de esta sala por %(userName)s.",
+ "You have been banned from this room by %(userName)s.": "Ha sido proscrito de esta sala por %(userName)s.",
+ "You are trying to access a room.": "Está intentando acceder a una sala.",
+ "To change the room's avatar, you must be a": "Para cambiar el avatar de la sala, debe ser un",
+ "To change the room's name, you must be a": "Para cambiar el nombre de la sala, debe ser un",
+ "To change the room's main address, you must be a": "Para cambiar la dirección principal de la sala, debe ser un",
+ "To change the room's history visibility, you must be a": "Para cambiar la visibilidad del historial de la sala, debe ser un",
+ "To change the permissions in the room, you must be a": "Para cambiar los permisos de la sala, debe ser un",
+ "To change the topic, you must be a": "Para cambiar el tema, debe ser un",
+ "To modify widgets in the room, you must be a": "Para modificar los widgets de la sala, debe ser un",
+ "Banned by %(displayName)s": "Proscrito por %(displayName)s",
+ "To send messages, you must be a": "Para cambiar mensajes, debe ser un",
+ "To invite users into the room, you must be a": "Para cambiar usuarios a la sala, debe ser un",
+ "To configure the room, you must be a": "Para configurar la sala, debe ser un",
+ "To kick users, you must be a": "Para echar a usuarios, debe ser un",
+ "To ban users, you must be a": "Para proscribir a usuarios, debe ser un",
+ "To remove other users' messages, you must be a": "Para eliminar los mensajes de otros usuarios, debe ser un",
+ "To notify everyone in the room, you must be a": "Para notificar a todos en la sala, debe ser un",
+ "%(user)s is a %(userRole)s": "%(user)s es un %(userRole)s",
+ "Muted Users": "Usuarios Silenciados",
+ "To send events of type , you must be a": "Para enviar eventos del tipo , debe ser un",
+ "Members only (since the point in time of selecting this option)": "Sólo miembros (desde el instante desde que se selecciona esta opción)",
+ "Members only (since they were invited)": "Sólo miembros (desde que fueron invitados)",
+ "Members only (since they joined)": "Sólo miembros (desde que se unieron)",
+ "You don't currently have any stickerpacks enabled": "En este momento no tiene pegatinas activadas",
+ "Add a stickerpack": "Añadir un lote de pegatinas",
+ "Stickerpack": "Lote de pegatinas",
+ "Hide Stickers": "Ocultar pegatinas",
+ "Show Stickers": "Mostrar pegatinas",
+ "Addresses": "Direcciones",
+ "Invalid community ID": "ID de comunidad no válido",
+ "'%(groupId)s' is not a valid community ID": "'%(groupId)s' no es un ID de comunidad válido",
+ "Flair": "Insignia",
+ "Showing flair for these communities:": "Mostrar insignias de estas comunidades:",
+ "This room is not showing flair for any communities": "Esta sala no está mostrando las insignias de las comunidades",
+ "New community ID (e.g. +foo:%(localDomain)s)": "Nuevo ID de comunidad (e.g. +foo:%(localDomain)s)",
+ "URL previews are enabled by default for participants in this room.": "La vista previa de URL se activa por defecto en los participantes de esta sala.",
+ "URL previews are disabled by default for participants in this room.": "La vista previa se desactiva por defecto para los participantes de esta sala.",
+ "In encrypted rooms, like this one, URL previews are disabled by default to ensure that your homeserver (where the previews are generated) cannot gather information about links you see in this room.": "En salas cifradas, como ésta, la vista previa de la URL se desactivan por defecto para asegurar que el homeserver (donde se generan) no puede recopilar información de los enlaces que vea en esta sala.",
+ "URL Previews": "Vista previa de URL",
+ "When someone puts a URL in their message, a URL preview can be shown to give more information about that link such as the title, description, and an image from the website.": "Cuando alguien pone una URL en su mensaje, una vista previa se mostrará para ofrecer información sobre el enlace, tal como título, descripción, y una imagen del sitio Web.",
+ "Error decrypting audio": "Error al descifrar el sonido",
+ "Error decrypting image": "Error al descifrar imagen",
+ "Error decrypting video": "Error al descifrar video",
+ "%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s cambió el avatar para %(roomName)s",
+ "%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s eliminó el avatar de la sala.",
+ "%(senderDisplayName)s changed the room avatar to ": "%(senderDisplayName)s cambió el avatar de la sala a ",
+ "Copied!": "¡Copiado!",
+ "Failed to copy": "Falló la copia",
+ "Add an Integration": "Añadir una Integración",
+ "You are about to be taken to a third-party site so you can authenticate your account for use with %(integrationsUrl)s. Do you wish to continue?": "Está a punto de ir a un sitio de terceros de modo que pueda autenticar su cuenta para usarla con %(integrationsUrl)s. ¿Desea continuar?",
+ "Removed or unknown message type": "Tipo de mensaje desconocido o eliminado",
+ "Message removed by %(userId)s": "Mensaje eliminado por %(userId)s",
+ "Message removed": "Mensaje eliminado",
+ "Robot check is currently unavailable on desktop - please use a web browser": "La comprobación de robot no está actualmente disponible en escritorio - por favor, use un navegador Web",
+ "This Home Server would like to make sure you are not a robot": "A este Home Server le gustaría asegurarse de que no es un robot",
+ "Sign in with CAS": "Ingresar con CAS",
+ "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.": "Puede usar las opciones personalizadas del servidor para ingresar en otros servidores de Matrix especificando una URL del Home server diferente.",
+ "This allows you to use this app with an existing Matrix account on a different home server.": "Esto le permite usar esta aplicación con una cuenta de Matrix ya existente en un home server diferente.",
+ "You can also set a custom identity server but this will typically prevent interaction with users based on email address.": "Puede también usar un servidor de identidad personalizado, pero esto habitualmente evitará la interacción con usuarios mediante dirección de correo electrónico.",
+ "An email has been sent to %(emailAddress)s": "Se envió un correo electrónico a %(emailAddress)s",
+ "Please check your email to continue registration.": "Por favor compruebe su correo electrónico para continuar con el registro.",
+ "Token incorrect": "Token incorrecto",
+ "A text message has been sent to %(msisdn)s": "Se envió un mensaje de texto a %(msisdn)s",
+ "Please enter the code it contains:": "Por favor introduzca el código que contiene:",
+ "Code": "Código",
+ "The email field must not be blank.": "El campo de correo electrónico no debe estar en blanco.",
+ "The user name field must not be blank.": "El campo de nombre de usuario no debe estar en blanco.",
+ "The phone number field must not be blank.": "El campo de número de teléfono no debe estar en blanco.",
+ "The password field must not be blank.": "El campo de contraseña no debe estar en blanco.",
+ "Username on %(hs)s": "Nombre de usuario en %(hs)s",
+ "If you don't specify an email address, you won't be able to reset your password. Are you sure?": "Si no indica una dirección de correo electrónico, no podrá reiniciar su contraseña. ¿Está seguro?",
+ "You are registering with %(SelectedTeamName)s": "Está registrándose con %(SelectedTeamName)s",
+ "Default server": "Servidor por defecto",
+ "Custom server": "Servidor personalizado",
+ "Home server URL": "URL del Home server",
+ "Identity server URL": "URL del servidor de Identidad",
+ "What does this mean?": "¿Qué significa esto?",
+ "Remove from community": "Eliminar de la comunidad",
+ "Disinvite this user from community?": "¿Quitar como invitado a este usuario de la comunidad?",
+ "Remove this user from community?": "¿Eliminar a este usuario de la comunidad?",
+ "Failed to withdraw invitation": "Falló la retirada de la invitación",
+ "Failed to remove user from community": "Falló la eliminación de este usuario de la comunidad",
+ "Filter community members": "Filtrar miembros de la comunidad",
+ "Flair will appear if enabled in room settings": "La insignia aparecerá si se activa en la configuración de la sala",
+ "Flair will not appear": "La insignia no aparecerá",
+ "Are you sure you want to remove '%(roomName)s' from %(groupId)s?": "¿Está seguro de querer eliminar '%(roomName)s' de %(groupId)s?",
+ "Removing a room from the community will also remove it from the community page.": "Al eliminar una sala de la comunidad también se eliminará de su página.",
+ "Failed to remove room from community": "Falló la eliminación de la sala de la comunidad",
+ "Failed to remove '%(roomName)s' from %(groupId)s": "Falló la eliminación de '%(roomName)s' de %(groupId)s",
+ "The visibility of '%(roomName)s' in %(groupId)s could not be updated.": "La visibilidad de '%(roomName)s' en %(groupId)s no se pudo actualizar.",
+ "Visibility in Room List": "Visibilidad en la Lista de Salas",
+ "Visible to everyone": "Visible a todo el mundo",
+ "Only visible to community members": "Sólo visible a los miembros de la comunidad",
+ "Filter community rooms": "Filtrar salas de la comunidad",
+ "Something went wrong when trying to get your communities.": "Algo fue mal cuando se intentó obtener sus comunidades.",
+ "Display your community flair in rooms configured to show it.": "Muestra la insignia de su comunidad en las salas configuradas a tal efecto.",
+ "You're not currently a member of any communities.": "Actualmente no es miembro de una comunidad.",
+ "Please help improve Riot.im by sending anonymous usage data. This will use a cookie (please see our Cookie Policy).": "Por favor, ayude a mejorar Riot.im enviando información anónima de uso. Esto usará una cookie (por favor, vea nuestra Política de cookies).",
+ "Please help improve Riot.im by sending anonymous usage data. This will use a cookie.": "Por favor, ayude a mejorar Riot.im enviando información anónima de uso. Esto usará una cookie.",
+ "Yes, I want to help!": "¡Sí, quiero ayudar!",
+ "Unknown Address": "Dirección desconocida",
+ "Warning: This widget might use cookies.": "Advertencia: Este widget puede usar cookies.",
+ "Delete Widget": "Borrar widget",
+ "Deleting a widget removes it for all users in this room. Are you sure you want to delete this widget?": "Al borrar un widget se elimina para todos usuarios de la sala. ¿Está seguro?",
+ "Failed to remove widget": "Falló la eliminación del widget",
+ "An error ocurred whilst trying to remove the widget from the room": "Ocurrió un error mientras se intentaba eliminar el widget de la sala",
+ "Minimize apps": "Minimizar apps",
+ "Reload widget": "Recargar widget",
+ "Popout widget": "Widget en ventana externa",
+ "Picture": "Fotografía",
+ "Unblacklist": "Lista de no bloqueados",
+ "Blacklist": "Lista negra",
+ "Unverify": "No verificar",
+ "Verify...": "Verificar...",
+ "Communities": "Comunidades",
+ "%(nameList)s %(transitionList)s": "%(nameList)s %(transitionList)s",
+ "%(severalUsers)sjoined %(count)s times|other": "%(severalUsers)s se unieron %(count)s veces",
+ "%(severalUsers)sjoined %(count)s times|one": "%(severalUsers)s se unieron",
+ "%(oneUser)sjoined %(count)s times|other": "%(oneUser)s se unió %(count)s veces",
+ "%(oneUser)sjoined %(count)s times|one": "%(oneUser)s se unió",
+ "%(severalUsers)sleft %(count)s times|other": "%(severalUsers)s se fueron %(count)s veces",
+ "%(severalUsers)sleft %(count)s times|one": "%(severalUsers)s se fueron",
+ "%(oneUser)sleft %(count)s times|other": "%(oneUser)s se fue %(count)s veces",
+ "%(oneUser)sleft %(count)s times|one": "%(oneUser)s se fue",
+ "%(severalUsers)sjoined and left %(count)s times|other": "%(severalUsers)s se unieron y fueron %(count)s veces",
+ "%(severalUsers)sjoined and left %(count)s times|one": "%(severalUsers)s se unieron y fueron",
+ "%(oneUser)sjoined and left %(count)s times|other": "%(oneUser)s se unió y fue %(count)s veces",
+ "%(oneUser)sjoined and left %(count)s times|one": "%(oneUser)s se unió y fue",
+ "%(severalUsers)sleft and rejoined %(count)s times|other": "%(severalUsers)s se fue y volvió a unirse %(count)s veces",
+ "%(severalUsers)sleft and rejoined %(count)s times|one": "%(severalUsers)s se fue y volvió a unirse",
+ "%(oneUser)sleft and rejoined %(count)s times|other": "%(oneUser)s se fue y volvió a unirse %(count)s veces",
+ "%(oneUser)sleft and rejoined %(count)s times|one": "%(oneUser)s se fue y volvió a unirse",
+ "%(severalUsers)srejected their invitations %(count)s times|other": "%(severalUsers)s rechazó sus invitaciones %(count)s veces",
+ "%(severalUsers)srejected their invitations %(count)s times|one": "%(severalUsers)s rechazó sus invitaciones",
+ "%(oneUser)srejected their invitation %(count)s times|other": "%(oneUser)s rechazó su invitación %(count)s veces",
+ "%(oneUser)srejected their invitation %(count)s times|one": "%(oneUser)s rechazó su invitación",
+ "%(severalUsers)shad their invitations withdrawn %(count)s times|other": "%(severalUsers)s se les retiraron sus invitaciones %(count)s veces",
+ "%(severalUsers)shad their invitations withdrawn %(count)s times|one": "%(severalUsers)s se les retiraron sus invitaciones",
+ "%(oneUser)shad their invitation withdrawn %(count)s times|other": "%(oneUser)s se le retiró su invitación %(count)s veces",
+ "%(oneUser)shad their invitation withdrawn %(count)s times|one": "%(oneUser)s se les retiraron sus invitaciones",
+ "were invited %(count)s times|other": "se les invitó %(count)s veces",
+ "were invited %(count)s times|one": "se les invitó",
+ "was invited %(count)s times|other": "fue invitado %(count)s veces",
+ "was invited %(count)s times|one": "fue invitado",
+ "were banned %(count)s times|other": "fue proscrito %(count)s veces",
+ "were banned %(count)s times|one": "fueron proscritos",
+ "was banned %(count)s times|other": "fue proscrito %(count)s veces",
+ "was banned %(count)s times|one": "fue proscrito",
+ "were unbanned %(count)s times|other": "fueron proscritos %(count)s veces",
+ "were unbanned %(count)s times|one": "dejaron de ser proscritos",
+ "was unbanned %(count)s times|other": "dejaron de ser proscritos %(count)s veces",
+ "was unbanned %(count)s times|one": "dejó de ser proscrito",
+ "were kicked %(count)s times|other": "fueron echados %(count)s veces",
+ "were kicked %(count)s times|one": "fueron echados",
+ "was kicked %(count)s times|other": "fue echado %(count)s veces",
+ "was kicked %(count)s times|one": "fue echado",
+ "%(severalUsers)schanged their name %(count)s times|other": "%(severalUsers)s cambiaron su nombre %(count)s veces",
+ "%(severalUsers)schanged their name %(count)s times|one": "%(severalUsers)s cambiaron su nombre",
+ "%(oneUser)schanged their name %(count)s times|other": "%(oneUser)s cambió su nombre %(count)s veces",
+ "%(oneUser)schanged their name %(count)s times|one": "%(oneUser)s cambió su nombre",
+ "%(severalUsers)schanged their avatar %(count)s times|other": "%(severalUsers)s cambió su avatar %(count)s veces",
+ "%(severalUsers)schanged their avatar %(count)s times|one": "%(severalUsers)s cambiaron su avatar",
+ "%(oneUser)schanged their avatar %(count)s times|other": "%(oneUser)s cambió su avatar %(count)s veces",
+ "%(oneUser)schanged their avatar %(count)s times|one": "%(oneUser)s cambió su avatar",
+ "%(items)s and %(count)s others|other": "%(items)s y otros %(count)s",
+ "%(items)s and %(count)s others|one": "%(items)s y otro más",
+ "collapse": "colapsar",
+ "expand": "expandir",
+ "Custom of %(powerLevel)s": "Personalizado de %(powerLevel)s",
+ "Unable to load event that was replied to, it either does not exist or you do not have permission to view it.": "No se pudo cargar el evento al que se respondió, bien porque no existe o no tiene permiso para verlo.",
+ "In reply to": "En respuesta a ",
+ "And %(count)s more...|other": "Y %(count)s más...",
+ "ex. @bob:example.com": "ej. @bob:ejemplo.com",
+ "Add User": "Agregar Usuario",
+ "Matrix ID": "ID de Matrix",
+ "Matrix Room ID": "ID de Sala de Matrix",
+ "email address": "dirección de correo electrónico",
+ "You have entered an invalid address.": "No ha introducido una dirección correcta.",
+ "Try using one of the following valid address types: %(validTypesList)s.": "Intente usar uno de los tipos de direcciones válidos: %(validTypesList)s.",
+ "Riot bugs are tracked on GitHub: create a GitHub issue.": "Los fallos de Riot se rastrean en GitHun: crear un suceso en GitHub.",
+ "Start chatting": "Comenzar conversación",
+ "Click on the button below to start chatting!": "Pulsar en el botón inferior para comenzar a conversar",
+ "Start Chatting": "Comenzar Conversación",
+ "Confirm Removal": "Confirmar Eliminación",
+ "Are you sure you wish to remove (delete) this event? Note that if you delete a room name or topic change, it could undo the change.": "¿Está seguro de querer eliminar (borrar) este evento? Tenga en cuenta que si borra el nombre de una sala o cambia el tema, podría deshacer el cambio.",
+ "Community IDs cannot be empty.": "Los IDs de comunidad no pueden estar vacíos.",
+ "Community IDs may only contain characters a-z, 0-9, or '=_-./'": "Los IDs de comunidad sólo pueden contener caracteres a-z, 0-9, ó '=_-./'",
+ "Something went wrong whilst creating your community": "Algo fue mal mientras se creaba la comunidad",
+ "Create Community": "Crear Comunidad",
+ "Community Name": "Nombre de la Comunidad",
+ "Example": "Ejemplo",
+ "Community ID": "ID de la Comunidad",
+ "example": "ejemplo",
+ "Create": "Crear",
+ "Advanced options": "Opciones avanzadas",
+ "Block users on other matrix homeservers from joining this room": "Impedir que usuarios de otros homeservers se unan a esta sala",
+ "This setting cannot be changed later!": "Este ajuste no se puede cambiar posteriormente",
+ "Failed to indicate account erasure": "Falló la indicación de eliminado de la cuenta",
+ "This will make your account permanently unusable. You will not be able to log in, and no one will be able to re-register the same user ID. This will cause your account to leave all rooms it is participating in, and it will remove your account details from your identity server. This action is irreversible.": "Una vez realizada esta acción, la cuenta no será posible utilizarla de forma permanente. No podrá ingresar con ella, y nadie será capaz de volver a registrar el mismo ID de usuario. También abandonará todas las salas en las que participaba,y eliminará los detalles del servidor de identidad. Esta acción es irreversible.",
+ "Deactivating your account does not by default cause us to forget messages you have sent. If you would like us to forget your messages, please tick the box below.": "La desactivación de su cuenta no supone por defecto que los mensajes enviados se olviden. Si así lo desea, por favor, active la caja de selección inferior.",
+ "Message visibility in Matrix is similar to email. Our forgetting your messages means that messages you have sent will not be shared with any new or unregistered users, but registered users who already have access to these messages will still have access to their copy.": "La visibilidad de los mensajes en la red es similar al correo electrónico. El olvido de los mismos implica que los mensajes que haya enviado no se compartirán con ningún usuario nuevo o no registrado, pero aquellos usuarios registrados que ya tenían acceso a los mensajes seguirán teniendo acceso a su copia.",
+ "Please forget all messages I have sent when my account is deactivated (Warning: this will cause future users to see an incomplete view of conversations)": "Por favor, olvide todos los mensajes enviados cuando se desactive mi cuenta. (Advertencia: esto provocará que los usuarios futuros vean conversaciones incompletas)",
+ "To continue, please enter your password:": "Para continuar, por favor introduzca su contraseña:",
+ "password": "contraseña",
+ "To verify that this device can be trusted, please contact its owner using some other means (e.g. in person or a phone call) and ask them whether the key they see in their User Settings for this device matches the key below:": "Para verificar que este dispositivo es de confianza, por favor, contacte con su propietario usando otros medios (e.g. en persona o por llamada telefónica) y pregúnteles si la clave que ven su Configuración de Usuario para este dispositivo concuerda con la inferior:",
+ "If it matches, press the verify button below. If it doesn't, then someone else is intercepting this device and you probably want to press the blacklist button instead.": "Si son la misma, presione el botón inferior de verificar. Si no lo son, entonces alguien más está interceptando este dispositivo y probablemente quiera presionar el botón de lista negra en su lugar.",
+ "You added a new device '%(displayName)s', which is requesting encryption keys.": "Agregó un dispositivo nuevo '%(displayName)s', el cual está solicitando claves de cifrado.",
+ "Your unverified device '%(displayName)s' is requesting encryption keys.": "Su dispositivo sin verificar '%(displayName)s' está solicitando claves de cifrado.",
+ "Loading device info...": "Cargando información del dispositivo...",
+ "Encryption key request": "Solicitud de clave de cifrado",
+ "Log out and remove encryption keys?": "¿Salir y eliminar claves de cifrado?",
+ "Clear Storage and Sign Out": "Limpiar Almacenamiento y Desconectar",
+ "Send Logs": "Enviar Registros",
+ "Refresh": "Refrescar",
+ "We encountered an error trying to restore your previous session.": "Encontramos un error al intentar restaurar su sesión anterior.",
+ "If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.": "Si ha usado anteriormente una versión más reciente de Riot, su sesión puede ser incompatible con ésta. Cierre la ventana y vuelva a la versión más reciente.",
+ "Clearing your browser's storage may fix the problem, but will sign you out and cause any encrypted chat history to become unreadable.": "Limpiando el almacenamiento del navegador puede arreglar el problema, pero le desconectará y cualquier historial de conversación cifrado se volverá ilegible.",
+ "User names may only contain letters, numbers, dots, hyphens and underscores.": "Los nombres de usuario pueden contener letras, números, punto, guiones y subrayado.",
+ "Username not available": "Nombre de usuario no disponible",
+ "An error occurred: %(error_string)s": "Ocurrió un error: %(error_string)s",
+ "Username available": "Nombre de usuario disponible",
+ "This will be your account name on the homeserver, or you can pick a different server.": "Este será el nombre de su cuenta en el homeserver, o puede elegir un servidor diferente.",
+ "If you already have a Matrix account you can log in instead.": "Si ya tiene una cuenta de Matrix puede conectarse: log in.",
+ "Share Room": "Compartir Sala",
+ "Link to most recent message": "Enlazar a mensaje más reciente",
+ "Share User": "Compartir Usuario",
+ "Share Community": "Compartir Comunidad",
+ "Share Room Message": "Compartir Mensaje de Sala",
+ "Link to selected message": "Enlazar a mensaje seleccionado",
+ "COPY": "COPIAR",
+ "You are currently blacklisting unverified devices; to send messages to these devices you must verify them.": "Está actualmente poniendo en lista negra dispositivos no verificados; para enviar mensajes a los mismos deber verificarlos.",
+ "We recommend you go through the verification process for each device to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.": "Le recomendamos que efectúe el proceso de verificación con cada dispositivo para confirmar que pertenecen a su propietario legítimo, pero si lo prefiere puede reenviar el mensaje sin verificar.",
+ "\"%(RoomName)s\" contains devices that you haven't seen before.": "\"%(RoomName)s\" contiene dispositivos que no ha visto antes.",
+ "Unknown devices": "Dispositivos desconocidos",
+ "Unable to reject invite": "No se pudo rechazar la invitación",
+ "Share Message": "Compartir Mensaje",
+ "Collapse Reply Thread": "Colapsar Hilo de Respuestas",
+ "Topic": "Tema",
+ "Make this room private": "Hacer privada esta sala",
+ "Share message history with new users": "Compartir historial de mensajes con nuevos usuarios",
+ "Encrypt room": "Cifrar sala",
+ "There are no visible files in this room": "No hay archivos visibles en esta sala",
+ "
HTML for your community's page
\n
\n Use the long description to introduce new members to the community, or distribute\n some important links\n
\n
\n You can even use 'img' tags\n
\n": "HTML para la página de tu comunidad. Usa la descripción larga para su presentación, o distribuir enlaces de interés. Puedes incluso usar etiquetas 'img'\n",
+ "Add rooms to the community summary": "Agregar salas al resumen de la comunidad",
+ "Which rooms would you like to add to this summary?": "¿Cuáles salas desea agregar a este resumen?",
+ "Add to summary": "Agregar a resumen",
+ "Failed to add the following rooms to the summary of %(groupId)s:": "Falló la agregación de las salas siguientes al resumen de %(groupId)s:",
+ "Add a Room": "Agregar una Sala",
+ "Failed to remove the room from the summary of %(groupId)s": "Falló la eliminación de la sala del resumen de %(groupId)s",
+ "The room '%(roomName)s' could not be removed from the summary.": "La sala '%(roomName)s' no se pudo eliminar del resumen.",
+ "Add users to the community summary": "Agregar usuario al resumen de la comunidad",
+ "Who would you like to add to this summary?": "¿A quién le gustaría agregar a este resumen?",
+ "Failed to add the following users to the summary of %(groupId)s:": "Falló la adición de los usuarios siguientes al resumen de %(groupId)s:",
+ "Add a User": "Agregar un Usuario",
+ "Failed to remove a user from the summary of %(groupId)s": "Falló la eliminación de un usuario del resumen de %(groupId)s",
+ "The user '%(displayName)s' could not be removed from the summary.": "No se pudo eliminar al usuario '%(displayName)s' del resumen.",
+ "Failed to upload image": "Falló la subida de la imagen",
+ "Failed to update community": "Falló la actualización de la comunidad",
+ "Unable to accept invite": "No se pudo aceptar la invitación",
+ "Unable to join community": "No se pudo unir a comunidad",
+ "Leave Community": "Abandonar Comunidad",
+ "Leave %(groupName)s?": "¿Abandonar %(groupName)s?",
+ "Unable to leave community": "No se pudo abandonar la comunidad",
+ "Community Settings": "Configuración de la Comunidad",
+ "Changes made to your community name and avatar might not be seen by other users for up to 30 minutes.": "Las modificaciones realizadas al nombre y avatar de la comunidad pueden no mostrarse a otros usuarios hasta dentro de 30 minutos.",
+ "These rooms are displayed to community members on the community page. Community members can join the rooms by clicking on them.": "Estas salas se muestran a los miembros de la comunidad en la página de la misma. Los miembros pueden unirse a las salas pulsando sobre ellas.",
+ "Featured Rooms:": "Salas Destacadas:",
+ "Featured Users:": "Usuarios Destacados:",
+ "%(inviter)s has invited you to join this community": "%(inviter)s le ha invitado a unirse a esta comunidad",
+ "Join this community": "Unirse a esta comunidad",
+ "Leave this community": "Abandonar esta comunidad",
+ "You are an administrator of this community": "Usted es un administrador de esta comunidad",
+ "You are a member of this community": "Usted es un miembro de esta comunidad",
+ "Who can join this community?": "¿Quién puede unirse a esta comunidad?",
+ "Everyone": "Todo el mundo",
+ "Your community hasn't got a Long Description, a HTML page to show to community members. Click here to open settings and give it one!": "Su comunidad no tiene una descripción larga, una página HTML para mostrar a sus miembros. Pulse aquí para abrir los ajustes y definirla",
+ "Long Description (HTML)": "Descripción Larga (HTML)",
+ "Description": "Descripción",
+ "Community %(groupId)s not found": "No se encontraron %(groupId)s de la comunidad",
+ "This Home server does not support communities": "Este Home server no soporta comunidades",
+ "Failed to load %(groupId)s": "Falló la carga de %(groupId)s",
+ "This room is not public. You will not be able to rejoin without an invite.": "Esta sala no es pública. No podrá volver a unirse sin una invitación.",
+ "Can't leave Server Notices room": "No puede abandonar la sala Avisos del Servidor",
+ "This room is used for important messages from the Homeserver, so you cannot leave it.": "La sala se usa para mensajes importantes del Homeserver, así que no puede abandonarla.",
+ "Terms and Conditions": "Términos y condiciones",
+ "To continue using the %(homeserverDomain)s homeserver you must review and agree to our terms and conditions.": "Para continuar usando el homeserver %(homeserverDomain)s debe revisar y estar de acuerdo con nuestros términos y condiciones.",
+ "Review terms and conditions": "Revisar términos y condiciones",
+ "Old cryptography data detected": "Se detectó información criptográfica antigua",
+ "Data from an older version of Riot has been detected. This will have caused end-to-end cryptography to malfunction in the older version. End-to-end encrypted messages exchanged recently whilst using the older version may not be decryptable in this version. This may also cause messages exchanged with this version to fail. If you experience problems, log out and back in again. To retain message history, export and re-import your keys.": "Se detectó una versión más antigua de Riot. Esto habrá provocado que la criptografía de extremo a extremo funcione incorrectamente en la versión más antigua. Los mensajes cifrados de extremo a extremo intercambiados recientemente mientras usaba la versión más antigua puede que no sean descifrables con esta versión. Esto también puede hacer que fallen con la más reciente. Si experimenta problemas, desconecte y vuelva a ingresar. Para conservar el historial de mensajes, exporte y vuelva a importar sus claves.",
+ "Your Communities": "Sus Comunidades",
+ "Did you know: you can use communities to filter your Riot.im experience!": "Sabía que: puede usar comunidades para filtrar su experiencia con Riot.im",
+ "To set up a filter, drag a community avatar over to the filter panel on the far left hand side of the screen. You can click on an avatar in the filter panel at any time to see only the rooms and people associated with that community.": "Para configurar un filtro, arrastre un avatar de comunidad sobre el panel de filtro en la parte izquierda de la pantalla. Puede pulsar sobre un avatar en el panel de filtro en cualquier momento para ver solo las salas y personas asociadas con esa comunidad.",
+ "Error whilst fetching joined communities": "Se produjo un error al recuperar las comunidades suscritas",
+ "Create a new community": "Crear una comunidad nueva",
+ "Create a community to group together users and rooms! Build a custom homepage to mark out your space in the Matrix universe.": "Crear una comunidad para agrupar usuarios y salas. Construye una página de inicio personalizada para destacarla.",
+ "Show devices, send anyway or cancel.": "Mostrar dispositivos, enviar de todas formas o cancelar.",
+ "You can't send any messages until you review and agree to our terms and conditions.": "No puede enviar ningún mensaje hasta que revise y esté de acuerdo con nuestros términos y condiciones.",
+ "%(count)s of your messages have not been sent.|one": "No se envió su mensaje.",
+ "%(count)s Resend all or cancel all now. You can also select individual messages to resend or cancel.|other": "Reenviar todo o cancelar todo ahora. También puede seleccionar mensajes sueltos o reenviar o cancelar.",
+ "%(count)s Resend all or cancel all now. You can also select individual messages to resend or cancel.|one": "Reemviar mensaje o cancelar mensaje ahora.",
+ "Connectivity to the server has been lost.": "Se perdió la conexión con el servidor.",
+ "Sent messages will be stored until your connection has returned.": "Los mensajes enviados se almacenarán hasta que vuelva su conexión.",
+ "Active call": "Llamada activa",
+ "There's no one else here! Would you like to invite others or stop warning about the empty room?": "¡No hay nadie aquí! ¿Le gustaría invitar a otros o dejar de avisar de la sala vacía?",
+ "Room": "Sala",
+ "Clear filter": "Limpiar filtro",
+ "Light theme": "Tema ligero",
+ "Dark theme": "Tema oscuro",
+ "Status.im theme": "Tema Status.im",
+ "Autocomplete Delay (ms):": "Retraso del completado automático (en ms):",
+ "Ignored Users": "Usuarios ignorados",
+ "Debug Logs Submission": "Envío de registros para depuración",
+ "If you've submitted a bug via GitHub, debug logs can help us track down the problem. Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited and the usernames of other users. They do not contain messages.": "Si ha envíado un error a GitHub, estos registros pueden ayudar a localizar el problema. Contienen información de uso de la aplicación, incluido el nombre de usuario, IDs o alias de las salas o grupos visitados y los nombres de otros usuarios. No contienen mensajes.",
+ "Riot collects anonymous analytics to allow us to improve the application.": "El programa recopila estadísticas de forma anónima para mejorarlo.",
+ "Privacy is important to us, so we don't collect any personal or identifiable data for our analytics.": "La privacidad es importante, por lo que no se recopila información personal o identificable en las estadísticas.",
+ "Learn more about how we use analytics.": "Más información sobre el uso de las estadísticas.",
+ "Updates": "Actualizaciones",
+ "Check for update": "Comprobar actualizaciones",
+ "Desktop specific": "Específico del escritorio",
+ "Start automatically after system login": "Iniciar automáticamente después de ingresar en el sistema",
+ "No Audio Outputs detected": "No se detectaron Salidas de Sonido",
+ "Audio Output": "Salida de Sonido",
+ "An email has been sent to %(emailAddress)s. Once you've followed the link it contains, click below.": "Se envió un correo electrónico a %(emailAddress)s. Una vez haya seguido el enlace en él, pulse debajo.",
+ "Please note you are logging into the %(hs)s server, not matrix.org.": "Por favor, tenga en cuenta que está ingresando en el servidor %(hs)s, no en matrix.org.",
+ "This homeserver doesn't offer any login flows which are supported by this client.": "Este homeserver no ofrece flujos de ingreso soportados por este cliente.",
+ "Try the app first": "Probar primero la app",
+ "Sign in to get started": "Ingresar para comenzar",
+ "Set a display name:": "Ajuste un nombre en pantalla:",
+ "Upload an avatar:": "Subir un avatar:",
+ "This server does not support authentication with a phone number.": "Este servidor no soporta autenticación mediante número de teléfono.",
+ "Missing password.": "Falta la contraseña.",
+ "Passwords don't match.": "Las contraseñas no coinciden.",
+ "Password too short (min %(MIN_PASSWORD_LENGTH)s).": "La contraseña es demasiado corta (mín %(MIN_PASSWORD_LENGTH)s).",
+ "This doesn't look like a valid email address.": "Ésta no parece una dirección de correo electrónico válida.",
+ "This doesn't look like a valid phone number.": "Éste no parece un número de teléfono válido.",
+ "An unknown error occurred.": "Ocurrió un error desconocido.",
+ "I already have an account": "Ya tengo una cuenta",
+ "Notify the whole room": "Notificar a toda la sala",
+ "Room Notification": "Notificación de Salas",
+ "This process allows you to export the keys for messages you have received in encrypted rooms to a local file. You will then be able to import the file into another Matrix client in the future, so that client will also be able to decrypt these messages.": "Este proceso le permite exportar las claves para los mensajes que haya recibido en salas cifradas a un fichero local. Entonces podrá importar el fichero en otro cliente de Matrix en el futuro, de modo que dicho cliente será capaz de descifrar dichos mensajes.",
+ "The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a passphrase below, which will be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.": "El fichero exportado permitirá a cualquiera que pueda leerlo la tarea de descifrar todo mensaje cifrado que usted pueda ver, así que debe ser cuidadoso en mantenerlo seguro. Para ayudarle, debería introducir una contraseña debajo, la cual usará para cifrar la información exportada. Sólo será posible importar dicha información usando la misma contraseña.",
+ "This process allows you to import encryption keys that you had previously exported from another Matrix client. You will then be able to decrypt any messages that the other client could decrypt.": "Este proceso permite importar claves de cifrado que había exportado previamente desde otro cliente de Matrix. Entonces será capaz de descifrar todos los mensajes que el otro cliente así hacía.",
+ "The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.": "El fichero de exportación se protegerá con una contraseña. Debería introducir aquí la contraseña para descifrar el fichero."
}
From f137151a7ae6cbb54c326ece7d654b27d569814f Mon Sep 17 00:00:00 2001
From: adrian-007
Date: Wed, 1 Aug 2018 08:53:16 +0000
Subject: [PATCH 032/343] Translated using Weblate (Polish)
Currently translated at 92.6% (1129 of 1218 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/pl/
---
src/i18n/strings/pl.json | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/i18n/strings/pl.json b/src/i18n/strings/pl.json
index dd95e2b6dd..b4f25ad8b5 100644
--- a/src/i18n/strings/pl.json
+++ b/src/i18n/strings/pl.json
@@ -1132,5 +1132,6 @@
"The email field must not be blank.": "Pole email nie może być puste.",
"The user name field must not be blank.": "Pole nazwy użytkownika nie może być puste.",
"The phone number field must not be blank.": "Pole numeru telefonu nie może być puste.",
- "The password field must not be blank.": "Pole hasła nie może być puste."
+ "The password field must not be blank.": "Pole hasła nie może być puste.",
+ "Call Failed": "Nieudane połączenie"
}
From 7875d37c8ecbdbf375d8d06064396ee321d95c13 Mon Sep 17 00:00:00 2001
From: David Baker
Date: Wed, 1 Aug 2018 15:01:11 +0100
Subject: [PATCH 033/343] Destroy non-persistent widgets when switching room
---
src/components/views/elements/AppTile.js | 3 +++
src/stores/ActiveWidgetStore.js | 2 --
2 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/src/components/views/elements/AppTile.js b/src/components/views/elements/AppTile.js
index bd88327b7f..d9593ff52a 100644
--- a/src/components/views/elements/AppTile.js
+++ b/src/components/views/elements/AppTile.js
@@ -161,6 +161,8 @@ export default class AppTile extends React.Component {
// if it's not remaining on screen, get rid of the PersistedElement container
if (!ActiveWidgetStore.getWidgetPersistence(this.props.id)) {
ActiveWidgetStore.destroyPersistentWidget();
+ const PersistedElement = sdk.getComponent("elements.PersistedElement");
+ PersistedElement.destroyElement(this._persistKey);
}
}
@@ -437,6 +439,7 @@ export default class AppTile extends React.Component {
// Force the widget to be non-persistent
ActiveWidgetStore.destroyPersistentWidget();
+ PersistedElement.destroyElement(this._persistKey);
}
formatAppTileName() {
diff --git a/src/stores/ActiveWidgetStore.js b/src/stores/ActiveWidgetStore.js
index cc27febaf9..fe83260cde 100644
--- a/src/stores/ActiveWidgetStore.js
+++ b/src/stores/ActiveWidgetStore.js
@@ -75,8 +75,6 @@ class ActiveWidgetStore extends EventEmitter {
destroyPersistentWidget() {
const toDeleteId = this._persistentWidgetId;
- const PersistedElement = sdk.getComponent("elements.PersistedElement");
- PersistedElement.destroyElement('widget_' + toDeleteId);
this.setWidgetPersistence(toDeleteId, false);
this.delWidgetMessaging(toDeleteId);
this.delWidgetCapabilities(toDeleteId);
From b9bbb7ee16c300bd2bb3741365a8929de9bfa1fb Mon Sep 17 00:00:00 2001
From: Bruno Windels
Date: Thu, 2 Aug 2018 11:40:25 +0200
Subject: [PATCH 034/343] pass in userId with room in test
---
src/VectorConferenceHandler.js | 2 +-
test/components/views/rooms/RoomList-test.js | 15 ++++++++-------
2 files changed, 9 insertions(+), 8 deletions(-)
diff --git a/src/VectorConferenceHandler.js b/src/VectorConferenceHandler.js
index 19081726b2..af6659d343 100644
--- a/src/VectorConferenceHandler.js
+++ b/src/VectorConferenceHandler.js
@@ -84,7 +84,7 @@ ConferenceCall.prototype._getConferenceUserRoom = function() {
preset: "private_chat",
invite: [this.confUserId]
}).then(function(res) {
- return new Room(res.room_id);
+ return new Room(res.room_id, client.getUserId());
});
};
diff --git a/test/components/views/rooms/RoomList-test.js b/test/components/views/rooms/RoomList-test.js
index c0a0b8eb67..8a596d4151 100644
--- a/test/components/views/rooms/RoomList-test.js
+++ b/test/components/views/rooms/RoomList-test.js
@@ -20,15 +20,16 @@ function generateRoomId() {
return '!' + Math.random().toString().slice(2, 10) + ':domain';
}
-function createRoom(opts) {
- const room = new Room(generateRoomId());
- if (opts) {
- Object.assign(room, opts);
- }
- return room;
-}
describe('RoomList', () => {
+ function createRoom(opts) {
+ const room = new Room(generateRoomId(), client.getUserId());
+ if (opts) {
+ Object.assign(room, opts);
+ }
+ return room;
+ }
+
let parentDiv = null;
let sandbox = null;
let client = null;
From 908de56c6da45f4a398c025c639935157b90dd28 Mon Sep 17 00:00:00 2001
From: Bruno Windels
Date: Thu, 2 Aug 2018 11:42:05 +0200
Subject: [PATCH 035/343] replace getMember(myId).membership with
getMyMembership
This works with rooms which haven't had their members
loaded yet.
---
src/RoomInvite.js | 3 +--
src/components/structures/RoomView.js | 3 ++-
.../views/dialogs/ChatCreateOrReuseDialog.js | 6 +++---
src/components/views/rooms/MemberInfo.js | 11 ++++++-----
src/components/views/rooms/RoomTile.js | 6 ++----
src/utils/WidgetUtils.js | 3 +--
6 files changed, 15 insertions(+), 17 deletions(-)
diff --git a/src/RoomInvite.js b/src/RoomInvite.js
index 3a9088e65f..a96d1b2f6b 100644
--- a/src/RoomInvite.js
+++ b/src/RoomInvite.js
@@ -194,8 +194,7 @@ function _getDirectMessageRooms(addr) {
const rooms = dmRooms.filter((dmRoom) => {
const room = MatrixClientPeg.get().getRoom(dmRoom);
if (room) {
- const me = room.getMember(MatrixClientPeg.get().credentials.userId);
- return me && me.membership == 'join';
+ return room.getMyMembership() === 'join';
}
});
return rooms;
diff --git a/src/components/structures/RoomView.js b/src/components/structures/RoomView.js
index c742975377..5135936a28 100644
--- a/src/components/structures/RoomView.js
+++ b/src/components/structures/RoomView.js
@@ -759,7 +759,8 @@ module.exports = React.createClass({
_updateDMState() {
const me = this.state.room.getMember(MatrixClientPeg.get().getUserId());
- if (!me || me.membership !== "join") {
+ const room = this.state.room;
+ if (room.getMyMembership() != "join") {
return;
}
const roomId = this.state.room.roomId;
diff --git a/src/components/views/dialogs/ChatCreateOrReuseDialog.js b/src/components/views/dialogs/ChatCreateOrReuseDialog.js
index b7cf0f5a6e..550abe5299 100644
--- a/src/components/views/dialogs/ChatCreateOrReuseDialog.js
+++ b/src/components/views/dialogs/ChatCreateOrReuseDialog.js
@@ -54,8 +54,8 @@ export default class ChatCreateOrReuseDialog extends React.Component {
for (const roomId of dmRooms) {
const room = client.getRoom(roomId);
if (room) {
- const me = room.getMember(client.credentials.userId);
- const highlight = room.getUnreadNotificationCount('highlight') > 0 || me.membership === "invite";
+ const isInvite = room.getMyMembership() === "invite";
+ const highlight = room.getUnreadNotificationCount('highlight') > 0 || isInvite;
tiles.push(
,
);
diff --git a/src/components/views/rooms/MemberInfo.js b/src/components/views/rooms/MemberInfo.js
index 8b465cef9d..794e1e5cfd 100644
--- a/src/components/views/rooms/MemberInfo.js
+++ b/src/components/views/rooms/MemberInfo.js
@@ -774,15 +774,16 @@ module.exports = withMatrixClient(React.createClass({
for (const roomId of dmRooms) {
const room = this.props.matrixClient.getRoom(roomId);
if (room) {
- const me = room.getMember(this.props.matrixClient.credentials.userId);
-
+ const myMembership = room.getMyMembership();
+ if (myMembership !== 'join') continue;
+
+ const isInvite = myMembership === "invite";
// not a DM room if we have are not joined
- if (!me.membership || me.membership !== 'join') continue;
// not a DM room if they are not joined
const them = this.props.member;
if (!them.membership || them.membership !== 'join') continue;
- const highlight = room.getUnreadNotificationCount('highlight') > 0 || me.membership === 'invite';
+ const highlight = room.getUnreadNotificationCount('highlight') > 0 || isInvite;
tiles.push(
,
);
diff --git a/src/components/views/rooms/RoomTile.js b/src/components/views/rooms/RoomTile.js
index ee7f8a76c7..d73f9b5ccf 100644
--- a/src/components/views/rooms/RoomTile.js
+++ b/src/components/views/rooms/RoomTile.js
@@ -243,9 +243,7 @@ module.exports = React.createClass({
},
render: function() {
- const myUserId = MatrixClientPeg.get().credentials.userId;
- const me = this.props.room.currentState.members[myUserId];
-
+ const isInvite = this.props.room.getMyMembership() === "invite";
const notificationCount = this.state.notificationCount;
// var highlightCount = this.props.room.getUnreadNotificationCount("highlight");
@@ -259,7 +257,7 @@ module.exports = React.createClass({
'mx_RoomTile_unread': this.props.unread,
'mx_RoomTile_unreadNotify': notifBadges,
'mx_RoomTile_highlight': mentionBadges,
- 'mx_RoomTile_invited': (me && me.membership === 'invite'),
+ 'mx_RoomTile_invited': isInvite,
'mx_RoomTile_menuDisplayed': this.state.menuDisplayed,
'mx_RoomTile_noBadges': !badges,
'mx_RoomTile_transparent': this.props.transparent,
diff --git a/src/utils/WidgetUtils.js b/src/utils/WidgetUtils.js
index 008bed1005..b5a2ae31fb 100644
--- a/src/utils/WidgetUtils.js
+++ b/src/utils/WidgetUtils.js
@@ -77,8 +77,7 @@ export default class WidgetUtils {
return false;
}
- const member = room.getMember(me);
- if (!member || member.membership !== "join") {
+ if (room.getMyMembership() !== "join") {
console.warn(`User ${me} is not in room ${roomId}`);
return false;
}
From b151956f7b15f9ab7e252155f88b9f11d90518be Mon Sep 17 00:00:00 2001
From: Bruno Windels
Date: Thu, 2 Aug 2018 11:42:19 +0200
Subject: [PATCH 036/343] Use room method to help with DM detection with
fallback to summary heroes/counts.
---
src/components/structures/RoomView.js | 7 ++-----
1 file changed, 2 insertions(+), 5 deletions(-)
diff --git a/src/components/structures/RoomView.js b/src/components/structures/RoomView.js
index 5135936a28..08bed976cc 100644
--- a/src/components/structures/RoomView.js
+++ b/src/components/structures/RoomView.js
@@ -758,16 +758,13 @@ module.exports = React.createClass({
},
_updateDMState() {
- const me = this.state.room.getMember(MatrixClientPeg.get().getUserId());
const room = this.state.room;
if (room.getMyMembership() != "join") {
return;
}
- const roomId = this.state.room.roomId;
- const dmInviter = me.getDMInviter();
-
+ const dmInviter = room.getDMInviter();
if (dmInviter) {
- Rooms.setDMRoom(roomId, dmInviter);
+ Rooms.setDMRoom(room.roomId, dmInviter);
}
},
From 802efc76944192354cd58a9ff0c8191bd4c82db3 Mon Sep 17 00:00:00 2001
From: Bruno Windels
Date: Thu, 2 Aug 2018 11:47:24 +0200
Subject: [PATCH 037/343] given the != join check, isInvite will never be true
Also, put comments in right order
---
src/components/views/rooms/MemberInfo.js | 9 ++++-----
1 file changed, 4 insertions(+), 5 deletions(-)
diff --git a/src/components/views/rooms/MemberInfo.js b/src/components/views/rooms/MemberInfo.js
index 794e1e5cfd..c635f09e2c 100644
--- a/src/components/views/rooms/MemberInfo.js
+++ b/src/components/views/rooms/MemberInfo.js
@@ -775,15 +775,14 @@ module.exports = withMatrixClient(React.createClass({
const room = this.props.matrixClient.getRoom(roomId);
if (room) {
const myMembership = room.getMyMembership();
+ // not a DM room if we have are not joined
if (myMembership !== 'join') continue;
- const isInvite = myMembership === "invite";
- // not a DM room if we have are not joined
- // not a DM room if they are not joined
const them = this.props.member;
+ // not a DM room if they are not joined
if (!them.membership || them.membership !== 'join') continue;
- const highlight = room.getUnreadNotificationCount('highlight') > 0 || isInvite;
+ const highlight = room.getUnreadNotificationCount('highlight') > 0;
tiles.push(
,
);
From 34259591aebe022f6137348091ef6d64a18e26ba Mon Sep 17 00:00:00 2001
From: Brendan Abolivier
Date: Mon, 30 Jul 2018 13:53:16 +0000
Subject: [PATCH 038/343] Translated using Weblate (French)
Currently translated at 100.0% (1218 of 1218 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/fr/
---
src/i18n/strings/fr.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/i18n/strings/fr.json b/src/i18n/strings/fr.json
index 854422297f..0468856d6d 100644
--- a/src/i18n/strings/fr.json
+++ b/src/i18n/strings/fr.json
@@ -1158,7 +1158,7 @@
"Unable to reply": "Impossible de répondre",
"At this time it is not possible to reply with an emote.": "Pour le moment il n'est pas possible de répondre avec un émoji.",
"Unable to load event that was replied to, it either does not exist or you do not have permission to view it.": "Impossible de charger l'événement auquel il a été répondu, soit il n'existe pas, soit vous n'avez pas l'autorisation de le voir.",
- "Collapse Reply Thread": "Dévoiler le fil de réponse",
+ "Collapse Reply Thread": "Masquer le fil de réponse",
"Enable widget screenshots on supported widgets": "Activer les captures d'écran des widgets pris en charge",
"Send analytics data": "Envoyer les données analytiques",
"Muted Users": "Utilisateurs ignorés",
From a6106ddc4fcb1dd6664091237a30190e894ab5b3 Mon Sep 17 00:00:00 2001
From: kR
Date: Wed, 1 Aug 2018 08:54:24 +0000
Subject: [PATCH 039/343] Translated using Weblate (Polish)
Currently translated at 92.6% (1129 of 1218 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/pl/
---
src/i18n/strings/pl.json | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/src/i18n/strings/pl.json b/src/i18n/strings/pl.json
index b4f25ad8b5..41e65d329f 100644
--- a/src/i18n/strings/pl.json
+++ b/src/i18n/strings/pl.json
@@ -151,7 +151,7 @@
"Changes to who can read history will only apply to future messages in this room": "Zmiany w dostępie do historii będą dotyczyć tylko przyszłych wiadomości w tym pokoju",
"Changes your display nickname": "Zmień swój pseudonim",
"Changes colour scheme of current room": "Zmień schemat kolorystyczny bieżącego pokoju",
- "Changing password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Zmiana hasła zresetuje klucze szyfrowania końcówka-do-końcówki na wszystkich urządzeniach, co spowoduje, że nie będzie się dało odczytać zaszyfrowanej historii czatu, chyba że najpierw wyeksportujesz swoje klucze i ponownie je zaimportujesz. W przyszłości będzie to poprawione.",
+ "Changing password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Zmiana hasła zresetuje klucze szyfrowania end-to-end na wszystkich urządzeniach, co spowoduje, że nie będzie się dało odczytać zaszyfrowanej historii czatu, chyba że najpierw wyeksportujesz swoje klucze i ponownie je zaimportujesz. W przyszłości będzie to poprawione.",
"Claimed Ed25519 fingerprint key": "Zażądano odcisk klucza Ed25519",
"Clear Cache and Reload": "Wyczyść pamięć podręczną i przeładuj",
"Clear Cache": "Wyczyść pamięć podręczną",
@@ -215,8 +215,8 @@
"Encryption is enabled in this room": "Szyfrowanie jest włączone w tym pokoju",
"Encryption is not enabled in this room": "Szyfrowanie nie jest włączone w tym pokoju",
"%(senderName)s ended the call.": "%(senderName)s zakończył połączenie.",
- "End-to-end encryption information": "Informacje o szyfrowaniu końcówka-do-końcówki",
- "End-to-end encryption is in beta and may not be reliable": "Szyfrowanie końcówka-do-końcówki jest w fazie beta i może nie być dopracowane",
+ "End-to-end encryption information": "Informacje o szyfrowaniu end-to-end",
+ "End-to-end encryption is in beta and may not be reliable": "Szyfrowanie end-to-end jest w fazie beta i może nie być dopracowane",
"Enter Code": "Wpisz kod",
"Enter passphrase": "Wpisz frazę",
"Error decrypting attachment": "Błąd odszyfrowywania załącznika",
@@ -253,7 +253,7 @@
"Forget room": "Zapomnij pokój",
"Forgot your password?": "Zapomniałeś hasła?",
"For security, this session has been signed out. Please sign in again.": "Ze względów bezpieczeństwa ta sesja została wylogowana. Zaloguj się jeszcze raz.",
- "For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.": "Ze względów bezpieczeństwa, wylogowanie skasuje z tej przeglądarki wszystkie klucze szyfrowania końcówka-do-końcówki. Jeśli chcesz móc odszyfrować swoje historie konwersacji z przyszłych sesji Riot-a, proszę wyeksportuj swoje klucze pokojów do bezpiecznego miejsca.",
+ "For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.": "Ze względów bezpieczeństwa, wylogowanie skasuje z tej przeglądarki wszystkie klucze szyfrowania end-to-end. Jeśli chcesz móc odszyfrować swoje historie konwersacji z przyszłych sesji Riot-a, proszę wyeksportuj swoje klucze pokojów do bezpiecznego miejsca.",
"%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s z %(fromPowerLevel)s na %(toPowerLevel)s",
"Guest access is disabled on this Home Server.": "Dostęp dla gości jest wyłączony na tym serwerze.",
"Deops user with given id": "Usuwa prawa administratora użytkownikowi o danym ID",
@@ -380,7 +380,7 @@
"Hide join/leave messages (invites/kicks/bans unaffected)": "Ukryj wiadomości o dołączeniu/opuszczeniu (nie obejmuje zaproszeń/wyrzuceń/banów)",
"Hide read receipts": "Ukryj potwierdzenia odczytu",
"Historical": "Historyczne",
- "Resetting password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Resetowanie hasła zresetuje klucze szyfrowania końcówka-do-końcówki na wszystkich urządzeniach, co spowoduje, że nie będzie się dało odczytać zaszyfrowanej historii czatu, chyba że najpierw wyeksportujesz swoje klucze i ponownie je zaimportujesz. W przyszłości będzie to poprawione.",
+ "Resetting password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Resetowanie hasła zresetuje klucze szyfrowania end-to-end na wszystkich urządzeniach, co spowoduje, że nie będzie się dało odczytać zaszyfrowanej historii czatu, chyba że najpierw wyeksportujesz swoje klucze i ponownie je zaimportujesz. W przyszłości będzie to poprawione.",
"Riot was not given permission to send notifications - please try again": "Riot nie otrzymał uprawnień do wysyłania powiadomień - proszę spróbuj ponownie",
"riot-web version:": "wersja riot-web:",
"Room %(roomId)s not visible": "Pokój %(roomId)s nie jest widoczny",
From 4b96e01410bebeb883bf393004468bd81d7868c9 Mon Sep 17 00:00:00 2001
From: Bruno Windels
Date: Thu, 2 Aug 2018 09:49:54 +0200
Subject: [PATCH 040/343] enable newly introduced option
---
src/MatrixClientPeg.js | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/MatrixClientPeg.js b/src/MatrixClientPeg.js
index 82d18d307d..e8ef689294 100644
--- a/src/MatrixClientPeg.js
+++ b/src/MatrixClientPeg.js
@@ -108,6 +108,7 @@ class MatrixClientPeg {
opts.pendingEventOrdering = "detached";
if (SettingsStore.isFeatureEnabled('feature_lazyloading')) {
+ opts.lazyLoadMembers = true;
opts.filter = await this.matrixClient.createFilter(FILTER_CONTENT);
}
From e1843601becdeaa89eef2a264c1b027c648bd65a Mon Sep 17 00:00:00 2001
From: Bruno Windels
Date: Thu, 2 Aug 2018 17:09:18 +0200
Subject: [PATCH 041/343] support directional content in pill member fake
---
src/components/views/elements/Pill.js | 3 +++
1 file changed, 3 insertions(+)
diff --git a/src/components/views/elements/Pill.js b/src/components/views/elements/Pill.js
index f3b6d4e32a..38847a3584 100644
--- a/src/components/views/elements/Pill.js
+++ b/src/components/views/elements/Pill.js
@@ -187,6 +187,9 @@ const Pill = React.createClass({
getContent: () => {
return {avatar_url: resp.avatar_url};
},
+ getDirectionalContent: function() {
+ return this.getContent();
+ }
};
this.setState({member});
}).catch((err) => {
From dbe28558c283d1793f392b8b2f3ac463d7290a11 Mon Sep 17 00:00:00 2001
From: Osoitz
Date: Thu, 2 Aug 2018 15:16:48 +0000
Subject: [PATCH 042/343] Translated using Weblate (Basque)
Currently translated at 100.0% (1218 of 1218 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/eu/
---
src/i18n/strings/eu.json | 15 ++++++++++++++-
1 file changed, 14 insertions(+), 1 deletion(-)
diff --git a/src/i18n/strings/eu.json b/src/i18n/strings/eu.json
index 9277b0b0be..564bf1047b 100644
--- a/src/i18n/strings/eu.json
+++ b/src/i18n/strings/eu.json
@@ -1209,5 +1209,18 @@
"You can't send any messages until you review and agree to our terms and conditions.": "Ezin duzu mezurik bidali gure termino eta baldintzak irakurri eta onartu arte.",
"Show empty room list headings": "Erakutsi gela hutsen zerrenda-goiburuak",
"Demote yourself?": "Jaitsi zure burua mailaz?",
- "Demote": "Jaitzi mailaz"
+ "Demote": "Jaitzi mailaz",
+ "A conference call could not be started because the intgrations server is not available": "Ezin izan da konferentzia dei bat hasi integrazio zerbitzaria ez dagoelako eskuragarri",
+ "A call is currently being placed!": "Dei bat ezartzen ari da orain!",
+ "Permission Required": "Baimena beharrezkoa",
+ "You do not have permission to start a conference call in this room": "Ez duzu baimenik konferentzia dei bat hasteko gela honetan",
+ "This event could not be displayed": "Ezin izan da gertakari hau bistaratu",
+ "deleted": "ezabatuta",
+ "underlined": "azpimarratuta",
+ "inline-code": "lineako kodea",
+ "block-quote": "aipamen blokea",
+ "bulleted-list": "buletdun zerrenda",
+ "numbered-list": "zenbakidun zerrenda",
+ "Failed to remove widget": "Huts egin du trepeta kentzean",
+ "An error ocurred whilst trying to remove the widget from the room": "Trepeta gelatik kentzen saiatzean errore bat gertatu da"
}
From 42fc83d2a84ddd3ce7919b37627cda1b9ea6117f Mon Sep 17 00:00:00 2001
From: Bruno Windels
Date: Thu, 2 Aug 2018 19:38:41 +0200
Subject: [PATCH 043/343] Move LL filter creation inside MatrixClient
As we need an option to turn lazy loading on (we can't just accept a filter,
as /messages has an incompatible filter), better only pass the option
and create the filter inside startClient
---
src/MatrixClientPeg.js | 11 +----------
1 file changed, 1 insertion(+), 10 deletions(-)
diff --git a/src/MatrixClientPeg.js b/src/MatrixClientPeg.js
index e8ef689294..f5872812de 100644
--- a/src/MatrixClientPeg.js
+++ b/src/MatrixClientPeg.js
@@ -34,14 +34,6 @@ interface MatrixClientCreds {
guest: boolean,
}
-const FILTER_CONTENT = {
- room: {
- state: {
- lazy_load_members: true,
- },
- },
-};
-
/**
* Wrapper object for handling the js-sdk Matrix Client object in the react-sdk
* Handles the creation/initialisation of client objects.
@@ -109,7 +101,6 @@ class MatrixClientPeg {
if (SettingsStore.isFeatureEnabled('feature_lazyloading')) {
opts.lazyLoadMembers = true;
- opts.filter = await this.matrixClient.createFilter(FILTER_CONTENT);
}
try {
@@ -128,7 +119,7 @@ class MatrixClientPeg {
MatrixActionCreators.start(this.matrixClient);
console.log(`MatrixClientPeg: really starting MatrixClient`);
- this.get().startClient(opts);
+ await this.get().startClient(opts);
console.log(`MatrixClientPeg: MatrixClient started`);
}
From f1643f77ac44ba24e9b6654c4d45fb2a14f984ce Mon Sep 17 00:00:00 2001
From: Bruno Windels
Date: Thu, 2 Aug 2018 19:57:20 +0200
Subject: [PATCH 044/343] fix lint
---
src/components/views/elements/Pill.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/components/views/elements/Pill.js b/src/components/views/elements/Pill.js
index 38847a3584..e06ed5a22f 100644
--- a/src/components/views/elements/Pill.js
+++ b/src/components/views/elements/Pill.js
@@ -189,7 +189,7 @@ const Pill = React.createClass({
},
getDirectionalContent: function() {
return this.getContent();
- }
+ },
};
this.setState({member});
}).catch((err) => {
From 44f6520755a68d5c69af075ebd27bb596994586c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?K=C3=A9vin=20C?=
Date: Fri, 3 Aug 2018 07:43:38 +0000
Subject: [PATCH 045/343] Translated using Weblate (French)
Currently translated at 100.0% (1214 of 1214 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/fr/
---
src/i18n/strings/fr.json | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/i18n/strings/fr.json b/src/i18n/strings/fr.json
index 0468856d6d..773d5fc53e 100644
--- a/src/i18n/strings/fr.json
+++ b/src/i18n/strings/fr.json
@@ -1222,5 +1222,7 @@
"You do not have permission to start a conference call in this room": "Vous n'avez pas la permission de lancer un appel en téléconférence dans ce salon",
"A call is currently being placed!": "Un appel est en cours !",
"Failed to remove widget": "Échec de la suppression du widget",
- "An error ocurred whilst trying to remove the widget from the room": "Une erreur est survenue lors de la suppression du widget du salon"
+ "An error ocurred whilst trying to remove the widget from the room": "Une erreur est survenue lors de la suppression du widget du salon",
+ "This homeserver has hit its Monthly Active User limit": "Ce serveur d'accueil a atteint sa limite mensuelle d'utilisateurs actifs",
+ "Please contact your service administrator to continue using this service.": "Veuillez contacter l'administrateur de votre service pour continuer à l'utiliser."
}
From 54e2702d789b34a84df3e62b2fdbc6d5e0855afa Mon Sep 17 00:00:00 2001
From: Andrey
Date: Fri, 3 Aug 2018 08:02:50 +0000
Subject: [PATCH 046/343] Translated using Weblate (Russian)
Currently translated at 99.2% (1205 of 1214 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/ru/
---
src/i18n/strings/ru.json | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/src/i18n/strings/ru.json b/src/i18n/strings/ru.json
index ab18358f8b..ca898b837f 100644
--- a/src/i18n/strings/ru.json
+++ b/src/i18n/strings/ru.json
@@ -1212,5 +1212,8 @@
"underlined": "подчеркнут",
"A conference call could not be started because the intgrations server is not available": "Запуск конференции невозможен из-за недоступности сервера интеграции",
"Permission Required": "Требуется разрешение",
- "You do not have permission to start a conference call in this room": "У вас нет разрешения на запуск конференции в этой комнате"
+ "You do not have permission to start a conference call in this room": "У вас нет разрешения на запуск конференции в этой комнате",
+ "A call is currently being placed!": "Есть активный вызов!",
+ "Failed to remove widget": "Не удалось удалить виджет",
+ "An error ocurred whilst trying to remove the widget from the room": "Произошла ошибка при удалении виджета из комнаты"
}
From 511e11a517acb951e57d9e4c70d7ad6dd8ae14ba Mon Sep 17 00:00:00 2001
From: Krombel
Date: Fri, 3 Aug 2018 09:01:17 +0000
Subject: [PATCH 047/343] Translated using Weblate (German)
Currently translated at 100.0% (1214 of 1214 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/de/
---
src/i18n/strings/de_DE.json | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json
index c433147ef1..7742544c8e 100644
--- a/src/i18n/strings/de_DE.json
+++ b/src/i18n/strings/de_DE.json
@@ -1222,5 +1222,7 @@
"Failed to remove widget": "Widget konnte nicht entfernt werden",
"An error ocurred whilst trying to remove the widget from the room": "Ein Fehler trat auf, während versucht wurde das Widget aus diesem Raum zu entfernen",
"inline-code": "Quellcode im Satz",
- "block-quote": "Quellcode im Block"
+ "block-quote": "Quellcode im Block",
+ "This homeserver has hit its Monthly Active User limit": "Dieser Heimserver hat sein \"Monatlich aktive Nutzer\"-Limit erreicht",
+ "Please contact your service administrator to continue using this service.": "Bitte kontaktiere deinen Administrator um diesen Dienst weiter zu nutzen."
}
From e7fa3b1666c8fdf815bb0218ee47f633b9375c58 Mon Sep 17 00:00:00 2001
From: Slavi Pantaleev
Date: Fri, 3 Aug 2018 09:33:54 +0000
Subject: [PATCH 048/343] Translated using Weblate (Bulgarian)
Currently translated at 100.0% (1214 of 1214 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/bg/
---
src/i18n/strings/bg.json | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/i18n/strings/bg.json b/src/i18n/strings/bg.json
index 6fadf8265a..35b3ecbb85 100644
--- a/src/i18n/strings/bg.json
+++ b/src/i18n/strings/bg.json
@@ -1222,5 +1222,7 @@
"bulleted-list": "списък (с тирета)",
"numbered-list": "номериран списък",
"Failed to remove widget": "Неуспешно премахване на приспособление",
- "An error ocurred whilst trying to remove the widget from the room": "Възникна грешка при премахването на приспособлението от стаята"
+ "An error ocurred whilst trying to remove the widget from the room": "Възникна грешка при премахването на приспособлението от стаята",
+ "This homeserver has hit its Monthly Active User limit": "Този сървър достигна своя лимит за активни потребители на месец",
+ "Please contact your service administrator to continue using this service.": "Моля, свържете се с администратора на услугата за да продължите да я използвате."
}
From de85254ab01b1c81f290e6435c17595b4f5314c8 Mon Sep 17 00:00:00 2001
From: Krombel
Date: Fri, 3 Aug 2018 09:13:37 +0000
Subject: [PATCH 049/343] Translated using Weblate (German)
Currently translated at 100.0% (1214 of 1214 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/de/
---
src/i18n/strings/de_DE.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json
index 7742544c8e..7f97dccfee 100644
--- a/src/i18n/strings/de_DE.json
+++ b/src/i18n/strings/de_DE.json
@@ -1223,6 +1223,6 @@
"An error ocurred whilst trying to remove the widget from the room": "Ein Fehler trat auf, während versucht wurde das Widget aus diesem Raum zu entfernen",
"inline-code": "Quellcode im Satz",
"block-quote": "Quellcode im Block",
- "This homeserver has hit its Monthly Active User limit": "Dieser Heimserver hat sein \"Monatlich aktive Nutzer\"-Limit erreicht",
+ "This homeserver has hit its Monthly Active User limit": "Dieser Heimserver hat sein Limit für monatlich aktive Nutzer erreicht",
"Please contact your service administrator to continue using this service.": "Bitte kontaktiere deinen Administrator um diesen Dienst weiter zu nutzen."
}
From 9ce74be0161f14ecfc24128e5dc9984190c91109 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?K=C3=A9vin=20C?=
Date: Fri, 3 Aug 2018 07:44:22 +0000
Subject: [PATCH 050/343] Translated using Weblate (French)
Currently translated at 100.0% (1215 of 1215 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/fr/
---
src/i18n/strings/fr.json | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/i18n/strings/fr.json b/src/i18n/strings/fr.json
index 773d5fc53e..ae3b2dfeae 100644
--- a/src/i18n/strings/fr.json
+++ b/src/i18n/strings/fr.json
@@ -1224,5 +1224,6 @@
"Failed to remove widget": "Échec de la suppression du widget",
"An error ocurred whilst trying to remove the widget from the room": "Une erreur est survenue lors de la suppression du widget du salon",
"This homeserver has hit its Monthly Active User limit": "Ce serveur d'accueil a atteint sa limite mensuelle d'utilisateurs actifs",
- "Please contact your service administrator to continue using this service.": "Veuillez contacter l'administrateur de votre service pour continuer à l'utiliser."
+ "Please contact your service administrator to continue using this service.": "Veuillez contacter l'administrateur de votre service pour continuer à l'utiliser.",
+ "Your message wasn’t sent because this homeserver has hit its Monthly Active User Limit. Please contact your service administrator to continue using the service.": "Votre message n'a pas été envoyé car ce serveur d'accueil a atteint sa limite mensuelle d'utilisateurs actifs. Veuillez contacter l'administrateur de votre service pour continuer à l'utiliser."
}
From fcf51010693709e255bd725b769ff3b401a52b0f Mon Sep 17 00:00:00 2001
From: Jeff Huang
Date: Fri, 3 Aug 2018 13:54:59 +0000
Subject: [PATCH 051/343] Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (1215 of 1215 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/zh_Hant/
---
src/i18n/strings/zh_Hant.json | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/src/i18n/strings/zh_Hant.json b/src/i18n/strings/zh_Hant.json
index 5147b9a4a4..f6b9aa6693 100644
--- a/src/i18n/strings/zh_Hant.json
+++ b/src/i18n/strings/zh_Hant.json
@@ -1222,5 +1222,8 @@
"numbered-list": "編號清單",
"A call is currently being placed!": "目前正在撥打電話!",
"Failed to remove widget": "移除小工具失敗",
- "An error ocurred whilst trying to remove the widget from the room": "嘗試從聊天室移除小工具時發生錯誤"
+ "An error ocurred whilst trying to remove the widget from the room": "嘗試從聊天室移除小工具時發生錯誤",
+ "Your message wasn’t sent because this homeserver has hit its Monthly Active User Limit. Please contact your service administrator to continue using the service.": "您的訊息因為這個家伺服器到達了它的每月活躍使用者限制而沒有傳送出去。請聯絡您的服務管理員以繼續使用服務。",
+ "This homeserver has hit its Monthly Active User limit": "此家伺服器達到了其每月活躍使用者限制",
+ "Please contact your service administrator to continue using this service.": "請聯絡您的服務管理員以繼續使用此服務。"
}
From 1b47a2040e2a4c8d4b9d71ec6eb6c317ff091f2f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?K=C3=A9vin=20C?=
Date: Fri, 3 Aug 2018 13:16:11 +0000
Subject: [PATCH 052/343] Translated using Weblate (French)
Currently translated at 100.0% (1216 of 1216 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/fr/
---
src/i18n/strings/fr.json | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/i18n/strings/fr.json b/src/i18n/strings/fr.json
index ae3b2dfeae..f628ca0ed8 100644
--- a/src/i18n/strings/fr.json
+++ b/src/i18n/strings/fr.json
@@ -1225,5 +1225,6 @@
"An error ocurred whilst trying to remove the widget from the room": "Une erreur est survenue lors de la suppression du widget du salon",
"This homeserver has hit its Monthly Active User limit": "Ce serveur d'accueil a atteint sa limite mensuelle d'utilisateurs actifs",
"Please contact your service administrator to continue using this service.": "Veuillez contacter l'administrateur de votre service pour continuer à l'utiliser.",
- "Your message wasn’t sent because this homeserver has hit its Monthly Active User Limit. Please contact your service administrator to continue using the service.": "Votre message n'a pas été envoyé car ce serveur d'accueil a atteint sa limite mensuelle d'utilisateurs actifs. Veuillez contacter l'administrateur de votre service pour continuer à l'utiliser."
+ "Your message wasn’t sent because this homeserver has hit its Monthly Active User Limit. Please contact your service administrator to continue using the service.": "Votre message n'a pas été envoyé car ce serveur d'accueil a atteint sa limite mensuelle d'utilisateurs actifs. Veuillez contacter l'administrateur de votre service pour continuer à l'utiliser.",
+ "This homeserver has hit its Monthly Active User limit. Please contact your service administrator to continue using the service.": "Ce serveur d'accueil a atteint sa limite mensuelle d'utilisateurs actifs. Veuillez contacter l'administrateur de votre service pour continuer à l'utiliser."
}
From ccdb5fa7704362fc7911ac664bc6f0523d8dadac Mon Sep 17 00:00:00 2001
From: David Baker
Date: Fri, 3 Aug 2018 18:02:09 +0100
Subject: [PATCH 053/343] Don't show 'connection lost' bar on MAU error
We don't need both warning bars
Requires https://github.com/matrix-org/matrix-js-sdk/pull/680
---
src/components/structures/LoggedInView.js | 6 +++--
src/components/structures/RoomStatusBar.js | 31 +++++++++++++++-------
2 files changed, 26 insertions(+), 11 deletions(-)
diff --git a/src/components/structures/LoggedInView.js b/src/components/structures/LoggedInView.js
index 3273989630..65ef69d547 100644
--- a/src/components/structures/LoggedInView.js
+++ b/src/components/structures/LoggedInView.js
@@ -1,7 +1,7 @@
/*
Copyright 2015, 2016 OpenMarket Ltd
Copyright 2017 Vector Creations Ltd
-Copyright 2017 New Vector Ltd
+Copyright 2017, 2018 New Vector Ltd
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -144,7 +144,9 @@ const LoggedInView = React.createClass({
},
onSync: function(syncState, oldSyncState, data) {
- if (syncState === oldSyncState) return;
+ const oldErrCode = this.state.syncErrorData && this.state.syncErrorData.error && this.state.syncErrorData.error.errcode;
+ const newErrCode = data && data.error && data.error.errcode;
+ if (syncState === oldSyncState && oldErrCode === newErrCode) return;
if (syncState === 'ERROR') {
this.setState({
diff --git a/src/components/structures/RoomStatusBar.js b/src/components/structures/RoomStatusBar.js
index 941cab4dda..ef82ed4bad 100644
--- a/src/components/structures/RoomStatusBar.js
+++ b/src/components/structures/RoomStatusBar.js
@@ -1,6 +1,6 @@
/*
Copyright 2015, 2016 OpenMarket Ltd
-Copyright 2017 New Vector Ltd
+Copyright 2017, 2018 New Vector Ltd
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -107,6 +107,7 @@ module.exports = React.createClass({
getInitialState: function() {
return {
syncState: MatrixClientPeg.get().getSyncState(),
+ syncStateData: MatrixClientPeg.get().getSyncStateData(),
usersTyping: WhoIsTyping.usersTypingApartFromMe(this.props.room),
unsentMessages: getUnsentMessages(this.props.room),
};
@@ -134,12 +135,13 @@ module.exports = React.createClass({
}
},
- onSyncStateChange: function(state, prevState) {
+ onSyncStateChange: function(state, prevState, data) {
if (state === "SYNCING" && prevState === "SYNCING") {
return;
}
this.setState({
syncState: state,
+ syncStateData: data,
});
},
@@ -191,7 +193,7 @@ module.exports = React.createClass({
// changed - so we use '0' to indicate normal size, and other values to
// indicate other sizes.
_getSize: function() {
- if (this.state.syncState === "ERROR" ||
+ if (this._shouldShowConnectionError() ||
(this.state.usersTyping.length > 0) ||
this.props.numUnreadMessages ||
!this.props.atEndOfLiveTimeline ||
@@ -238,7 +240,7 @@ module.exports = React.createClass({
);
}
- if (this.state.syncState === "ERROR") {
+ if (this._shouldShowConnectionError()) {
return null;
}
@@ -285,6 +287,21 @@ module.exports = React.createClass({
return avatars;
},
+ _shouldShowConnectionError: function() {
+ // no conn bar trumps unread count since you can't get unread messages
+ // without a connection! (technically may already have some but meh)
+ // It also trumps the "some not sent" msg since you can't resend without
+ // a connection!
+ // There's one situation in which we don't show this 'no connection' bar, and that's
+ // if it's a monthly-active-user limit error: those are shown in the top bar.
+ const errorIsMauError = Boolean(
+ this.state.syncStateData &&
+ this.state.syncStateData.error &&
+ this.state.syncStateData.error.errcode === 'M_MAU_LIMIT_EXCEEDED'
+ );
+ return this.state.syncState === "ERROR" && !errorIsMauError;
+ },
+
_getUnsentMessageContent: function() {
const unsentMessages = this.state.unsentMessages;
if (!unsentMessages.length) return null;
@@ -372,11 +389,7 @@ module.exports = React.createClass({
_getContent: function() {
const EmojiText = sdk.getComponent('elements.EmojiText');
- // no conn bar trumps unread count since you can't get unread messages
- // without a connection! (technically may already have some but meh)
- // It also trumps the "some not sent" msg since you can't resend without
- // a connection!
- if (this.state.syncState === "ERROR") {
+ if (this._shouldShowConnectionError()) {
return (
From a3d3189a1ed455db38615c2e2e6ae7c0c7abda59 Mon Sep 17 00:00:00 2001
From: Jeff Huang
Date: Fri, 3 Aug 2018 13:55:43 +0000
Subject: [PATCH 054/343] Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (1216 of 1216 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/zh_Hant/
---
src/i18n/strings/zh_Hant.json | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/i18n/strings/zh_Hant.json b/src/i18n/strings/zh_Hant.json
index f6b9aa6693..903cf32a2d 100644
--- a/src/i18n/strings/zh_Hant.json
+++ b/src/i18n/strings/zh_Hant.json
@@ -1225,5 +1225,6 @@
"An error ocurred whilst trying to remove the widget from the room": "嘗試從聊天室移除小工具時發生錯誤",
"Your message wasn’t sent because this homeserver has hit its Monthly Active User Limit. Please contact your service administrator to continue using the service.": "您的訊息因為這個家伺服器到達了它的每月活躍使用者限制而沒有傳送出去。請聯絡您的服務管理員以繼續使用服務。",
"This homeserver has hit its Monthly Active User limit": "此家伺服器達到了其每月活躍使用者限制",
- "Please contact your service administrator to continue using this service.": "請聯絡您的服務管理員以繼續使用此服務。"
+ "Please contact your service administrator to continue using this service.": "請聯絡您的服務管理員以繼續使用此服務。",
+ "This homeserver has hit its Monthly Active User limit. Please contact your service administrator to continue using the service.": "您的訊息因為這個家伺服器到達了它的每月活躍使用者限制而沒有傳送出去。請聯絡您的服務管理員以繼續使用服務。"
}
From d7cb6431271deabc4a200d2482e597e7f68c743e Mon Sep 17 00:00:00 2001
From: Slavi Pantaleev
Date: Mon, 6 Aug 2018 07:45:40 +0000
Subject: [PATCH 055/343] Translated using Weblate (Bulgarian)
Currently translated at 100.0% (1216 of 1216 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/bg/
---
src/i18n/strings/bg.json | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/i18n/strings/bg.json b/src/i18n/strings/bg.json
index 35b3ecbb85..0dfa1d68a1 100644
--- a/src/i18n/strings/bg.json
+++ b/src/i18n/strings/bg.json
@@ -1224,5 +1224,7 @@
"Failed to remove widget": "Неуспешно премахване на приспособление",
"An error ocurred whilst trying to remove the widget from the room": "Възникна грешка при премахването на приспособлението от стаята",
"This homeserver has hit its Monthly Active User limit": "Този сървър достигна своя лимит за активни потребители на месец",
- "Please contact your service administrator to continue using this service.": "Моля, свържете се с администратора на услугата за да продължите да я използвате."
+ "Please contact your service administrator to continue using this service.": "Моля, свържете се с администратора на услугата за да продължите да я използвате.",
+ "This homeserver has hit its Monthly Active User limit. Please contact your service administrator to continue using the service.": "Този сървър достигна лимита си за активни потребители на месец. Моля, свържете се с администратора на услугата, за да продължите да я използвате.",
+ "Your message wasn’t sent because this homeserver has hit its Monthly Active User Limit. Please contact your service administrator to continue using the service.": "Съобщението Ви не бе изпратено, защото този сървър достигна лимита си за активни потребители на месец. Моля, свържете се с администратора на услугата, за да продължите да я използвате."
}
From 535d7632b2fb2c348c2d9ffaa20f82e795f24cfe Mon Sep 17 00:00:00 2001
From: Osoitz
Date: Mon, 6 Aug 2018 08:16:12 +0000
Subject: [PATCH 056/343] Translated using Weblate (Basque)
Currently translated at 100.0% (1216 of 1216 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/eu/
---
src/i18n/strings/eu.json | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/src/i18n/strings/eu.json b/src/i18n/strings/eu.json
index 564bf1047b..b5b086e622 100644
--- a/src/i18n/strings/eu.json
+++ b/src/i18n/strings/eu.json
@@ -1222,5 +1222,9 @@
"bulleted-list": "buletdun zerrenda",
"numbered-list": "zenbakidun zerrenda",
"Failed to remove widget": "Huts egin du trepeta kentzean",
- "An error ocurred whilst trying to remove the widget from the room": "Trepeta gelatik kentzen saiatzean errore bat gertatu da"
+ "An error ocurred whilst trying to remove the widget from the room": "Trepeta gelatik kentzen saiatzean errore bat gertatu da",
+ "This homeserver has hit its Monthly Active User limit. Please contact your service administrator to continue using the service.": "Hasiera zerbitzari honek bere hilabeteko erabiltzaile aktiboen muga jo du. Jarri kontaktuan zerbitzuaren administratzailearekin zerbitzua erabiltzen jarraitzeko.",
+ "Your message wasn’t sent because this homeserver has hit its Monthly Active User Limit. Please contact your service administrator to continue using the service.": "Zure mezua ez da bidali hasiera zerbitzari honek bere hilabeteko erabiltzaile aktiboen muga jo duelako. Jarri kontaktuan zerbitzuaren administratzailearekin zerbitzua erabiltzen jarraitzeko.",
+ "This homeserver has hit its Monthly Active User limit": "Hasiera zerbitzari honek bere hilabeteko erabiltzaile aktiboen muga jo du",
+ "Please contact your service administrator to continue using this service.": "Jarri kontaktuan zerbitzuaren administratzailearekin zerbitzua erabiltzen jarraitzeko."
}
From b844b36b4f54791ea4fdd8ac39cffef8393d79ec Mon Sep 17 00:00:00 2001
From: maraf24
Date: Fri, 3 Aug 2018 21:14:28 +0000
Subject: [PATCH 057/343] Translated using Weblate (Polish)
Currently translated at 93.4% (1136 of 1216 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/pl/
---
src/i18n/strings/pl.json | 15 ++++++++++++++-
1 file changed, 14 insertions(+), 1 deletion(-)
diff --git a/src/i18n/strings/pl.json b/src/i18n/strings/pl.json
index 41e65d329f..3bbc9b1d73 100644
--- a/src/i18n/strings/pl.json
+++ b/src/i18n/strings/pl.json
@@ -1133,5 +1133,18 @@
"The user name field must not be blank.": "Pole nazwy użytkownika nie może być puste.",
"The phone number field must not be blank.": "Pole numeru telefonu nie może być puste.",
"The password field must not be blank.": "Pole hasła nie może być puste.",
- "Call Failed": "Nieudane połączenie"
+ "Call Failed": "Nieudane połączenie",
+ "You have no historical rooms": "Nie masz żadnych historycznych pokoi",
+ "Flair": "Wyróżnik społeczności",
+ "Showing flair for these communities:": "Wyświetlanie wyróżników dla tych społeczności:",
+ "This room is not showing flair for any communities": "Ten pokój nie wyświetla wyróżników dla żadnych społeczności",
+ "Flair will appear if enabled in room settings": "Wyróżnik pojawi się, jeśli został włączony w ustawieniach pokoju",
+ "Flair will not appear": "Wyróżnik nie wyświetli się",
+ "%(severalUsers)sjoined %(count)s times|one": "%(severalUsers)sdołączył",
+ "%(count)s Resend all or cancel all now. You can also select individual messages to resend or cancel.|one": "Wyślij ponownie wiadomość lub anuluj wiadomość.",
+ "was invited %(count)s times|other": "został zaproszony %(count)s razy",
+ "was invited %(count)s times|one": "został zaproszony",
+ "was banned %(count)s times|one": "został zablokowany",
+ "was kicked %(count)s times|one": "został wyrzucony",
+ "Whether or not you're using the Richtext mode of the Rich Text Editor": ""
}
From f01c2d97e97180bb354f4d847c4aec4bd1e568dd Mon Sep 17 00:00:00 2001
From: Kenneth Larsson
Date: Mon, 6 Aug 2018 14:13:22 +0000
Subject: [PATCH 058/343] Translated using Weblate (Swedish)
Currently translated at 99.3% (1208 of 1216 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/sv/
---
src/i18n/strings/sv.json | 30 ++++++++++++++++++++++++++----
1 file changed, 26 insertions(+), 4 deletions(-)
diff --git a/src/i18n/strings/sv.json b/src/i18n/strings/sv.json
index 597c68c474..937cd5c684 100644
--- a/src/i18n/strings/sv.json
+++ b/src/i18n/strings/sv.json
@@ -58,7 +58,7 @@
"Clear Cache and Reload": "Töm cache och ladda om",
"Clear Cache": "Töm cache",
"Click here to fix": "Klicka här för att fixa",
- "Click to mute audio": "Klicka för att dämpa ljud",
+ "Click to mute audio": "Klicka för att tysta ljud",
"Click to mute video": "Klicka för att stänga av video",
"click to reveal": "klicka för att avslöja",
"Click to unmute video": "Klicka för att sätta på video",
@@ -128,7 +128,7 @@
"Failed to kick": "Det gick inte att kicka",
"Failed to leave room": "Det gick inte att lämna rummet",
"Failed to load timeline position": "Det gick inte att hämta positionen på tidslinjen",
- "Failed to mute user": "Det gick inte att dämpa användaren",
+ "Failed to mute user": "Det gick inte att tysta användaren",
"Failed to reject invite": "Det gick inte att avböja inbjudan",
"Failed to reject invitation": "Det gick inte att avböja inbjudan",
"Failed to save settings": "Det gick inte att spara inställningarna",
@@ -239,7 +239,7 @@
"Mobile phone number": "Telefonnummer",
"Mobile phone number (optional)": "Telefonnummer (valfri)",
"Moderator": "Moderator",
- "Mute": "Dämpa",
+ "Mute": "Tysta",
"%(serverName)s Matrix ID": "%(serverName)s Matrix-ID",
"Name": "Namn",
"Never send encrypted messages to unverified devices from this device": "Skicka aldrig krypterade meddelanden till overifierade enheter från den här enheten",
@@ -1196,5 +1196,27 @@
"Share Message": "Dela meddelande",
"No Audio Outputs detected": "Inga ljudutgångar hittades",
"Audio Output": "Ljudutgång",
- "Try the app first": "Testa appen först"
+ "Try the app first": "Testa appen först",
+ "A conference call could not be started because the intgrations server is not available": "Konferenssamtal kunde inte startas för integrationsservern är otillgänglig",
+ "Call in Progress": "Samtal pågår",
+ "A call is currently being placed!": "Ett samtal håller på att upprättas!",
+ "A call is already in progress!": "Ett samtal pågår redan!",
+ "Permission Required": "Behörighet krävs",
+ "You do not have permission to start a conference call in this room": "Du har inte behörighet att starta ett konferenssamtal i detta rum",
+ "This event could not be displayed": "Den här händelsen kunde inte visas",
+ "deleted": "borttagen",
+ "underlined": "understruken",
+ "inline-code": "kod",
+ "block-quote": "citat",
+ "bulleted-list": "punktlista",
+ "numbered-list": "nummerlista",
+ "You have no historical rooms": "Du har inga historiska rum",
+ "In encrypted rooms, like this one, URL previews are disabled by default to ensure that your homeserver (where the previews are generated) cannot gather information about links you see in this room.": "I krypterade rum, som detta, är URL-förhandsvisning inaktiverad som standard för att säkerställa att din hemserver (där förhandsvisningar genereras) inte kan samla information om länkar du ser i rummet.",
+ "The email field must not be blank.": "Email-fältet får inte vara tomt.",
+ "The user name field must not be blank.": "Användarnamns-fältet får inte vara tomt.",
+ "The phone number field must not be blank.": "Telefonnummer-fältet får inte vara tomt.",
+ "The password field must not be blank.": "Lösenords-fältet får inte vara tomt.",
+ "This homeserver has hit its Monthly Active User limit. Please contact your service administrator to continue using the service.": "Hemservern har nått sin månatliga gräns för användaraktivitet. Kontakta din serviceadministratör för att fortsätta använda servicen.",
+ "Failed to remove widget": "Det gick inte att ta bort widget",
+ "An error ocurred whilst trying to remove the widget from the room": "Ett fel uppstod vid borttagning av widget från rummet"
}
From b2302af7080b8123e2076b3d439312a5acc51e36 Mon Sep 17 00:00:00 2001
From: David Baker
Date: Mon, 6 Aug 2018 16:58:54 +0100
Subject: [PATCH 059/343] Update room tags behaviour to match spec more
Fix Riot's behaviour with room tags after my cleanup in
https://github.com/matrix-org/matrix-doc/pull/1457 . Although, reading
it again, it's not clear how you're supposed to tell the difference
between a reverse-dns tag name and a legacy freeform text tag
(contains a '.'?) - I've left it detecting these as freeform text
for now.
---
src/components/views/rooms/RoomList.js | 7 ++++++-
src/stores/RoomListStore.js | 5 +++++
2 files changed, 11 insertions(+), 1 deletion(-)
diff --git a/src/components/views/rooms/RoomList.js b/src/components/views/rooms/RoomList.js
index 8533e3f61a..27f88fb33b 100644
--- a/src/components/views/rooms/RoomList.js
+++ b/src/components/views/rooms/RoomList.js
@@ -37,6 +37,11 @@ import GroupStore from '../../../stores/GroupStore';
const HIDE_CONFERENCE_CHANS = true;
const STANDARD_TAGS_REGEX = /^(m\.(favourite|lowpriority)|im\.vector\.fake\.(invite|recent|direct|archived))$/;
+function labelForTagName(tagName) {
+ if (tagName.startsWith('u.')) return tagName.slice(2);
+ return tagName;
+}
+
function phraseForSection(section) {
switch (section) {
case 'm.favourite':
@@ -690,7 +695,7 @@ module.exports = React.createClass({
if (!tagName.match(STANDARD_TAGS_REGEX)) {
return {
+ return !t.startsWith('m.') || lists[t] !== undefined;
+ });
+
if (tagNames.length) {
for (let i = 0; i < tagNames.length; i++) {
const tagName = tagNames[i];
From b5ce1ac5e137bdf54be28bdbfce54f516f64dc91 Mon Sep 17 00:00:00 2001
From: David Baker
Date: Mon, 6 Aug 2018 18:00:40 +0100
Subject: [PATCH 060/343] Recognise server notices room(s)
and put them in their own section at the bottom
---
src/components/views/rooms/RoomList.js | 14 +++++++++++++-
src/i18n/strings/en_EN.json | 1 +
src/stores/RoomListStore.js | 2 ++
3 files changed, 16 insertions(+), 1 deletion(-)
diff --git a/src/components/views/rooms/RoomList.js b/src/components/views/rooms/RoomList.js
index 8533e3f61a..ecc22b9a9f 100644
--- a/src/components/views/rooms/RoomList.js
+++ b/src/components/views/rooms/RoomList.js
@@ -35,7 +35,7 @@ import RoomListStore from '../../../stores/RoomListStore';
import GroupStore from '../../../stores/GroupStore';
const HIDE_CONFERENCE_CHANS = true;
-const STANDARD_TAGS_REGEX = /^(m\.(favourite|lowpriority)|im\.vector\.fake\.(invite|recent|direct|archived))$/;
+const STANDARD_TAGS_REGEX = /^(m\.(favourite|lowpriority|server_notice)|im\.vector\.fake\.(invite|recent|direct|archived))$/;
function phraseForSection(section) {
switch (section) {
@@ -737,6 +737,18 @@ module.exports = React.createClass({
searchFilter={self.props.searchFilter}
onShowMoreRooms={self.onShowMoreRooms}
showEmpty={showEmpty} />
+
+
);
diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json
index 1605557a06..d44187b834 100644
--- a/src/i18n/strings/en_EN.json
+++ b/src/i18n/strings/en_EN.json
@@ -464,6 +464,7 @@
"People": "People",
"Rooms": "Rooms",
"Low priority": "Low priority",
+ "System Alerts": "System Alerts",
"You have no historical rooms": "You have no historical rooms",
"Historical": "Historical",
"Unable to ascertain that the address this invite was sent to matches one associated with your account.": "Unable to ascertain that the address this invite was sent to matches one associated with your account.",
diff --git a/src/stores/RoomListStore.js b/src/stores/RoomListStore.js
index b6d0949dd3..f8f7e3e5d6 100644
--- a/src/stores/RoomListStore.js
+++ b/src/stores/RoomListStore.js
@@ -45,6 +45,7 @@ class RoomListStore extends Store {
// Initialise state
this._state = {
lists: {
+ "m.server_notice": [],
"im.vector.fake.invite": [],
"m.favourite": [],
"im.vector.fake.recent": [],
@@ -158,6 +159,7 @@ class RoomListStore extends Store {
_generateRoomLists(optimisticRequest) {
const lists = {
+ "m.server_notice": [],
"im.vector.fake.invite": [],
"m.favourite": [],
"im.vector.fake.recent": [],
From c9d40ec865e5fd3470e928aa53c14ed8b913d8b7 Mon Sep 17 00:00:00 2001
From: Kenneth Larsson
Date: Tue, 7 Aug 2018 08:30:55 +0000
Subject: [PATCH 061/343] Translated using Weblate (Swedish)
Currently translated at 99.4% (1209 of 1216 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/sv/
---
src/i18n/strings/sv.json | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/i18n/strings/sv.json b/src/i18n/strings/sv.json
index 937cd5c684..20b46199c0 100644
--- a/src/i18n/strings/sv.json
+++ b/src/i18n/strings/sv.json
@@ -1218,5 +1218,6 @@
"The password field must not be blank.": "Lösenords-fältet får inte vara tomt.",
"This homeserver has hit its Monthly Active User limit. Please contact your service administrator to continue using the service.": "Hemservern har nått sin månatliga gräns för användaraktivitet. Kontakta din serviceadministratör för att fortsätta använda servicen.",
"Failed to remove widget": "Det gick inte att ta bort widget",
- "An error ocurred whilst trying to remove the widget from the room": "Ett fel uppstod vid borttagning av widget från rummet"
+ "An error ocurred whilst trying to remove the widget from the room": "Ett fel uppstod vid borttagning av widget från rummet",
+ "Demote yourself?": "Sänk egen behörighetsnivå?"
}
From 96203bf8fbcd6ac7af0e54ff02e5e436f8dc8da2 Mon Sep 17 00:00:00 2001
From: Kenneth Larsson
Date: Tue, 7 Aug 2018 08:48:39 +0000
Subject: [PATCH 062/343] Translated using Weblate (Swedish)
Currently translated at 99.9% (1215 of 1216 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/sv/
---
src/i18n/strings/sv.json | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/src/i18n/strings/sv.json b/src/i18n/strings/sv.json
index 20b46199c0..b1fe53f6f1 100644
--- a/src/i18n/strings/sv.json
+++ b/src/i18n/strings/sv.json
@@ -1219,5 +1219,11 @@
"This homeserver has hit its Monthly Active User limit. Please contact your service administrator to continue using the service.": "Hemservern har nått sin månatliga gräns för användaraktivitet. Kontakta din serviceadministratör för att fortsätta använda servicen.",
"Failed to remove widget": "Det gick inte att ta bort widget",
"An error ocurred whilst trying to remove the widget from the room": "Ett fel uppstod vid borttagning av widget från rummet",
- "Demote yourself?": "Sänk egen behörighetsnivå?"
+ "Demote yourself?": "Sänk egen behörighetsnivå?",
+ "Demote": "Degradera",
+ "When someone puts a URL in their message, a URL preview can be shown to give more information about that link such as the title, description, and an image from the website.": "När någon postar en URL i sitt meddelande, kan URL-förhandsvisning ge mer information om länken, såsom titel, beskrivning, och en bild från webbplatsen.",
+ "You can't send any messages until you review and agree to our terms and conditions.": "Du kan inte skicka några meddelanden innan du granskar och godkänner våra villkor.",
+ "Your message wasn’t sent because this homeserver has hit its Monthly Active User Limit. Please contact your service administrator to continue using the service.": "Ditt meddelande skickades inte för hemservern har nått sin månatliga gräns för användaraktivitet. Kontakta din serviceadministratör för att fortsätta använda servicen.",
+ "This homeserver has hit its Monthly Active User limit": "Hemservern har nått sin månatliga gräns för användaraktivitet",
+ "Please contact your service administrator to continue using this service.": "Kontakta din serviceadministratör för att fortsätta använda servicen."
}
From 9c453274f6a00bcee4009945b39624fc0dc7ad52 Mon Sep 17 00:00:00 2001
From: Kenneth Larsson
Date: Tue, 7 Aug 2018 08:53:06 +0000
Subject: [PATCH 063/343] Translated using Weblate (Swedish)
Currently translated at 100.0% (1217 of 1217 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/sv/
---
src/i18n/strings/sv.json | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/i18n/strings/sv.json b/src/i18n/strings/sv.json
index b1fe53f6f1..9f806495cf 100644
--- a/src/i18n/strings/sv.json
+++ b/src/i18n/strings/sv.json
@@ -1225,5 +1225,7 @@
"You can't send any messages until you review and agree to our terms and conditions.": "Du kan inte skicka några meddelanden innan du granskar och godkänner våra villkor.",
"Your message wasn’t sent because this homeserver has hit its Monthly Active User Limit. Please contact your service administrator to continue using the service.": "Ditt meddelande skickades inte för hemservern har nått sin månatliga gräns för användaraktivitet. Kontakta din serviceadministratör för att fortsätta använda servicen.",
"This homeserver has hit its Monthly Active User limit": "Hemservern har nått sin månatliga gräns för användaraktivitet",
- "Please contact your service administrator to continue using this service.": "Kontakta din serviceadministratör för att fortsätta använda servicen."
+ "Please contact your service administrator to continue using this service.": "Kontakta din serviceadministratör för att fortsätta använda servicen.",
+ "Show empty room list headings": "Visa tomma rumsrubriker",
+ "System Alerts": "Systemvarningar"
}
From f2b89791768814b8f92fa5a10f0c5b0e7c0ec4df Mon Sep 17 00:00:00 2001
From: Slavi Pantaleev
Date: Mon, 6 Aug 2018 07:46:10 +0000
Subject: [PATCH 064/343] Translated using Weblate (Bulgarian)
Currently translated at 100.0% (1217 of 1217 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/bg/
---
src/i18n/strings/bg.json | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/i18n/strings/bg.json b/src/i18n/strings/bg.json
index 0dfa1d68a1..ae31b82e39 100644
--- a/src/i18n/strings/bg.json
+++ b/src/i18n/strings/bg.json
@@ -1226,5 +1226,6 @@
"This homeserver has hit its Monthly Active User limit": "Този сървър достигна своя лимит за активни потребители на месец",
"Please contact your service administrator to continue using this service.": "Моля, свържете се с администратора на услугата за да продължите да я използвате.",
"This homeserver has hit its Monthly Active User limit. Please contact your service administrator to continue using the service.": "Този сървър достигна лимита си за активни потребители на месец. Моля, свържете се с администратора на услугата, за да продължите да я използвате.",
- "Your message wasn’t sent because this homeserver has hit its Monthly Active User Limit. Please contact your service administrator to continue using the service.": "Съобщението Ви не бе изпратено, защото този сървър достигна лимита си за активни потребители на месец. Моля, свържете се с администратора на услугата, за да продължите да я използвате."
+ "Your message wasn’t sent because this homeserver has hit its Monthly Active User Limit. Please contact your service administrator to continue using the service.": "Съобщението Ви не бе изпратено, защото този сървър достигна лимита си за активни потребители на месец. Моля, свържете се с администратора на услугата, за да продължите да я използвате.",
+ "System Alerts": "Системни уведомления"
}
From 1009bc43aec17e0bc4f2e2f2c6fe24cca82c3576 Mon Sep 17 00:00:00 2001
From: Bruno Windels
Date: Tue, 7 Aug 2018 14:47:06 +0200
Subject: [PATCH 065/343] call method on room now to LL members
---
src/components/structures/RoomView.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/components/structures/RoomView.js b/src/components/structures/RoomView.js
index 08bed976cc..855090873f 100644
--- a/src/components/structures/RoomView.js
+++ b/src/components/structures/RoomView.js
@@ -317,7 +317,7 @@ module.exports = React.createClass({
// lazy load members if enabled
if (SettingsStore.isFeatureEnabled('feature_lazyloading')) {
- MatrixClientPeg.get().loadRoomMembersIfNeeded(room.roomId).catch((err) => {
+ room.loadMembersIfNeeded().catch((err) => {
const errorMessage = `Fetching room members for ${this.roomId} failed.` +
" Room members will appear incomplete.";
console.error(errorMessage);
From 1f8e3e5d43f45c57b69d6b51065f61b0f998ade0 Mon Sep 17 00:00:00 2001
From: Bruno Windels
Date: Tue, 7 Aug 2018 14:48:07 +0200
Subject: [PATCH 066/343] await room.getEncryptionTargetMembers in
cryptodevices
---
src/cryptodevices.js | 29 ++++++++++++++---------------
1 file changed, 14 insertions(+), 15 deletions(-)
diff --git a/src/cryptodevices.js b/src/cryptodevices.js
index 92237ce7f5..246fae3d73 100644
--- a/src/cryptodevices.js
+++ b/src/cryptodevices.js
@@ -43,27 +43,26 @@ export function markAllDevicesKnown(matrixClient, devices) {
* @return {Promise} A promise which resolves to a map userId->deviceId->{@link
* module:crypto~DeviceInfo|DeviceInfo}.
*/
-export function getUnknownDevicesForRoom(matrixClient, room) {
- const roomMembers = room.getEncryptionTargetMembers().map((m) => {
+export async function getUnknownDevicesForRoom(matrixClient, room) {
+ const roomMembers = await room.getEncryptionTargetMembers().map((m) => {
return m.userId;
});
- return matrixClient.downloadKeys(roomMembers, false).then((devices) => {
- const unknownDevices = {};
- // This is all devices in this room, so find the unknown ones.
- Object.keys(devices).forEach((userId) => {
- Object.keys(devices[userId]).map((deviceId) => {
- const device = devices[userId][deviceId];
+ const devices = await matrixClient.downloadKeys(roomMembers, false);
+ const unknownDevices = {};
+ // This is all devices in this room, so find the unknown ones.
+ Object.keys(devices).forEach((userId) => {
+ Object.keys(devices[userId]).map((deviceId) => {
+ const device = devices[userId][deviceId];
- if (device.isUnverified() && !device.isKnown()) {
- if (unknownDevices[userId] === undefined) {
- unknownDevices[userId] = {};
- }
- unknownDevices[userId][deviceId] = device;
+ if (device.isUnverified() && !device.isKnown()) {
+ if (unknownDevices[userId] === undefined) {
+ unknownDevices[userId] = {};
}
- });
+ unknownDevices[userId][deviceId] = device;
+ }
});
- return unknownDevices;
});
+ return unknownDevices;
}
function focusComposer() {
From 90fc15ff3e0fdaf2e06d9889e51253d46bc7110e Mon Sep 17 00:00:00 2001
From: Bruno Windels
Date: Tue, 7 Aug 2018 15:33:37 +0200
Subject: [PATCH 067/343] adjust room constructor
---
src/VectorConferenceHandler.js | 2 +-
test/components/views/rooms/RoomList-test.js | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/VectorConferenceHandler.js b/src/VectorConferenceHandler.js
index af6659d343..9ba46b2ab6 100644
--- a/src/VectorConferenceHandler.js
+++ b/src/VectorConferenceHandler.js
@@ -84,7 +84,7 @@ ConferenceCall.prototype._getConferenceUserRoom = function() {
preset: "private_chat",
invite: [this.confUserId]
}).then(function(res) {
- return new Room(res.room_id, client.getUserId());
+ return new Room(res.room_id, null, client.getUserId());
});
};
diff --git a/test/components/views/rooms/RoomList-test.js b/test/components/views/rooms/RoomList-test.js
index 8a596d4151..1e9f80f161 100644
--- a/test/components/views/rooms/RoomList-test.js
+++ b/test/components/views/rooms/RoomList-test.js
@@ -23,7 +23,7 @@ function generateRoomId() {
describe('RoomList', () => {
function createRoom(opts) {
- const room = new Room(generateRoomId(), client.getUserId());
+ const room = new Room(generateRoomId(), null, client.getUserId());
if (opts) {
Object.assign(room, opts);
}
From e7df61f5622d5a738d66fde48500ca867bdcf3bc Mon Sep 17 00:00:00 2001
From: Krombel
Date: Tue, 7 Aug 2018 14:36:13 +0000
Subject: [PATCH 068/343] Translated using Weblate (German)
Currently translated at 99.8% (1215 of 1217 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/de/
---
src/i18n/strings/de_DE.json | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json
index 7f97dccfee..de1dd3112f 100644
--- a/src/i18n/strings/de_DE.json
+++ b/src/i18n/strings/de_DE.json
@@ -1224,5 +1224,6 @@
"inline-code": "Quellcode im Satz",
"block-quote": "Quellcode im Block",
"This homeserver has hit its Monthly Active User limit": "Dieser Heimserver hat sein Limit für monatlich aktive Nutzer erreicht",
- "Please contact your service administrator to continue using this service.": "Bitte kontaktiere deinen Administrator um diesen Dienst weiter zu nutzen."
+ "Please contact your service administrator to continue using this service.": "Bitte kontaktiere deinen Administrator um diesen Dienst weiter zu nutzen.",
+ "System Alerts": "System-Benachrichtigung"
}
From 797b4042577bf1fb683138510bbeb5aeddbdf7b0 Mon Sep 17 00:00:00 2001
From: templis
Date: Tue, 7 Aug 2018 14:36:28 +0000
Subject: [PATCH 069/343] Translated using Weblate (German)
Currently translated at 99.9% (1216 of 1217 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/de/
---
src/i18n/strings/de_DE.json | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json
index de1dd3112f..3de54a1c23 100644
--- a/src/i18n/strings/de_DE.json
+++ b/src/i18n/strings/de_DE.json
@@ -1225,5 +1225,6 @@
"block-quote": "Quellcode im Block",
"This homeserver has hit its Monthly Active User limit": "Dieser Heimserver hat sein Limit für monatlich aktive Nutzer erreicht",
"Please contact your service administrator to continue using this service.": "Bitte kontaktiere deinen Administrator um diesen Dienst weiter zu nutzen.",
- "System Alerts": "System-Benachrichtigung"
+ "System Alerts": "System-Benachrichtigung",
+ "This homeserver has hit its Monthly Active User limit. Please contact your service administrator to continue using the service.": "Der Server hat sein Monatliches Nutzerlimit erreicht. Bitte kontaktiere deinen Administrator, um den Service weiter nutzen zu können."
}
From 8060ba42e4b3c0bfdbc56660d3ac8caa45a1a67e Mon Sep 17 00:00:00 2001
From: Krombel
Date: Tue, 7 Aug 2018 14:36:51 +0000
Subject: [PATCH 070/343] Translated using Weblate (German)
Currently translated at 99.9% (1216 of 1217 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/de/
---
src/i18n/strings/de_DE.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json
index 3de54a1c23..5408d5481f 100644
--- a/src/i18n/strings/de_DE.json
+++ b/src/i18n/strings/de_DE.json
@@ -1226,5 +1226,5 @@
"This homeserver has hit its Monthly Active User limit": "Dieser Heimserver hat sein Limit für monatlich aktive Nutzer erreicht",
"Please contact your service administrator to continue using this service.": "Bitte kontaktiere deinen Administrator um diesen Dienst weiter zu nutzen.",
"System Alerts": "System-Benachrichtigung",
- "This homeserver has hit its Monthly Active User limit. Please contact your service administrator to continue using the service.": "Der Server hat sein Monatliches Nutzerlimit erreicht. Bitte kontaktiere deinen Administrator, um den Service weiter nutzen zu können."
+ "This homeserver has hit its Monthly Active User limit. Please contact your service administrator to continue using the service.": "Der Server hat sein monatliches Nutzerlimit erreicht. Bitte kontaktiere deinen Administrator, um den Service weiter nutzen zu können."
}
From 7486aae6ede196b9596c44f04a0ad2a3c194460b Mon Sep 17 00:00:00 2001
From: templis
Date: Tue, 7 Aug 2018 14:37:05 +0000
Subject: [PATCH 071/343] Translated using Weblate (German)
Currently translated at 99.9% (1217 of 1217 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/de/
---
src/i18n/strings/de_DE.json | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json
index 5408d5481f..db8ac72e9a 100644
--- a/src/i18n/strings/de_DE.json
+++ b/src/i18n/strings/de_DE.json
@@ -1226,5 +1226,6 @@
"This homeserver has hit its Monthly Active User limit": "Dieser Heimserver hat sein Limit für monatlich aktive Nutzer erreicht",
"Please contact your service administrator to continue using this service.": "Bitte kontaktiere deinen Administrator um diesen Dienst weiter zu nutzen.",
"System Alerts": "System-Benachrichtigung",
- "This homeserver has hit its Monthly Active User limit. Please contact your service administrator to continue using the service.": "Der Server hat sein monatliches Nutzerlimit erreicht. Bitte kontaktiere deinen Administrator, um den Service weiter nutzen zu können."
+ "This homeserver has hit its Monthly Active User limit. Please contact your service administrator to continue using the service.": "Der Server hat sein monatliches Nutzerlimit erreicht. Bitte kontaktiere deinen Administrator, um den Service weiter nutzen zu können.",
+ "Your message wasn’t sent because this homeserver has hit its Monthly Active User Limit. Please contact your service administrator to continue using the service.": "Deine Nachricht konnte nicht verschickt werden, weil der Homeserver sein Monatliches Nutzerlimit erreicht hat. Bitte kontaktiere deine Administrator, um den Service weiter nutzen zu können."
}
From 6593ee09d1c254d94db9227cce0291790835e698 Mon Sep 17 00:00:00 2001
From: David Baker
Date: Tue, 7 Aug 2018 17:04:37 +0100
Subject: [PATCH 072/343] Warning bar for MAU limit hit
Somewhat untested, sorry
---
res/css/views/globals/_MatrixToolbar.scss | 6 ++
res/themes/dark/css/_dark.scss | 1 +
res/themes/light/css/_base.scss | 1 +
src/components/structures/LoggedInView.js | 57 ++++++++++++++++++-
.../views/globals/ServerLimitBar.js | 51 ++++++++++++++++-
src/i18n/strings/en_EN.json | 5 +-
6 files changed, 115 insertions(+), 6 deletions(-)
diff --git a/res/css/views/globals/_MatrixToolbar.scss b/res/css/views/globals/_MatrixToolbar.scss
index 1109b9e264..1791d619ae 100644
--- a/res/css/views/globals/_MatrixToolbar.scss
+++ b/res/css/views/globals/_MatrixToolbar.scss
@@ -28,6 +28,12 @@ limitations under the License.
margin-top: -2px;
}
+.mx_MatrixToolbar_info {
+ padding-left: 16px;
+ padding-right: 8px;
+ background-color: $info-bg-color;
+}
+
.mx_MatrixToolbar_error {
padding-left: 16px;
padding-right: 8px;
diff --git a/res/themes/dark/css/_dark.scss b/res/themes/dark/css/_dark.scss
index ad4630d668..8ab338790e 100644
--- a/res/themes/dark/css/_dark.scss
+++ b/res/themes/dark/css/_dark.scss
@@ -20,6 +20,7 @@ $focus-brightness: 200%;
// red warning colour
$warning-color: #ff0064;
$warning-bg-color: #DF2A8B;
+$info-bg-color: #2A9EDF;
// groups
$info-plinth-bg-color: #454545;
diff --git a/res/themes/light/css/_base.scss b/res/themes/light/css/_base.scss
index dedfeaeb2f..7d004bd831 100644
--- a/res/themes/light/css/_base.scss
+++ b/res/themes/light/css/_base.scss
@@ -27,6 +27,7 @@ $focus-brightness: 125%;
$warning-color: #ff0064;
// background colour for warnings
$warning-bg-color: #DF2A8B;
+$info-bg-color: #2A9EDF;
$mention-user-pill-bg-color: #ff0064;
$other-user-pill-bg-color: rgba(0, 0, 0, 0.1);
diff --git a/src/components/structures/LoggedInView.js b/src/components/structures/LoggedInView.js
index 65ef69d547..a6c373f7ef 100644
--- a/src/components/structures/LoggedInView.js
+++ b/src/components/structures/LoggedInView.js
@@ -30,10 +30,16 @@ import dis from '../../dispatcher';
import sessionStore from '../../stores/SessionStore';
import MatrixClientPeg from '../../MatrixClientPeg';
import SettingsStore from "../../settings/SettingsStore";
+import RoomListStore from "../../stores/RoomListStore";
import TagOrderActions from '../../actions/TagOrderActions';
import RoomListActions from '../../actions/RoomListActions';
+// We need to fetch each pinned message individually (if we don't already have it)
+// so each pinned message may trigger a request. Limit the number per room for sanity.
+// NB. this is just for server notices rather than pinned messages in general.
+const MAX_PINNED_NOTICES_PER_ROOM = 2;
+
/**
* This is what our MatrixChat shows when we are logged in. The precise view is
* determined by the page_type property.
@@ -80,6 +86,8 @@ const LoggedInView = React.createClass({
return {
// use compact timeline view
useCompactLayout: SettingsStore.getValue('useCompactLayout'),
+ // any currently active server notice events
+ serverNoticeEvents: [],
};
},
@@ -97,13 +105,18 @@ const LoggedInView = React.createClass({
);
this._setStateFromSessionStore();
+ this._updateServerNoticeEvents();
+
this._matrixClient.on("accountData", this.onAccountData);
this._matrixClient.on("sync", this.onSync);
+ this._matrixClient.on("RoomState.events", this.onRoomStateEvents);
},
componentWillUnmount: function() {
document.removeEventListener('keydown', this._onKeyDown);
this._matrixClient.removeListener("accountData", this.onAccountData);
+ this._matrixClient.removeListener("sync", this.onSync);
+ this._matrixClient.removeListener("RoomState.events", this.onRoomStateEvents);
if (this._sessionStoreToken) {
this._sessionStoreToken.remove();
}
@@ -157,8 +170,42 @@ const LoggedInView = React.createClass({
syncErrorData: null,
});
}
+
+ if (oldSyncState === 'PREPARED' && syncState === 'SYNCING') {
+ this._updateServerNoticeEvents();
+ }
},
+ onRoomStateEvents: function(ev, state) {
+ const roomLists = RoomListStore.getRoomLists();
+ if (roomLists['m.server_notices'] && roomLists['m.server_notices'].includes(ev.getRoomId())) {
+ this._updateServerNoticeEvents();
+ }
+ },
+
+ _updateServerNoticeEvents: async function() {
+ const roomLists = RoomListStore.getRoomLists();
+ if (!roomLists['m.server_notice']) return [];
+
+ const pinnedEvents = [];
+ for (const room of roomLists['m.server_notice']) {
+ const pinStateEvent = room.currentState.getStateEvents("m.room.pinned_events", "");
+
+ if (!pinStateEvent || !pinStateEvent.getContent().pinned) continue;
+
+ const pinnedEventIds = pinStateEvent.getContent().pinned.slice(0, MAX_PINNED_NOTICES_PER_ROOM);
+ for (const eventId of pinnedEventIds) {
+ const timeline = await this._matrixClient.getEventTimeline(room.getUnfilteredTimelineSet(), eventId, 0);
+ const ev = timeline.getEvents().find(ev => ev.getId() === eventId);
+ if (ev) pinnedEvents.push(ev);
+ }
+ }
+ this.setState({
+ serverNoticeEvents: pinnedEvents,
+ });
+ },
+
+
_onKeyDown: function(ev) {
/*
// Remove this for now as ctrl+alt = alt-gr so this breaks keyboards which rely on alt-gr for numbers
@@ -386,10 +433,18 @@ const LoggedInView = React.createClass({
break;
}
+ const mauLimitEvent = this.state.serverNoticeEvents.find((e) => {
+ return e && e.getType() === 'm.server_notice.usage_limit_reached' &&
+ e.getContent().limit &&
+ e.getContent().limit === 'monthly_active_user'
+ });
+
let topBar;
const isGuest = this.props.matrixClient.isGuest();
if (this.state.syncErrorData && this.state.syncErrorData.error.errcode === 'M_MAU_LIMIT_EXCEEDED') {
- topBar = ;
+ topBar = ;
+ } else if (mauLimitEvent) {
+ topBar = ;
} else if (this.props.showCookieBar &&
this.props.config.piwik
) {
diff --git a/src/components/views/globals/ServerLimitBar.js b/src/components/views/globals/ServerLimitBar.js
index 638e85634f..26cc5ca566 100644
--- a/src/components/views/globals/ServerLimitBar.js
+++ b/src/components/views/globals/ServerLimitBar.js
@@ -15,15 +15,60 @@ limitations under the License.
*/
import React from 'react';
+import PropTypes from 'prop-types';
+import classNames from 'classnames';
import { _t } from '../../../languageHandler';
export default React.createClass({
+ propTypes: {
+ // 'hard' if the logged in user has been locked out, 'soft' if they haven't
+ kind: PropTypes.string,
+ adminContent: PropTypes.string,
+ },
+
+ getDefaultProps: function() {
+ return {
+ kind: 'hard',
+ }
+ },
+
render: function() {
- const toolbarClasses = "mx_MatrixToolbar mx_MatrixToolbar_error";
+ const toolbarClasses = {
+ 'mx_MatrixToolbar': true,
+ };
+ let content;
+
+ const translateLink = (sub) => {
+ if (this.props.adminContent) {
+ return {sub};
+ } else {
+ return sub;
+ }
+ }
+
+ if (this.props.kind === 'hard') {
+ toolbarClasses['mx_MatrixToolbar_error'] = true;
+ content = _t(
+ "This homeserver has hit its Monthly Active User limit. Please contact your service administrator to continue using the service.",
+ {},
+ {
+ 'a': translateLink,
+ },
+ );
+ } else {
+ toolbarClasses['mx_MatrixToolbar_info'] = true;
+ content = _t(
+ "This homeserver has hit its Monthly Active User limit so some users will not be able to log in. Please contact your service administrator to get this limit increased.",
+ {},
+ {
+ 'a': translateLink,
+ },
+ );
+ }
return (
-
+
- { _t("This homeserver has hit its Monthly Active User limit. Please contact your service administrator to continue using the service.") }
+ { content }
);
diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json
index d44187b834..6fe775770c 100644
--- a/src/i18n/strings/en_EN.json
+++ b/src/i18n/strings/en_EN.json
@@ -464,9 +464,9 @@
"People": "People",
"Rooms": "Rooms",
"Low priority": "Low priority",
- "System Alerts": "System Alerts",
"You have no historical rooms": "You have no historical rooms",
"Historical": "Historical",
+ "System Alerts": "System Alerts",
"Unable to ascertain that the address this invite was sent to matches one associated with your account.": "Unable to ascertain that the address this invite was sent to matches one associated with your account.",
"This invitation was sent to an email address which is not associated with this account:": "This invitation was sent to an email address which is not associated with this account:",
"You may wish to login with a different account, or add this email to this account.": "You may wish to login with a different account, or add this email to this account.",
@@ -678,7 +678,8 @@
"A new version of Riot is available.": "A new version of Riot is available.",
"To return to your account in future you need to set a password": "To return to your account in future you need to set a password",
"Set Password": "Set Password",
- "This homeserver has hit its Monthly Active User limit. Please contact your service administrator to continue using the service.": "This homeserver has hit its Monthly Active User limit. Please contact your service administrator to continue using the service.",
+ "This homeserver has hit its Monthly Active User limit. Please contact your service administrator to continue using the service.": "This homeserver has hit its Monthly Active User limit. Please contact your service administrator to continue using the service.",
+ "This homeserver has hit its Monthly Active User limit so some users will not be able to log in. Please contact your service administrator to get this limit increased.": "This homeserver has hit its Monthly Active User limit so some users will not be able to log in. Please contact your service administrator to get this limit increased.",
"Error encountered (%(errorDetail)s).": "Error encountered (%(errorDetail)s).",
"Checking for an update...": "Checking for an update...",
"No update available.": "No update available.",
From 16b7763c0ea5f2f32d5d1a0dc30c0c5233412d30 Mon Sep 17 00:00:00 2001
From: David Baker
Date: Tue, 7 Aug 2018 17:22:12 +0100
Subject: [PATCH 073/343] s/limit/limit_type/
---
src/components/structures/LoggedInView.js | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/components/structures/LoggedInView.js b/src/components/structures/LoggedInView.js
index a6c373f7ef..c23dbaf444 100644
--- a/src/components/structures/LoggedInView.js
+++ b/src/components/structures/LoggedInView.js
@@ -435,8 +435,8 @@ const LoggedInView = React.createClass({
const mauLimitEvent = this.state.serverNoticeEvents.find((e) => {
return e && e.getType() === 'm.server_notice.usage_limit_reached' &&
- e.getContent().limit &&
- e.getContent().limit === 'monthly_active_user'
+ e.getContent().limit_type &&
+ e.getContent().limit_type === 'monthly_active_user'
});
let topBar;
From f74427454eae50795b5fb2ab7899e3a9eb879f2e Mon Sep 17 00:00:00 2001
From: Willem Mulder <14mRh4X0r@gmail.com>
Date: Tue, 7 Aug 2018 18:02:04 +0000
Subject: [PATCH 074/343] Translated using Weblate (Dutch)
Currently translated at 100.0% (1217 of 1217 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/nl/
---
src/i18n/strings/nl.json | 48 +++++++++++++++++++++++++++++++++++++++-
1 file changed, 47 insertions(+), 1 deletion(-)
diff --git a/src/i18n/strings/nl.json b/src/i18n/strings/nl.json
index 2c3771cafd..cfe67273f0 100644
--- a/src/i18n/strings/nl.json
+++ b/src/i18n/strings/nl.json
@@ -1180,5 +1180,51 @@
"This room is used for important messages from the Homeserver, so you cannot leave it.": "Deze ruimte wordt gebruikt voor belangrijke berichten van de thuisserver, dus je kan het niet verlaten.",
"Terms and Conditions": "Voorwaarden",
"To continue using the %(homeserverDomain)s homeserver you must review and agree to our terms and conditions.": "Om de %(homeserverDomain)s thuisserver te blijven gebruiken zal je de voorwaarden moeten lezen en ermee akkoord moeten gaan.",
- "Review terms and conditions": "Voorwaarden lezen"
+ "Review terms and conditions": "Voorwaarden lezen",
+ "A conference call could not be started because the intgrations server is not available": "Een groepsgesprek kon niet worden gestart omdat de integratieserver niet beschikbaar is",
+ "Call in Progress": "Lopend gesprek",
+ "A call is currently being placed!": "Een gesprek wordt gestart!",
+ "A call is already in progress!": "Er loopt al een gesprek!",
+ "Permission Required": "Toestemming benodigd",
+ "You do not have permission to start a conference call in this room": "Je hebt niet de toestemming om in deze ruimte een groepsgesprek te starten",
+ "Show empty room list headings": "Lege koppen in ruimtelijst weergeven",
+ "This event could not be displayed": "Deze gebeurtenis kon niet worden weergegeven",
+ "Encrypting": "Versleutelen",
+ "Encrypted, not sent": "Versleuteld, niet verstuurd",
+ "Demote yourself?": "Jezelf degraderen?",
+ "Demote": "Degraderen",
+ "Share Link to User": "Link met gebruiker delen",
+ "deleted": "verwijderd",
+ "underlined": "onderstreept",
+ "inline-code": "code in de regel",
+ "block-quote": "citaat",
+ "bulleted-list": "lijst met opsommingstekens",
+ "numbered-list": "genummerde lijst",
+ "Share room": "Ruimte delen",
+ "System Alerts": "Systeemmeldingen",
+ "You have no historical rooms": "Je hebt geen historische ruimtes",
+ "In encrypted rooms, like this one, URL previews are disabled by default to ensure that your homeserver (where the previews are generated) cannot gather information about links you see in this room.": "In versleutelde ruimtes, zoals deze, zijn URL-voorvertoningen standaard uitgeschakeld om ervoor te zorgen dat jouw thuisserver (waar de voorvertoningen worden gemaakt) geen informatie kan verzamelen over de links die je in deze ruimte ziet.",
+ "When someone puts a URL in their message, a URL preview can be shown to give more information about that link such as the title, description, and an image from the website.": "Als iemand een URL in zijn of haar bericht zet, kan er een URL-voorvertoning weergegeven worden om meer informatie over de link te geven, zoals de titel, omschrijving en een afbeelding van de website.",
+ "The email field must not be blank.": "Het e-mailveld mag niet leeg zijn.",
+ "The user name field must not be blank.": "Het gebruikersnaamveld mag niet leeg zijn.",
+ "The phone number field must not be blank.": "Het telefoonnummerveld mag niet leeg zijn.",
+ "The password field must not be blank.": "Het wachtwoordveld mag niet leeg zijn.",
+ "This homeserver has hit its Monthly Active User limit. Please contact your service administrator to continue using the service.": "Deze thuisserver heeft zijn maandelijkse gebruikerslimiet bereikt. Neem contact op met de beheerder van je thuisserver om de dienst weer te kunnen gebruiken.",
+ "Failed to remove widget": "Widget kon niet worden verwijderd",
+ "An error ocurred whilst trying to remove the widget from the room": "Er is een fout opgetreden tijdens het verwijderen van de widget uit deze ruimte",
+ "Share Room": "Ruimte delen",
+ "Link to most recent message": "Link naar meest recente bericht",
+ "Share User": "Gebruiker delen",
+ "Share Community": "Gemeenschap delen",
+ "Share Room Message": "Bericht uit ruimte delen",
+ "Link to selected message": "Link naar geselecteerde bericht",
+ "COPY": "KOPIËREN",
+ "Share Message": "Bericht delen",
+ "You can't send any messages until you review and agree to our terms and conditions.": "Je kunt geen berichten sturen totdat je onze algemene voorwaarden hebt gelezen en geaccepteerd.",
+ "Your message wasn’t sent because this homeserver has hit its Monthly Active User Limit. Please contact your service administrator to continue using the service.": "Je bericht is niet verstuurd omdat deze thuisserver zijn maandelijkse gebruikerslimiet heeft bereikt. Neem contact op met de beheerder van je thuisserver om de dienst te kunnen blijven gebruiken.",
+ "No Audio Outputs detected": "Geen geluidsuitgangen gedetecteerd",
+ "Audio Output": "Geluidsuitgang",
+ "This homeserver has hit its Monthly Active User limit": "Deze thuisserver heeft zijn maandelijkse gebruikerslimiet bereikt",
+ "Please contact your service administrator to continue using this service.": "Neem contact op met de beheerder van je thuisserver om de dienst te kunnen blijven gebruiken.",
+ "Try the app first": "De app eerst proberen"
}
From 8b57f0ba079cf976fb28da354025229a2ea603a9 Mon Sep 17 00:00:00 2001
From: Szimszon
Date: Tue, 7 Aug 2018 18:58:52 +0000
Subject: [PATCH 075/343] Translated using Weblate (Hungarian)
Currently translated at 100.0% (1217 of 1217 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/hu/
---
src/i18n/strings/hu.json | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/src/i18n/strings/hu.json b/src/i18n/strings/hu.json
index 9c8be3fe15..dffa00b523 100644
--- a/src/i18n/strings/hu.json
+++ b/src/i18n/strings/hu.json
@@ -1222,5 +1222,10 @@
"You do not have permission to start a conference call in this room": "Nincs jogosultságod konferencia hívást kezdeményezni ebben a szobában",
"A call is currently being placed!": "A hívás indítás alatt!",
"Failed to remove widget": "A kisalkalmazás törlése sikertelen",
- "An error ocurred whilst trying to remove the widget from the room": "A kisalkalmazás szobából való törlése közben hiba történt"
+ "An error ocurred whilst trying to remove the widget from the room": "A kisalkalmazás szobából való törlése közben hiba történt",
+ "System Alerts": "Rendszer figyelmeztetések",
+ "This homeserver has hit its Monthly Active User limit. Please contact your service administrator to continue using the service.": "Ez a matrix szerver elérte a havi aktív felhasználói korlátot. Kérlek vedd fel a kapcsolatot a szolgáltatás adminisztrátorával ha a továbbiakban is igénybe szeretnéd venni a szolgáltatást.",
+ "Your message wasn’t sent because this homeserver has hit its Monthly Active User Limit. Please contact your service administrator to continue using the service.": "Az üzeneted nem lett elküldve mert a Matrix szerver elérte a havi aktív felhasználói korlátot. Kérlek vedd fel a kapcsolatot a szolgáltatás adminisztrátorával ha a továbbiakban is igénybe szeretnéd venni a szolgáltatást.",
+ "This homeserver has hit its Monthly Active User limit": "Ez a Matrix szerver elérte a havi aktív felhasználói korlátot",
+ "Please contact your service administrator to continue using this service.": "Kérlek vedd fel a kapcsolatot a szolgáltatás adminisztrátorával ha a továbbiakban is igénybe szeretnéd venni a szolgáltatást."
}
From 732f0a5e8edcef396ac257045a884f5fcc284139 Mon Sep 17 00:00:00 2001
From: Osoitz
Date: Mon, 6 Aug 2018 08:16:20 +0000
Subject: [PATCH 076/343] Translated using Weblate (Basque)
Currently translated at 100.0% (1217 of 1217 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/eu/
---
src/i18n/strings/eu.json | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/i18n/strings/eu.json b/src/i18n/strings/eu.json
index b5b086e622..aa58f2646c 100644
--- a/src/i18n/strings/eu.json
+++ b/src/i18n/strings/eu.json
@@ -1226,5 +1226,6 @@
"This homeserver has hit its Monthly Active User limit. Please contact your service administrator to continue using the service.": "Hasiera zerbitzari honek bere hilabeteko erabiltzaile aktiboen muga jo du. Jarri kontaktuan zerbitzuaren administratzailearekin zerbitzua erabiltzen jarraitzeko.",
"Your message wasn’t sent because this homeserver has hit its Monthly Active User Limit. Please contact your service administrator to continue using the service.": "Zure mezua ez da bidali hasiera zerbitzari honek bere hilabeteko erabiltzaile aktiboen muga jo duelako. Jarri kontaktuan zerbitzuaren administratzailearekin zerbitzua erabiltzen jarraitzeko.",
"This homeserver has hit its Monthly Active User limit": "Hasiera zerbitzari honek bere hilabeteko erabiltzaile aktiboen muga jo du",
- "Please contact your service administrator to continue using this service.": "Jarri kontaktuan zerbitzuaren administratzailearekin zerbitzua erabiltzen jarraitzeko."
+ "Please contact your service administrator to continue using this service.": "Jarri kontaktuan zerbitzuaren administratzailearekin zerbitzua erabiltzen jarraitzeko.",
+ "System Alerts": "Sistemaren alertak"
}
From 738bbf3a7d370d998dd215996933e39c88304f18 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?K=C3=A9vin=20C?=
Date: Fri, 3 Aug 2018 16:18:03 +0000
Subject: [PATCH 077/343] Translated using Weblate (French)
Currently translated at 100.0% (1217 of 1217 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/fr/
---
src/i18n/strings/fr.json | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/i18n/strings/fr.json b/src/i18n/strings/fr.json
index f628ca0ed8..8458f9428e 100644
--- a/src/i18n/strings/fr.json
+++ b/src/i18n/strings/fr.json
@@ -1226,5 +1226,6 @@
"This homeserver has hit its Monthly Active User limit": "Ce serveur d'accueil a atteint sa limite mensuelle d'utilisateurs actifs",
"Please contact your service administrator to continue using this service.": "Veuillez contacter l'administrateur de votre service pour continuer à l'utiliser.",
"Your message wasn’t sent because this homeserver has hit its Monthly Active User Limit. Please contact your service administrator to continue using the service.": "Votre message n'a pas été envoyé car ce serveur d'accueil a atteint sa limite mensuelle d'utilisateurs actifs. Veuillez contacter l'administrateur de votre service pour continuer à l'utiliser.",
- "This homeserver has hit its Monthly Active User limit. Please contact your service administrator to continue using the service.": "Ce serveur d'accueil a atteint sa limite mensuelle d'utilisateurs actifs. Veuillez contacter l'administrateur de votre service pour continuer à l'utiliser."
+ "This homeserver has hit its Monthly Active User limit. Please contact your service administrator to continue using the service.": "Ce serveur d'accueil a atteint sa limite mensuelle d'utilisateurs actifs. Veuillez contacter l'administrateur de votre service pour continuer à l'utiliser.",
+ "System Alerts": "Alertes système"
}
From 2b7f6a4d41c02b6bce5992122e6b44ba0fc62a4a Mon Sep 17 00:00:00 2001
From: FeiYang
Date: Fri, 3 Aug 2018 18:01:40 +0000
Subject: [PATCH 078/343] Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (1217 of 1217 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/zh_Hant/
---
src/i18n/strings/zh_Hant.json | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/i18n/strings/zh_Hant.json b/src/i18n/strings/zh_Hant.json
index 903cf32a2d..c09a2ca982 100644
--- a/src/i18n/strings/zh_Hant.json
+++ b/src/i18n/strings/zh_Hant.json
@@ -1226,5 +1226,6 @@
"Your message wasn’t sent because this homeserver has hit its Monthly Active User Limit. Please contact your service administrator to continue using the service.": "您的訊息因為這個家伺服器到達了它的每月活躍使用者限制而沒有傳送出去。請聯絡您的服務管理員以繼續使用服務。",
"This homeserver has hit its Monthly Active User limit": "此家伺服器達到了其每月活躍使用者限制",
"Please contact your service administrator to continue using this service.": "請聯絡您的服務管理員以繼續使用此服務。",
- "This homeserver has hit its Monthly Active User limit. Please contact your service administrator to continue using the service.": "您的訊息因為這個家伺服器到達了它的每月活躍使用者限制而沒有傳送出去。請聯絡您的服務管理員以繼續使用服務。"
+ "This homeserver has hit its Monthly Active User limit. Please contact your service administrator to continue using the service.": "您的訊息因為這個家伺服器到達了它的每月活躍使用者限制而沒有傳送出去。請聯絡您的服務管理員以繼續使用服務。",
+ "System Alerts": "系統警告"
}
From 308a6b419e666c19af9dd3a67ccaee7b11c3dbc2 Mon Sep 17 00:00:00 2001
From: Bruno Windels
Date: Thu, 9 Aug 2018 16:56:02 +0200
Subject: [PATCH 079/343] allow a setting controller to validate and revert a
change (asynchronously)
---
src/components/structures/UserSettings.js | 6 +++---
src/settings/SettingsStore.js | 20 ++++++++++++++-----
src/settings/controllers/SettingController.js | 4 ++++
3 files changed, 22 insertions(+), 8 deletions(-)
diff --git a/src/components/structures/UserSettings.js b/src/components/structures/UserSettings.js
index d02d8b23e5..701247bd8b 100644
--- a/src/components/structures/UserSettings.js
+++ b/src/components/structures/UserSettings.js
@@ -844,8 +844,8 @@ module.exports = React.createClass({
SettingsStore.getLabsFeatures().forEach((featureId) => {
// TODO: this ought to be a separate component so that we don't need
// to rebind the onChange each time we render
- const onChange = (e) => {
- SettingsStore.setFeatureEnabled(featureId, e.target.checked);
+ const onChange = async (e) => {
+ await SettingsStore.setFeatureEnabled(featureId, e.target.checked);
this.forceUpdate();
};
@@ -855,7 +855,7 @@ module.exports = React.createClass({
type="checkbox"
id={featureId}
name={featureId}
- defaultChecked={SettingsStore.isFeatureEnabled(featureId)}
+ checked={SettingsStore.isFeatureEnabled(featureId)}
onChange={onChange}
/>
diff --git a/src/settings/SettingsStore.js b/src/settings/SettingsStore.js
index a1b88fb0c2..1da882577f 100644
--- a/src/settings/SettingsStore.js
+++ b/src/settings/SettingsStore.js
@@ -260,7 +260,7 @@ export default class SettingsStore {
* @param {*} value The new value of the setting, may be null.
* @return {Promise} Resolves when the setting has been changed.
*/
- static setValue(settingName, roomId, level, value) {
+ static async setValue(settingName, roomId, level, value) {
// Verify that the setting is actually a setting
if (!SETTINGS[settingName]) {
throw new Error("Setting '" + settingName + "' does not appear to be a setting.");
@@ -275,11 +275,21 @@ export default class SettingsStore {
throw new Error("User cannot set " + settingName + " at " + level + " in " + roomId);
}
- return handler.setValue(settingName, roomId, value).then(() => {
- const controller = SETTINGS[settingName].controller;
- if (!controller) return;
+ const controller = SETTINGS[settingName].controller;
+ if (controller) {
+ const changeAllowed = await controller.canChangeTo(level, roomId, value);
+ if (!changeAllowed) {
+ return false;
+ }
+ }
+
+ await handler.setValue(settingName, roomId, value);
+
+ if (controller) {
controller.onChange(level, roomId, value);
- });
+ }
+
+ return true;
}
/**
diff --git a/src/settings/controllers/SettingController.js b/src/settings/controllers/SettingController.js
index 0ebe0042e6..6b09c4fc53 100644
--- a/src/settings/controllers/SettingController.js
+++ b/src/settings/controllers/SettingController.js
@@ -39,6 +39,10 @@ export default class SettingController {
return null; // no override
}
+ canChangeTo(level, roomId, newValue) {
+ return Promise.resolve(true);
+ }
+
/**
* Called when the setting value has been changed.
* @param {string} level The level at which the setting has been modified.
From 028f09e5d15a223f87d564318dee98ee9b43db4f Mon Sep 17 00:00:00 2001
From: Bruno Windels
Date: Thu, 9 Aug 2018 18:39:55 +0200
Subject: [PATCH 080/343] lazy loading settings controller to show dialog and
export e2e keys
---
.../controllers/LazyLoadingController.js | 66 +++++++++++++++++++
1 file changed, 66 insertions(+)
create mode 100644 src/settings/controllers/LazyLoadingController.js
diff --git a/src/settings/controllers/LazyLoadingController.js b/src/settings/controllers/LazyLoadingController.js
new file mode 100644
index 0000000000..506a1c7f2b
--- /dev/null
+++ b/src/settings/controllers/LazyLoadingController.js
@@ -0,0 +1,66 @@
+/*
+Copyright 2018 New Vector
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+import SettingsStore from "../SettingsStore";
+import SettingController from "./SettingController";
+import Modal from "../../Modal";
+import sdk from "../../index";
+import MatrixClientPeg from "../../MatrixClientPeg";
+import dis from "../../dispatcher";
+import { _t } from "../../languageHandler";
+
+export default class LazyLoadingController extends SettingController {
+ onChange(level, roomId, newValue) {
+ dis.dispatch({action: 'flush_storage_reload'});
+ }
+
+ canChangeTo(level, roomId, newValue) {
+ return new Promise((resolve) => this._showReloadDialog(resolve));
+ }
+
+ _showReloadDialog(onFinished) {
+ const QuestionDialog = sdk.getComponent("dialogs.QuestionDialog");
+ Modal.createDialog(QuestionDialog, {
+ title: _t("Turn on/off lazy load members"),
+ description:
+
+ { _t("To enable or disable the lazy loading of members, " +
+ "the current synced state needs to be cleared out. " +
+ "This also includes your end-to-end encryption keys, " +
+ "so to keep being able to decrypt all your existing encrypted messages, " +
+ "you'll need to export your E2E room keys and import them again afterwards.") }
+
,
+ button: _t("Clear sync state and reload"),
+ extraButtons: [
+ ,
+ ],
+ onFinished,
+ });
+ }
+
+ _onExportE2eKeysClicked() {
+ Modal.createTrackedDialogAsync('Export E2E Keys', '', (cb) => {
+ require.ensure(['../../async-components/views/dialogs/ExportE2eKeysDialog'], () => {
+ cb(require('../../async-components/views/dialogs/ExportE2eKeysDialog'));
+ }, "e2e-export");
+ }, {
+ matrixClient: MatrixClientPeg.get(),
+ });
+ }
+}
From a02e1aa2b240c2f0d25018207e76e7106661649d Mon Sep 17 00:00:00 2001
From: Bruno Windels
Date: Thu, 9 Aug 2018 18:41:18 +0200
Subject: [PATCH 081/343] add action/method to flush storage and reload the
session
---
src/Lifecycle.js | 29 +++++++++++++++++++++++++
src/components/structures/MatrixChat.js | 8 +++++++
2 files changed, 37 insertions(+)
diff --git a/src/Lifecycle.js b/src/Lifecycle.js
index f32f105889..4d62e6bb46 100644
--- a/src/Lifecycle.js
+++ b/src/Lifecycle.js
@@ -499,3 +499,32 @@ export function stopMatrixClient() {
MatrixClientPeg.unset();
}
}
+/**
+ * Clears indexeddb storage and reloads the session
+ * localStorage is preserved.
+ */
+export async function flushStorageAndReload() {
+ // gather the credentials from localStorage as
+ // MatrixClient.credentials only contains the userId
+ // (gets cleared somewhere probably)
+ // this just does the reverse of _persistCredentialsToLocalStorage
+ const credentials = {
+ homeserverUrl: localStorage.getItem("mx_hs_url"),
+ identityServerUrl: localStorage.getItem("mx_is_url"),
+ userId: localStorage.getItem("mx_user_id"),
+ accessToken: localStorage.getItem("mx_access_token"),
+ guest: JSON.parse(localStorage.getItem("mx_is_guest")),
+ deviceId: localStorage.getItem("mx_device_id"),
+ };
+ // stop the client so it's not running anymore
+ stopMatrixClient();
+ // create a temporary client to clear out the persistent stores.
+ const cli = createMatrixClient({
+ // we'll never make any requests, so can pass a bogus HS URL
+ baseUrl: "",
+ });
+ // clear indexeddb
+ await cli.clearStores();
+ // start the session again without clearing storage
+ _doSetLoggedIn(credentials, false);
+}
\ No newline at end of file
diff --git a/src/components/structures/MatrixChat.js b/src/components/structures/MatrixChat.js
index e0bbf50d5a..dc2c1cb90b 100644
--- a/src/components/structures/MatrixChat.js
+++ b/src/components/structures/MatrixChat.js
@@ -479,6 +479,14 @@ export default React.createClass({
case 'logout':
Lifecycle.logout();
break;
+ case 'flush_storage_reload':
+ // flushStorageAndReload will dispatch actions
+ // which we can't do in a dispatch handler
+ // so yield first
+ setTimeout(() => {
+ Lifecycle.flushStorageAndReload();
+ }, 0);
+ break;
case 'start_registration':
this._startRegistration(payload.params || {});
break;
From 3731431e59387423c0c019fd638d8d280c6f2018 Mon Sep 17 00:00:00 2001
From: Bruno Windels
Date: Thu, 9 Aug 2018 18:41:41 +0200
Subject: [PATCH 082/343] use LL controller in setting
---
src/settings/Settings.js | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/settings/Settings.js b/src/settings/Settings.js
index d76c1fd8e8..76e002adac 100644
--- a/src/settings/Settings.js
+++ b/src/settings/Settings.js
@@ -21,7 +21,7 @@ import {
NotificationBodyEnabledController,
NotificationsEnabledController,
} from "./controllers/NotificationControllers";
-
+import LazyLoadingController from "./controllers/LazyLoadingController";
// These are just a bunch of helper arrays to avoid copy/pasting a bunch of times
const LEVELS_ROOM_SETTINGS = ['device', 'room-device', 'room-account', 'account', 'config'];
@@ -87,6 +87,8 @@ export const SETTINGS = {
isFeature: true,
displayName: _td("Increase performance by loading room members on first view"),
supportedLevels: LEVELS_FEATURE,
+ controller: new LazyLoadingController(),
+ default: false,
},
"MessageComposerInput.dontSuggestEmoji": {
supportedLevels: LEVELS_ACCOUNT_SETTINGS,
From 5df3b7a9d072815cbfbd6d9d6fb45d68f0a9781b Mon Sep 17 00:00:00 2001
From: csybr
Date: Fri, 10 Aug 2018 14:02:56 +0000
Subject: [PATCH 083/343] Added translation using Weblate (Norwegian Nynorsk)
---
src/i18n/strings/nn.json | 1 +
1 file changed, 1 insertion(+)
create mode 100644 src/i18n/strings/nn.json
diff --git a/src/i18n/strings/nn.json b/src/i18n/strings/nn.json
new file mode 100644
index 0000000000..0967ef424b
--- /dev/null
+++ b/src/i18n/strings/nn.json
@@ -0,0 +1 @@
+{}
From cf81b9853484a9654bfac0f8b43df75034fa295a Mon Sep 17 00:00:00 2001
From: csybr
Date: Sun, 12 Aug 2018 19:43:19 +0000
Subject: [PATCH 084/343] Translated using Weblate (Norwegian Nynorsk)
Currently translated at 100.0% (1217 of 1217 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/nn/
---
src/i18n/strings/nn.json | 1220 +++++++++++++++++++++++++++++++++++++-
1 file changed, 1219 insertions(+), 1 deletion(-)
diff --git a/src/i18n/strings/nn.json b/src/i18n/strings/nn.json
index 0967ef424b..40d16dcc47 100644
--- a/src/i18n/strings/nn.json
+++ b/src/i18n/strings/nn.json
@@ -1 +1,1219 @@
-{}
+{
+ "This phone number is already in use": "Dette telefonnummeret er allereie i bruk",
+ "The version of Riot.im": "Utgåva av Riot.im",
+ "Whether or not you're logged in (we don't record your user name)": "Om du er logga inn eller ikkje (vi sparer ikkje på brukarnamnet ditt)",
+ "Your homeserver's URL": "Heimtenaren din si nettadresse",
+ "Your device resolution": "Eininga di sin oppløysing",
+ "The information being sent to us to help make Riot.im better includes:": "Informasjonen som vert send til oss for å gjera Riot.im betre er mellom anna:",
+ "Where this page includes identifiable information, such as a room, user or group ID, that data is removed before being sent to the server.": "Der denne sida inneheld gjenkjenneleg informasjon, slik som ein rom-, brukar- eller gruppeID, vert denne informasjonen sletta før han sendast til tenar.",
+ "Call Failed": "Oppringing Mislukkast",
+ "There are unknown devices in this room: if you proceed without verifying them, it will be possible for someone to eavesdrop on your call.": "Det finst ukjende einingar i dette rommet: viss du gjeng frama utan å godkjenna dei, kan nokon mogelegvis tjuvlytta på samtala.",
+ "Review Devices": "Sjå Over Einingar",
+ "Call Anyway": "Ring Same Kva",
+ "Answer Anyway": "Svar Same Kva",
+ "Call": "Ring",
+ "Answer": "Svar",
+ "You are already in a call.": "Du er allereie i ei samtale.",
+ "VoIP is unsupported": "VoIP er ikkje støtta",
+ "You cannot place VoIP calls in this browser.": "Du kan ikkje samtala med VoIP i denne nettlesaren.",
+ "You cannot place a call with yourself.": "Du kan ikkje samtala med deg sjølv.",
+ "Could not connect to the integration server": "Kunne ikkje kopla til integreringstenaren",
+ "A conference call could not be started because the intgrations server is not available": "Ei gruppesamtale lét seg ikkje starta fordi integreringstenaren ikkje er tilgjengeleg",
+ "Call in Progress": "Ei Samtale Er i Gang",
+ "A call is currently being placed!": "Ei samtale held allereie på å starta!",
+ "A call is already in progress!": "Ei samtale er i gang allereie!",
+ "Permission Required": "Tillating er Naudsynt",
+ "You do not have permission to start a conference call in this room": "Du har ikkje tillating til å starta ei gruppesamtale i dette rommet",
+ "The file '%(fileName)s' failed to upload": "Fila '%(fileName)s' vart ikkje lasta opp",
+ "The file '%(fileName)s' exceeds this home server's size limit for uploads": "Fila '%(fileName)s' gjeng denne heimtenaren si storleiksgrense for opplastningar",
+ "Upload Failed": "Opplasting Mislukkast",
+ "Sun": "sø",
+ "Mon": "må",
+ "Tue": "ty",
+ "Wed": "on",
+ "Thu": "to",
+ "Fri": "fr",
+ "Sat": "la",
+ "Jan": "jan",
+ "Feb": "feb",
+ "Mar": "mar",
+ "Apr": "apr",
+ "May": "mai",
+ "Jun": "jun",
+ "Jul": "jul",
+ "Aug": "aug",
+ "Sep": "sep",
+ "Oct": "okt",
+ "Nov": "nov",
+ "Dec": "des",
+ "PM": "PM",
+ "AM": "AM",
+ "%(weekDayName)s %(time)s": "%(weekDayName)s %(time)s",
+ "%(weekDayName)s, %(monthName)s %(day)s %(time)s": "%(weekDayName)s, %(monthName)s %(day)s %(time)s",
+ "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s": "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s",
+ "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s": "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s",
+ "Who would you like to add to this community?": "Kven vil du leggja til i dette samfunnet?",
+ "Warning: any person you add to a community will be publicly visible to anyone who knows the community ID": "Åtvaring: alle du legg til i eit samfunn vert offentleg synleg til alle som kan samfunns-IDen",
+ "Invite new community members": "Byd nye samfunnsmedlemer inn",
+ "Name or matrix ID": "Namn eller matrix-ID",
+ "Invite to Community": "Byd inn til Samfunn",
+ "Which rooms would you like to add to this community?": "Kva rom vil du leggja til i dette samfunnet?",
+ "Show these rooms to non-members on the community page and room list?": "Vis desse romma til ikkje-medlemer på samfunnssida og romlista?",
+ "Add rooms to the community": "Legg til rom i samfunnet",
+ "Room name or alias": "Romnamn eller alias",
+ "Add to community": "Legg til i samfunn",
+ "Failed to invite the following users to %(groupId)s:": "Følgjande brukarar lét seg ikkje byda inn i %(groupId)s:",
+ "Failed to invite users to community": "Fekk ikkje til å byda brukarar inn til samfunnet",
+ "Failed to invite users to %(groupId)s": "Fekk ikkje til å byda brukarar inn til %(groupId)s",
+ "Failed to add the following rooms to %(groupId)s:": "Følgjande rom lét seg ikkje leggja til i %(groupId)s:",
+ "Riot does not have permission to send you notifications - please check your browser settings": "Riot har ikkje tillating til å senda deg varsel - ver venleg og sjekk nettlesarinnstillingane dine",
+ "Riot was not given permission to send notifications - please try again": "Riot fekk ikkje tillating til å senda varsel - ver venleg og prøv igjen",
+ "Unable to enable Notifications": "Klarte ikkje å skru på Varsel",
+ "This email address was not found": "Denne emailadressa var ikkje funne",
+ "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Emailadressa di ser ikkje ut til å vera tilknytta ein Matrix-ID på denne heimtenaren.",
+ "Default": "Utgangspunktinnstilling",
+ "Restricted": "Avgrensa",
+ "Moderator": "Moderator",
+ "Admin": "Administrator",
+ "Start a chat": "Start ein nettprat",
+ "Who would you like to communicate with?": "Kven vil du koma i kontakt med?",
+ "Email, name or matrix ID": "Email, namn eller Matrix-ID",
+ "Start Chat": "Start Nettprat",
+ "Invite new room members": "Byd nye rommedlemer inn",
+ "Who would you like to add to this room?": "Kven vil du leggja til i rommet?",
+ "Send Invites": "Send Innbydingar",
+ "Failed to invite user": "Fekk ikkje til å byda brukar inn",
+ "Operation failed": "Handling mislukkast",
+ "Failed to invite": "Fekk ikkje til å byda inn",
+ "Failed to invite the following users to the %(roomName)s room:": "Dei følgjande brukarane lét seg ikkje byda inn til %(roomName)s:",
+ "You need to be logged in.": "Du må vera logga inn.",
+ "You need to be able to invite users to do that.": "Du må kunna byda brukarar inn for å gjera det.",
+ "Unable to create widget.": "Klarte ikkje å laga widget.",
+ "Missing roomId.": "Manglande roomId.",
+ "Failed to send request.": "Fekk ikkje til å senda førespurnad.",
+ "This room is not recognised.": "Rommet er ikkje attkjend.",
+ "Power level must be positive integer.": "Makthøgda må vera eit positivt heiltal.",
+ "You are not in this room.": "Du er ikkje i dette rommet.",
+ "You do not have permission to do that in this room.": "Du har ikkje lov til å gjera det i dette rommet.",
+ "Missing room_id in request": "Manglande room_Id i førespurnad",
+ "Room %(roomId)s not visible": "Rommet %(roomId)s er ikkje synleg",
+ "Missing user_id in request": "Manglande user_id i førespurnad",
+ "Usage": "Bruk",
+ "Searches DuckDuckGo for results": "Røkjer DuckDuckGo etter resultat",
+ "Your language of choice": "Ditt valde mål",
+ "e.g. %(exampleValue)s": "t.d. %(exampleValue)s",
+ "/ddg is not a command": "/ddg er ikkje eit påbod",
+ "Changes your display nickname": "Endrar kallenamnet ditt",
+ "Changes colour scheme of current room": "Endrar fargevala i ditt noverande rom",
+ "Sets the room topic": "Set romemnet",
+ "Invites user with given id to current room": "Byd brukarar med den gjevne IDen inn til det noverande rommet",
+ "Joins room with given alias": "Gjeng inn i eit rom med det gjevne aliaset",
+ "Leave room": "Far frå rommet",
+ "Unrecognised room alias:": "Ukjend romalias:",
+ "Kicks user with given id": "Sparkar brukarar med gjeven ID",
+ "Bans user with given id": "Stengjer brukarar med den gjevne IDen ute",
+ "Unbans user with given id": "Slepp utestengde brukarar med den gjevne IDen inn at",
+ "Ignores a user, hiding their messages from you": "Overser ein brukar, slik at meldingane deira ikkje synast for deg",
+ "Ignored user": "Oversedd brukar",
+ "You are now ignoring %(userId)s": "Du overser no %(userId)s",
+ "Stops ignoring a user, showing their messages going forward": "Sluttar å oversjå ein brukar, slik at meldingane deira no kan sjåast",
+ "Unignored user": "Avoversedd brukar",
+ "You are no longer ignoring %(userId)s": "Du overser ikkje %(userId)s no lenger",
+ "Define the power level of a user": "Set ein brukar si makthøgd",
+ "This email address is already in use": "Denne emailadressa er allereie i bruk",
+ "The platform you're on": "Platformen du er på",
+ "Failed to verify email address: make sure you clicked the link in the email": "Fekk ikkje til å godkjenna emailadressa: sjå til at du klikka på den rette lenkja i emailen",
+ "Your identity server's URL": "Din identitetstenar si nettadresse",
+ "Every page you use in the app": "Alle sider du brukar i æppen",
+ "e.g. ": "t.d. ",
+ "Your User Agent": "Din Brukaragent",
+ "Analytics": "Statistikk",
+ "Unable to capture screen": "Kunne ikkje visa skjerm",
+ "Existing Call": "Samtale er i gang",
+ "To use it, just wait for autocomplete results to load and tab through them.": "For å bruka han, vent på at resultata fyller seg ut og tab gjennom dei.",
+ "Deops user with given id": "AvOPar brukarar med den gjevne IDen",
+ "Opens the Developer Tools dialog": "Opnar Utviklarverktøy-tekstboksen",
+ "Verifies a user, device, and pubkey tuple": "Godkjenner ein brukar, eining og pubkey tuple",
+ "Unverify": "Fjern godkjenning",
+ "Verify...": "Godkjenn...",
+ "Which officially provided instance you are using, if any": "Kva offisielt gjevne instanse du brukar, viss nokon",
+ "The remote side failed to pick up": "Den andre sida tok ikkje røret",
+ "Unknown (user, device) pair:": "Ukjend (brukar, eining)-par:",
+ "Device already verified!": "Eininga er allereie godkjend!",
+ "WARNING: Device already verified, but keys do NOT MATCH!": "ÅTVARING: Eininga er allereie godkjend, men nyklane SAMSVARER IKKJE!",
+ "Verified key": "Godkjend nykel",
+ "Displays action": "Visar handlingar",
+ "Unrecognised command:": "Ukjend påbod:",
+ "Reason": "Grunnlag",
+ "%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s sa ja til innbydinga frå %(displayName)s.",
+ "%(targetName)s accepted an invitation.": "%(targetName)s sa ja til ei innbyding.",
+ "%(senderName)s requested a VoIP conference.": "%(senderName)s bad om ei VoIP-gruppesamtale.",
+ "%(senderName)s invited %(targetName)s.": "%(senderName)s baud %(targetName)s inn.",
+ "%(senderName)s banned %(targetName)s.": "%(senderName)s stengde %(targetName)s ute.",
+ "%(oldDisplayName)s changed their display name to %(displayName)s.": "%(oldDisplayName)s endra visingsnamnet sitt til %(displayName)s.",
+ "%(senderName)s set their display name to %(displayName)s.": "%(senderName)s sette visingsnamnet sitt som %(displayName)s.",
+ "%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName)s fjerna visingsnamnet sitt (%(oldDisplayName)s).",
+ "%(senderName)s removed their profile picture.": "%(senderName)s fjerna profilbiletet sitt.",
+ "%(senderName)s changed their profile picture.": "%(senderName)s endra profilbiletet sitt.",
+ "%(senderName)s set a profile picture.": "%(senderName)s sette seg eit profilbilete.",
+ "VoIP conference started.": "Ei VoIP-gruppesamtale starta.",
+ "%(targetName)s joined the room.": "%(targetName)s kom inn i rommet.",
+ "VoIP conference finished.": "VoIP-gruppesamtale enda.",
+ "%(targetName)s rejected the invitation.": "%(targetName)s sa nei til innbydinga.",
+ "%(targetName)s left the room.": "%(targetName)s gjekk frå rommet.",
+ "%(senderName)s unbanned %(targetName)s.": "%(senderName)s fjerna utestenginga til %(targetName)s.",
+ "%(senderName)s kicked %(targetName)s.": "%(senderName)s sparka %(targetName)s ut.",
+ "%(senderName)s withdrew %(targetName)s's invitation.": "%(senderName)s tok attende %(targetName)s si innbyding.",
+ "%(senderDisplayName)s changed the topic to \"%(topic)s\".": "%(senderDisplayName)s gjorde emnet om til \"%(topic)s\".",
+ "%(senderDisplayName)s removed the room name.": "%(senderDisplayName)s fjerna romnamnet.",
+ "%(senderDisplayName)s changed the room name to %(roomName)s.": "%(senderDisplayName)s gjorde romnamnet om til %(roomName)s.",
+ "%(senderDisplayName)s sent an image.": "%(senderDisplayName)s sende eit bilete.",
+ "Someone": "Nokon",
+ "(not supported by this browser)": "(ikkje støtta av denne nettlesaren)",
+ "%(senderName)s answered the call.": "%(senderName)s tok røret.",
+ "(could not connect media)": "(klarte ikkje å kopla opp media)",
+ "(no answer)": "(inkje svar)",
+ "(unknown failure: %(reason)s)": "(ukjend mislukking: %(reason)s)",
+ "%(senderName)s ended the call.": "%(senderName)s enda samtala.",
+ "%(senderName)s placed a %(callType)s call.": "%(senderName)s starta ei %(callType)s-samtale.",
+ "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "%(senderName)s baud %(targetDisplayName)s inn til rommet.",
+ "%(senderName)s made future room history visible to all room members, from the point they are invited.": "%(senderName)s gjorde slik at den framtidige romhistoria er tilgjengeleg for alle rommedlemer frå då dei vart innbodne.",
+ "%(senderName)s made future room history visible to all room members, from the point they joined.": "%(senderName)s gjorde slik at den framtidige romhistoria er tilgjengeleg for alle rommedlemer frå då dei kom inn.",
+ "%(senderName)s made future room history visible to all room members.": "%(senderName)s gjorde den framtidige romhistoria tilgjengeleg for alle rommedlemer.",
+ "%(senderName)s made future room history visible to anyone.": "%(senderName)s gjorde den framtidige romhistoria tilgjengelg for kven som helst.",
+ "%(senderName)s made future room history visible to unknown (%(visibility)s).": "%(senderName)s gjorde den framtidige romhistoria tilgjengeleg til ukjende (%(visibility)s).",
+ "%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).": "%(senderName)s skrudde ende-til-ende-kryptering på (%(algorithm)s-algoritmen).",
+ "%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s frå %(fromPowerLevel)s til %(toPowerLevel)s",
+ "%(senderName)s changed the power level of %(powerLevelDiffText)s.": "%(senderName)s endra makthøgda til %(powerLevelDiffText)s.",
+ "%(senderName)s changed the pinned messages for the room.": "%(senderName)s endra dei festa meldingane i rommet.",
+ "%(widgetName)s widget modified by %(senderName)s": "%(widgetName)s-widget endra av %(senderName)s",
+ "%(widgetName)s widget added by %(senderName)s": "%(widgetName)s-widget lagt til av %(senderName)s",
+ "%(widgetName)s widget removed by %(senderName)s": "%(widgetName)s widget fjerna av %(senderName)s",
+ "%(displayName)s is typing": "%(displayName)s skriv",
+ "%(names)s and %(count)s others are typing|other": "%(names)s og %(count)s til skriv",
+ "%(names)s and %(count)s others are typing|one": "%(names)s og ein til skriv",
+ "%(names)s and %(lastPerson)s are typing": "%(names)s og %(lastPerson)s skriv",
+ "Failure to create room": "Klarte ikkje å laga rommet",
+ "Server may be unavailable, overloaded, or you hit a bug.": "tenaren er kanskje utilgjengeleg, overlasta elles so traff du ein bøgg.",
+ "Send anyway": "Send same kva",
+ "Send": "Send",
+ "Unnamed Room": "Rom utan Namn",
+ "Your browser does not support the required cryptography extensions": "Nettlesaren din støttar ikkje dei naudsynte kryptografiske utvidingane",
+ "Not a valid Riot keyfile": "Ikkje ei gyldig Riot-nykelfil",
+ "Authentication check failed: incorrect password?": "Autentifiseringssjekk mislukkast: urett passord?",
+ "Failed to join room": "Fekk ikkje til å gå inn i rom",
+ "Message Pinning": "Meldingsfesting",
+ "Disable Emoji suggestions while typing": "Skru emojiframlegg av mens ein skriv",
+ "Use compact timeline layout": "Bruk smal tidslinjeutforming",
+ "Hide removed messages": "Gøym fjerna meldingar",
+ "Hide join/leave messages (invites/kicks/bans unaffected)": "Gøym vert med/fór ut-meldingar (innbydingar, utspark, utestengingar påverkast ikkje)",
+ "Hide avatar changes": "Gøym avatarendringar",
+ "Hide display name changes": "Gøym visingsnamn-endringar",
+ "Show timestamps in 12 hour format (e.g. 2:30pm)": "Vis tidspunkt i 12-timarsform (t.d. 2:30pm)",
+ "Always show message timestamps": "Vis alltid meldingstidspunkt",
+ "Autoplay GIFs and videos": "Spel av GIFar og videoar med ein gong",
+ "Always show encryption icons": "Vis alltid enkrypteringsikon",
+ "Hide avatars in user and room mentions": "Gøym avatarar i brukar- og romnemningar",
+ "Disable big emoji in chat": "Skru store emojiar i nettprat av",
+ "Don't send typing notifications": "Ikkje send skrivevarsel",
+ "Disable Notifications": "Skru Varsel av",
+ "Enable Notifications": "Skru Varsel på",
+ "Automatically replace plain text Emoji": "Erstatt Emojiar i plaintekst av seg sjølv",
+ "Mirror local video feed": "Spegl den lokale videofeeden",
+ "Disable Community Filter Panel": "Skru Samfunnsfilterpanel av",
+ "Disable Peer-to-Peer for 1:1 calls": "Skru Peer-til-Peer for 1:1-samtaler av",
+ "Send analytics data": "Send statistikkdata",
+ "Never send encrypted messages to unverified devices from this device": "Send aldri enkrypterte meldingar til ugodkjende einingar frå denne eininga",
+ "Never send encrypted messages to unverified devices in this room from this device": "Send aldri enkrypterte meldingar til ugodkjende einingar i dette rommet frå denne eininga",
+ "Enable URL previews for this room (only affects you)": "Skru URL-førehandsvisingar på for dette rommet (påverkar deg aleine)",
+ "Enable URL previews by default for participants in this room": "Skru URL-førehandsvisingar på som utgangspunkt for deltakarar i dette rommet",
+ "Room Colour": "Romfarge",
+ "Enable widget screenshots on supported widgets": "Skru widget-skjermbilete på for støtta widget",
+ "Collecting app version information": "Samlar æppversjoninfo",
+ "Collecting logs": "Samlar loggar",
+ "Uploading report": "Lastar rapport opp",
+ "Waiting for response from server": "Ventar på svar frå tenaren",
+ "Messages containing my display name": "Meldingar som inneheld visingsnamnet mitt",
+ "Messages containing my user name": "Meldingar som inneheld brukarnamnet mitt",
+ "Messages in one-to-one chats": "Meldingar i ein-til-ein-samtaler",
+ "Messages in group chats": "Meldingar i gruppesamtaler",
+ "When I'm invited to a room": "Når eg er bode inn til eit rom",
+ "Call invitation": "Samtaleinnbyding",
+ "Messages sent by bot": "Meldingar sendt frå ein bot",
+ "Active call (%(roomName)s)": "Pågåande samtale (%(roomName)s)",
+ "unknown caller": "ukjend ringar",
+ "Incoming voice call from %(name)s": "%(name)s ynskar ei stemmesamtale",
+ "Incoming video call from %(name)s": "%(name)s ynskar ei videosamtale",
+ "Incoming call from %(name)s": "%(name)s ynskar ei samtale",
+ "Decline": "Sei nei",
+ "Accept": "Sei ja",
+ "Error": "Noko gjekk gale",
+ "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "Ei tekstmelding vart send til +%(msisdn)s. Ver venleg og skriv inn godkjenningskoden ho inneheld",
+ "Incorrect verification code": "Urett godkjenningskode",
+ "Enter Code": "Skriv inn Koden",
+ "Submit": "Send inn",
+ "Phone": "Telefon",
+ "Add phone number": "Legg til telefonnummer",
+ "Add": "Legg til",
+ "Failed to upload profile picture!": "Fekk ikkje til å lasta opp profilbilete!",
+ "Upload new:": "Last opp ny:",
+ "No display name": "Inkje visingsnamn",
+ "New passwords don't match": "Dei nye passorda samsvarar ikkje",
+ "Passwords can't be empty": "Passordsfelta kan ikkje vera tomme",
+ "Warning!": "Åtvaring!",
+ "Continue": "Gå fram",
+ "Do you want to set an email address?": "Vil du setja ei emailadresse?",
+ "Current password": "Noverande passord",
+ "Password": "Passord",
+ "New Password": "Nytt Passord",
+ "Confirm password": "Godkjenn passord",
+ "Change Password": "Endra Passord",
+ "Your home server does not support device management.": "Heimtenaren din støttar ikkje einingshandsaming.",
+ "Unable to load device list": "Klarte ikkje å lasta einingslista",
+ "Authentication": "Godkjenning",
+ "Delete %(count)s devices|other": "Slett %(count)s einingar",
+ "Delete %(count)s devices|one": "Slett eining",
+ "Device ID": "EiningsID",
+ "Device Name": "Einingsnamn",
+ "Last seen": "Sist sedd",
+ "Select devices": "Vel einingar",
+ "Failed to set display name": "Fekk ikkje til å setja visingsnamn",
+ "Error saving email notification preferences": "Klarte ikkje å lagra foretrukne emailvarselinnstillingar",
+ "An error occurred whilst saving your email notification preferences.": "Noko gjekk gale med lagringa av dine foretrukne emailvarselinstillingar.",
+ "Keywords": "Nykelord",
+ "Enter keywords separated by a comma:": "Skriv inn nykelord med komma imellom:",
+ "OK": "Greitt",
+ "Failed to change settings": "Klarte ikkje å endra innstillingar",
+ "Can't update user notification settings": "Kan ikkje oppdatera brukarvarselinstillingar",
+ "Failed to update keywords": "Fekk ikkje til å oppdatera nykelord",
+ "Messages containing keywords": "Meldingar som inneheld nykelord",
+ "Notify for all other messages/rooms": "Varsl for alle andre meldingar/rom",
+ "Notify me for anything else": "Varsl meg for kva som helst anna",
+ "Enable notifications for this account": "Skru varsel på for denne brukaren",
+ "All notifications are currently disabled for all targets.": "Alle varsel er for augeblunket skrudd av for alle mål.",
+ "Add an email address above to configure email notifications": "Legg til ein emailadresse i feltet over for å endra emailvarselinnstillingar",
+ "Enable email notifications": "Skru emailvarsel på",
+ "Notifications on the following keywords follow rules which can’t be displayed here:": "Varsel på følgjande nykelord følgjer reglar som ikkje kan visast her:",
+ "Unable to fetch notification target list": "Klarte ikkje å henta varselmållista",
+ "Notification targets": "Varselmål",
+ "Advanced notification settings": "Omfattande varselinnstillingar",
+ "There are advanced notifications which are not shown here": "Det er omfattande varsel som ikkje er vist her",
+ "Enable desktop notifications": "Skru skrivebordsvarsel på",
+ "Show message in desktop notification": "Vis meldingen i eit skriverbordsvarsel",
+ "Enable audible notifications in web client": "Skru høyrlege varsel i nettklienten på",
+ "Off": "Av",
+ "On": "På",
+ "Noisy": "Bråket",
+ "Cannot add any more widgets": "Kan ikkje leggja fleire widgets til",
+ "Add a widget": "Legg til ein widget",
+ "Drop File Here": "Slepp Fila Her",
+ "Drop file here to upload": "Slipp ein fil her for å lasta opp",
+ " (unsupported)": " (ustøtta)",
+ "Join as voice or video.": "Gå inn som røyst eller video.",
+ "Ongoing conference call%(supportedText)s.": "Ein gruppesamtale er i gang%(supportedText)s.",
+ "This event could not be displayed": "Denne hendingen kunne ikkje visast",
+ "%(senderName)s sent an image": "%(senderName)s sende eit bilete",
+ "%(senderName)s sent a video": "%(senderName)s sende ein video",
+ "%(senderName)s uploaded a file": "%(senderName)s lasta ei fil opp",
+ "Options": "Innstillingar",
+ "Your key share request has been sent - please check your other devices for key share requests.": "Nykeldelingsforespurnaden din vart send - ver venleg og sjekk dei andre einingane dine for nykeldelingsforespurnadar.",
+ "If your other devices do not have the key for this message you will not be able to decrypt them.": "Viss dei andre einingane dine ikkje har nykelen til denne meldinga kan du ikkje dekryptera dei.",
+ "Key request sent.": "Nykelforespurnad er send.",
+ "Re-request encryption keys from your other devices.": "Spør på nytt om enkrypteringsnykel frå dei andre einingane dine.",
+ "Undecryptable": "Kan ikkje dekrypterast",
+ "Encrypting": "Enkryptering er i gang",
+ "Encrypted, not sent": "Enkryptert, men ikkje send",
+ "Encrypted by a verified device": "Enkryptert av ei godkjent eining",
+ "Encrypted by an unverified device": "Enkryptert av ei ikkje-godkjent eining",
+ "Unencrypted message": "Ikkje-enkryptert melding",
+ "Please select the destination room for this message": "Ver venleg og vel målrommet for denne meldinga",
+ "Blacklisted": "Svartelista",
+ "Verified": "Godkjend",
+ "Unverified": "Ikkje-godkjend",
+ "device id: ": "einingsID: ",
+ "Disinvite": "Fjern innbyding",
+ "Kick": "Spark ut",
+ "Disinvite this user?": "Fjern innbydinga til denne brukaren?",
+ "Kick this user?": "Spark denne brukaren ut?",
+ "Failed to kick": "Fekk ikkje til å sparka ut",
+ "Unban": "Slepp inn att",
+ "Ban": "Utesteng",
+ "Unban this user?": "Slepp denne brukaren inn att?",
+ "Ban this user?": "Utesteng denne brukaren?",
+ "Failed to ban user": "Fekk ikkje til å utestenga brukar",
+ "Demote yourself?": "Senk høgda di?",
+ "You will not be able to undo this change as you are demoting yourself, if you are the last privileged user in the room it will be impossible to regain privileges.": "Du kan ikkje gjera om på denne endringa sidan du senkar høgda di. Viss du er den siste opphøgda brukaren i rommet vert det umogeleg å få høgda att.",
+ "Demote": "Senk høgda",
+ "Failed to mute user": "Fekk ikkje til å stilne brukar",
+ "Failed to toggle moderator status": "Fekk ikkje til å veksla moderatorhøgd",
+ "Failed to change power level": "Fekk ikkje til å endra makthøgda",
+ "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "Du kjem ikkje til å kunna gjera om på denne endringa sidan du set brukaren si høgd opp til di eiga.",
+ "Are you sure?": "Er du sikker?",
+ "No devices with registered encryption keys": "Inga einingar med oppskrivne enkrypteringsnykler",
+ "Devices": "Einingar",
+ "Unignore": "Slutt å oversjå",
+ "Ignore": "Oversjå",
+ "Mention": "Nemn",
+ "Invite": "Byd inn",
+ "Enable inline URL previews by default": "Skru URL-førehandsvisingar i tekstfeltet på",
+ "Share Link to User": "Del Lenkje til Brukar",
+ "User Options": "Brukarinnstillingar",
+ "Direct chats": "Direktesamtaler",
+ "Unmute": "Fjern stilning",
+ "Mute": "Stiln",
+ "Revoke Moderator": "Fjern Moderatorrett",
+ "Make Moderator": "Gjer til Moderator",
+ "Admin Tools": "Administratorverktøy",
+ "Level:": "Høgd:",
+ "and %(count)s others...|other": "og %(count)s til...",
+ "and %(count)s others...|one": "og ein til...",
+ "Invited": "Innboden",
+ "%(userName)s (power %(powerLevelNumber)s)": "%(userName)s (makthøgd %(powerLevelNumber)s)",
+ "bold": "feit",
+ "italic": "skeiv",
+ "deleted": "sletta",
+ "underlined": "understreka",
+ "bulleted-list": "punktliste",
+ "numbered-list": "talliste",
+ "Attachment": "Vedlegg",
+ "At this time it is not possible to reply with a file so this will be sent without being a reply.": "Det er førebels ikkje mogeleg å svara med ei fil, so dette vil verta send utan å vera eit svar.",
+ "Upload Files": "Last opp Filer",
+ "Are you sure you want to upload the following files?": "Er du sikker på at du vil lasta opp dei følgjande filene?",
+ "Encrypted room": "Enkryptert rom",
+ "Unencrypted room": "Ikkje-enkrypert rom",
+ "Hangup": "Legg på",
+ "Voice call": "Røystesamtale",
+ "Video call": "Videosamtale",
+ "Upload file": "Last ei fil opp",
+ "Show Text Formatting Toolbar": "Vis Tekstformverktøylinje",
+ "Send an encrypted reply…": "Send eit enkryptert svar…",
+ "Send a reply (unencrypted)…": "Send eit svar (ikkje-enkryptert)…",
+ "Send an encrypted message…": "Send ei enkryptert melding…",
+ "Send a message (unencrypted)…": "Send ei melding (ikkje-enkryptert)…",
+ "You do not have permission to post to this room": "Du har ikkje tillating til å sende meldingar i dette rommet",
+ "Turn Markdown on": "Skru Mardown på",
+ "Turn Markdown off": "Skru Markdown av",
+ "Hide Text Formatting Toolbar": "Gøym Tekstformverktøylinje",
+ "Server error": "Noko gjekk gale med tenaren",
+ "Server unavailable, overloaded, or something else went wrong.": "tenaren var utilgjengeleg, overlasta, elles so gjekk noko anna galt.",
+ "Command error": "Noko gjekk gale med påbodet",
+ "The maximum permitted number of widgets have already been added to this room.": "Det største mogelege talet widgets finst allereie på dette rommet.",
+ "Unable to reply": "Klarte ikkje å svara",
+ "At this time it is not possible to reply with an emote.": "Det er førebels ikkje mogeleg å svara med ein emote.",
+ "Markdown is disabled": "Markdown er skrudd av",
+ "Markdown is enabled": "Markdown er skrudd på",
+ "Unpin Message": "Tak ned festa Melding",
+ "Jump to message": "Hopp til melding",
+ "No pinned messages.": "Inga festa meldingar.",
+ "Loading...": "Lastar...",
+ "Pinned Messages": "Festa Meldingar",
+ "%(duration)ss": "%(duration)ss",
+ "%(duration)sm": "%(duration)sm",
+ "%(duration)sh": "%(duration)st",
+ "%(duration)sd": "%(duration)sd",
+ "Online for %(duration)s": "På nett i %(duration)s",
+ "Idle for %(duration)s": "Fråverande i %(duration)s",
+ "Offline for %(duration)s": "Av nett i %(duration)s",
+ "Unknown for %(duration)s": "Ukjend i %(duration)s",
+ "Online": "På nett",
+ "Idle": "Fråverande",
+ "Offline": "Av nett",
+ "Unknown": "Ukjend",
+ "Seen by %(userName)s at %(dateTime)s": "%(userName)s såg dette %(dateTime)s",
+ "Seen by %(displayName)s (%(userName)s) at %(dateTime)s": "%(displayName)s %(userName)s såg dette %(dateTime)s",
+ "Replying": "Svarar",
+ "No rooms to show": "Inkje rom å visa",
+ "Unnamed room": "Rom utan namn",
+ "Guests can join": "Gjester kan koma inn",
+ "Failed to set avatar.": "Fekk ikkje til å setja avatar.",
+ "Save": "Lagra",
+ "(~%(count)s results)|other": "(~%(count)s resultat)",
+ "(~%(count)s results)|one": "(~%(count)s resultat)",
+ "Join Room": "Far inn i Rom",
+ "Upload avatar": "Last avatar opp",
+ "Remove avatar": "Fjern avatar",
+ "Settings": "Innstillingar",
+ "Forget room": "Gløym rom",
+ "Search": "Søk",
+ "Share room": "Del rom",
+ "Drop here to favourite": "Slepp her for å gjera til yndling",
+ "Drop here to restore": "Slepp her for å gjenoppretta",
+ "Drop here to demote": "Slepp her for å senke i høgd",
+ "Press to start a chat with someone": "Trykk på for å starta ei samtale med nokon",
+ "You're not in any rooms yet! Press to make a room or to browse the directory": "Du er enno ikkje i eit rom! Trykk på for å laga eit rom eller for å sjå gjennom utvalet",
+ "Community Invites": "Samfunnsinnbydingar",
+ "Invites": "Innbydingar",
+ "Favourites": "Yndlingar",
+ "People": "Folk",
+ "Rooms": "Rom",
+ "Low priority": "Lågrett",
+ "System Alerts": "Systemvarsel",
+ "You have no historical rooms": "Du har inkje historiske rom",
+ "Historical": "Historiske",
+ "Unable to ascertain that the address this invite was sent to matches one associated with your account.": "Klarte ikkje å forsikra at adressa som denne innbydinga er send til samsvarar med den som er tilknytta brukaren din.",
+ "This invitation was sent to an email address which is not associated with this account:": "Denne invitasjonen er send til ei emailadressa som ikkje er tilknytta denne brukaren:",
+ "You may wish to login with a different account, or add this email to this account.": "Kanskje du ynskar å logga inn med ein anna brukar, eller leggja til denne emailen til denne brukaren.",
+ "You have been invited to join this room by %(inviterName)s": "Du vart boden inn i dette rommet av %(inviterName)s",
+ "Would you like to accept or decline this invitation?": "Vil du seia ja eller nei til denne innbydinga?",
+ "Reason: %(reasonText)s": "Grunnlag: %(reasonText)s",
+ "Rejoin": "Far inn att",
+ "You have been kicked from %(roomName)s by %(userName)s.": "Du vart sparka ut frå %(roomName)s av %(userName)s.",
+ "You have been kicked from this room by %(userName)s.": "Du vart sparka ut frå dette rommet av %(userName)s.",
+ "You have been banned from %(roomName)s by %(userName)s.": "Du vart stengd ute frå %(roomName)s av %(userName)s.",
+ "You have been banned from this room by %(userName)s.": "Du vart stengd ute frå dette rommet av %(userName)s.",
+ "This room": "Dette rommet",
+ "%(roomName)s does not exist.": "%(roomName)s finst ikkje.",
+ "%(roomName)s is not accessible at this time.": "%(roomName)s er ikkje tilgjengeleg no.",
+ "You are trying to access %(roomName)s.": "Du prøver å gå inn i %(roomName)s.",
+ "You are trying to access a room.": "Du prøver å gå inn i eit rom.",
+ "Click here to join the discussion!": "Klikk her for å verta med i meiningsutvekslinga!",
+ "This is a preview of this room. Room interactions have been disabled": "Dette er ei førehandsvising av dette rommet. Romhandlingar er skrudd av",
+ "To change the room's avatar, you must be a": "For å endra rommet sin avatar må du vera ein",
+ "To change the room's name, you must be a": "For å endra rommet sitt namn må du vera ein",
+ "To change the room's main address, you must be a": "For å endra rommet si hovudadresse må du vera ein",
+ "To change the room's history visibility, you must be a": "For å endra synlegheita på romhistoria må du vera ein",
+ "To change the permissions in the room, you must be a": "For å endra tillatingane i rommet må du vera ein",
+ "To change the topic, you must be a": "For å endra emnet må du vera ein",
+ "To modify widgets in the room, you must be a": "For å endra widgetar i rommet må du vera ein",
+ "Failed to unban": "Fekk ikkje til å lata inn att",
+ "Banned by %(displayName)s": "Stengd ute av %(displayName)s",
+ "Privacy warning": "Personvernsåtvaring",
+ "Changes to who can read history will only apply to future messages in this room": "Endringar i kven som kan lesa historia gjeld berre for framtidige meldingar i dette rommet",
+ "The visibility of existing history will be unchanged": "Synlegheita på den noverande historia vert ikkje endra",
+ "unknown error code": "ukjend errorkode",
+ "Failed to forget room %(errCode)s": "Fekk ikkje til å gløyma rommet %(errCode)s",
+ "End-to-end encryption is in beta and may not be reliable": "Ende-til-ende-enkryptering er i betautgåve og er kanskje ikkje påliteleg",
+ "You should not yet trust it to secure data": "Du bør førebels ikkje stole på at ho kan sikra data",
+ "Devices will not yet be able to decrypt history from before they joined the room": "Einingar kan førebels ikkje dekryptera historia frå før dei kom inn i rommet",
+ "Once encryption is enabled for a room it cannot be turned off again (for now)": "Når enkryptering er skrudd på i eit rom kan ho (førebels) ikkje skruast av att",
+ "Encrypted messages will not be visible on clients that do not yet implement encryption": "Enkrypterte meldingar visast ikkje hjå klientar som førebels ikkje implementerar enkryptering",
+ "Enable encryption": "Skru enkryptering på",
+ "(warning: cannot be disabled again!)": "(åtvaring: kan ikkje skruast av att!)",
+ "Encryption is enabled in this room": "Enkryptering er skrudd på i dette rommet",
+ "Encryption is not enabled in this room": "Enkryptering er ikkje skrudd på i dette rommet",
+ "The default role for new room members is": "Rolla nye medlemer har i utgangspunktet er",
+ "To send messages, you must be a": "For å senda meldingar må du vera ein",
+ "To invite users into the room, you must be a": "For å byda brukarar inn til rommet må du vera ein",
+ "To configure the room, you must be a": "For å stille rommet inn må du vera ein",
+ "To kick users, you must be a": "For å sparka brukarar ut må du vera ein",
+ "To ban users, you must be a": "For å stengja brukarar ute må du vera ein",
+ "To remove other users' messages, you must be a": "For å fjerna andre brukarar sine meldingar må du vera ein",
+ "To notify everyone in the room, you must be a": "For å varsla alle i rommet må du vera ein",
+ "No users have specific privileges in this room": "Ingen brukarar har særeigne rettar i dette rommet",
+ "%(user)s is a %(userRole)s": "%(user)s er ein %(userRole)s",
+ "Privileged Users": "Brukarar med Særrett",
+ "Muted Users": "Stilna Brukarar",
+ "Banned users": "Utestengde Brukarar",
+ "Favourite": "Yndling",
+ "Tagged as: ": "Merka som: ",
+ "To link to a room it must have an address.": "For å lenkja til eit rom må det ha ei adresse.",
+ "Guests cannot join this room even if explicitly invited.": "Gjester kan ikkje koma inn i dette rommet sjølv viss dei er særleg innbodne.",
+ "Click here to fix": "Klikk her for å retta opp i det",
+ "To send events of type , you must be a": "For å senda hendingar av sorten må du vera ein",
+ "Who can access this room?": "Kven har tilgang til rommet?",
+ "Only people who have been invited": "Berre dei som er bodne inn",
+ "Anyone who knows the room's link, apart from guests": "Nokon som kjenner lenkja til rommet, sett vekk frå gjester",
+ "Anyone who knows the room's link, including guests": "Nokon som kjenner lenkja til rommet, gjester òg",
+ "Publish this room to the public in %(domain)s's room directory?": "Gjer dette rommet offentleg i %(domain)s sitt romutval?",
+ "Who can read history?": "Kven kan lesa historia?",
+ "Anyone": "Kven som helst",
+ "Members only (since the point in time of selecting this option)": "Berre medlemer (frå då denne innstillinga vert skrudd på)",
+ "Members only (since they were invited)": "Berre medlemmer (frå då dei vart bodne inn)",
+ "Members only (since they joined)": "Berre medlemer (frå då dei kom inn)",
+ "Permissions": "Tillatinger",
+ "Advanced": "Omfattande",
+ "This room's internal ID is": "Dette rommets innvendes ID er",
+ "Add a topic": "Legg eit emne til",
+ "Search…": "Søk…",
+ "This Room": "Dette Rommet",
+ "All Rooms": "Alle Rom",
+ "Cancel": "Bryt av",
+ "You don't currently have any stickerpacks enabled": "Du har for tida ikkje skrudd nokre klistremerkepakkar på",
+ "Add a stickerpack": "Legg ei klistremerkepakke til",
+ "Stickerpack": "Klistremerkepakke",
+ "Hide Stickers": "Gøym Klistremerkar",
+ "Show Stickers": "Vis Klistremerkar",
+ "Scroll to unread messages": "Blad til ulesne meldingar",
+ "Jump to first unread message.": "Hopp til den fyrste ulesne meldinga.",
+ "Close": "Lukk",
+ "Invalid alias format": "Ugangbar aliasform",
+ "'%(alias)s' is not a valid format for an alias": "'%(alias)s' er ikkje ei gangbar aliasform",
+ "Invalid address format": "Ugangbar adresseform",
+ "'%(alias)s' is not a valid format for an address": "'%(alias)s' er ikkje ei gangbar adresseform",
+ "not set": "ikkje sett",
+ "Remote addresses for this room:": "Fjernadresser for dette rommet:",
+ "Addresses": "Adresser",
+ "The main address for this room is": "Hovudadressa for dette rommet er",
+ "Local addresses for this room:": "Lokaladresser for dette rommet:",
+ "This room has no local addresses": "Dette rommer har ingen lokaladresser",
+ "New address (e.g. #foo:%(localDomain)s)": "Ny adresse (t.d. #foo:%(localDomain)s)",
+ "Invalid community ID": "Ugangbar samfunnsID",
+ "'%(groupId)s' is not a valid community ID": "'%(groupId)s' er ikkje ein gangbar samfunnsID",
+ "Flair": "Særpreg",
+ "Showing flair for these communities:": "Viser særpreg for desse samfunna:",
+ "This room is not showing flair for any communities": "Dette rommet viser ikkje særpreg for nokre samfunn",
+ "New community ID (e.g. +foo:%(localDomain)s)": "Ny samfunnsID (t.d. +foo:%(localDomain)s)",
+ "You have enabled URL previews by default.": "Du har skrudd URL-førehandsvisingar på i utgangspunktet.",
+ "You have disabled URL previews by default.": "Du har skrudd URL-førehandsvisingar av i utgangspunktet.",
+ "URL previews are enabled by default for participants in this room.": "URL-førehandsvisingar er skrudd på i utgangspunktet for dette rommet.",
+ "URL previews are disabled by default for participants in this room.": "URL-førehandsvisingar er skrudd av i utgangspunktet for dette rommet.",
+ "In encrypted rooms, like this one, URL previews are disabled by default to ensure that your homeserver (where the previews are generated) cannot gather information about links you see in this room.": "I enkrypterte rom, slik som denne, er URL-førehandsvisingar skrudd av i utgangspunktet for å forsikra at heimtenaren din (der førehandsvisinger lagast) ikkje kan samla informasjon om lenkjer som du ser i dette rommet.",
+ "URL Previews": "URL-førehandsvisingar",
+ "Sunday": "søndag",
+ "Monday": "måndag",
+ "Tuesday": "tysdag",
+ "Wednesday": "onsdag",
+ "Thursday": "torsdag",
+ "Friday": "fredag",
+ "Saturday": "laurdag",
+ "Today": "i dag",
+ "Yesterday": "i går",
+ "Error decrypting audio": "Noko gjekk gale med ljoddekrypteringa",
+ "Error decrypting attachment": "Noko gjekk gale med vedleggsdekrypteringa",
+ "Decrypt %(text)s": "Dekrypter %(text)s",
+ "Download %(text)s": "Last %(text)s ned",
+ "Invalid file%(extra)s": "Ugangbar fil%(extra)s",
+ "Error decrypting image": "Noko gjekk gale med biletedekrypteringa",
+ "Error decrypting video": "Noko gjekk gale med videodekrypteringa",
+ "%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s endra avataren til %(roomName)s",
+ "%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s fjerna romavataren.",
+ "%(senderDisplayName)s changed the room avatar to ": "%(senderDisplayName)s endra romavataren til ",
+ "Copied!": "Kopiert!",
+ "Failed to copy": "Noko gjekk gale med kopieringa",
+ "Removed or unknown message type": "Fjerna eller ukjend meldingssort",
+ "Message removed by %(userId)s": "Meldinga vart fjerna av %(userId)s",
+ "Message removed": "Meldinga vart fjerna",
+ "Robot check is currently unavailable on desktop - please use a web browser": "Robotsjekk er førebels ikkje tilgjengeleg på skrivebordet - ver venleg og bruk ein nettlesar",
+ "This Home Server would like to make sure you are not a robot": "Denne heimtenaren ynskar å forsikra seg om at du ikkje er ein robot",
+ "Sign in with CAS": "Logg inn med CAS",
+ "This allows you to use this app with an existing Matrix account on a different home server.": "Dette tillèt deg å bruka denne æppen med ein Matrixbrukar som allereie finst på ein annan heimtenar.",
+ "You can also set a custom identity server but this will typically prevent interaction with users based on email address.": "Du kan i tillegg setja ein eigen identitetstenar, men dette hindrar som regel samhandling med brukarar som brukar emailadresse.",
+ "Dismiss": "Avvis",
+ "To continue, please enter your password.": "For å gå fram, ver venleg og skriv passordet ditt inn.",
+ "Password:": "Passord:",
+ "An email has been sent to %(emailAddress)s": "En email vart send til %(emailAddress)s",
+ "Please check your email to continue registration.": "Ver venleg og sjekk emailen din for å gå vidare med påmeldinga.",
+ "A text message has been sent to %(msisdn)s": "Ei tekstmelding vart send til %(msisdn)s",
+ "Please enter the code it contains:": "Ver venleg og skriv koden den inneheld inn:",
+ "Code": "Kode",
+ "Start authentication": "Byrj godkjenning",
+ "powered by Matrix": "Matrixdriven",
+ "The email field must not be blank.": "Emailfeltet kan ikkje vera tomt.",
+ "The user name field must not be blank.": "Brukarnamnfeltet kan ikkje vera tomt.",
+ "The phone number field must not be blank.": "Telefonnummerfeltet kan ikkje vera tomt.",
+ "The password field must not be blank.": "Passordfeltet kan ikkje vera tomt.",
+ "Username on %(hs)s": "Brukarnamn på %(hs)s",
+ "User name": "Brukarnamn",
+ "Mobile phone number": "Mobiltelefonnummer",
+ "Forgot your password?": "Gløymt passordet ditt?",
+ "%(serverName)s Matrix ID": "%(serverName)s Matrix-ID",
+ "Sign in with": "Logg inn med",
+ "Email address": "Emailadresse",
+ "Sign in": "Logg inn",
+ "If you don't specify an email address, you won't be able to reset your password. Are you sure?": "Viss du ikkje seier kva emailadresse du vil bruka vil du ikkje kunna attendestille passordet ditt. Er du sikker?",
+ "Email address (optional)": "Emailadresse (valfritt)",
+ "You are registering with %(SelectedTeamName)s": "Du melder deg på med %(SelectedTeamName)s",
+ "Mobile phone number (optional)": "Mobiltelefonnummer (valfritt)",
+ "Register": "Meld deg på",
+ "Default server": "Utgangspunkttenar",
+ "Home server URL": "Heimtenar-URL",
+ "Identity server URL": "Identitetstenar-URL",
+ "What does this mean?": "Kva tyder dette?",
+ "Remove from community": "Fjern frå samfunnet",
+ "Disinvite this user from community?": "Fjern denne brukaren si innbyding til samfunnet?",
+ "Remove this user from community?": "Fjern denne brukaren frå samfunnet?",
+ "Failed to withdraw invitation": "Fekk ikkje til å taka innbydinga att",
+ "Failed to remove user from community": "Fekk ikkje til å fjerna brukaren frå samfunnet",
+ "Flair will appear if enabled in room settings": "Særpreg dukkar opp viss det er skrudd på i rominnstillingar",
+ "Flair will not appear": "Særpreg dukkar ikkje opp",
+ "Are you sure you want to remove '%(roomName)s' from %(groupId)s?": "Er du sikker på at du vil fjerna '%(roomName)s' frå %(groupId)s?",
+ "Removing a room from the community will also remove it from the community page.": "Å fjerna eit rom frå samfunnet fjernar det frå samfunnssida òg.",
+ "Remove": "Fjern",
+ "Failed to remove room from community": "Fekk ikkje til å fjerna rommet frå samfunnet",
+ "Failed to remove '%(roomName)s' from %(groupId)s": "Fekk ikkje til å fjerna '%(roomName)s' frå %(groupId)s",
+ "Something went wrong!": "Noko gjekk gale!",
+ "The visibility of '%(roomName)s' in %(groupId)s could not be updated.": "Kunne ikkje oppdatera synligheita til '%(roomName)s' i %(groupId)s.",
+ "Visibility in Room List": "Synligheit i Romlista",
+ "Visible to everyone": "Synleg for alle",
+ "Only visible to community members": "Berre synleg for samfunnsmedlemer",
+ "Something went wrong when trying to get your communities.": "Noko gjekk gale med framhentinga av samfunna dine.",
+ "Display your community flair in rooms configured to show it.": "Vis samfunnssærpreget ditt i rom som er stilt inn til å visa det.",
+ "You're not currently a member of any communities.": "Du er for augeblunket ikkje medlem i nokre samfunn.",
+ "Yes, I want to help!": "Ja, eg vil vera til nytte!",
+ "You are not receiving desktop notifications": "Du fær ikkje nokre skrivebordsvarsel",
+ "Enable them now": "Skru dei på no",
+ "What's New": "Kva er nytt",
+ "Update": "Oppdatering",
+ "What's new?": "Kva er nytt?",
+ "A new version of Riot is available.": "Ei ny utgåve av Riot er tilgjengeleg.",
+ "To return to your account in future you need to set a password": "For å gå tilbake til brukaren din i framtida må du setja eit passord",
+ "Set Password": "Set Passord",
+ "Error encountered (%(errorDetail)s).": "Noko gjekk gale (%(errorDetail)s).",
+ "Checking for an update...": "Ser etter oppdateringar...",
+ "No update available.": "Inga oppdatering er tilgjengeleg.",
+ "Downloading update...": "Lastar oppdatering ned...",
+ "Warning": "Åtvaring",
+ "Unknown Address": "Ukjend Adresse",
+ "NOTE: Apps are not end-to-end encrypted": "MERK DEG: Æppar er ikkje ende-til-ende-enkrypterte",
+ "Warning: This widget might use cookies.": "Åtvaring: Denne widgeten brukar kanskje datakaker.",
+ "Do you want to load widget from URL:": "Vil du lasta widgeten frå URL:",
+ "Allow": "Tillat",
+ "Delete Widget": "Slett Widgeten",
+ "Deleting a widget removes it for all users in this room. Are you sure you want to delete this widget?": "Å sletta ein widget fjernar den for alle brukarane i rommet. Er du sikker på at du vil sletta denne widgeten?",
+ "Delete widget": "Slett widgeten",
+ "Failed to remove widget": "Fekk ikkje til å fjerna widgeten",
+ "An error ocurred whilst trying to remove the widget from the room": "Noko gjekk gale med fjerninga av widgeten frå rommet",
+ "Revoke widget access": "Tak widgeten sin tilgang att",
+ "Reload widget": "Last inn widget på nytt",
+ "Picture": "Bilete",
+ "Edit": "Gjer om",
+ "Create new room": "Lag nytt rom",
+ "Unblacklist": "Fjern frå svartelista",
+ "Blacklist": "Legg til i svartelista",
+ "No results": "Ingen resultat",
+ "Delete": "Slett",
+ "Communities": "Samfunn",
+ "Home": "Heim",
+ "You cannot delete this image. (%(code)s)": "Du kan ikkje sletta dette biletet. (%(code)s)",
+ "Uploaded on %(date)s by %(user)s": "Lasta opp %(date)s av %(user)s",
+ "Download this file": "Last denne fila ned",
+ "%(severalUsers)sjoined %(count)s times|other": "%(severalUsers)s har kome inn %(count)s gonger",
+ "%(severalUsers)sjoined %(count)s times|one": "%(severalUsers)s kom inn",
+ "%(oneUser)sjoined %(count)s times|other": "%(oneUser)s har kome inn %(count)s gonger",
+ "%(oneUser)sjoined %(count)s times|one": "%(oneUser)s kom inn",
+ "%(severalUsers)sleft %(count)s times|other": "%(severalUsers)s har fare %(count)s gonger",
+ "%(severalUsers)sleft %(count)s times|one": "%(severalUsers)s fór",
+ "%(oneUser)sleft %(count)s times|other": "%(oneUser)s har fare %(count)s gonger",
+ "%(oneUser)sleft %(count)s times|one": "%(oneUser)s fór",
+ "%(severalUsers)sjoined and left %(count)s times|other": "%(severalUsers)s har kome inn og fare att %(count)s gonger",
+ "%(severalUsers)sjoined and left %(count)s times|one": "%(severalUsers)s kom inn og fór",
+ "%(oneUser)sjoined and left %(count)s times|other": "%(oneUser)s har kome inn og fare att %(count)s gonger",
+ "%(oneUser)sjoined and left %(count)s times|one": "%(oneUser)s kom inn og fór",
+ "%(severalUsers)sleft and rejoined %(count)s times|other": "%(severalUsers)s har fare og kome inn att %(count)s gonger",
+ "%(severalUsers)sleft and rejoined %(count)s times|one": "%(severalUsers)s fór og kom inn att",
+ "%(oneUser)sleft and rejoined %(count)s times|other": "%(oneUser)s har fare og kome inn att %(count)s gonger",
+ "%(oneUser)sleft and rejoined %(count)s times|one": "%(oneUser)s fór og kom inn att",
+ "%(severalUsers)srejected their invitations %(count)s times|other": "%(severalUsers)s sa nei til innbydingane %(count)s gonger",
+ "%(severalUsers)srejected their invitations %(count)s times|one": "%(severalUsers)s sa nei til innbydingane",
+ "%(oneUser)srejected their invitation %(count)s times|other": "%(oneUser)s sa nei til innbydinga %(count)s gonger",
+ "%(oneUser)srejected their invitation %(count)s times|one": "%(oneUser)s sa nei til innbydinga",
+ "%(severalUsers)shad their invitations withdrawn %(count)s times|other": "%(severalUsers)s fekk innbydingane sine attekne %(count)s gonger",
+ "%(severalUsers)shad their invitations withdrawn %(count)s times|one": "%(severalUsers)s fekk innbydinga si attteke",
+ "%(oneUser)shad their invitation withdrawn %(count)s times|other": "%(oneUser)s fekk innbydinga si atteke %(count)s gonger",
+ "%(oneUser)shad their invitation withdrawn %(count)s times|one": "%(oneUser)s fekk innbydinga si atteke",
+ "were invited %(count)s times|other": "vart boden inn %(count)s gonger",
+ "were invited %(count)s times|one": "vart boden inn",
+ "was invited %(count)s times|other": "vart boden inn %(count)s gonger",
+ "was invited %(count)s times|one": "vart boden inn",
+ "were banned %(count)s times|other": "har vore stengd ute %(count)s gonger",
+ "were banned %(count)s times|one": "vart stengd ute",
+ "was banned %(count)s times|other": "har vore stengd ute %(count)s gonger",
+ "was banned %(count)s times|one": "vart stengd ute",
+ "were unbanned %(count)s times|other": "har vorta sloppe inn att %(count)s gonger",
+ "were unbanned %(count)s times|one": "vart sloppe inn att",
+ "was unbanned %(count)s times|other": "har vorte sloppe inn att %(count)s gonger",
+ "was unbanned %(count)s times|one": "vart sloppe inn att",
+ "were kicked %(count)s times|other": "har vorte sparka ut %(count)s gonger",
+ "were kicked %(count)s times|one": "vart sparka ut",
+ "was kicked %(count)s times|other": "har vorte sparka ut %(count)s gonger",
+ "was kicked %(count)s times|one": "vart sparka ut",
+ "%(severalUsers)schanged their name %(count)s times|other": "%(severalUsers)s har endra namna sine %(count)s gonger",
+ "%(severalUsers)schanged their name %(count)s times|one": "%(severalUsers)s endra namna sine",
+ "%(oneUser)schanged their name %(count)s times|other": "%(oneUser)s har endra namnet sitt %(count)s gonger",
+ "%(oneUser)schanged their name %(count)s times|one": "%(oneUser)s endra namnet sitt",
+ "%(severalUsers)schanged their avatar %(count)s times|other": "%(severalUsers)s har endra avatarane sine %(count)s gonger",
+ "%(severalUsers)schanged their avatar %(count)s times|one": "%(severalUsers)s endra avatarane sine",
+ "%(oneUser)schanged their avatar %(count)s times|other": "%(oneUser)s har endra avataren sin %(count)s gonger",
+ "%(oneUser)schanged their avatar %(count)s times|one": "%(oneUser)s endra avataren sin",
+ "%(items)s and %(count)s others|other": "%(items)s og %(count)s andre",
+ "%(items)s and %(count)s others|one": "%(items)s og ein til",
+ "%(items)s and %(lastItem)s": "%(items)s og %(lastItem)s",
+ "collapse": "Slå saman",
+ "expand": "Utvid",
+ "In reply to": "Som svar til",
+ "Room directory": "Romutval",
+ "Start chat": "Byrj samtale",
+ "And %(count)s more...|other": "Og %(count)s til...",
+ "ex. @bob:example.com": "t.d. @ivar:eksempel.no",
+ "Add User": "Legg Brukar til",
+ "Matrix ID": "Matrix-ID",
+ "Matrix Room ID": "Matrixrom-ID",
+ "email address": "emailadresse",
+ "You have entered an invalid address.": "Du har skrive ei ugangbar adresse inn.",
+ "Try using one of the following valid address types: %(validTypesList)s.": "Prøv å bruka ein av dei følgjande gangbare adressesortane: %(validTypesList)s.",
+ "Preparing to send logs": "Førebur loggsending",
+ "Logs sent": "Loggar sende",
+ "Thank you!": "Takk skal du ha!",
+ "Failed to send logs: ": "Fekk ikkje til å senda loggar: ",
+ "Submit debug logs": "Send debøgg-loggar inn",
+ "Riot bugs are tracked on GitHub: create a GitHub issue.": "Riot-bøggar følgjast på GitHub: lag eit GitHub-issue.",
+ "GitHub issue link:": "lenkje til GitHub-issue:",
+ "Notes:": "Saker å merka seg:",
+ "Send logs": "Send loggar inn",
+ "Unavailable": "Utilgjengeleg",
+ "Changelog": "Endringslogg",
+ "Create a new chat or reuse an existing one": "Lag ei ny samtale eller bruk ei gamal opp att",
+ "Start new chat": "Byrj ny samtale",
+ "You already have existing direct chats with this user:": "Du har allereie pågåande direktesamtaler med denne brukaren:",
+ "Start chatting": "Byrj å prata",
+ "Click on the button below to start chatting!": "Klikk på knappen under for å byrja å prata!",
+ "Start Chatting": "Byrj å Prata",
+ "Something went wrong whilst creating your community": "Noko gjekk gale med laginga av samfunnet ditt",
+ "Create Community": "Lag Samfunn",
+ "Community Name": "Samfunnsnamn",
+ "Example": "Døme",
+ "Community ID": "Samfunns-ID",
+ "example": "døme",
+ "Create": "Lag",
+ "Create Room": "Lag eit Rom",
+ "Room name (optional)": "Romnamn (valfritt)",
+ "Advanced options": "Omfattande innstillingar",
+ "World readable": "Kan lesast av alle",
+ "not specified": "Ikkje oppgjeven",
+ "Minimize apps": "Legg æppar ned",
+ "Confirm Removal": "Godkjenn Fjerning",
+ "Are you sure you wish to remove (delete) this event? Note that if you delete a room name or topic change, it could undo the change.": "Er du sikker på at du vil fjerna (sletta) denne hendingen? Merk deg at vis du slettar eit romnamn eller ei emneendring kan det gjera om på endringa.",
+ "Community IDs cannot be empty.": "Samfunns-IDfeltet kan ikkje vera tomt.",
+ "Community IDs may only contain characters a-z, 0-9, or '=_-./'": "Samfunns-IDar kan berre innehalda teikna a-z, 0-9, eller '=_-./'",
+ "This setting cannot be changed later!": "Denne innstillinga kan ikkje gjerast om på seinare!",
+ "Unknown error": "Noko ukjend gjekk galt",
+ "Incorrect password": "Urett passord",
+ "This will make your account permanently unusable. You will not be able to log in, and no one will be able to re-register the same user ID. This will cause your account to leave all rooms it is participating in, and it will remove your account details from your identity server. This action is irreversible.": "Dette gjer at brukaren din vert ubrukeleg til evig tid. Du kjem ikkje til å kunna logga inn, og ingen andre kjem til å kunna melde seg på med den gamle brukar-IDen din. Brukaren din forlét òg alle rom han er i, og brukardetaljane dine vil verta fjerna frå identitetstenaren. Denne handlinga kan ikkje gjerast om.",
+ "Deactivate Account": "Avliv Brukaren",
+ "Deactivating your account does not by default cause us to forget messages you have sent. If you would like us to forget your messages, please tick the box below.": "Å avliva brukaren din gjer i utgangspunktet ikkje at vi gløymer meldingane du har send. Viss du vil at vi skal gløyma meldingane dine, ver venleg og kryss av i firkanten under.",
+ "Message visibility in Matrix is similar to email. Our forgetting your messages means that messages you have sent will not be shared with any new or unregistered users, but registered users who already have access to these messages will still have access to their copy.": "Meldingssynlegheit på Matrix liknar på email. At vi gløymer meldingane dine tyder at meldingar du har send ikkje vil verta delt med nye, ikkje-påmeldte brukarar, men brukare som er meldt på som allereie har tilgang til desse meldingane vil fortsatt kunne sjå kopien deira.",
+ "Please forget all messages I have sent when my account is deactivated (Warning: this will cause future users to see an incomplete view of conversations)": "Ver venleg og gløym alle meldingane eg har send når brukaren min vert avliven (Åtvaring: dette gjer at framtidige brukarar ikkje fær eit fullstendig oversyn av samtalene)",
+ "To continue, please enter your password:": "For å gå fram, ver venleg og skriv passordet ditt inn:",
+ "password": "passord",
+ "To verify that this device can be trusted, please contact its owner using some other means (e.g. in person or a phone call) and ask them whether the key they see in their User Settings for this device matches the key below:": "For å godkjenna at denne eininga er til å stola på, ver venleg og snakk med eiaren på ei anna måte (t.d. ansikt til ansikt eller på telefon) og spør dei om nykelen dei ser i Brukarinnstillingane for denne eininga samsvarar med nykelen under:",
+ "Device name": "Einingsnamn",
+ "Device key": "Einingsnykel",
+ "In future this verification process will be more sophisticated.": "I framtida kjem denne godkjenningsprosessen til å vera betre utvikla.",
+ "Verify device": "Godkjenn eining",
+ "I verify that the keys match": "Eg godkjenner at nyklane samsvarar",
+ "Back": "Attende",
+ "Event sent!": "Hending send!",
+ "Event Type": "Hendingsort",
+ "Event Content": "Hendingsinnhald",
+ "Send Account Data": "Send Brukardata",
+ "Explore Room State": "Undersøk Romtilstanden",
+ "Explore Account Data": "Undersøk Brukardata",
+ "Toolbox": "Verktøykasse",
+ "Developer Tools": "Utviklarverktøy",
+ "An error has occurred.": "Noko gjekk gale.",
+ "You added a new device '%(displayName)s', which is requesting encryption keys.": "Du la til den nye eininga '%(displayName)s', som spør om enkrypteringsnyklar.",
+ "Your unverified device '%(displayName)s' is requesting encryption keys.": "Den ikkje-godkjende eininga di '%(displayName)s' spør om enkrypteringsnyklar.",
+ "Start verification": "Byrj godkjenning",
+ "Share without verifying": "Del utan å godkjenna",
+ "Ignore request": "Oversjå førespurnad",
+ "Loading device info...": "Lastar einingsinfo inn...",
+ "Encryption key request": "Enkrypteringsnykel-førespurnad",
+ "Sign out": "Logg ut",
+ "Log out and remove encryption keys?": "Logg ut og fjern enkrypteringsnyklar?",
+ "Clear Storage and Sign Out": "Tøm Lager og Logg Ut",
+ "Send Logs": "Send Loggar",
+ "Refresh": "Hent fram på nytt",
+ "Unable to restore session": "Kunne ikkje henta økta fram att",
+ "We encountered an error trying to restore your previous session.": "Noko gjekk gale med framhentinga av den førre økta di.",
+ "If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.": "Viss du har bruka ei nyare utgåve av Riot før, kan det henda at økta di ikkje passar inn i denne utgåva. Lukk dette vindauga og gå attende til den nyare utgåva.",
+ "Clearing your browser's storage may fix the problem, but will sign you out and cause any encrypted chat history to become unreadable.": "Det kan henda at å tømma nettlesarlageret rettar opp i det, men det loggar deg ut og kan gjera den enkrypterte pratehistoria uleseleg.",
+ "Invalid Email Address": "Ugangbar Emailadresse",
+ "This doesn't appear to be a valid email address": "Det ser ikkje ut til at emailadressa er gangbar",
+ "Verification Pending": "Ventar på Godkjenning",
+ "Please check your email and click on the link it contains. Once this is done, click continue.": "Ver venleg og sjekk emailen din og klikk på lenkja du har fått. Når det er gjort, klikk gå fram.",
+ "Unable to add email address": "Klarte ikkje å leggja emailadressa til",
+ "Unable to verify email address.": "Klarte ikkje å godkjenne emailadressa.",
+ "This will allow you to reset your password and receive notifications.": "Dette tillèt deg å attendestilla passordet ditt og å få varsel.",
+ "Skip": "Hopp over",
+ "User names may only contain letters, numbers, dots, hyphens and underscores.": "Brukarnamn kan berre innehalda bokstavar, tal, prikkar, bindestrek og understrek.",
+ "Username not available": "Brukarnamnet er ikkje tilgjengeleg",
+ "Username invalid: %(errMessage)s": "Brukarnamnet er ugangbart: %(errMessage)s",
+ "An error occurred: %(error_string)s": "Noko gjekk gale: %(error_string)s",
+ "Username available": "Brukarnamnet er tilgjengeleg",
+ "To get started, please pick a username!": "For å koma i gang, ver venleg og vel eit brukarnman!",
+ "This will be your account name on the homeserver, or you can pick a different server.": "Dette vert brukarnamnet ditt på heimtenaren, elles so kan du velja ein annan tenar.",
+ "If you already have a Matrix account you can log in instead.": "Viss du har ein Matrixbrukar allereie kan du logga på i staden.",
+ "You have successfully set a password!": "Du sette passordet ditt!",
+ "You have successfully set a password and an email address!": "Du sette passordet og emailadressa di!",
+ "You can now return to your account after signing out, and sign in on other devices.": "Du kan no gå attende til brukaren din etter å ha logga ut, og logga inn på andre einingar.",
+ "Remember, you can always set an email address in user settings if you change your mind.": "Hugs at du alltid kan setja ei emailadresse i brukarinnstillingar viss du skiftar meining.",
+ "Failed to change password. Is your password correct?": "Fekk ikkje til å skifta passord. Er passordet rett?",
+ "(HTTP status %(httpStatus)s)": "(HTTP-tilstand %(httpStatus)s)",
+ "Please set a password!": "Ver venleg og set eit passord!",
+ "This will allow you to return to your account after signing out, and sign in on other devices.": "Dette tillèt deg å fara attende til brukaren din etter å ha logga ut, og å logga inn på andre einingar.",
+ "Share Room": "Del Rom",
+ "Link to most recent message": "Lenk til den nyaste meldinga",
+ "Share User": "Del Brukar",
+ "Share Community": "Del Samfunn",
+ "Share Room Message": "Del Rommelding",
+ "Link to selected message": "Lenk til den valde meldinga",
+ "COPY": "KOPIER",
+ "You are currently blacklisting unverified devices; to send messages to these devices you must verify them.": "Du set for augeblunket ikkje-godkjende einingar på svartelista; for å senda meldingar til desse einingane må du godkjenna dei.",
+ "We recommend you go through the verification process for each device to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.": "Vi tilrår deg å gå gjennom godkjenninga for kvar av einingane for å vera sikker på at dei tilhøyrer sine rettmessige eigarar, men du kan senda meldinga på nytt utan å godkjenna viss du vil.",
+ "Room contains unknown devices": "Rommet inneheld ukjende einingar",
+ "\"%(RoomName)s\" contains devices that you haven't seen before.": "\"%(RoomName)s\" inneheld einingar som du ikkje har sett før.",
+ "Unknown devices": "Ukjende einingar",
+ "Private Chat": "Lukka Samtale",
+ "Public Chat": "Offentleg Samtale",
+ "Alias (optional)": "Alias (valfritt)",
+ "Reject invitation": "Sei nei til innbyding",
+ "Are you sure you want to reject the invitation?": "Er du sikker på at du vil seia nei til innbydinga?",
+ "Unable to reject invite": "Klarte ikkje å seia nei til innbydinga",
+ "Reject": "Sei nei",
+ "You cannot delete this message. (%(code)s)": "Du kan ikkje sletta meldinga. (%(code)s)",
+ "Resend": "Send på nytt",
+ "Cancel Sending": "Avbryt Sending",
+ "Forward Message": "Vidaresend Melding",
+ "Reply": "Svar",
+ "Pin Message": "Fest Meldinga",
+ "View Source": "Sjå Kjelda",
+ "View Decrypted Source": "Sjå den Dekrypterte Kjelda",
+ "Unhide Preview": "Slutt å Gøyma Førehandsvising",
+ "Share Message": "Del Melding",
+ "Quote": "Sitat",
+ "Source URL": "Kjelde-URL",
+ "Collapse Reply Thread": "Slå Svartråden saman",
+ "All messages (noisy)": "Alle meldingar (bråket)",
+ "All messages": "Alle meldingar",
+ "Mentions only": "Berre når eg vert nemnd",
+ "Leave": "Far ut",
+ "Forget": "Gløym",
+ "Low Priority": "Lågrett",
+ "Direct Chat": "Direktesamtale",
+ "View Community": "Sjå Samfunn",
+ "Sorry, your browser is not able to run Riot.": "Orsak, nettlesaren din klarer ikkje å køyra Riot.",
+ "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Riot brukar mange omfattande nettlesarfunksjonar, og nokre av dei er ikkje tilgjengelege eller i utprøving i nettlesaren din.",
+ "Please install Chrome or Firefox for the best experience.": "Ver venleg og legg Chrome eller Firefox inn på datamaskina for den beste opplevinga.",
+ "Safari and Opera work too.": "Safari og Opera verkar òg.",
+ "With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "Med denne nettlesaren, er det mogleg at synet og kjensla av applikasjonen er fullstendig gale, og nokre eller alle funksjonar verkar kanskje ikkje. Viss du vil prøva same kva kan du gå fram, men då du må sjølv handtera alle vanskar du møter på!",
+ "I understand the risks and wish to continue": "Eg forstår farane og vil gå fram",
+ "Name": "Namn",
+ "Topic": "Emne",
+ "Make this room private": "Gjer dette rommet privat",
+ "Share message history with new users": "Del meldingshistoria med nye brukarar",
+ "Encrypt room": "Enkrypter rommet",
+ "You must register to use this functionality": "Du må melda deg på for å bruka denne funksjonen",
+ "You must join the room to see its files": "Du må fare inn i rommet for å sjå filene dets",
+ "There are no visible files in this room": "Det er ingen synlege filer i dette rommet",
+ "
HTML for your community's page
\n
\n Use the long description to introduce new members to the community, or distribute\n some important links\n
\n
\n You can even use 'img' tags\n
\n": "
HTML for samfunnssida di
\n
\n Bruk den Lange Skildringa for å ynska nye medlemer velkomen, eller gje ut viktige lenkjer\n
\n
\n Du kan til og med bruka 'img'-merkelappar!\n
\n",
+ "Add rooms to the community summary": "Legg rom til i samfunnsoppsamanfattinga",
+ "Which rooms would you like to add to this summary?": "Kva rom ynskar du å leggja til i samanfattinga?",
+ "Add to summary": "Legg til i samanfattinga",
+ "Failed to add the following rooms to the summary of %(groupId)s:": "Fekk ikkje til å leggja dei følgjande romma til i samanfattinga av %(groupId)s:",
+ "Add a Room": "Legg eit Rom til",
+ "Failed to remove the room from the summary of %(groupId)s": "Fekk ikkje til å fjerna rommet frå samanfattinga av %(groupId)s",
+ "The room '%(roomName)s' could not be removed from the summary.": "Rommet '%(roomName)s' lét seg ikkje fjerna frå samanfattinga.",
+ "Add users to the community summary": "Legg brukarar til i samfunnsamanfattinga",
+ "Who would you like to add to this summary?": "Kven vil du leggja til i samanfattinga?",
+ "Failed to add the following users to the summary of %(groupId)s:": "Fekk ikkje til å leggja følgjande brukarar til i samanfattinga av %(groupId)s:",
+ "Add a User": "Legg ein Brukar til",
+ "Failed to remove a user from the summary of %(groupId)s": "Fekk ikkje til å fjerna brukaren frå samanfattinga av %(groupId)s",
+ "The user '%(displayName)s' could not be removed from the summary.": "Brukaren '%(displayName)s' lét seg ikkje fjerna frå samanfattinga.",
+ "Failed to upload image": "Fekk ikkje til å lasta biletet opp",
+ "Failed to update community": "Fekk ikkje til å oppdatera samfunnet",
+ "Unable to accept invite": "Fekk ikkje til å seia ja til innbydinga",
+ "Unable to join community": "Fekk ikkje til å fara inn i samfunnet",
+ "Leave Community": "Far frå Samfunnet",
+ "Leave %(groupName)s?": "Far frå %(groupName)s?",
+ "Unable to leave community": "Fekk ikkje til å fara frå samfunnet",
+ "Community Settings": "Samfunninnstillingar",
+ "Changes made to your community name and avatar might not be seen by other users for up to 30 minutes.": "Endringar gjort på samfunnsnamnet og samfunnsavataren vert kanskje ikkje synleg forandre før opp til 30 minutt har gått.",
+ "These rooms are displayed to community members on the community page. Community members can join the rooms by clicking on them.": "Desse romma vert viste for samfunnsmedlemer på samfunnsida. Samfunnsmedlemer kan fara inn i romma ved å klikka på dei.",
+ "Add rooms to this community": "Legg rom til i samfunnet",
+ "Featured Rooms:": "Utvalde Rom:",
+ "Featured Users:": "Utvalde Brukarar:",
+ "%(inviter)s has invited you to join this community": "%(inviter)s baud deg inn til dette samfunnet",
+ "Join this community": "Far inn i samfunnet",
+ "Leave this community": "Far frå samfunnet",
+ "You are an administrator of this community": "Du er administrator i dette samfunnet",
+ "You are a member of this community": "Du er eit medlem av dette samfunnet",
+ "Who can join this community?": "Kven kan verta med i samfunnet?",
+ "Everyone": "Alle",
+ "Your community hasn't got a Long Description, a HTML page to show to community members. Click here to open settings and give it one!": "Samfunnet ditt har ikkje ei Lang Skilrding (ei HTML-side for å visa til samfunnsmedlem.) Klikk her for å opna innstillingar og gje det ei!",
+ "Long Description (HTML)": "Lang Skildring (HTML)",
+ "Description": "Skildring",
+ "Community %(groupId)s not found": "Fann ikkje samfunnet %(groupId)s",
+ "This Home server does not support communities": "Denne heimtenaren støttar ikkje støttesamfunn",
+ "Failed to load %(groupId)s": "Fekk ikkje til å lasta %(groupId)s",
+ "Couldn't load home page": "Kunne ikkje lasta heimesida",
+ "Login": "Innlogging",
+ "Failed to reject invitation": "Fekk ikkje til å seia nei til innbyding",
+ "This room is not public. You will not be able to rejoin without an invite.": "Dette rommet er ikkje offentleg. Du kjem ikkje til å kunna koma inn att utan ei innbyding.",
+ "Are you sure you want to leave the room '%(roomName)s'?": "Er du sikker på at du vil fara frå rommet '%(roomName)s'?",
+ "Failed to leave room": "Fekk ikkje til å fara frå rommet",
+ "Can't leave Server Notices room": "Kan ikkje fara frå Tenarvarsel-rommet",
+ "This room is used for important messages from the Homeserver, so you cannot leave it.": "Dette rommet er for viktige meldingar frå Heimtenaren, so du kan ikkje fara frå det.",
+ "Signed Out": "Logga Ut",
+ "For security, this session has been signed out. Please sign in again.": "Av sikkerheitsgrunnar har denne økta vorte logga ut. Ver venleg og logg inn att.",
+ "Terms and Conditions": "Vilkår og Føresetnader",
+ "To continue using the %(homeserverDomain)s homeserver you must review and agree to our terms and conditions.": "For å framleis bruka %(homeserverDomain)s sin heimtenar må du sjå over og seia deg einig i våre Vilkår og Føresetnader.",
+ "Review terms and conditions": "Sjå over Vilkår og Føresetnader",
+ "Old cryptography data detected": "Gamal kryptografidata vart oppdagen",
+ "Data from an older version of Riot has been detected. This will have caused end-to-end cryptography to malfunction in the older version. End-to-end encrypted messages exchanged recently whilst using the older version may not be decryptable in this version. This may also cause messages exchanged with this version to fail. If you experience problems, log out and back in again. To retain message history, export and re-import your keys.": "Data frå ei eldre utgåve av Riot vart oppdagen. I den eldre utgåva hadde dette gjort at ende-til-ende-kryptografi ikkje verkar som det skal. Ende-til-ende-enkrypterte meldingar som vert utveksla nyleg med den gamle utgåva er det kanskje ikkje mogeleg å dekryptera i denne utgåva. Dette fører kanskje òg til at meldingar som vart utveksla med denne utgåva ikkje verkar. Viss du opplever vansker, logg ut og inn att. For å spara på meldingshistoria, hent nyklane dine ut og inn at.",
+ "Logout": "Utlogging",
+ "Your Communities": "Dine Samfunn",
+ "Error whilst fetching joined communities": "Noko gjekk gale med innhentinga av samfunna du er i",
+ "Create a new community": "Lag eit nytt samfunn",
+ "You have no visible notifications": "Du har ingen synlege varsel",
+ "Members": "Medlemer",
+ "%(count)s Members|other": "%(count)s Medlemer",
+ "%(count)s Members|one": "%(count)s Medlem",
+ "Invite to this room": "Byd inn til rommet",
+ "Files": "Filer",
+ "Notifications": "Varsel",
+ "Invite to this community": "Byd inn til samfunnet",
+ "Failed to get protocol list from Home Server": "Fekk ikkje til å henta protokollista frå heimtenaren",
+ "The Home Server may be too old to support third party networks": "Heimtenaren er kanskje for gamal til å støtta tredjepartinettverk",
+ "Failed to get public room list": "Fekk ikkje til å henta den offentlege romlista",
+ "The server may be unavailable or overloaded": "Tenaren er kanskje utilgjengeleg eller overlasta",
+ "Delete the room alias %(alias)s and remove %(name)s from the directory?": "Slett rommaliaset %(alias)s og fjern %(name)s frå utvalet?",
+ "Remove %(name)s from the directory?": "Fjern %(name)s frå utvalet?",
+ "Remove from Directory": "Fjern frå Utvalet",
+ "remove %(name)s from the directory.": "fjern %(name)s frå utvalet.",
+ "delete the alias.": "slett aliaset.",
+ "Unable to join network": "Klarte ikkje å verta med i nettverket",
+ "Riot does not know how to join a room on this network": "Riot veit ikkje korleis ein fer inn i eit rom på dette nettverket",
+ "Room not found": "Fann ikkje rommet",
+ "Couldn't find a matching Matrix room": "Kunne ikkje finna eit samsvarande Matrixrom",
+ "Fetching third party location failed": "Noko gjekk gale med hentinga tredjepartiplasseringa",
+ "Directory": "Utval",
+ "Search for a room": "Søk etter eit rom",
+ "#example": "#døme",
+ "Scroll to bottom of page": "Blad til botnen",
+ "Message not sent due to unknown devices being present": "Meldinga vart ikkje send fordi ukjende einingar er til stades",
+ "Show devices, send anyway or cancel.": "Vis einingar, Send same kva eller Avbryt.",
+ "You can't send any messages until you review and agree to our terms and conditions.": "Du kan ikkje senda meldingar før du ser over og seier deg einig i våre Vilkår og Føresetnader.",
+ "%(count)s of your messages have not been sent.|other": "Nokre av meldingane dine vart ikkje sende.",
+ "%(count)s of your messages have not been sent.|one": "Meldinga di vart ikkje send.",
+ "%(count)s Resend all or cancel all now. You can also select individual messages to resend or cancel.|other": "Send alle på nytt eller avbryt alle. Du kan ogso velja enkelte meldingar til sending på nytt eller avbryting.",
+ "%(count)s Resend all or cancel all now. You can also select individual messages to resend or cancel.|one": "Send melding på nytt eller avbryt.",
+ "Connectivity to the server has been lost.": "Tilkoplinga til tenaren vart tapt.",
+ "Sent messages will be stored until your connection has returned.": "Sende meldingar lagrast ikkje før tilkoplinga di er attende.",
+ "%(count)s new messages|other": "%(count)s nye meldingar",
+ "%(count)s new messages|one": "%(count)s ny melding",
+ "Active call": "Pågåande samtale",
+ "There's no one else here! Would you like to invite others or stop warning about the empty room?": "Det er ingen andre her! Vil du byda andre inn eller enda åtvaringa om det tomme rommet??",
+ "more": "meir",
+ "You seem to be uploading files, are you sure you want to quit?": "Det ser ut til at du lastar filer opp, er du sikker på at du vil slutta?",
+ "You seem to be in a call, are you sure you want to quit?": "Det ser ut til at du er i ei samtale, er du sikker på at du vil slutta?",
+ "Failed to upload file": "Fekk ikkje til å lasta fila opp",
+ "Server may be unavailable, overloaded, or the file too big": "Tenaren er kanskje utilgjengeleg, overlasta, elles so er fila for stor",
+ "Search failed": "Søket gjekk gale",
+ "No more results": "Ingen fleire resultat",
+ "Unknown room %(roomId)s": "Ukjend rom %(roomId)s",
+ "Room": "Rom",
+ "Failed to save settings": "Fekk ikkje til å lagra innstillingar",
+ "Failed to reject invite": "Fekk ikkje til å seia nei til innbydinga",
+ "Fill screen": "Fyll skjermen",
+ "Click to unmute video": "Klikk for å avstilna videoen",
+ "Click to mute video": "Klikk for å stilna videoen",
+ "Click to unmute audio": "Klikk for å avstilna ljoden",
+ "Click to mute audio": "Klikk for å stilna ljoden",
+ "Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "Freista å lasta eit gjeve punkt i rommet si tidslinje, men du har ikkje lov til å sjå den sistnemnde meldinga.",
+ "Tried to load a specific point in this room's timeline, but was unable to find it.": "Freista å lasta eit gjeve punkt i rommet si tidslinje, men klarte ikkje å finna det.",
+ "Failed to load timeline position": "Fekk ikkje til å lasta tidslinjestillinga",
+ "Uploading %(filename)s and %(count)s others|other": "Lastar %(filename)s og %(count)s andre opp",
+ "Uploading %(filename)s and %(count)s others|zero": "Lastar %(filename)s opp",
+ "Uploading %(filename)s and %(count)s others|one": "Lastar %(filename)s og %(count)s andre opp",
+ "Light theme": "Ljost preg",
+ "Dark theme": "Dimt preg",
+ "Status.im theme": "Status.im-preg",
+ "Can't load user settings": "Kan ikkje lasta brukarinnstillingar",
+ "Server may be unavailable or overloaded": "Tenaren er kanskje utilgjengeleg eller overlasta",
+ "Success": "Det gjekk",
+ "Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them": "Passordet ditt vert endra. Du får ikkje push-varsel på andre einingar før du loggar inn att på dei",
+ "Remove Contact Information?": "Fjern Kontaktinfo?",
+ "Remove %(threePid)s?": "Fjern %(threePid)s?",
+ "Unable to remove contact information": "Klarte ikkje å fjerna kontaktinfo",
+ "Refer a friend to Riot:": "Vis ein ven til Riot:",
+ "Interface Language": "Grensesnitt-mål",
+ "User Interface": "Brukargrensesnitt",
+ "": "",
+ "Import E2E room keys": "Hent E2E-romnyklar",
+ "Cryptography": "Kryptografi",
+ "Device ID:": "Einings-ID:",
+ "Device key:": "Einingsnykel:",
+ "Ignored Users": "Oversedde Brukarar",
+ "Debug Logs Submission": "Innsending av Debøgg-loggar",
+ "If you've submitted a bug via GitHub, debug logs can help us track down the problem. Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited and the usernames of other users. They do not contain messages.": "Viss du har send inn ein bøgg gjennom GitHub, kan debøgg-loggar hjelpa oss med å finna problemet. Debøgg-loggar inneheld data om æpp-bruk, b.a. Brukarnamnet ditt, IDane eller aliasa på romma eller gruppene du har vitja og brukarnamna til andre brukarar. Dei inneheld ikkje meldingar.",
+ "Riot collects anonymous analytics to allow us to improve the application.": "Riot samlar anonym statistikk inn slik at vi kan forbetre æppen.",
+ "Privacy is important to us, so we don't collect any personal or identifiable data for our analytics.": "Personvern er viktig for oss, so vi samlar ikkje på personleg eller attkjenneleg data for statistikken vår.",
+ "Learn more about how we use analytics.": "Finn ut meir om korleis vi brukar statistikk.",
+ "Labs": "Labar",
+ "These are experimental features that may break in unexpected ways": "Desse funksjonane er i utprøving og uventa vanskar kan dukka opp",
+ "Use with caution": "Bruk med omhug",
+ "Deactivate my account": "Avliv brukaren min",
+ "Updates": "Oppdateringar",
+ "Check for update": "Sjå etter oppdateringar",
+ "Reject all %(invitedRooms)s invites": "Sei nei til alle innbydingar frå %(invitedRooms)s",
+ "Desktop specific": "Berre for skrivebord",
+ "Start automatically after system login": "Byrj av seg sjølv etter systeminnlogging",
+ "No media permissions": "Ingen mediatilgang",
+ "You may need to manually permit Riot to access your microphone/webcam": "Det kan henda at du må gje Riot tilgang til mikrofonen/nettkameraet for hand",
+ "Missing Media Permissions, click here to request.": "Vantande Mediatilgang, klikk her for å beda om det.",
+ "No Audio Outputs detected": "Ingen ljodavspelingseiningar funne",
+ "No Microphones detected": "Ingen opptakseiningar funne",
+ "No Webcams detected": "Ingen Nettkamera funne",
+ "Default Device": "Eininga som brukast i utgangspunktet",
+ "Audio Output": "Ljodavspeling",
+ "Microphone": "Ljodopptaking",
+ "Camera": "Kamera",
+ "VoIP": "VoIP",
+ "Email": "Email",
+ "Add email address": "Legg emailadresse til",
+ "Display name": "Visingsnamn",
+ "Account": "Brukar",
+ "To return to your account in future you need to set a password": "For å kunna koma attende til brukaren din i framtida må du setja eit passord",
+ "Logged in as:": "Logga inn som:",
+ "click to reveal": "klikk for å visa",
+ "Homeserver is": "Heimtenaren er",
+ "Identity Server is": "Identitetstenaren er",
+ "matrix-react-sdk version:": "matrix-react-sdk-utgåve:",
+ "riot-web version:": "riot-web-utgåve:",
+ "olm version:": "olm-utgåve:",
+ "Failed to send email": "Fekk ikkje til å senda emailen",
+ "The email address linked to your account must be entered.": "Du må skriva emailadressa som er tilknytta brukaren din inn.",
+ "A new password must be entered.": "Du må skriva eit nytt passord inn.",
+ "New passwords must match each other.": "Dei nye passorda må vera like.",
+ "An email has been sent to %(emailAddress)s. Once you've followed the link it contains, click below.": "Ein email vert send til %(emailAddress)s. Når du har far følgd lenkja i den, klikk under.",
+ "I have verified my email address": "Eg har godkjend emailadressa mi",
+ "Your password has been reset": "Passordet ditt vart attendesett",
+ "You have been logged out of all devices and will no longer receive push notifications. To re-enable notifications, sign in again on each device": "Du vart logga av alle einingar og får ikkje lenger pushvarsel. For å skru varsel på att, logg inn igjen på kvar eining",
+ "Return to login screen": "Gå attende til innlogging",
+ "To reset your password, enter the email address linked to your account": "For å attendestilla passordet ditt, skriv emailadressa som er lenkja til brukaren din inn",
+ "New password": "Nytt passord",
+ "Confirm your new password": "Godkjenn det nye passordet ditt",
+ "Send Reset Email": "Send attendestillingsemail",
+ "Create an account": "Lag ein brukar",
+ "This Home Server does not support login using email address.": "Denne Heimtenaren støttar ikkje innlogging med email.",
+ "Please contact your service administrator to continue using this service.": "Ver venleg og kontakt din tenesteadministrator for å halda fram med å bruka tenesten.",
+ "Incorrect username and/or password.": "Urett brukarnamn og/eller passord.",
+ "Please note you are logging into the %(hs)s server, not matrix.org.": "Merk deg at du loggar inn på %(hs)s-tenaren, ikkje matrix.org.",
+ "Guest access is disabled on this Home Server.": "Gjestetilgang er skrudd av på denne Heimtenaren.",
+ "The phone number entered looks invalid": "Det innskrivne telefonnummeret ser ugangbart ut",
+ "Error: Problem communicating with the given homeserver.": "Noko gjekk gale: fekk ikkje samband med den gjevne heimtenaren.",
+ "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.": "Kan ikkje kopla til heimtenaren gjennom HTTP når ein HTTPS-URL er i nettlesarsøkjafeltet ditt. Bruk anten HTTPS eller skru utrygge skript på.",
+ "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Kan ikkje kopla til heimtenaren - ver venleg og sjekk tilkoplinga di, og sjå til at heimtenaren din sitt CCL-sertifikat er stolt på og at ein nettlesarutviding ikkje hindrar førespurnader.",
+ "Try the app first": "Prøv æppen fyrst",
+ "Sign in to get started": "Logg inn for å koma i gang",
+ "Failed to fetch avatar URL": "Klarte ikkje å henta avatar-URLen",
+ "Set a display name:": "Set eit visingsnamn:",
+ "Upload an avatar:": "Last ein avatar opp:",
+ "This server does not support authentication with a phone number.": "Denne tenaren støttar ikkje godkjenning gjennom telefonnummer.",
+ "Missing password.": "Vantande passord.",
+ "Passwords don't match.": "Passorda er ikkje like.",
+ "Password too short (min %(MIN_PASSWORD_LENGTH)s).": "Passordet er for kort (i det minste %(MIN_PASSWORD_LENGTH)s).",
+ "This doesn't look like a valid email address.": "Dette ser ikkje ut som ei gangbar emailadresse.",
+ "This doesn't look like a valid phone number.": "Dette ser ikkje ut som eit gangbart telefonnummer.",
+ "You need to enter a user name.": "Du må skriva eit brukarnamn inn.",
+ "An unknown error occurred.": "Noko ukjend gjekk gale.",
+ "I already have an account": "Eg har ein brukar allereie",
+ "Commands": "Påbod",
+ "Results from DuckDuckGo": "Resultat frå DuckDuckGo",
+ "Emoji": "Emoji",
+ "Notify the whole room": "Varsl heile rommet",
+ "Room Notification": "Romvarsel",
+ "Users": "Brukarar",
+ "unknown device": "ukjend eining",
+ "NOT verified": "IKKJE godkjend",
+ "verified": "godkjend",
+ "Verification": "Godkjenning",
+ "Ed25519 fingerprint": "Ed25519-fingeravtrykk",
+ "User ID": "Brukar-ID",
+ "Curve25519 identity key": "Curve25519-identitetsnykel",
+ "none": "ingen",
+ "Algorithm": "Algoritme",
+ "unencrypted": "ikkje-enkryptert",
+ "Decryption error": "Noko gjekk gale med dekrypteringa",
+ "Session ID": "Økt-ID",
+ "End-to-end encryption information": "Ende-til-ende-enkrypteringsinfo",
+ "Event information": "Hendingsinfo",
+ "Sender device information": "Info om avsendareininga",
+ "Passphrases must match": "Passetningane må vera like",
+ "Passphrase must not be empty": "Passetningsfeltet kan ikkje vera tomt",
+ "Enter passphrase": "Skriv passetning inn",
+ "Confirm passphrase": "Godkjenn passetning",
+ "You must specify an event type!": "Du må oppgje ein handlingssort!",
+ "Call Timeout": "Tidsavbrot i Samtala",
+ "Enable automatic language detection for syntax highlighting": "Skru automatisk måloppdaging på for syntax-understreking",
+ "Show empty room list headings": "Vis overskrift på tomme romlister",
+ "Changing password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Å endra passordet ditt attendestiller førebelst alle ende-til-ende-enkrypteringsnyklar på alle einingar, slik at enkryptert pratehistorie vert uleseleg, med mindre du fyrst hentar romnyklane dine ut og hentar dei inn att etterpå. I framtida vil denne prosessen vera betre.",
+ "Export E2E room keys": "Hent E2E-romnyklar ut",
+ "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "Det kan henda at du stilte dei inn på ein annan klient enn Riot. Du kan ikkje stilla på dei i Riot men dei gjeld framleis",
+ "Key share requests are sent to your other devices automatically. If you rejected or dismissed the key share request on your other devices, click here to request the keys for this session again.": "Nykeldelingsførespurnader vert sende til dei andre einingane dine av seg sjølv. Viss du sa nei til eller avviste førespurnadene på dei andre einingane, klikk her for å beda om nyklane for denne økta på nytt.",
+ "Jump to read receipt": "Hopp til lest-lappen",
+ "Filter room members": "Filtrer rommedlemer",
+ "inline-code": "kode-i-tekst",
+ "block-quote": "blokk-sitat",
+ "Show panel": "Vis panel",
+ "Drop here to tag direct chat": "Slepp her for å merka ei direktesamtale",
+ "Drop here to tag %(section)s": "Slepp her for å merka %(section)s",
+ "When someone puts a URL in their message, a URL preview can be shown to give more information about that link such as the title, description, and an image from the website.": "Når nokon legg ein URL med i meldinga si, kan ei URL-førehandsvising visast for å gje meir info om lenkja slik som tittelen, skildringa, og eit bilete frå nettsida.",
+ "You are about to be taken to a third-party site so you can authenticate your account for use with %(integrationsUrl)s. Do you wish to continue?": "Du held på å verta teken til ei tredje-partisside so du kan godkjenna brukaren din til bruk med %(integrationsUrl)s. Vil du gå fram?",
+ "Token incorrect": "Tokenen er galen",
+ "Filter community members": "Filtrer samfunnsmedlemer",
+ "Custom Server Options": "Eigentenar-innstillingar",
+ "Filter community rooms": "Filtrer samfunnsrom",
+ "Please help improve Riot.im by sending anonymous usage data. This will use a cookie (please see our Cookie Policy).": "Ver venleg og hjelp oss å forbetra Riot.im med å senda anonym brukardata. Dette brukar ei datakake (ver venleg og sjå på Datakakeretningslinene våre).",
+ "Please help improve Riot.im by sending anonymous usage data. This will use a cookie.": "Ver venleg og hjelp oss å forbetra Riot.im med å senda anonym brukardata. Dette brukar ei datakake.",
+ "Whether or not you're using the Richtext mode of the Rich Text Editor": "Om du brukar Riktekst-innstillinga på Riktekstfeltet",
+ "WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and device %(deviceId)s is \"%(fprint)s\" which does not match the provided key \"%(fingerprint)s\". This could mean your communications are being intercepted!": "ÅTVARING: NOKO GJEKK GALT MED NYKELGODKJENNINGA! Signeringsnykelen til %(userId)s og eininga %(deviceId)s er \"%(fprint)s\", som ikkje er lik den gjevne nykelen \"%(fingerprint)s\". Dette kan tyda at nokon tjuvlyttar på kommuniseringa!",
+ "The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.": "Signeringsnykelen du oppgav er lik signeringsnykelen du fekk frå %(userId)s si eining %(deviceId)s. Eininga merkast som godkjend.",
+ "This room is not accessible by remote Matrix servers": "Rommet er ikkje tilgjengeleg for andre Matrix-heimtenarar",
+ "Add an Integration": "Legg tillegg til",
+ "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.": "Du kan bruka eigentenarinnstillingane for å logga på andre Matrixtenarar gjennom å oppgje ein annan Heimtenar-URL.",
+ "Custom server": "Eigentenar",
+ "This homeserver has hit its Monthly Active User limit. Please contact your service administrator to continue using the service.": "Heimtenaren har truffe den Månadlege Grensa for Aktive Brukarar. Ver venleg og kontakt tenesteadministratoren din for å halda fram med å bruka tenesten.",
+ "Popout widget": "Popp widget ut",
+ "Integrations Error": "Noko gjekk gale med med Tillegga",
+ "Manage Integrations": "Sjå over Innlegg",
+ "%(nameList)s %(transitionList)s": "%(nameList)s %(transitionList)s",
+ "Custom of %(powerLevel)s": "Sjølvsett namn på %(powerLevel)s",
+ "Custom level": "Sjølvsett høgd",
+ "Unable to load event that was replied to, it either does not exist or you do not have permission to view it.": "Klarte ikkje å lasta handlinga som vert svara til. Anten finst ho ikkje elles har du ikkje tilgang til å sjå ho.",
+ "Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited and the usernames of other users. They do not contain messages.": "Debøgg-loggar inneheld æppbrukdata slik som brukarnamnet ditt, IDane eller aliasane på romma eller gruppene du har vore i og brukarnamna til andre brukarar. Dei inneheld ikkje meldingar.",
+ "Block users on other matrix homeservers from joining this room": "Hindr brukare frå andre matrix-heimtenarar frå å koma inn i rommet",
+ "Failed to indicate account erasure": "Fekk ikkje til å visa brukarsletting",
+ "If it matches, press the verify button below. If it doesn't, then someone else is intercepting this device and you probably want to press the blacklist button instead.": "Vis dei er like, trykk på godkjenn-knappen under. Viss dei ikkje gjer det, tjuvlyttar nokon på eininga og du bør sannsynlegvis trykkja på svartelisting-knappen i staden.",
+ "Send Custom Event": "Send Sjølvsett Hending",
+ "Failed to send custom event.": "Fekk ikkje til å senda sjølvsett hending.",
+ "State Key": "Tilstandsnykel",
+ "Filter results": "Filtrer resultat",
+ "Custom": "Sjølvsett",
+ "Failed to set Direct Message status of room": "Fekk ikkje til å setja Direktemelding-tilstanden til rommet",
+ "Did you know: you can use communities to filter your Riot.im experience!": "Visste du at: du kan bruka samfunn for å filtrera Riot.im-opplevinga di!",
+ "To set up a filter, drag a community avatar over to the filter panel on the far left hand side of the screen. You can click on an avatar in the filter panel at any time to see only the rooms and people associated with that community.": "For å setja opp eit filter, drag ein samfunnsavatar bort til filterpanelet til venstre på skjermen. Du kan klikka på ein avatar i filterpanelet når som helst for å berre sjå romma og folka tilknytta det samfunnet.",
+ "Create a community to group together users and rooms! Build a custom homepage to mark out your space in the Matrix universe.": "Lag eit samfunn for å føra saman brukarar og rom! Bygg din eiga heimeside for å kreva din del av Matrix-verda.",
+ "Hide panel": "Gøym panel",
+ "Unable to look up room ID from server": "Klarte ikkje å henta rom-ID frå tenaren",
+ "Your message wasn’t sent because this homeserver has hit its Monthly Active User Limit. Please contact your service administrator to continue using the service.": "Meldinga di vart ikkje send fordi heimtenaren har truffe si Månadlege Grense for Aktive Brukarar. Ver venleg og tak kontakt med tenesteadministratoren din for å halda frama med å bruka tenesten.",
+ "Server may be unavailable, overloaded, or search timed out :(": "Tenaren er kanskje utilgjengeleg, overlasta, elles so vart søket tidsavbroten :(",
+ "Expand panel": "Utvid panel",
+ "Collapse panel": "Slå panel saman",
+ "Filter room names": "Filtrer romnamn",
+ "Clear filter": "Tøm filter",
+ "Autocomplete Delay (ms):": "Fullfør-av-seg-sjølv-Forseinking (ms):",
+ "Clear Cache": "Tøm Buffar",
+ "Clear Cache and Reload": "Tøm Buffar og Last inn att",
+ "Profile": "Brukar",
+ "Access Token:": "Tilgangs-Teikn:",
+ "Resetting password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Å attendestilla passordet vil førebels attendestilla alle ende-til-ende-enkrypteringsnyklar på alle einingar, slik at enkrypterte samtaler vert uleselege, med mindre du fyrst hentar romnyklane ut og hentar dei inn att etterpå. Dette vil forbetrast i framtida.",
+ "This homeserver has hit its Monthly Active User limit": "Heimtenaren har truffe den Månadlege Aktive Brukargrensa si",
+ "This homeserver doesn't offer any login flows which are supported by this client.": "Heimtenaren tilbyd ingen nye innloggingsstraumar som støttast av denne klienten.",
+ "Claimed Ed25519 fingerprint key": "Gjorde krav på Ed25519-fingeravtrykksnykel",
+ "Export room keys": "Hent romnyklar ut",
+ "Bulk Options": "Innverknadsrike Innstillingar",
+ "Export": "Hent ut",
+ "Import room keys": "Hent romnyklar inn",
+ "File to import": "Fil til innhenting",
+ "Import": "Hent inn",
+ "Failed to set direct chat tag": "Fekk ikkje til å setja direktesamtale-merke",
+ "Failed to remove tag %(tagName)s from room": "Fekk ikkje til å fjerna merket %(tagName)s frå rommet",
+ "Failed to add tag %(tagName)s to room": "Fekk ikkje til å leggja merket %(tagName)s til i rommet",
+ "Hide read receipts": "Gøym lest-lappar",
+ "For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.": "Av sikkerheitsmessige grunnar vil det å logga ut sletta alle ende-til-ende-enkrypteringsnyklar frå nettlesaren. Viss du vil kunna dekryptera samtalehistoria di på framtidige Riot-økter, ver venleg og hent ut romnyklande dine og tak vare på dei.",
+ "This process allows you to export the keys for messages you have received in encrypted rooms to a local file. You will then be able to import the file into another Matrix client in the future, so that client will also be able to decrypt these messages.": "Dette tillèt deg å henta nyklane for meldingar du har sendt i enkrypterte rom ut til ei lokal fil. Då kan du henta fila inn til ein annan Matrix-klient i framtida, slik at den klienten òg kan dekryptera meldingane.",
+ "The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a passphrase below, which will be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.": "Å henta filen ut tillèt kven som helst som kan lesa ho å dekryptera alle enkrypterte meldingar du kan sjå, so du bør passa på å halda ho trygg. For å hjelpa til med dette bør du skriva ei passetning inn i feltet under, som vil brukast til å enkryptere den uthenta dataen. Det vil berre vera mogeleg å henta dataen inn med den same passetninga.",
+ "This process allows you to import encryption keys that you had previously exported from another Matrix client. You will then be able to decrypt any messages that the other client could decrypt.": "Dette tillèt deg å henta enkrypteringsnyklar som du tidlegare henta ut frå ein annan Matrix-klient inn. Du vil so kunna dekryptera alle meldingane som den andre klienten kunne dekryptera.",
+ "The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.": "Uthentingsfila vil verta verna med ei passetning. Du bør skriva passetninga inn her for å dekryptera fila."
+}
From 28292c338873c4eb91aacd3b68ff80c7a23e28d5 Mon Sep 17 00:00:00 2001
From: Bruno Windels
Date: Mon, 13 Aug 2018 11:14:30 +0200
Subject: [PATCH 085/343] implement PR feedback, move LL dialog to UserSettings
---
src/components/structures/UserSettings.js | 35 +++++++++++++++++-
src/settings/SettingsStore.js | 11 +-----
.../controllers/LazyLoadingController.js | 37 -------------------
src/settings/controllers/SettingController.js | 5 ---
4 files changed, 35 insertions(+), 53 deletions(-)
diff --git a/src/components/structures/UserSettings.js b/src/components/structures/UserSettings.js
index 701247bd8b..a5ba4ff0fa 100644
--- a/src/components/structures/UserSettings.js
+++ b/src/components/structures/UserSettings.js
@@ -845,7 +845,15 @@ module.exports = React.createClass({
// TODO: this ought to be a separate component so that we don't need
// to rebind the onChange each time we render
const onChange = async (e) => {
- await SettingsStore.setFeatureEnabled(featureId, e.target.checked);
+ const checked = e.target.checked;
+ if (featureId === "feature_lazyloading") {
+ const confirmed = await this._onLazyLoadChanging();
+ if (!confirmed) {
+ e.preventDefault();
+ return;
+ }
+ }
+ await SettingsStore.setFeatureEnabled(featureId, checked);
this.forceUpdate();
};
@@ -878,6 +886,31 @@ module.exports = React.createClass({
);
},
+ _onLazyLoadChanging: function() {
+ return new Promise((resolve) => {
+ const QuestionDialog = sdk.getComponent("dialogs.QuestionDialog");
+ Modal.createDialog(QuestionDialog, {
+ title: _t("Turn on/off lazy load members"),
+ description:
+
+ { _t("To enable or disable the lazy loading of members, " +
+ "the current synced state needs to be cleared out. " +
+ "This also includes your end-to-end encryption keys, " +
+ "so to keep being able to decrypt all your existing encrypted messages, " +
+ "you'll need to export your E2E room keys and import them again afterwards.") }
+
- { _t("To enable or disable the lazy loading of members, " +
- "the current synced state needs to be cleared out. " +
- "This also includes your end-to-end encryption keys, " +
- "so to keep being able to decrypt all your existing encrypted messages, " +
- "you'll need to export your E2E room keys and import them again afterwards.") }
-
,
- button: _t("Clear sync state and reload"),
- extraButtons: [
- ,
- ],
- onFinished,
- });
- }
-
- _onExportE2eKeysClicked() {
- Modal.createTrackedDialogAsync('Export E2E Keys', '', (cb) => {
- require.ensure(['../../async-components/views/dialogs/ExportE2eKeysDialog'], () => {
- cb(require('../../async-components/views/dialogs/ExportE2eKeysDialog'));
- }, "e2e-export");
- }, {
- matrixClient: MatrixClientPeg.get(),
- });
- }
}
diff --git a/src/settings/controllers/SettingController.js b/src/settings/controllers/SettingController.js
index 6b09c4fc53..9dcb6259b5 100644
--- a/src/settings/controllers/SettingController.js
+++ b/src/settings/controllers/SettingController.js
@@ -38,11 +38,6 @@ export default class SettingController {
getValueOverride(level, roomId, calculatedValue, calculatedAtLevel) {
return null; // no override
}
-
- canChangeTo(level, roomId, newValue) {
- return Promise.resolve(true);
- }
-
/**
* Called when the setting value has been changed.
* @param {string} level The level at which the setting has been modified.
From 09ad138306ae89b032ff32313c6874b652de252e Mon Sep 17 00:00:00 2001
From: Bruno Windels
Date: Mon, 13 Aug 2018 11:16:29 +0200
Subject: [PATCH 086/343] remove unused imports
---
src/settings/controllers/LazyLoadingController.js | 5 -----
1 file changed, 5 deletions(-)
diff --git a/src/settings/controllers/LazyLoadingController.js b/src/settings/controllers/LazyLoadingController.js
index 5d592ad6f8..334111ef7c 100644
--- a/src/settings/controllers/LazyLoadingController.js
+++ b/src/settings/controllers/LazyLoadingController.js
@@ -14,13 +14,8 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-import SettingsStore from "../SettingsStore";
import SettingController from "./SettingController";
-import Modal from "../../Modal";
-import sdk from "../../index";
-import MatrixClientPeg from "../../MatrixClientPeg";
import dis from "../../dispatcher";
-import { _t } from "../../languageHandler";
export default class LazyLoadingController extends SettingController {
onChange(level, roomId, newValue) {
From 2f9aaeca465063364d182d1568c1ce2de80625bc Mon Sep 17 00:00:00 2001
From: Bruno Windels
Date: Mon, 13 Aug 2018 11:17:04 +0200
Subject: [PATCH 087/343] undo whitespace change
---
src/settings/controllers/SettingController.js | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/settings/controllers/SettingController.js b/src/settings/controllers/SettingController.js
index 9dcb6259b5..0ebe0042e6 100644
--- a/src/settings/controllers/SettingController.js
+++ b/src/settings/controllers/SettingController.js
@@ -38,6 +38,7 @@ export default class SettingController {
getValueOverride(level, roomId, calculatedValue, calculatedAtLevel) {
return null; // no override
}
+
/**
* Called when the setting value has been changed.
* @param {string} level The level at which the setting has been modified.
From 94c424d3bb495f271a7ba00a4538b09dfb3e37bc Mon Sep 17 00:00:00 2001
From: Bruno Windels
Date: Mon, 13 Aug 2018 11:24:32 +0200
Subject: [PATCH 088/343] translations
---
src/i18n/strings/en_EN.json | 6 +++++-
src/settings/Settings.js | 2 +-
2 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json
index 9acde2b80c..f1f056f58e 100644
--- a/src/i18n/strings/en_EN.json
+++ b/src/i18n/strings/en_EN.json
@@ -1216,5 +1216,9 @@
"Import": "Import",
"Failed to set direct chat tag": "Failed to set direct chat tag",
"Failed to remove tag %(tagName)s from room": "Failed to remove tag %(tagName)s from room",
- "Failed to add tag %(tagName)s to room": "Failed to add tag %(tagName)s to room"
+ "Failed to add tag %(tagName)s to room": "Failed to add tag %(tagName)s to room",
+ "Increase performance by only loading room members on first view": "Increase performance by only loading room members on first view",
+ "Turn on/off lazy load members": "Turn on/off lazy load members",
+ "To enable or disable the lazy loading of members, the current synced state needs to be cleared out. This also includes your end-to-end encryption keys, so to keep being able to decrypt all your existing encrypted messages, you'll need to export your E2E room keys and import them again afterwards.": "To enable or disable the lazy loading of members, the current synced state needs to be cleared out. This also includes your end-to-end encryption keys, so to keep being able to decrypt all your existing encrypted messages, you'll need to export your E2E room keys and import them again afterwards.",
+ "Clear sync state and reload": "Clear sync state and reload"
}
diff --git a/src/settings/Settings.js b/src/settings/Settings.js
index 76e002adac..0594c63eb9 100644
--- a/src/settings/Settings.js
+++ b/src/settings/Settings.js
@@ -85,7 +85,7 @@ export const SETTINGS = {
},
"feature_lazyloading": {
isFeature: true,
- displayName: _td("Increase performance by loading room members on first view"),
+ displayName: _td("Increase performance by only loading room members on first view"),
supportedLevels: LEVELS_FEATURE,
controller: new LazyLoadingController(),
default: false,
From 05bf200a722545a8433b7d2b3908e9b9ce520151 Mon Sep 17 00:00:00 2001
From: David Baker
Date: Mon, 13 Aug 2018 13:49:22 +0100
Subject: [PATCH 089/343] Don't crash if scrollbars updated before init
The initialisation here is done on a timer to allow the DOM
elements to be in place before it's run, so it's possible for an
update to happen ebfore the initialisation. Stop & bail out if
there is no this.stickies.
---
src/components/views/rooms/RoomList.js | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/components/views/rooms/RoomList.js b/src/components/views/rooms/RoomList.js
index 2bd0f473bc..759951d36d 100644
--- a/src/components/views/rooms/RoomList.js
+++ b/src/components/views/rooms/RoomList.js
@@ -1,6 +1,6 @@
/*
Copyright 2015, 2016 OpenMarket Ltd
-Copyright 2017 Vector Creations Ltd
+Copyright 2017, 2018 Vector Creations Ltd
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -451,6 +451,8 @@ module.exports = React.createClass({
}
}
+ if (!this.stickies) return;
+
const self = this;
let scrollStuckOffset = 0;
// Scroll to the passed in position, i.e. a header was clicked and in a scroll to state
From d84ecbe97c884e69d3e177ebe10b8e74a4916b70 Mon Sep 17 00:00:00 2001
From: David Baker
Date: Mon, 13 Aug 2018 13:53:38 +0100
Subject: [PATCH 090/343] s/m.server_notices/m.server_notice/
---
src/components/structures/LoggedInView.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/components/structures/LoggedInView.js b/src/components/structures/LoggedInView.js
index c23dbaf444..5b617feb68 100644
--- a/src/components/structures/LoggedInView.js
+++ b/src/components/structures/LoggedInView.js
@@ -178,7 +178,7 @@ const LoggedInView = React.createClass({
onRoomStateEvents: function(ev, state) {
const roomLists = RoomListStore.getRoomLists();
- if (roomLists['m.server_notices'] && roomLists['m.server_notices'].includes(ev.getRoomId())) {
+ if (roomLists['m.server_notice'] && roomLists['m.server_notice'].some(r => r.roomId === ev.getRoomId())) {
this._updateServerNoticeEvents();
}
},
From f7f62ba09daf47ee11d965645858ee441b69347a Mon Sep 17 00:00:00 2001
From: David Baker
Date: Mon, 13 Aug 2018 14:04:08 +0100
Subject: [PATCH 091/343] Lint
---
src/components/views/globals/ServerLimitBar.js | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/src/components/views/globals/ServerLimitBar.js b/src/components/views/globals/ServerLimitBar.js
index 26cc5ca566..c0a7376bd6 100644
--- a/src/components/views/globals/ServerLimitBar.js
+++ b/src/components/views/globals/ServerLimitBar.js
@@ -29,7 +29,7 @@ export default React.createClass({
getDefaultProps: function() {
return {
kind: 'hard',
- }
+ };
},
render: function() {
@@ -44,12 +44,13 @@ export default React.createClass({
} else {
return sub;
}
- }
+ };
if (this.props.kind === 'hard') {
toolbarClasses['mx_MatrixToolbar_error'] = true;
content = _t(
- "This homeserver has hit its Monthly Active User limit. Please contact your service administrator to continue using the service.",
+ "This homeserver has hit its Monthly Active User limit. " +
+ "Please contact your service administrator to continue using the service.",
{},
{
'a': translateLink,
@@ -58,7 +59,9 @@ export default React.createClass({
} else {
toolbarClasses['mx_MatrixToolbar_info'] = true;
content = _t(
- "This homeserver has hit its Monthly Active User limit so some users will not be able to log in. Please contact your service administrator to get this limit increased.",
+ "This homeserver has hit its Monthly Active User " +
+ "limit so some users will not be able to log in. " +
+ "Please contact your service administrator to get this limit increased.",
{},
{
'a': translateLink,
From 84b74247e625cc7bbab36db7caca38a18db403b4 Mon Sep 17 00:00:00 2001
From: Bruno Windels
Date: Mon, 13 Aug 2018 16:19:44 +0200
Subject: [PATCH 092/343] check if server supports lazy loading before enabling
---
src/components/structures/UserSettings.js | 28 +++++++++++++++++++----
src/i18n/strings/en_EN.json | 4 +++-
2 files changed, 27 insertions(+), 5 deletions(-)
diff --git a/src/components/structures/UserSettings.js b/src/components/structures/UserSettings.js
index a5ba4ff0fa..157540f183 100644
--- a/src/components/structures/UserSettings.js
+++ b/src/components/structures/UserSettings.js
@@ -847,7 +847,7 @@ module.exports = React.createClass({
const onChange = async (e) => {
const checked = e.target.checked;
if (featureId === "feature_lazyloading") {
- const confirmed = await this._onLazyLoadChanging();
+ const confirmed = await this._onLazyLoadChanging(checked);
if (!confirmed) {
e.preventDefault();
return;
@@ -886,9 +886,28 @@ module.exports = React.createClass({
);
},
- _onLazyLoadChanging: function() {
- return new Promise((resolve) => {
- const QuestionDialog = sdk.getComponent("dialogs.QuestionDialog");
+ _onLazyLoadChanging: async function(enabling) {
+ const QuestionDialog = sdk.getComponent("dialogs.QuestionDialog");
+ // don't prevent turning LL off when not supported
+ if (enabling) {
+ const supported = await MatrixClientPeg.get().doesServerSupportLazyLoading();
+ if (!supported) {
+ await new Promise((resolve) => {
+ Modal.createDialog(QuestionDialog, {
+ title: _t("Lazy loading members not supported"),
+ description:
+
+ { _t("Lazy loading is not supported by your " +
+ "current homeserver.") }
+
,
+ button: _t("OK"),
+ onFinished: resolve,
+ });
+ });
+ return false;
+ }
+ }
+ const confirmed = await new Promise((resolve) => {
Modal.createDialog(QuestionDialog, {
title: _t("Turn on/off lazy load members"),
description:
@@ -909,6 +928,7 @@ module.exports = React.createClass({
onFinished: resolve,
});
});
+ return confirmed;
},
_renderDeactivateAccount: function() {
diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json
index f1f056f58e..eb05ff36e7 100644
--- a/src/i18n/strings/en_EN.json
+++ b/src/i18n/strings/en_EN.json
@@ -1220,5 +1220,7 @@
"Increase performance by only loading room members on first view": "Increase performance by only loading room members on first view",
"Turn on/off lazy load members": "Turn on/off lazy load members",
"To enable or disable the lazy loading of members, the current synced state needs to be cleared out. This also includes your end-to-end encryption keys, so to keep being able to decrypt all your existing encrypted messages, you'll need to export your E2E room keys and import them again afterwards.": "To enable or disable the lazy loading of members, the current synced state needs to be cleared out. This also includes your end-to-end encryption keys, so to keep being able to decrypt all your existing encrypted messages, you'll need to export your E2E room keys and import them again afterwards.",
- "Clear sync state and reload": "Clear sync state and reload"
+ "Clear sync state and reload": "Clear sync state and reload",
+ "Lazy loading members not supported": "Lazy load members not supported",
+ "Lazy loading is not supported by your current homeserver.": "Lazy loading is not supported by your current homeserver."
}
From c2540c146cd2de0566945a6b4629cea9dbd1a21b Mon Sep 17 00:00:00 2001
From: Krombel
Date: Tue, 7 Aug 2018 14:37:16 +0000
Subject: [PATCH 093/343] Translated using Weblate (German)
Currently translated at 100.0% (1217 of 1217 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/de/
---
src/i18n/strings/de_DE.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json
index db8ac72e9a..e2377ffa71 100644
--- a/src/i18n/strings/de_DE.json
+++ b/src/i18n/strings/de_DE.json
@@ -1227,5 +1227,5 @@
"Please contact your service administrator to continue using this service.": "Bitte kontaktiere deinen Administrator um diesen Dienst weiter zu nutzen.",
"System Alerts": "System-Benachrichtigung",
"This homeserver has hit its Monthly Active User limit. Please contact your service administrator to continue using the service.": "Der Server hat sein monatliches Nutzerlimit erreicht. Bitte kontaktiere deinen Administrator, um den Service weiter nutzen zu können.",
- "Your message wasn’t sent because this homeserver has hit its Monthly Active User Limit. Please contact your service administrator to continue using the service.": "Deine Nachricht konnte nicht verschickt werden, weil der Homeserver sein Monatliches Nutzerlimit erreicht hat. Bitte kontaktiere deine Administrator, um den Service weiter nutzen zu können."
+ "Your message wasn’t sent because this homeserver has hit its Monthly Active User Limit. Please contact your service administrator to continue using the service.": "Deine Nachricht konnte nicht verschickt werden, weil der Homeserver sein monatliches Nutzerlimit erreicht hat. Bitte kontaktiere deine Administrator, um den Service weiter nutzen zu können."
}
From e8d9b85827823adb507342640ca022d138b96c30 Mon Sep 17 00:00:00 2001
From: Szimszon
Date: Fri, 10 Aug 2018 08:27:57 +0000
Subject: [PATCH 094/343] Translated using Weblate (Hungarian)
Currently translated at 100.0% (1217 of 1217 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/hu/
---
src/i18n/strings/hu.json | 38 +++++++++++++++++++-------------------
1 file changed, 19 insertions(+), 19 deletions(-)
diff --git a/src/i18n/strings/hu.json b/src/i18n/strings/hu.json
index dffa00b523..ef6ec09b8a 100644
--- a/src/i18n/strings/hu.json
+++ b/src/i18n/strings/hu.json
@@ -71,8 +71,8 @@
"Blacklisted": "Fekete listára téve",
"Bulk Options": "Tömeges beállítások",
"Call Timeout": "Hívás időtúllépés",
- "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Nem lehet kapcsolódni a saját szerverhez - ellenőrizd a kapcsolatot, biztosítsd, hogy a saját szerver tanúsítványa hiteles legyen, és a böngésző kiterjesztések ne blokkolják a kéréseket.",
- "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.": "Nem lehet csatlakozni a saját szerverhez HTTP-n keresztül ha HTTPS van a böngésző címsorában. Vagy használj HTTPS-t vagy engedélyezd a nem biztonságos script-et.",
+ "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Nem lehet kapcsolódni a Matrix szerverhez - ellenőrizd a kapcsolatot, biztosítsd, hogy a Matrix szerver tanúsítványa hiteles legyen, és a böngésző kiterjesztések ne blokkolják a kéréseket.",
+ "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.": "Nem lehet csatlakozni a Matrix szerverhez HTTP-n keresztül ha HTTPS van a böngésző címsorában. Vagy használj HTTPS-t vagy engedélyezd a nem biztonságos script-et.",
"Can't load user settings": "A felhasználói beállítások nem tölthetők be",
"Change Password": "Jelszó megváltoztatása",
"%(senderName)s changed their profile picture.": "%(senderName)s megváltoztatta a profil képét.",
@@ -156,7 +156,7 @@
"Enter Code": "Kód megadása",
"Enter passphrase": "Jelmondat megadása",
"Error decrypting attachment": "Csatolmány visszafejtése sikertelen",
- "Error: Problem communicating with the given homeserver.": "Hiba: Probléma van az saját szerverrel való kommunikációval.",
+ "Error: Problem communicating with the given homeserver.": "Hiba: Probléma van a Matrix szerverrel való kommunikációval.",
"Event information": "Esemény információ",
"Existing Call": "Hívás folyamatban",
"Export": "Mentés",
@@ -191,14 +191,14 @@
"For security, this session has been signed out. Please sign in again.": "A biztonság érdekében ez a kapcsolat le lesz bontva. Légy szíves jelentkezz be újra.",
"For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.": "A biztonság érdekében a kilépéskor a ponttól pontig való (E2E) titkosításhoz szükséges kulcsok törlésre kerülnek a böngészőből. Ha a régi üzeneteket továbbra is el szeretnéd olvasni, kérlek mentsed ki a szobákhoz tartozó kulcsot.",
"%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s : %(fromPowerLevel)s -> %(toPowerLevel)s",
- "Guest access is disabled on this Home Server.": "Vendég belépés tiltva van a Saját szerveren.",
+ "Guest access is disabled on this Home Server.": "Vendég belépés tiltva van a Matrix szerveren.",
"Guests cannot join this room even if explicitly invited.": "Vendégek akkor sem csatlakozhatnak ehhez a szobához ha külön meghívók kaptak.",
"Hangup": "Megszakít",
"Hide read receipts": "Olvasási visszajelzés elrejtése",
"Hide Text Formatting Toolbar": "Szövegformázási menü elrejtése",
"Historical": "Archív",
"Home": "Kezdőlap",
- "Homeserver is": "Saját szerver:",
+ "Homeserver is": "Matrix szerver:",
"Identity Server is": "Azonosítási szerver:",
"I have verified my email address": "Ellenőriztem az e-mail címemet",
"Import": "Betöltés",
@@ -359,10 +359,10 @@
"The email address linked to your account must be entered.": "A fiókodhoz kötött e-mail címet add meg.",
"Press to start a chat with someone": "Nyomd meg a gombot ha szeretnél csevegni valakivel",
"Privacy warning": "Adatvédelmi figyelmeztetés",
- "The file '%(fileName)s' exceeds this home server's size limit for uploads": "'%(fileName)s' fájl túllépte a Saját szerverben beállított feltöltési méret határt",
+ "The file '%(fileName)s' exceeds this home server's size limit for uploads": "'%(fileName)s' fájl túllépte a Matrix szerverben beállított feltöltési méret határt",
"The file '%(fileName)s' failed to upload": "'%(fileName)s' fájl feltöltése sikertelen",
"The remote side failed to pick up": "A hívott fél nem vette fel",
- "This Home Server does not support login using email address.": "A Saját szerver nem támogatja a belépést e-mail címmel.",
+ "This Home Server does not support login using email address.": "A Matrix szerver nem támogatja a belépést e-mail címmel.",
"This invitation was sent to an email address which is not associated with this account:": "A meghívó olyan e-mail címre lett küldve ami nincs összekötve ezzel a fiókkal:",
"This room has no local addresses": "Ennek a szobának nincs helyi címe",
"This room is not recognised.": "Ez a szoba nem ismerős.",
@@ -461,7 +461,7 @@
"You need to be able to invite users to do that.": "Hogy ezt csinálhasd meg kell tudnod hívni felhasználókat.",
"You need to be logged in.": "Be kell jelentkezz.",
"You need to enter a user name.": "Be kell írnod a felhasználói nevet.",
- "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Ez az e-mail cím, úgy néz ki, nincs összekötve a Matrix azonosítóval ezen a saját szerveren.",
+ "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Ez az e-mail cím, úgy néz ki, nincs összekötve a Matrix azonosítóval ezen a Matrix szerveren.",
"Your password has been reset": "A jelszavad visszaállítottuk",
"Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them": "A jelszavadat sikeresen megváltoztattuk. Nem kapsz \"push\" értesítéseket amíg a többi eszközön vissza nem jelentkezel",
"Unable to ascertain that the address this invite was sent to matches one associated with your account.": "A címről amire a meghívót elküldtük nem állapítható meg, hogy a fiókoddal összeköttetésben áll-e.",
@@ -469,7 +469,7 @@
"You seem to be uploading files, are you sure you want to quit?": "Úgy tűnik fájlokat töltesz fel, biztosan kilépsz?",
"You should not yet trust it to secure data": "Még ne bízz meg a titkosításban",
"You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "Nem leszel képes visszavonni ezt a változtatást mivel a felhasználót ugyanarra a szintre emeled amin te vagy.",
- "Your home server does not support device management.": "A Saját szervered nem támogatja az eszközök kezelését.",
+ "Your home server does not support device management.": "A Matrix szervered nem támogatja az eszközök kezelését.",
"Sun": "Vas",
"Mon": "Hé",
"Tue": "K",
@@ -564,7 +564,7 @@
"Verify...": "Ellenőrzés...",
"ex. @bob:example.com": "pl.: @bob:example.com",
"Add User": "Felhasználó hozzáadás",
- "This Home Server would like to make sure you are not a robot": "A Saját szerver meg szeretne győződni arról, hogy nem vagy robot",
+ "This Home Server would like to make sure you are not a robot": "A Matrix szerver meg szeretne győződni arról, hogy nem vagy robot",
"Sign in with CAS": "Belépés CAS-sal",
"Please check your email to continue registration.": "Ellenőrizd az e-mailedet a regisztráció folytatásához.",
"Token incorrect": "Helytelen token",
@@ -572,7 +572,7 @@
"You are registering with %(SelectedTeamName)s": "%(SelectedTeamName)s névvel regisztrálsz",
"Default server": "Alapértelmezett szerver",
"Custom server": "Egyedi szerver",
- "Home server URL": "Saját szerver URL",
+ "Home server URL": "Matrix szerver URL",
"Identity server URL": "Azonosítási szerver URL",
"What does this mean?": "Ez mit jelent?",
"Error decrypting audio": "Hiba a hang visszafejtésénél",
@@ -614,12 +614,12 @@
"If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.": "Ha egy újabb Riot verziót használtál valószínűleg ez kapcsolat nem lesz kompatibilis vele. Zárd be az ablakot és térj vissza az újabb verzióhoz.",
"You are currently blacklisting unverified devices; to send messages to these devices you must verify them.": "Jelenleg fekete listára teszel minden ismeretlen eszközt. Ha üzenetet szeretnél küldeni ezekre az eszközökre először ellenőrizned kell őket.",
"We recommend you go through the verification process for each device to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.": "Azt javasoljuk, hogy menj végig ellenőrző folyamaton minden eszköznél, hogy meg megerősítsd minden eszköz a jogos tulajdonosához tartozik, de újraküldheted az üzenetet ellenőrzés nélkül, ha úgy szeretnéd.",
- "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.": "Használhatod az Otthoni szerver opciót, hogy más Matrix szerverre csatlakozz Saját szerver URL megadásával.",
- "This allows you to use this app with an existing Matrix account on a different home server.": "Ezzel használhatod ezt az alkalmazást a meglévő Matrix fiókoddal és másik Saját szerveren.",
+ "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.": "Használhatod az Matrix szerver opciót, hogy más Matrix szerverre csatlakozz Matrix szerver URL megadásával.",
+ "This allows you to use this app with an existing Matrix account on a different home server.": "Ezzel használhatod ezt az alkalmazást a meglévő Matrix fiókoddal és másik Matrix szerveren.",
"You can also set a custom identity server but this will typically prevent interaction with users based on email address.": "Beállíthatsz egy egyedi azonosító szervert is de ez tulajdonképpen meggátolja az együttműködést e-mail címmel azonosított felhasználókkal.",
"If you don't specify an email address, you won't be able to reset your password. Are you sure?": "Ha nem állítasz be e-mail címet nem fogod tudni a jelszavadat alaphelyzetbe állítani. Biztos vagy benne?",
"You are about to be taken to a third-party site so you can authenticate your account for use with %(integrationsUrl)s. Do you wish to continue?": "Azonosítás céljából egy harmadik félhez leszel irányítva (%(integrationsUrl)s). Folytatod?",
- "This will be your account name on the homeserver, or you can pick a different server.": "Ez lesz a felhasználói neved a saját szerveren, vagy választhatsz egy másik szervert.",
+ "This will be your account name on the homeserver, or you can pick a different server.": "Ez lesz a felhasználói neved a Matrix szerveren, vagy választhatsz egy másik szervert.",
"Disable Peer-to-Peer for 1:1 calls": "Közvetlen kapcsolat tiltása az 1:1 hívásoknál",
"To return to your account in future you need to set a password": "Ahhoz hogy később visszatérj a fiókodba be kell állítanod egy jelszót",
"Skip": "Kihagy",
@@ -777,7 +777,7 @@
"Long Description (HTML)": "Hosszú leírás (HTML)",
"Community Settings": "Közösségi beállítások",
"Community %(groupId)s not found": "%(groupId)s közösség nem található",
- "This Home server does not support communities": "Ez a saját szerver nem támogatja a közösségeket",
+ "This Home server does not support communities": "Ez a Matrix szerver nem támogatja a közösségeket",
"Error whilst fetching joined communities": "Hiba a csatlakozott közösségek betöltésénél",
"Create a new community": "Új közösség létrehozása",
"example": "példa",
@@ -913,7 +913,7 @@
"Flair will not appear": "Jelvények nem jelennek meg",
"Something went wrong when trying to get your communities.": "Valami nem sikerült a közösségeid elérésénél.",
"Display your community flair in rooms configured to show it.": "Közösségi jelvényeid megjelenítése azokban a szobákban ahol ez engedélyezett.",
- "This homeserver doesn't offer any login flows which are supported by this client.": "Ez a saját szerver egyetlen bejelentkezési metódust sem támogat amit ez a kliens ismer.",
+ "This homeserver doesn't offer any login flows which are supported by this client.": "Ez a Matrix szerver egyetlen bejelentkezési metódust sem támogat amit ez a kliens ismer.",
"Addresses": "Címek",
"collapse": "becsuk",
"expand": "kinyit",
@@ -948,7 +948,7 @@
"Your language of choice": "A használt nyelv",
"Which officially provided instance you are using, if any": "Milyen hivatalosan nyújtott verziót használsz",
"Whether or not you're using the Richtext mode of the Rich Text Editor": "Használod-e a Richtext módot a szerkesztőben vagy nem",
- "Your homeserver's URL": "Az egyedi szerver URL-t",
+ "Your homeserver's URL": "A Matrix szerver URL-t",
"Your identity server's URL": "Az azonosítási szerver URL-t",
"%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s": "%(fullYear)s. %(monthName)s %(day)s, %(weekDayName)s",
"This room is not public. You will not be able to rejoin without an invite.": "Ez a szoba nem nyilvános. Kilépés után csak újabb meghívóval tudsz újra belépni a szobába.",
@@ -1019,7 +1019,7 @@
"You cannot delete this image. (%(code)s)": "Nem törölheted ezt a képet. (%(code)s)",
"Cancel Sending": "Küldés megszakítása",
"This Room": "Ebben a szobában",
- "The Home Server may be too old to support third party networks": "Lehet, hogy a saját szerver túl régi és nem támogatja a csatlakozást más hálózatokhoz",
+ "The Home Server may be too old to support third party networks": "Lehet, hogy a Matrix szerver túl régi és nem támogatja a csatlakozást más hálózatokhoz",
"Resend": "Küldés újra",
"Room not found": "A szoba nem található",
"Messages containing my display name": "A profilnevemet tartalmazó üzenetek",
@@ -1041,7 +1041,7 @@
"Members": "Résztvevők",
"No update available.": "Nincs elérhető frissítés.",
"Noisy": "Hangos",
- "Failed to get protocol list from Home Server": "Nem sikerült a protokoll listát lekérni a saját szerverről",
+ "Failed to get protocol list from Home Server": "Nem sikerült a protokoll listát lekérni a Matrix szerverről",
"Collecting app version information": "Alkalmazás verzió információk összegyűjtése",
"Delete the room alias %(alias)s and remove %(name)s from the directory?": "Törlöd a szoba nevét (%(alias)s) és eltávolítod a listából ezt: %(name)s?",
"This will allow you to return to your account after signing out, and sign in on other devices.": "Így kijelentkezés után is vissza tudsz lépni a fiókodba, illetve más készülékekről is be tudsz lépni.",
From 5366584ab9b01ef821db03b00a85415e867e8868 Mon Sep 17 00:00:00 2001
From: Moo
Date: Sun, 12 Aug 2018 21:23:39 +0000
Subject: [PATCH 095/343] Translated using Weblate (Lithuanian)
Currently translated at 37.2% (453 of 1217 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/lt/
---
src/i18n/strings/lt.json | 281 +++++++++++++++++++++++++++++++++++++--
1 file changed, 273 insertions(+), 8 deletions(-)
diff --git a/src/i18n/strings/lt.json b/src/i18n/strings/lt.json
index e1525f7af1..0e98596e12 100644
--- a/src/i18n/strings/lt.json
+++ b/src/i18n/strings/lt.json
@@ -13,7 +13,7 @@
"Analytics": "Statistika",
"The information being sent to us to help make Riot.im better includes:": "Informacijoje, kuri yra siunčiama Riot.im tobulinimui yra:",
"Fetching third party location failed": "Nepavyko gauti trečios šalies vietos",
- "A new version of Riot is available.": "Yra nauja Riot versija.",
+ "A new version of Riot is available.": "Yra prieinama nauja Riot versija.",
"I understand the risks and wish to continue": "Aš suprantu riziką ir noriu tęsti",
"Couldn't load home page": "Nepavyksta užkrauti namų puslapio",
"Send Account Data": "Siųsti paskyros duomenis",
@@ -43,7 +43,7 @@
"All notifications are currently disabled for all targets.": "Šiuo metu visi pranešimai visiems objektams yra išjungti.",
"Operation failed": "Operacija nepavyko",
"delete the alias.": "ištrinti slapyvardį.",
- "To return to your account in future you need to set a password": "Ateityje norėdami prisijungti prie savo paskyros turite susigalvoti slaptažodį",
+ "To return to your account in future you need to set a password": "Ateityje, norėdami grįžti prie savo paskyros turite nusistatyti slaptažodį",
"Forget": "Pamiršti",
"World readable": "Visiems skaitomas",
"Mute": "Užtildyti",
@@ -64,7 +64,7 @@
"Notifications on the following keywords follow rules which can’t be displayed here:": "Pranešimai šiems raktažodžiams yra uždrausti taisyklėmis:",
"Safari and Opera work too.": "Naudojant Safari ir Opera taip pat gerai veikia.",
"Please set a password!": "Prašau įrašykite slaptažodį!",
- "powered by Matrix": "palaikomas Matrix",
+ "powered by Matrix": "veikia su Matrix",
"You have successfully set a password!": "Jūs sėkmingai įrašėte slaptažodį!",
"Favourite": "Svarbūs",
"All Rooms": "Visi pokalbių kambariai",
@@ -97,7 +97,7 @@
"Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Riot naudoja daug išplėstinių naršyklės funkcionalumų, kai kurie iš jų yra neprieinami ar eksperimentinei Jūsų naršyklėje.",
"Event sent!": "Įvykis išsiųstas!",
"Unnamed room": "Kambarys be pavadinimo",
- "Dismiss": "Nutraukti",
+ "Dismiss": "Atmesti",
"Explore Account Data": "Peržiūrėti paskyros duomenis",
"Remove from Directory": "Šalinti iš katalogo",
"Download this file": "Atsisiųsti šį failą",
@@ -109,7 +109,7 @@
"Failed to set Direct Message status of room": "Nepavyko nustatyti tiesioginio pranešimo kambario būklės",
"Monday": "Pirmadienis",
"All messages (noisy)": "Visos žinutės (triukšmingas)",
- "Enable them now": "Įgalinti juos dabar",
+ "Enable them now": "Įjungti juos dabar",
"Enable audible notifications in web client": "Įgalinti garsinius pranešimus internetinėje aplinkoje",
"Messages containing my user name": "Žinutės, kuriose paminėtas mano naudotojo vardas",
"Toolbox": "Įrankinė",
@@ -154,7 +154,7 @@
"Quote": "Citata",
"Messages in group chats": "Žinutės grupės pokalbiuose",
"Yesterday": "Vakar",
- "Error encountered (%(errorDetail)s).": "Gauta klaida (%(errorDetail)s).",
+ "Error encountered (%(errorDetail)s).": "Susidurta su klaida (%(errorDetail)s).",
"Login": "Prisijungti",
"Low Priority": "Nesvarbūs",
"Riot does not know how to join a room on this network": "Riot nežino kaip prisijungti prie kambario šiame tinkle",
@@ -181,11 +181,276 @@
"%(count)s Members|one": "%(count)s narys",
"Developer Tools": "Programuotojo įrankiai",
"Unhide Preview": "Rodyti paržiūrą",
- "Custom Server Options": "Pasirinktiniai serverio nustatymai",
+ "Custom Server Options": "Tinkinto serverio parametrai",
"Event Content": "Įvykio turinys",
"Thank you!": "Ačiū!",
"Collapse panel": "Suskleisti skydelį",
"With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "Naudojant šią naršyklę aplikacija gali atrodyti ir reaguoti neteisingai. Kai kurios arba visos funkcijos gali neveikti. Jei vis tiek norite pabandyti gali tęsti, tačiau iškilusios problemos yra jūsų pačių reikalas!",
"Checking for an update...": "Tikrinama ar yra atnaujinimų...",
- "There are advanced notifications which are not shown here": "Yra išplėstinių pranešimų, kurie nėra čia rodomi"
+ "There are advanced notifications which are not shown here": "Yra išplėstinių pranešimų, kurie nėra čia rodomi",
+ "e.g. %(exampleValue)s": "pvz., %(exampleValue)s",
+ "e.g. ": "pvz., ",
+ "Your device resolution": "Jūsų įrenginio raiška",
+ "Call Failed": "Skambutis nepavyko",
+ "Call Anyway": "Vis tiek skambinti",
+ "Answer Anyway": "Vis tiek atsiliepti",
+ "Call": "Skambinti",
+ "Answer": "Atsiliepti",
+ "Unable to capture screen": "Nepavyko nufotografuoti ekraną",
+ "You are already in a call.": "Jūs jau dalyvaujate skambutyje.",
+ "VoIP is unsupported": "VoIP yra nepalaikoma",
+ "Could not connect to the integration server": "Nepavyko prisijungti prie integracijos serverio",
+ "Permission Required": "Reikalingas leidimas",
+ "The file '%(fileName)s' failed to upload": "Nepavyko įkelti failo \"%(fileName)s\"",
+ "Upload Failed": "Įkėlimas nepavyko",
+ "Sun": "Sek",
+ "Mon": "Pir",
+ "Tue": "Ant",
+ "Wed": "Tre",
+ "Thu": "Ket",
+ "Fri": "Pen",
+ "Sat": "Šeš",
+ "Jan": "Sau",
+ "Feb": "Vas",
+ "Mar": "Kov",
+ "Apr": "Bal",
+ "May": "Geg",
+ "Jun": "Bir",
+ "Jul": "Lie",
+ "Aug": "Rgp",
+ "Sep": "Rgs",
+ "Oct": "Spa",
+ "Nov": "Lap",
+ "Dec": "Gru",
+ "PM": "PM",
+ "AM": "AM",
+ "%(weekDayName)s %(time)s": "%(weekDayName)s %(time)s",
+ "%(weekDayName)s, %(monthName)s %(day)s %(time)s": "%(weekDayName)s, %(monthName)s %(day)s %(time)s",
+ "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s": "%(weekDayName)s, %(fullYear)s %(monthName)s %(day)s",
+ "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s": "%(weekDayName)s, %(fullYear)s %(monthName)s %(day)s %(time)s",
+ "Who would you like to add to this community?": "Ką norėtumėte pridėti į šią bendruomenę?",
+ "Warning: any person you add to a community will be publicly visible to anyone who knows the community ID": "Įspėjimas: bet kuris pridėtas asmuo bus matomas visiems, žinantiems bendruomenės ID",
+ "Name or matrix ID": "Vardas ar matrix ID",
+ "Invite to Community": "Pakviesti į bendruomenę",
+ "Which rooms would you like to add to this community?": "Kuriuos kambarius norėtumėte pridėti į šią bendruomenę?",
+ "Add rooms to the community": "Pridėti kambarius į bendruomenę",
+ "Add to community": "Pridėti į bendruomenę",
+ "Failed to invite the following users to %(groupId)s:": "Nepavyko pakviesti šių naudotojų į %(groupId)s:",
+ "Failed to invite users to community": "Nepavyko pakviesti naudotojus į bendruomenę",
+ "Failed to invite users to %(groupId)s": "Nepavyko pakviesti naudotojų į %(groupId)s",
+ "Failed to add the following rooms to %(groupId)s:": "Nepavyko pridėti šiuos kambarius į %(groupId)s:",
+ "Riot does not have permission to send you notifications - please check your browser settings": "Riot neturi leidimo siųsti jums pranešimus - patikrinkite savo naršyklės nustatymus",
+ "Riot was not given permission to send notifications - please try again": "Riot nebuvo suteiktas leidimas siųsti pranešimus - bandykite dar kartą",
+ "Unable to enable Notifications": "Nepavyko įjungti Pranešimus",
+ "This email address was not found": "Šis el. pašto adresas nebuvo rastas",
+ "Admin": "Administratorius",
+ "Start a chat": "Pradėti pokalbį",
+ "Email, name or matrix ID": "El. paštas, vardas ar matrix ID",
+ "Start Chat": "Pradėti pokalbį",
+ "Who would you like to add to this room?": "Ką norėtumėte pridėti į šį kambarį?",
+ "Send Invites": "Siųsti pakvietimus",
+ "Failed to invite user": "Nepavyko pakviesti naudotojo",
+ "Failed to invite": "Nepavyko pakviesti",
+ "Failed to invite the following users to the %(roomName)s room:": "Nepavyko pakviesti šių naudotojų į kambarį %(roomName)s :",
+ "You need to be logged in.": "Turite būti prisijungę.",
+ "Unable to create widget.": "Nepavyko sukurti valdiklio.",
+ "Failed to send request.": "Nepavyko išsiųsti užklausos.",
+ "This room is not recognised.": "Šis kambarys neatpažintas.",
+ "You are not in this room.": "Jūs nesate šiame kambaryje.",
+ "You do not have permission to do that in this room.": "Jūs neturite leidimo tai atlikti šiame kambaryje.",
+ "Room %(roomId)s not visible": "Kambarys %(roomId)s nematomas",
+ "/ddg is not a command": "/ddg nėra komanda",
+ "Changes your display nickname": "Pakeičia jūsų rodomą slapyvardį",
+ "Sets the room topic": "Nustato kambario temą",
+ "Invites user with given id to current room": "Pakviečia naudotoją su nurodytu id į esamą kambarį",
+ "You are now ignoring %(userId)s": "Dabar nepaisote %(userId)s",
+ "Opens the Developer Tools dialog": "Atveria kūrėjo įrankių dialogą",
+ "Unknown (user, device) pair:": "Nežinoma pora (naudotojas, įrenginys):",
+ "Device already verified!": "Įrenginys jau patvirtintas!",
+ "WARNING: Device already verified, but keys do NOT MATCH!": "ĮSPĖJIMAS: Įrenginys jau patvirtintas, tačiau raktai NESUTAMPA!",
+ "Verified key": "Patvirtintas raktas",
+ "Displays action": "Rodo veiksmą",
+ "Unrecognised command:": "Neatpažinta komanda:",
+ "Reason": "Priežastis",
+ "%(targetName)s accepted an invitation.": "%(targetName)s priėmė pakvietimą.",
+ "%(senderName)s invited %(targetName)s.": "%(senderName)s pakvietė naudotoją %(targetName)s.",
+ "%(oldDisplayName)s changed their display name to %(displayName)s.": "%(oldDisplayName)s pasikeitė savo rodomą vardą į %(displayName)s.",
+ "%(senderName)s set their display name to %(displayName)s.": "%(senderName)s nusistatė savo rodomą vardą į %(displayName)s.",
+ "%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName)s pašalino savo rodomą vardą (%(oldDisplayName)s).",
+ "%(senderName)s removed their profile picture.": "%(senderName)s pašalino savo profilio paveikslą.",
+ "%(senderName)s changed their profile picture.": "%(senderName)s pasikeitė savo profilio paveikslą.",
+ "%(senderName)s set a profile picture.": "%(senderName)s nusistatė profilio paveikslą.",
+ "%(targetName)s rejected the invitation.": "%(targetName)s atmetė pakvietimą.",
+ "%(senderDisplayName)s changed the topic to \"%(topic)s\".": "%(senderDisplayName)s pakeitė temą į \"%(topic)s\".",
+ "%(senderDisplayName)s changed the room name to %(roomName)s.": "%(senderDisplayName)s pakeitė kambario pavadinimą į %(roomName)s.",
+ "%(senderDisplayName)s sent an image.": "%(senderDisplayName)s išsiuntė paveikslą.",
+ "Someone": "Kažkas",
+ "%(senderName)s answered the call.": "%(senderName)s atsiliepė į skambutį.",
+ "(unknown failure: %(reason)s)": "(nežinoma lemtingoji klaida: %(reason)s)",
+ "%(senderName)s ended the call.": "%(senderName)s užbaigė skambutį.",
+ "%(displayName)s is typing": "%(displayName)s rašo",
+ "%(names)s and %(count)s others are typing|other": "%(names)s ir dar kiti %(count)s rašo",
+ "%(names)s and %(lastPerson)s are typing": "%(names)s ir %(lastPerson)s rašo",
+ "Send anyway": "Vis tiek siųsti",
+ "Unnamed Room": "Kambarys be pavadinimo",
+ "Hide removed messages": "Slėpti pašalintas žinutes",
+ "Hide display name changes": "Slėpti rodomo vardo pakeitimus",
+ "Show timestamps in 12 hour format (e.g. 2:30pm)": "Rodyti laiko žymas 12 valandų formatu (pvz., 2:30pm)",
+ "Always show message timestamps": "Visada rodyti žinučių laiko žymas",
+ "Always show encryption icons": "Visada rodyti šifravimo piktogramas",
+ "Room Colour": "Kambario spalva",
+ "Decline": "Atmesti",
+ "Accept": "Priimti",
+ "Incorrect verification code": "Neteisingas patvirtinimo kodas",
+ "Submit": "Pateikti",
+ "Phone": "Telefonas",
+ "Add phone number": "Pridėti telefono numerį",
+ "Add": "Pridėti",
+ "Failed to upload profile picture!": "Nepavyko įkelti profilio paveikslą!",
+ "Upload new:": "Įkelti naują:",
+ "No display name": "Nėra rodomo vardo",
+ "New passwords don't match": "Nauji slaptažodžiai nesutampa",
+ "Passwords can't be empty": "Slaptažodžiai negali būti tušti",
+ "Warning!": "Įspėjimas!",
+ "Do you want to set an email address?": "Ar norite nustatyti el. pašto adresą?",
+ "Current password": "Dabartinis slaptažodis",
+ "Password": "Slaptažodis",
+ "New Password": "Naujas slaptažodis",
+ "Unable to load device list": "Nepavyko įkelti įrenginių sąrašo",
+ "Delete %(count)s devices|one": "Ištrinti įrenginį",
+ "Device ID": "Įrenginio ID",
+ "Device Name": "Įrenginio pavadinimas",
+ "Failed to set display name": "Nepavyko nustatyti rodomą vardą",
+ "Disable Notifications": "Išjungti pranešimus",
+ "Enable Notifications": "Įjungti pranešimus",
+ "Cannot add any more widgets": "Nepavyksta pridėti daugiau valdiklių",
+ "Add a widget": "Pridėti valdiklį",
+ "Drop File Here": "Vilkite failą čia",
+ "Drop file here to upload": "Norėdami įkelti, vilkite failą čia",
+ " (unsupported)": " (nepalaikoma)",
+ "%(senderName)s sent an image": "%(senderName)s išsiuntė paveikslą",
+ "%(senderName)s sent a video": "%(senderName)s išsiuntė vaizdo įrašą",
+ "%(senderName)s uploaded a file": "%(senderName)s įkėlė failą",
+ "Options": "Parametrai",
+ "Key request sent.": "Rakto užklausa išsiųsta.",
+ "Unencrypted message": "Nešifruota žinutė",
+ "device id: ": "įrenginio id: ",
+ "Failed to mute user": "Nepavyko nutildyti naudotoją",
+ "Are you sure?": "Ar tikrai?",
+ "Devices": "Įrenginiai",
+ "Ignore": "Nepaisyti",
+ "Invite": "Pakviesti",
+ "User Options": "Naudotojo parametrai",
+ "Admin Tools": "Administratoriaus įrankiai",
+ "bold": "pusjuodis",
+ "italic": "kursyvas",
+ "Attachment": "Priedas",
+ "Upload Files": "Įkelti failus",
+ "Are you sure you want to upload the following files?": "Ar tikrai norite įkelti šiuos failus?",
+ "Encrypted room": "Šifruotas kambarys",
+ "Unencrypted room": "Nešifruotas kambarys",
+ "Voice call": "Balso skambutis",
+ "Video call": "Vaizdo skambutis",
+ "Upload file": "Įkelti failą",
+ "Show Text Formatting Toolbar": "Rodyti teksto formatavimo įrankių juostą",
+ "Send an encrypted reply…": "Siųsti šifruotą atsakymą…",
+ "Send a reply (unencrypted)…": "Siųsti atsakymą (nešifruotą)…",
+ "Send an encrypted message…": "Siųsti šifruotą žinutę…",
+ "Send a message (unencrypted)…": "Siųsti žinutę (nešifruotą)…",
+ "Hide Text Formatting Toolbar": "Slėpti teksto formatavimo įrankių juostą",
+ "Server error": "Serverio klaida",
+ "Command error": "Komandos klaida",
+ "Unable to reply": "Nepavyko atsakyti",
+ "Loading...": "Įkeliama...",
+ "Pinned Messages": "Prisegtos žinutės",
+ "Unknown": "Nežinoma",
+ "Save": "Įrašyti",
+ "(~%(count)s results)|other": "(~%(count)s rezultatų(-ai))",
+ "(~%(count)s results)|one": "(~%(count)s rezultatas)",
+ "Upload avatar": "Įkelti avatarą",
+ "Remove avatar": "Šalinti avatarą",
+ "Settings": "Nustatymai",
+ "Show panel": "Rodyti skydelį",
+ "Press to start a chat with someone": "Norėdami pradėti su kuo nors pokalbį, paspauskite ",
+ "Community Invites": "",
+ "People": "Žmonės",
+ "Reason: %(reasonText)s": "Priežastis: %(reasonText)s",
+ "%(roomName)s does not exist.": "%(roomName)s nėra.",
+ "%(roomName)s is not accessible at this time.": "%(roomName)s šiuo metu nėra pasiekiamas.",
+ "Click here to join the discussion!": "Spustelėkite čia, norėdami prisijungti prie diskusijos!",
+ "To change the topic, you must be a": "Norėdami pakeisti temą, privalote būti",
+ "Enable encryption": "Įjungti šifravimą",
+ "To send messages, you must be a": "Norėdami siųsti žinutes, privalote būti",
+ "To invite users into the room, you must be a": "Norėdami pakviesti naudotojus į kambarį, privalote būti",
+ "To configure the room, you must be a": "Norėdami konfigūruoti kambarį, privalote būti",
+ "To remove other users' messages, you must be a": "Norėdami šalinti kitų naudotojų žinutes, privalote būti",
+ "%(user)s is a %(userRole)s": "%(user)s yra %(userRole)s",
+ "Muted Users": "Nutildyti naudotojai",
+ "Click here to fix": "Spustelėkite čia, norėdami pataisyti",
+ "To send events of type , you must be a": "Norėdami siųsti tipo įvykius, privalote būti",
+ "Only people who have been invited": "Tik žmonės, kurie buvo pakviesti",
+ "Anyone who knows the room's link, apart from guests": "Bet kas, žinantis kambario nuorodą, išskyrus svečius",
+ "Anyone who knows the room's link, including guests": "Bet kas, žinantis kambario nuorodą, įskaitant svečius",
+ "Anyone": "Bet kas",
+ "Permissions": "Leidimai",
+ "Advanced": "Išplėstiniai",
+ "This room's internal ID is": "Šio kambario vidinis ID yra",
+ "Add a topic": "Pridėti temą",
+ "Invalid address format": "Neteisingas adreso formatas",
+ "Addresses": "Adresai",
+ "The main address for this room is": "Pagrindinis šio kambario adresas yra",
+ "Local addresses for this room:": "Vietiniai šio kambario adresai:",
+ "This room has no local addresses": "Šis kambarys neturi jokių vietinių adresų",
+ "New address (e.g. #foo:%(localDomain)s)": "Naujas adresas (pvz., #betkoks:%(localDomain)s)",
+ "Invalid community ID": "Neteisingas bendruomenės ID",
+ "'%(groupId)s' is not a valid community ID": "\"%(groupId)s\" nėra teisingas bendruomenės ID",
+ "New community ID (e.g. +foo:%(localDomain)s)": "Naujas bendruomenės ID (pvz., +betkoks:%(localDomain)s)",
+ "URL Previews": "URL nuorodų peržiūros",
+ "Error decrypting audio": "Klaida iššifruojant garsą",
+ "Error decrypting attachment": "Klaida iššifruojant priedą",
+ "Decrypt %(text)s": "Iššifruoti %(text)s",
+ "Download %(text)s": "Atsisiųsti %(text)s",
+ "Error decrypting image": "Klaida iššifruojant paveikslą",
+ "Error decrypting video": "Klaida iššifruojant vaizdo įrašą",
+ "Copied!": "Nukopijuota!",
+ "Failed to copy": "Nepavyko nukopijuoti",
+ "Message removed by %(userId)s": "Žinutę pašalino %(userId)s",
+ "Message removed": "Žinutė pašalinta",
+ "To continue, please enter your password.": "Norėdami tęsti, įveskite savo slaptažodį.",
+ "Password:": "Slaptažodis:",
+ "An email has been sent to %(emailAddress)s": "El. laiškas buvo išsiųstas į %(emailAddress)s",
+ "Please check your email to continue registration.": "Norėdami tęsti registraciją, patikrinkite savo el. paštą.",
+ "A text message has been sent to %(msisdn)s": "Tekstinė žinutė buvo išsiųsta į %(msisdn)s",
+ "Please enter the code it contains:": "Įveskite joje esantį kodą:",
+ "Code": "Kodas",
+ "The email field must not be blank.": "El. pašto laukas negali būti tuščias.",
+ "The user name field must not be blank.": "Naudotojo vardo laukas negali būti tuščias.",
+ "The phone number field must not be blank.": "Telefono numerio laukas negali būti tuščias.",
+ "The password field must not be blank.": "Slaptažodžio laukas negali būti tuščias.",
+ "User name": "Naudotojo vardas",
+ "Mobile phone number": "Mobiliojo telefono numeris",
+ "Forgot your password?": "Pamiršote slaptažodį?",
+ "Email address": "El. pašto adresas",
+ "Email address (optional)": "El. pašto adresas (nebūtinas)",
+ "Mobile phone number (optional)": "Mobiliojo telefono numeris (nebūtinas)",
+ "Default server": "Numatytasis serveris",
+ "Custom server": "Tinkintas serveris",
+ "What does this mean?": "Ką tai reiškia?",
+ "Remove from community": "Šalinti iš bendruomenės",
+ "Remove this user from community?": "Šalinti šį naudotoją iš bendruomenės?",
+ "Failed to remove user from community": "Nepavyko pašalinti naudotoją iš bendruomenės",
+ "Are you sure you want to remove '%(roomName)s' from %(groupId)s?": "Ar tikrai norite pašalinti \"%(roomName)s\" iš %(groupId)s?",
+ "Failed to remove room from community": "Nepavyko pašalinti kambarį iš bendruomenės",
+ "Failed to remove '%(roomName)s' from %(groupId)s": "Nepavyko pašalinti \"%(roomName)s\" iš %(groupId)s",
+ "Something went wrong!": "Kažkas nutiko!",
+ "Visibility in Room List": "Matomumas kambarių sąraše",
+ "Visible to everyone": "Matomas visiems",
+ "Yes, I want to help!": "Taip, aš noriu padėti!",
+ "Unknown Address": "Nežinomas adresas",
+ "Warning: This widget might use cookies.": "Įspėjimas: Šis valdiklis gali naudoti slapukus.",
+ "Do you want to load widget from URL:": "Ar norite įkelti valdiklį iš URL:",
+ "Allow": "Leisti",
+ "Delete Widget": "Ištrinti valdiklį",
+ "Delete widget": "Ištrinti valdiklį",
+ "Failed to remove widget": "Nepavyko pašalinti valdiklį"
}
From 210d31a0083df258ec3073298514c146c12d8ce8 Mon Sep 17 00:00:00 2001
From: csybr
Date: Sun, 12 Aug 2018 21:54:40 +0000
Subject: [PATCH 096/343] Translated using Weblate (Norwegian Nynorsk)
Currently translated at 100.0% (1217 of 1217 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/nn/
---
src/i18n/strings/nn.json | 24 ++++++++++++------------
1 file changed, 12 insertions(+), 12 deletions(-)
diff --git a/src/i18n/strings/nn.json b/src/i18n/strings/nn.json
index 40d16dcc47..33a4839378 100644
--- a/src/i18n/strings/nn.json
+++ b/src/i18n/strings/nn.json
@@ -133,7 +133,7 @@
"To use it, just wait for autocomplete results to load and tab through them.": "For å bruka han, vent på at resultata fyller seg ut og tab gjennom dei.",
"Deops user with given id": "AvOPar brukarar med den gjevne IDen",
"Opens the Developer Tools dialog": "Opnar Utviklarverktøy-tekstboksen",
- "Verifies a user, device, and pubkey tuple": "Godkjenner ein brukar, eining og pubkey tuple",
+ "Verifies a user, device, and pubkey tuple": "Godkjenner ein brukar, eining og offentleg-nykeltuppel",
"Unverify": "Fjern godkjenning",
"Verify...": "Godkjenn...",
"Which officially provided instance you are using, if any": "Kva offisielt gjevne instanse du brukar, viss nokon",
@@ -171,7 +171,7 @@
"Someone": "Nokon",
"(not supported by this browser)": "(ikkje støtta av denne nettlesaren)",
"%(senderName)s answered the call.": "%(senderName)s tok røret.",
- "(could not connect media)": "(klarte ikkje å kopla opp media)",
+ "(could not connect media)": "(klarte ikkje å kopla saman media)",
"(no answer)": "(inkje svar)",
"(unknown failure: %(reason)s)": "(ukjend mislukking: %(reason)s)",
"%(senderName)s ended the call.": "%(senderName)s enda samtala.",
@@ -242,9 +242,9 @@
"Messages sent by bot": "Meldingar sendt frå ein bot",
"Active call (%(roomName)s)": "Pågåande samtale (%(roomName)s)",
"unknown caller": "ukjend ringar",
- "Incoming voice call from %(name)s": "%(name)s ynskar ei stemmesamtale",
- "Incoming video call from %(name)s": "%(name)s ynskar ei videosamtale",
- "Incoming call from %(name)s": "%(name)s ynskar ei samtale",
+ "Incoming voice call from %(name)s": "%(name)s ynskjer ei stemmesamtale",
+ "Incoming video call from %(name)s": "%(name)s ynskjer ei videosamtale",
+ "Incoming call from %(name)s": "%(name)s ynskjer ei samtale",
"Decline": "Sei nei",
"Accept": "Sei ja",
"Error": "Noko gjekk gale",
@@ -317,7 +317,7 @@
"%(senderName)s uploaded a file": "%(senderName)s lasta ei fil opp",
"Options": "Innstillingar",
"Your key share request has been sent - please check your other devices for key share requests.": "Nykeldelingsforespurnaden din vart send - ver venleg og sjekk dei andre einingane dine for nykeldelingsforespurnadar.",
- "If your other devices do not have the key for this message you will not be able to decrypt them.": "Viss dei andre einingane dine ikkje har nykelen til denne meldinga kan du ikkje dekryptera dei.",
+ "If your other devices do not have the key for this message you will not be able to decrypt them.": "Viss dei andre einingane dine ikkje har nykelen til denne meldinga kan du ikkje dekryptera ho.",
"Key request sent.": "Nykelforespurnad er send.",
"Re-request encryption keys from your other devices.": "Spør på nytt om enkrypteringsnykel frå dei andre einingane dine.",
"Undecryptable": "Kan ikkje dekrypterast",
@@ -452,7 +452,7 @@
"Historical": "Historiske",
"Unable to ascertain that the address this invite was sent to matches one associated with your account.": "Klarte ikkje å forsikra at adressa som denne innbydinga er send til samsvarar med den som er tilknytta brukaren din.",
"This invitation was sent to an email address which is not associated with this account:": "Denne invitasjonen er send til ei emailadressa som ikkje er tilknytta denne brukaren:",
- "You may wish to login with a different account, or add this email to this account.": "Kanskje du ynskar å logga inn med ein anna brukar, eller leggja til denne emailen til denne brukaren.",
+ "You may wish to login with a different account, or add this email to this account.": "Kanskje du ynskjer å logga inn med ein anna brukar, eller leggja til denne emailen til denne brukaren.",
"You have been invited to join this room by %(inviterName)s": "Du vart boden inn i dette rommet av %(inviterName)s",
"Would you like to accept or decline this invitation?": "Vil du seia ja eller nei til denne innbydinga?",
"Reason: %(reasonText)s": "Grunnlag: %(reasonText)s",
@@ -507,7 +507,7 @@
"Favourite": "Yndling",
"Tagged as: ": "Merka som: ",
"To link to a room it must have an address.": "For å lenkja til eit rom må det ha ei adresse.",
- "Guests cannot join this room even if explicitly invited.": "Gjester kan ikkje koma inn i dette rommet sjølv viss dei er særleg innbodne.",
+ "Guests cannot join this room even if explicitly invited.": "Gjester kan ikkje koma inn i dette rommet sjølv viss dei er tydeleg innbodne.",
"Click here to fix": "Klikk her for å retta opp i det",
"To send events of type , you must be a": "For å senda hendingar av sorten må du vera ein",
"Who can access this room?": "Kven har tilgang til rommet?",
@@ -584,7 +584,7 @@
"Message removed by %(userId)s": "Meldinga vart fjerna av %(userId)s",
"Message removed": "Meldinga vart fjerna",
"Robot check is currently unavailable on desktop - please use a web browser": "Robotsjekk er førebels ikkje tilgjengeleg på skrivebordet - ver venleg og bruk ein nettlesar",
- "This Home Server would like to make sure you are not a robot": "Denne heimtenaren ynskar å forsikra seg om at du ikkje er ein robot",
+ "This Home Server would like to make sure you are not a robot": "Denne heimtenaren ynskjer å forsikra seg om at du ikkje er ein robot",
"Sign in with CAS": "Logg inn med CAS",
"This allows you to use this app with an existing Matrix account on a different home server.": "Dette tillèt deg å bruka denne æppen med ein Matrixbrukar som allereie finst på ein annan heimtenar.",
"You can also set a custom identity server but this will typically prevent interaction with users based on email address.": "Du kan i tillegg setja ein eigen identitetstenar, men dette hindrar som regel samhandling med brukarar som brukar emailadresse.",
@@ -815,7 +815,7 @@
"Refresh": "Hent fram på nytt",
"Unable to restore session": "Kunne ikkje henta økta fram att",
"We encountered an error trying to restore your previous session.": "Noko gjekk gale med framhentinga av den førre økta di.",
- "If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.": "Viss du har bruka ei nyare utgåve av Riot før, kan det henda at økta di ikkje passar inn i denne utgåva. Lukk dette vindauga og gå attende til den nyare utgåva.",
+ "If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.": "Viss du har bruka ei nyare utgåve av Riot før, kan det henda at økta di ikkje passar inn i denne utgåva. Lukk dette vindauget og gå attende til den nyare utgåva.",
"Clearing your browser's storage may fix the problem, but will sign you out and cause any encrypted chat history to become unreadable.": "Det kan henda at å tømma nettlesarlageret rettar opp i det, men det loggar deg ut og kan gjera den enkrypterte pratehistoria uleseleg.",
"Invalid Email Address": "Ugangbar Emailadresse",
"This doesn't appear to be a valid email address": "Det ser ikkje ut til at emailadressa er gangbar",
@@ -895,9 +895,9 @@
"You must register to use this functionality": "Du må melda deg på for å bruka denne funksjonen",
"You must join the room to see its files": "Du må fare inn i rommet for å sjå filene dets",
"There are no visible files in this room": "Det er ingen synlege filer i dette rommet",
- "
HTML for your community's page
\n
\n Use the long description to introduce new members to the community, or distribute\n some important links\n
\n
\n You can even use 'img' tags\n
\n": "
HTML for samfunnssida di
\n
\n Bruk den Lange Skildringa for å ynska nye medlemer velkomen, eller gje ut viktige lenkjer\n
\n
\n Du kan til og med bruka 'img'-merkelappar!\n
\n",
+ "
HTML for your community's page
\n
\n Use the long description to introduce new members to the community, or distribute\n some important links\n
\n
\n You can even use 'img' tags\n
\n": "
HTML for samfunnssida di
\n
\n Bruk den Lange Skildringa for å ynskja nye medlemer velkomen, eller gje ut viktige lenkjer\n
\n
\n Du kan til og med bruka 'img'-merkelappar!\n
\n",
"Add rooms to the community summary": "Legg rom til i samfunnsoppsamanfattinga",
- "Which rooms would you like to add to this summary?": "Kva rom ynskar du å leggja til i samanfattinga?",
+ "Which rooms would you like to add to this summary?": "Kva rom ynskjer du å leggja til i samanfattinga?",
"Add to summary": "Legg til i samanfattinga",
"Failed to add the following rooms to the summary of %(groupId)s:": "Fekk ikkje til å leggja dei følgjande romma til i samanfattinga av %(groupId)s:",
"Add a Room": "Legg eit Rom til",
From 77b22ea9838d150770d9b50352d7cf07b10ff0d2 Mon Sep 17 00:00:00 2001
From: Andrey
Date: Fri, 10 Aug 2018 05:19:26 +0000
Subject: [PATCH 097/343] Translated using Weblate (Russian)
Currently translated at 99.1% (1207 of 1217 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/ru/
---
src/i18n/strings/ru.json | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/src/i18n/strings/ru.json b/src/i18n/strings/ru.json
index ca898b837f..77d4ec9c8d 100644
--- a/src/i18n/strings/ru.json
+++ b/src/i18n/strings/ru.json
@@ -1155,7 +1155,7 @@
"We encountered an error trying to restore your previous session.": "Произошла ошибка при попытке восстановить предыдущий сеанс.",
"Clearing your browser's storage may fix the problem, but will sign you out and cause any encrypted chat history to become unreadable.": "Очистка хранилища вашего браузера может устранить проблему, но при этом ваша сессия будет завершена и зашифрованная история чата станет нечитаемой.",
"Unable to reply": "Не удается ответить",
- "Unable to load event that was replied to, it either does not exist or you do not have permission to view it.": "Не удается загрузить событие, на которое был дан ответ, либо оно не существует, либо у вас нет разрешения на его просмотр.",
+ "Unable to load event that was replied to, it either does not exist or you do not have permission to view it.": "Не удается загрузить событие, на которое был дан ответ. Либо оно не существует, либо у вас нет разрешения на его просмотр.",
"Enable widget screenshots on supported widgets": "Включить скриншоты виджета в поддерживаемых виджетах",
"Collapse Reply Thread": "Ответить с цитированием",
"Send analytics data": "Отправить данные аналитики",
@@ -1209,11 +1209,13 @@
"Demote yourself?": "Понизить самого себя?",
"This event could not be displayed": "Это событие отобразить невозможно",
"deleted": "удален",
- "underlined": "подчеркнут",
+ "underlined": "подчеркнутый",
"A conference call could not be started because the intgrations server is not available": "Запуск конференции невозможен из-за недоступности сервера интеграции",
"Permission Required": "Требуется разрешение",
"You do not have permission to start a conference call in this room": "У вас нет разрешения на запуск конференции в этой комнате",
"A call is currently being placed!": "Есть активный вызов!",
"Failed to remove widget": "Не удалось удалить виджет",
- "An error ocurred whilst trying to remove the widget from the room": "Произошла ошибка при удалении виджета из комнаты"
+ "An error ocurred whilst trying to remove the widget from the room": "Произошла ошибка при удалении виджета из комнаты",
+ "System Alerts": "Системные оповещения",
+ "Please contact your service administrator to continue using this service.": "Для продолжения использования этого сервиса обратитесь к администратору."
}
From 3e9d1342e83aab8cb7c0b8b1d8558f8aa9192004 Mon Sep 17 00:00:00 2001
From: Bruno Windels
Date: Mon, 13 Aug 2018 16:51:37 +0200
Subject: [PATCH 098/343] fix lint
---
src/Lifecycle.js | 2 +-
src/settings/SettingsStore.js | 3 ++-
2 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/src/Lifecycle.js b/src/Lifecycle.js
index 4d62e6bb46..4ae651d3bb 100644
--- a/src/Lifecycle.js
+++ b/src/Lifecycle.js
@@ -527,4 +527,4 @@ export async function flushStorageAndReload() {
await cli.clearStores();
// start the session again without clearing storage
_doSetLoggedIn(credentials, false);
-}
\ No newline at end of file
+}
diff --git a/src/settings/SettingsStore.js b/src/settings/SettingsStore.js
index 76dd89a7f7..f17d47401e 100644
--- a/src/settings/SettingsStore.js
+++ b/src/settings/SettingsStore.js
@@ -248,7 +248,7 @@ export default class SettingsStore {
if (actualValue !== undefined && actualValue !== null) return actualValue;
return calculatedValue;
}
-
+ /* eslint-disable valid-jsdoc */
/**
* Sets the value for a setting. The room ID is optional if the setting is not being
* set for a particular room, otherwise it should be supplied. The value may be null
@@ -260,6 +260,7 @@ export default class SettingsStore {
* @param {*} value The new value of the setting, may be null.
* @return {Promise} Resolves when the setting has been changed.
*/
+ /* eslint-enable valid-jsdoc */
static async setValue(settingName, roomId, level, value) {
// Verify that the setting is actually a setting
if (!SETTINGS[settingName]) {
From 08f322753dddf4cf408c24cdddde31250786359d Mon Sep 17 00:00:00 2001
From: Bruno Windels
Date: Mon, 13 Aug 2018 16:53:16 +0200
Subject: [PATCH 099/343] explain exception
---
src/settings/SettingsStore.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/settings/SettingsStore.js b/src/settings/SettingsStore.js
index f17d47401e..cb6d83e884 100644
--- a/src/settings/SettingsStore.js
+++ b/src/settings/SettingsStore.js
@@ -248,7 +248,7 @@ export default class SettingsStore {
if (actualValue !== undefined && actualValue !== null) return actualValue;
return calculatedValue;
}
- /* eslint-disable valid-jsdoc */
+ /* eslint-disable valid-jsdoc */ //https://github.com/eslint/eslint/issues/7307
/**
* Sets the value for a setting. The room ID is optional if the setting is not being
* set for a particular room, otherwise it should be supplied. The value may be null
From 7dc92fe91729dea9782533747df4532cf79948f2 Mon Sep 17 00:00:00 2001
From: Bruno Windels
Date: Mon, 13 Aug 2018 17:24:27 +0200
Subject: [PATCH 100/343] Avoid clearing e2e encryption keys, also avoid
warning
---
src/components/structures/UserSettings.js | 25 ++-----------------
src/i18n/strings/en_EN.json | 3 ---
.../controllers/LazyLoadingController.js | 11 +++++---
3 files changed, 10 insertions(+), 29 deletions(-)
diff --git a/src/components/structures/UserSettings.js b/src/components/structures/UserSettings.js
index 157540f183..f4dc92aca4 100644
--- a/src/components/structures/UserSettings.js
+++ b/src/components/structures/UserSettings.js
@@ -887,12 +887,12 @@ module.exports = React.createClass({
},
_onLazyLoadChanging: async function(enabling) {
- const QuestionDialog = sdk.getComponent("dialogs.QuestionDialog");
// don't prevent turning LL off when not supported
if (enabling) {
const supported = await MatrixClientPeg.get().doesServerSupportLazyLoading();
if (!supported) {
await new Promise((resolve) => {
+ const QuestionDialog = sdk.getComponent("dialogs.QuestionDialog");
Modal.createDialog(QuestionDialog, {
title: _t("Lazy loading members not supported"),
description:
@@ -907,28 +907,7 @@ module.exports = React.createClass({
return false;
}
}
- const confirmed = await new Promise((resolve) => {
- Modal.createDialog(QuestionDialog, {
- title: _t("Turn on/off lazy load members"),
- description:
-
- { _t("To enable or disable the lazy loading of members, " +
- "the current synced state needs to be cleared out. " +
- "This also includes your end-to-end encryption keys, " +
- "so to keep being able to decrypt all your existing encrypted messages, " +
- "you'll need to export your E2E room keys and import them again afterwards.") }
-
,
- button: _t("Clear sync state and reload"),
- extraButtons: [
- ,
- ],
- onFinished: resolve,
- });
- });
- return confirmed;
+ return true;
},
_renderDeactivateAccount: function() {
diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json
index eb05ff36e7..2926f4c87c 100644
--- a/src/i18n/strings/en_EN.json
+++ b/src/i18n/strings/en_EN.json
@@ -1218,9 +1218,6 @@
"Failed to remove tag %(tagName)s from room": "Failed to remove tag %(tagName)s from room",
"Failed to add tag %(tagName)s to room": "Failed to add tag %(tagName)s to room",
"Increase performance by only loading room members on first view": "Increase performance by only loading room members on first view",
- "Turn on/off lazy load members": "Turn on/off lazy load members",
- "To enable or disable the lazy loading of members, the current synced state needs to be cleared out. This also includes your end-to-end encryption keys, so to keep being able to decrypt all your existing encrypted messages, you'll need to export your E2E room keys and import them again afterwards.": "To enable or disable the lazy loading of members, the current synced state needs to be cleared out. This also includes your end-to-end encryption keys, so to keep being able to decrypt all your existing encrypted messages, you'll need to export your E2E room keys and import them again afterwards.",
- "Clear sync state and reload": "Clear sync state and reload",
"Lazy loading members not supported": "Lazy load members not supported",
"Lazy loading is not supported by your current homeserver.": "Lazy loading is not supported by your current homeserver."
}
diff --git a/src/settings/controllers/LazyLoadingController.js b/src/settings/controllers/LazyLoadingController.js
index 334111ef7c..90f095c9ca 100644
--- a/src/settings/controllers/LazyLoadingController.js
+++ b/src/settings/controllers/LazyLoadingController.js
@@ -15,10 +15,15 @@ limitations under the License.
*/
import SettingController from "./SettingController";
-import dis from "../../dispatcher";
+import MatrixClientPeg from "../../MatrixClientPeg";
+import PlatformPeg from "../../PlatformPeg";
export default class LazyLoadingController extends SettingController {
- onChange(level, roomId, newValue) {
- dis.dispatch({action: 'flush_storage_reload'});
+ async onChange(level, roomId, newValue) {
+ if (!PlatformPeg.get()) return;
+
+ MatrixClientPeg.get().stopClient();
+ await MatrixClientPeg.get().store.deleteAllData();
+ PlatformPeg.get().reload();
}
}
From ecac2cfa8e644c2318c5199639bffca7bc85acbe Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?K=C3=A9vin=20C?=
Date: Mon, 13 Aug 2018 16:06:22 +0000
Subject: [PATCH 101/343] Translated using Weblate (French)
Currently translated at 100.0% (1218 of 1218 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/fr/
---
src/i18n/strings/fr.json | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/i18n/strings/fr.json b/src/i18n/strings/fr.json
index 8458f9428e..66e2ded55a 100644
--- a/src/i18n/strings/fr.json
+++ b/src/i18n/strings/fr.json
@@ -1227,5 +1227,7 @@
"Please contact your service administrator to continue using this service.": "Veuillez contacter l'administrateur de votre service pour continuer à l'utiliser.",
"Your message wasn’t sent because this homeserver has hit its Monthly Active User Limit. Please contact your service administrator to continue using the service.": "Votre message n'a pas été envoyé car ce serveur d'accueil a atteint sa limite mensuelle d'utilisateurs actifs. Veuillez contacter l'administrateur de votre service pour continuer à l'utiliser.",
"This homeserver has hit its Monthly Active User limit. Please contact your service administrator to continue using the service.": "Ce serveur d'accueil a atteint sa limite mensuelle d'utilisateurs actifs. Veuillez contacter l'administrateur de votre service pour continuer à l'utiliser.",
- "System Alerts": "Alertes système"
+ "System Alerts": "Alertes système",
+ "This homeserver has hit its Monthly Active User limit. Please contact your service administrator to continue using the service.": "Ce serveur d'accueil a atteint sa limite mensuelle d'utilisateurs actifs. Veuillez contacter l'administrateur de votre service pour continuer à l'utiliser.",
+ "This homeserver has hit its Monthly Active User limit so some users will not be able to log in. Please contact your service administrator to get this limit increased.": "Ce serveur d'accueil a atteint sa limite mensuelle d'utilisateurs actifs donc certains utilisateurs ne pourront pas se connecter. Veuillez contacter l'administrateur de votre service pour augmenter cette limite."
}
From 45584027a724771b72f5c38ee1fe31bc45c36ba5 Mon Sep 17 00:00:00 2001
From: Szimszon
Date: Mon, 13 Aug 2018 20:01:04 +0000
Subject: [PATCH 102/343] Translated using Weblate (Hungarian)
Currently translated at 100.0% (1218 of 1218 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/hu/
---
src/i18n/strings/hu.json | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/i18n/strings/hu.json b/src/i18n/strings/hu.json
index ef6ec09b8a..1cdb6ac5b3 100644
--- a/src/i18n/strings/hu.json
+++ b/src/i18n/strings/hu.json
@@ -1227,5 +1227,7 @@
"This homeserver has hit its Monthly Active User limit. Please contact your service administrator to continue using the service.": "Ez a matrix szerver elérte a havi aktív felhasználói korlátot. Kérlek vedd fel a kapcsolatot a szolgáltatás adminisztrátorával ha a továbbiakban is igénybe szeretnéd venni a szolgáltatást.",
"Your message wasn’t sent because this homeserver has hit its Monthly Active User Limit. Please contact your service administrator to continue using the service.": "Az üzeneted nem lett elküldve mert a Matrix szerver elérte a havi aktív felhasználói korlátot. Kérlek vedd fel a kapcsolatot a szolgáltatás adminisztrátorával ha a továbbiakban is igénybe szeretnéd venni a szolgáltatást.",
"This homeserver has hit its Monthly Active User limit": "Ez a Matrix szerver elérte a havi aktív felhasználói korlátot",
- "Please contact your service administrator to continue using this service.": "Kérlek vedd fel a kapcsolatot a szolgáltatás adminisztrátorával ha a továbbiakban is igénybe szeretnéd venni a szolgáltatást."
+ "Please contact your service administrator to continue using this service.": "Kérlek vedd fel a kapcsolatot a szolgáltatás adminisztrátorával ha a továbbiakban is igénybe szeretnéd venni a szolgáltatást.",
+ "This homeserver has hit its Monthly Active User limit. Please contact your service administrator to continue using the service.": "Ez a Matrix szerver elérte a havi aktív felhasználói korlátot. Kérlek vedd fel a kapcsolatot a szolgáltatás adminisztrátorával a szolgáltatás további használatához.",
+ "This homeserver has hit its Monthly Active User limit so some users will not be able to log in. Please contact your service administrator to get this limit increased.": "Ez a Matrix szerver elérte a havi aktív felhasználói korlátot, így néhány felhasználó nem fog tudni bejelentkezni. Kérlek vedd fel a kapcsolatot a szolgáltatás adminisztrátorával, hogy a korlátot felemeljék."
}
From a86ca952b3cac2370e4fd7cc5f370d93a34a8318 Mon Sep 17 00:00:00 2001
From: Bruno Windels
Date: Tue, 14 Aug 2018 09:38:43 +0200
Subject: [PATCH 103/343] forgot to remove this
---
src/Lifecycle.js | 29 -------------------------
src/components/structures/MatrixChat.js | 8 -------
2 files changed, 37 deletions(-)
diff --git a/src/Lifecycle.js b/src/Lifecycle.js
index 4ae651d3bb..f32f105889 100644
--- a/src/Lifecycle.js
+++ b/src/Lifecycle.js
@@ -499,32 +499,3 @@ export function stopMatrixClient() {
MatrixClientPeg.unset();
}
}
-/**
- * Clears indexeddb storage and reloads the session
- * localStorage is preserved.
- */
-export async function flushStorageAndReload() {
- // gather the credentials from localStorage as
- // MatrixClient.credentials only contains the userId
- // (gets cleared somewhere probably)
- // this just does the reverse of _persistCredentialsToLocalStorage
- const credentials = {
- homeserverUrl: localStorage.getItem("mx_hs_url"),
- identityServerUrl: localStorage.getItem("mx_is_url"),
- userId: localStorage.getItem("mx_user_id"),
- accessToken: localStorage.getItem("mx_access_token"),
- guest: JSON.parse(localStorage.getItem("mx_is_guest")),
- deviceId: localStorage.getItem("mx_device_id"),
- };
- // stop the client so it's not running anymore
- stopMatrixClient();
- // create a temporary client to clear out the persistent stores.
- const cli = createMatrixClient({
- // we'll never make any requests, so can pass a bogus HS URL
- baseUrl: "",
- });
- // clear indexeddb
- await cli.clearStores();
- // start the session again without clearing storage
- _doSetLoggedIn(credentials, false);
-}
diff --git a/src/components/structures/MatrixChat.js b/src/components/structures/MatrixChat.js
index dc2c1cb90b..e0bbf50d5a 100644
--- a/src/components/structures/MatrixChat.js
+++ b/src/components/structures/MatrixChat.js
@@ -479,14 +479,6 @@ export default React.createClass({
case 'logout':
Lifecycle.logout();
break;
- case 'flush_storage_reload':
- // flushStorageAndReload will dispatch actions
- // which we can't do in a dispatch handler
- // so yield first
- setTimeout(() => {
- Lifecycle.flushStorageAndReload();
- }, 0);
- break;
case 'start_registration':
this._startRegistration(payload.params || {});
break;
From c8b6ccba2595f604b517223e2c8202b276d2974c Mon Sep 17 00:00:00 2001
From: Bruno Windels
Date: Tue, 14 Aug 2018 11:43:03 +0200
Subject: [PATCH 104/343] fallback to room summary for dm detection
---
src/Rooms.js | 5 +++--
src/utils/DMRoomMap.js | 4 +---
2 files changed, 4 insertions(+), 5 deletions(-)
diff --git a/src/Rooms.js b/src/Rooms.js
index 2fda46450f..024a4f1d8c 100644
--- a/src/Rooms.js
+++ b/src/Rooms.js
@@ -90,8 +90,9 @@ export function looksLikeDirectMessageRoom(room, myUserId) {
// Used for 1:1 direct chats
// Show 1:1 chats in seperate "Direct Messages" section as long as they haven't
// been moved to a different tag section
- // TODO: Use SUMMARYAPI to take invited users into account
- if (room.currentState.getJoinedMemberCount() === 2 && !tagNames.length) {
+ const totalMemberCount = room.currentState.getJoinedMemberCount() +
+ room.currentState.getInvitedMemberCount();
+ if (totalMemberCount === 2 && !tagNames.length) {
return true;
}
}
diff --git a/src/utils/DMRoomMap.js b/src/utils/DMRoomMap.js
index acb1573cbf..d95eda490d 100644
--- a/src/utils/DMRoomMap.js
+++ b/src/utils/DMRoomMap.js
@@ -96,10 +96,8 @@ export default class DMRoomMap {
if (this.roomToUser[roomId] === undefined) {
// no entry? if the room is an invite, look for the is_direct hint.
const room = this.matrixClient.getRoom(roomId);
- // TODO Use SUMMARYAPI to fix DM detection?
if (room) {
- const me = room.getMember(this.matrixClient.getUserId());
- return me && me.getDMInviter();
+ return room.getDMInviter();
}
}
return this.roomToUser[roomId];
From 440ebd187da349414520e89202e5c52903d44d82 Mon Sep 17 00:00:00 2001
From: Bruno Windels
Date: Tue, 14 Aug 2018 11:47:05 +0200
Subject: [PATCH 105/343] getMyMembership() doesn't take id anymore
---
src/Rooms.js | 4 ++--
src/stores/RoomListStore.js | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/Rooms.js b/src/Rooms.js
index 024a4f1d8c..96e7c140bb 100644
--- a/src/Rooms.js
+++ b/src/Rooms.js
@@ -45,7 +45,7 @@ export function getOnlyOtherMember(room, myUserId) {
function _isConfCallRoom(room, myUserId, conferenceHandler) {
if (!conferenceHandler) return false;
- const myMembership = room.getMyMembership(myUserId);
+ const myMembership = room.getMyMembership();
if (myMembership != "join") {
return false;
}
@@ -81,7 +81,7 @@ export function isConfCallRoom(room, myUserId, conferenceHandler) {
}
export function looksLikeDirectMessageRoom(room, myUserId) {
- const myMembership = room.getMyMembership(myUserId);
+ const myMembership = room.getMyMembership();
const me = room.getMember(myUserId);
if (myMembership == "join" || myMembership === "ban" || (me && me.isKicked())) {
diff --git a/src/stores/RoomListStore.js b/src/stores/RoomListStore.js
index e415389423..7eb7b79509 100644
--- a/src/stores/RoomListStore.js
+++ b/src/stores/RoomListStore.js
@@ -174,7 +174,7 @@ class RoomListStore extends Store {
this._matrixClient.getRooms().forEach((room, index) => {
const myUserId = this._matrixClient.getUserId();
- const membership = room.getMyMembership(myUserId);
+ const membership = room.getMyMembership();
const me = room.getMember(myUserId);
if (membership == "invite") {
From f20920718a1d566bcee54727bd9e4172dde2ac24 Mon Sep 17 00:00:00 2001
From: David Baker
Date: Tue, 14 Aug 2018 14:28:30 +0100
Subject: [PATCH 106/343] Show room version number in room settings
Also change wording of the Room ID bit to match
Requires https://github.com/matrix-org/matrix-js-sdk/pull/689
For https://github.com/vector-im/riot-web/issues/7164
---
src/components/views/rooms/RoomSettings.js | 3 ++-
src/i18n/strings/en_EN.json | 3 ++-
2 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/src/components/views/rooms/RoomSettings.js b/src/components/views/rooms/RoomSettings.js
index 0ccfa23bf3..f30004059b 100644
--- a/src/components/views/rooms/RoomSettings.js
+++ b/src/components/views/rooms/RoomSettings.js
@@ -1039,7 +1039,8 @@ module.exports = React.createClass({
);
diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json
index 6fe775770c..08c7ae086d 100644
--- a/src/i18n/strings/en_EN.json
+++ b/src/i18n/strings/en_EN.json
@@ -540,7 +540,8 @@
"Members only (since they joined)": "Members only (since they joined)",
"Permissions": "Permissions",
"Advanced": "Advanced",
- "This room's internal ID is": "This room's internal ID is",
+ "Internal room ID: ": "Internal room ID: ",
+ "Room version number: ": "Room version number: ",
"Add a topic": "Add a topic",
"Search…": "Search…",
"This Room": "This Room",
From db0acdad45ec3a2d688d1f553eacea40003610d6 Mon Sep 17 00:00:00 2001
From: random
Date: Tue, 14 Aug 2018 14:05:13 +0000
Subject: [PATCH 107/343] Translated using Weblate (Italian)
Currently translated at 100.0% (1218 of 1218 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/it/
---
src/i18n/strings/it.json | 11 ++++++++++-
1 file changed, 10 insertions(+), 1 deletion(-)
diff --git a/src/i18n/strings/it.json b/src/i18n/strings/it.json
index 5ded20b727..3b87a71fcc 100644
--- a/src/i18n/strings/it.json
+++ b/src/i18n/strings/it.json
@@ -1219,5 +1219,14 @@
"The user name field must not be blank.": "Il campo nome utente non deve essere vuoto.",
"The phone number field must not be blank.": "Il campo telefono non deve essere vuoto.",
"The password field must not be blank.": "Il campo passwordl non deve essere vuoto.",
- "You can't send any messages until you review and agree to our terms and conditions.": "Non è possibile inviare alcun messaggio fino a quando non si esaminano e si accettano i nostri termini e condizioni permissionLink>."
+ "You can't send any messages until you review and agree to our terms and conditions.": "Non è possibile inviare alcun messaggio fino a quando non si esaminano e si accettano i nostri termini e condizioni permissionLink>.",
+ "A call is currently being placed!": "Attualmente è in corso una chiamata!",
+ "System Alerts": "Avvisi di sistema",
+ "This homeserver has hit its Monthly Active User limit. Please contact your service administrator to continue using the service.": "L'homeserver ha raggiunto il suo limite di utenti attivi mensili. Contatta l'amministratore del servizio per continuare ad usarlo.",
+ "This homeserver has hit its Monthly Active User limit so some users will not be able to log in. Please contact your service administrator to get this limit increased.": "Questo homeserver ha raggiunto il suo limite di utenti attivi mensili, perciò alcuni utenti non potranno accedere. Contatta l'amministratore del servizio per fare aumentare questo limite.",
+ "Failed to remove widget": "Rimozione del widget fallita",
+ "An error ocurred whilst trying to remove the widget from the room": "Si è verificato un errore tentando di rimuovere il widget dalla stanza",
+ "Your message wasn’t sent because this homeserver has hit its Monthly Active User Limit. Please contact your service administrator to continue using the service.": "Il tuo messaggio non è stato inviato perchè questo homeserver ha raggiunto il suo limite di utenti attivi mensili. Contatta l'amministratore del servizio per continuare ad usarlo.",
+ "This homeserver has hit its Monthly Active User limit": "Questo homeserver ha raggiunto il suo limite di utenti attivi mensili",
+ "Please contact your service administrator to continue using this service.": "Contatta l'amministratore del servizio per continuare ad usarlo."
}
From c736ae7efbe76c290e1fea43d5b338c5891485ee Mon Sep 17 00:00:00 2001
From: David Baker
Date: Tue, 14 Aug 2018 16:53:34 +0100
Subject: [PATCH 108/343] Copyright
---
src/components/views/rooms/RoomSettings.js | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/components/views/rooms/RoomSettings.js b/src/components/views/rooms/RoomSettings.js
index f30004059b..7a78d205b9 100644
--- a/src/components/views/rooms/RoomSettings.js
+++ b/src/components/views/rooms/RoomSettings.js
@@ -1,6 +1,7 @@
/*
Copyright 2015, 2016 OpenMarket Ltd
Copyright 2017 Vector Creations Ltd
+Copyright 2018 New Vector Ltd
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
From 2c41a5e49ac78a31dc7b6343a85bd3cfff48b0e1 Mon Sep 17 00:00:00 2001
From: RainSlide
Date: Tue, 14 Aug 2018 17:29:37 +0000
Subject: [PATCH 109/343] Translated using Weblate (Chinese (Simplified))
Currently translated at 99.7% (1215 of 1218 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/zh_Hans/
---
src/i18n/strings/zh_Hans.json | 145 ++++++++++++++++++++++++++--------
1 file changed, 113 insertions(+), 32 deletions(-)
diff --git a/src/i18n/strings/zh_Hans.json b/src/i18n/strings/zh_Hans.json
index b83873d207..e4de33223a 100644
--- a/src/i18n/strings/zh_Hans.json
+++ b/src/i18n/strings/zh_Hans.json
@@ -120,7 +120,7 @@
"Start Chat": "开始聊天",
"Submit": "提交",
"Success": "成功",
- "The default role for new room members is": "此聊天室新成员的默认角色是",
+ "The default role for new room members is": "新成员默认是",
"The main address for this room is": "此聊天室的主要地址是",
"This email address is already in use": "此邮箱地址已被使用",
"This email address was not found": "未找到此邮箱地址",
@@ -137,7 +137,7 @@
"%(senderName)s answered the call.": "%(senderName)s 接了通话。.",
"An error has occurred.": "一个错误出现了。",
"Attachment": "附件",
- "Autoplay GIFs and videos": "自动播放GIF和视频",
+ "Autoplay GIFs and videos": "自动播放 GIF 与视频",
"%(senderName)s banned %(targetName)s.": "%(senderName)s 封禁了 %(targetName)s.",
"Ban": "封禁",
"Banned users": "被封禁的用户",
@@ -286,7 +286,7 @@
"Add": "添加",
"Allow": "允许",
"Claimed Ed25519 fingerprint key": "声称的 Ed25519 指纹密钥",
- "Could not connect to the integration server": "无法连接集成服务器",
+ "Could not connect to the integration server": "无法连接关联的服务器",
"Curve25519 identity key": "Curve25519 认证密钥",
"Edit": "编辑",
"Joins room with given alias": "以指定的别名加入聊天室",
@@ -381,14 +381,14 @@
"Example": "例子",
"Create": "创建",
"Failed to upload image": "上传图像失败",
- "Add a widget": "添加一个小部件",
+ "Add a widget": "添加一个小挂件",
"Accept": "接受",
"Access Token:": "访问令牌:",
- "Cannot add any more widgets": "无法添加更多小组件",
- "Delete widget": "删除小组件",
+ "Cannot add any more widgets": "无法添加更多小挂件",
+ "Delete widget": "删除小挂件",
"Define the power level of a user": "定义一个用户的特权级",
"Drop here to tag %(section)s": "拖拽到这里标记 %(section)s",
- "Enable automatic language detection for syntax highlighting": "启用自动语言检测用于语法高亮",
+ "Enable automatic language detection for syntax highlighting": "为语法高亮启用自动检测编程语言",
"Failed to change power level": "修改特权级别失败",
"Kick": "移除",
"Kicks user with given id": "按照 ID 移除特定的用户",
@@ -399,7 +399,7 @@
"Power level must be positive integer.": "权限级别必须是正整数。",
"Reason: %(reasonText)s": "理由: %(reasonText)s",
"Revoke Moderator": "撤销主持人",
- "Revoke widget access": "撤销小部件的访问",
+ "Revoke widget access": "撤回小挂件的访问权",
"Remote addresses for this room:": "此聊天室的远程地址:",
"Remove Contact Information?": "移除联系人信息?",
"Remove %(threePid)s?": "移除 %(threePid)s?",
@@ -419,7 +419,7 @@
"This room's internal ID is": "此聊天室的内部 ID 为",
"Turn Markdown off": "禁用 Markdown",
"Turn Markdown on": "启用 Markdown",
- "Unable to create widget.": "无法创建小部件。",
+ "Unable to create widget.": "无法创建小挂件。",
"Unban": "解除封禁",
"Unable to capture screen": "无法录制屏幕",
"Unable to enable Notifications": "无法启用通知",
@@ -446,7 +446,7 @@
"Unblacklist": "移出黑名单",
"Not a valid Riot keyfile": "不是一个有效的 Riot 密钥文件",
"%(targetName)s accepted an invitation.": "%(targetName)s 已接受邀请。",
- "Do you want to load widget from URL:": "你想从此 URL 加载小组件吗:",
+ "Do you want to load widget from URL:": "你是否要从此 URL 中加载小挂件:",
"Hide join/leave messages (invites/kicks/bans unaffected)": "隐藏加入/退出消息(邀请/踢出/封禁不受影响)",
"Integrations Error": "集成错误",
"Publish this room to the public in %(domain)s's room directory?": "是否将此聊天室发布至 %(domain)s 的聊天室目录中?",
@@ -480,7 +480,7 @@
"Refer a friend to Riot:": "介绍朋友加入Riot:",
"%(roomName)s is not accessible at this time.": "%(roomName)s 此时无法访问。",
"Start authentication": "开始认证",
- "The maximum permitted number of widgets have already been added to this room.": "此聊天室可拥有的小部件数量已达到上限。",
+ "The maximum permitted number of widgets have already been added to this room.": "此聊天室可拥有的小挂件数量已达到上限。",
"The phone number entered looks invalid": "输入的手机号码看起来无效",
"The remote side failed to pick up": "对方未能接听",
"This Home Server does not support login using email address.": "HS不支持使用邮箱地址登陆。",
@@ -619,9 +619,9 @@
"Your unverified device '%(displayName)s' is requesting encryption keys.": "你的未经验证的设备 '%(displayName)s' 正在请求加密密钥。",
"Encryption key request": "加密密钥请求",
"Autocomplete Delay (ms):": "自动补全延迟(毫秒):",
- "%(widgetName)s widget added by %(senderName)s": "%(widgetName)s 小组建被 %(senderName)s 添加",
- "%(widgetName)s widget removed by %(senderName)s": "%(widgetName)s 小组建被 %(senderName)s 移除",
- "%(widgetName)s widget modified by %(senderName)s": "%(widgetName)s 小组建被 %(senderName)s 修改",
+ "%(widgetName)s widget added by %(senderName)s": "%(senderName)s 添加了 %(widgetName)s 小挂件",
+ "%(widgetName)s widget removed by %(senderName)s": "%(senderName)s 移除了 %(widgetName)s 小挂件",
+ "%(widgetName)s widget modified by %(senderName)s": "%(senderName)s 修改了 %(widgetName)s 小挂件",
"Unpin Message": "取消置顶消息",
"Add rooms to this community": "添加聊天室到此社区",
"Call Failed": "呼叫失败",
@@ -680,7 +680,7 @@
"A text message has been sent to %(msisdn)s": "一封短信已发送到 %(msisdn)s",
"Username on %(hs)s": "在 %(hs)s 上的用户名",
"Visible to everyone": "对所有人可见",
- "Delete Widget": "删除小组件",
+ "Delete Widget": "删除小挂件",
"were invited %(count)s times|other": "被邀请 %(count)s 次",
"were invited %(count)s times|one": "被邀请",
"was invited %(count)s times|other": "被邀请 %(count)s 次",
@@ -755,14 +755,14 @@
"Community Invites": "社区邀请",
"You are trying to access a room.": "你正在尝试访问一个聊天室。",
"To change the topic, you must be a": "要修改主题,你必须是",
- "To modify widgets in the room, you must be a": "要修改聊天室中的小组件,你必须是",
+ "To modify widgets in the room, you must be a": "要修改聊天室中的小挂件,你必须是",
"Banned by %(displayName)s": "被 %(displayName)s 封禁",
- "To send messages, you must be a": "要发送消息,你必须是",
- "To invite users into the room, you must be a": "要邀请用户到聊天室,你必须是",
- "To configure the room, you must be a": "要配置聊天室,你必须是",
- "To kick users, you must be a": "要踢出用户,你必须是",
- "To ban users, you must be a": "要封禁用户,你必须是",
- "To remove other users' messages, you must be a": "要删除其他用户的消息,你必须是",
+ "To send messages, you must be a": "若要发送消息,您至少要是",
+ "To invite users into the room, you must be a": "若要邀请用户至本聊天室,您至少要是",
+ "To configure the room, you must be a": "若要修改聊天室设置,您至少要是",
+ "To kick users, you must be a": "若要移除用户,您至少要是",
+ "To ban users, you must be a": "若要封禁用户,您至少要是",
+ "To remove other users' messages, you must be a": "若要删除其他用户的消息,您至少要是",
"%(user)s is a %(userRole)s": "%(user)s 是一个 %(userRole)s",
"To link to a room it must have an address.": "要链接一个聊天室,它必须有一个地址。",
"To send events of type , you must be a": "要发送类型为 的事件,你必须是",
@@ -774,7 +774,7 @@
"Community Name": "社区名",
"Community ID": "社区 ID",
"example": "例子",
- "This setting cannot be changed later!": "此设置在未来将无法修改!",
+ "This setting cannot be changed later!": "未来此设置将无法修改!",
"Add a Room": "添加一个聊天室",
"Add a User": "添加一个用户",
"Unable to accept invite": "无法接受邀请",
@@ -826,7 +826,7 @@
"Drop here to tag direct chat": "拖动到这里以加入私聊",
"Drop here to restore": "拖动到这里以还原",
"Drop here to demote": "拖动到这里以加入低优先级",
- "Unable to ascertain that the address this invite was sent to matches one associated with your account.": "无法确定此邀请发送给的邮件地址是否和与您的帐户相关的邮件地址相匹配。",
+ "Unable to ascertain that the address this invite was sent to matches one associated with your account.": "无法确定此邀请发送给的邮件地址是否与您帐户所关联的邮件地址相匹配。",
"You have been kicked from this room by %(userName)s.": "您已被 %(userName)s 从此聊天室中移除。",
"'%(groupId)s' is not a valid community ID": "“%(groupId)s” 不是有效的社区 ID",
"Flair": "Flair",
@@ -917,8 +917,8 @@
"Featured Users:": "核心用户:",
"Join this community": "加入此社区",
"%(inviter)s has invited you to join this community": "%(inviter)s 邀请您加入此社区",
- "Failed to add the following users to the summary of %(groupId)s:": "",
- "Failed to remove a user from the summary of %(groupId)s": "",
+ "Failed to add the following users to the summary of %(groupId)s:": "将下列用户添加到 %(groupId)s 的简介中时失败",
+ "Failed to remove a user from the summary of %(groupId)s": "从 %(groupId)s 的简介中移除用户时失败",
"You are an administrator of this community": "你是此社区的管理员",
"You are a member of this community": "你是此社区的成员",
"Who can join this community?": "谁可以加入此社区?",
@@ -960,7 +960,7 @@
"%(count)s Resend all or cancel all now. You can also select individual messages to resend or cancel.|other": "現在 重新发送消息 或 取消发送 。你也可以单独选择消息以重新发送或取消。",
"Visibility in Room List": "是否在聊天室目录中可见",
"Something went wrong when trying to get your communities.": "获取你加入的社区时发生错误。",
- "Deleting a widget removes it for all users in this room. Are you sure you want to delete this widget?": "删除小部件时将为聊天室中的所有成员删除。您确定要删除此小部件吗?",
+ "Deleting a widget removes it for all users in this room. Are you sure you want to delete this widget?": "删除小挂件时将为聊天室中的所有成员删除。您确定要删除此小挂件吗?",
"Fetching third party location failed": "获取第三方位置失败",
"A new version of Riot is available.": "Riot 有更新可用。",
"Couldn't load home page": "不能加载首页",
@@ -974,7 +974,7 @@
"You are not receiving desktop notifications": "您将不会收到桌面通知",
"Friday": "星期五",
"Update": "更新",
- "What's New": "新鲜事",
+ "What's New": "更新内容",
"Add an email address above to configure email notifications": "请在上方输入邮箱地址以接收邮件通知",
"Expand panel": "展开面板",
"On": "打开",
@@ -1065,7 +1065,7 @@
"Downloading update...": "正在下载更新…",
"State Key": "状态密钥",
"Failed to send custom event.": "自定义事件发送失败。",
- "What's new?": "有什么新闻?",
+ "What's new?": "更新了什么?",
"Notify me for anything else": "通知所有消息",
"When I'm invited to a room": "当我被邀请进入聊天室",
"Can't update user notification settings": "不能更新用户通知设置",
@@ -1130,7 +1130,7 @@
"Robot check is currently unavailable on desktop - please use a web browser": "目前机器人检查(CAPTCHA)在桌面端不可用——请使用 浏览器",
"The visibility of '%(roomName)s' in %(groupId)s could not be updated.": "无法更新聊天室 %(roomName)s 在社区 “%(groupId)s” 中的可见性。",
"Minimize apps": "最小化小部件",
- "Popout widget": "在弹出式窗口中打开小部件",
+ "Popout widget": "在弹出式窗口中打开小挂件",
"Picture": "图片",
"Unable to load event that was replied to, it either does not exist or you do not have permission to view it.": "无法加载被回复的事件,它可能不存在,也可能是您没有权限查看它。",
"And %(count)s more...|other": "和 %(count)s 个其他…",
@@ -1141,9 +1141,90 @@
"A call is already in progress!": "您已在通话中!",
"Jitsi Conference Calling": "Jitsi 电话会议",
"Send analytics data": "发送统计数据",
- "Enable widget screenshots on supported widgets": "对支持的小部件启用小部件截图",
+ "Enable widget screenshots on supported widgets": "对支持的小挂件启用小挂件截图",
"Encrypting": "正在加密",
"Encrypted, not sent": "已加密,未发送",
"Demote yourself?": "是否降低您自己的权限?",
- "Demote": "降权"
+ "Demote": "降权",
+ "A conference call could not be started because the intgrations server is not available": "关联的会议服务器不可用,无法发起电话会议",
+ "A call is currently being placed!": "已发起一次通话!",
+ "Permission Required": "需要权限",
+ "You do not have permission to start a conference call in this room": "您没有在此聊天室发起通话会议的权限",
+ "Show empty room list headings": "为空的聊天室列表显示 heading",
+ "This event could not be displayed": "无法显示此事件",
+ "Share Link to User": "分享链接给其他用户",
+ "deleted": "删除线",
+ "underlined": "下划线",
+ "inline-code": "代码",
+ "block-quote": "引用",
+ "bulleted-list": "无序列表",
+ "numbered-list": "有序列表",
+ "Share room": "分享聊天室",
+ "You have no historical rooms": "没有历史聊天室",
+ "System Alerts": "系统警告",
+ "To notify everyone in the room, you must be a": "若要通知所有聊天室成员,您至少要是",
+ "Muted Users": "被禁言的用户",
+ "In encrypted rooms, like this one, URL previews are disabled by default to ensure that your homeserver (where the previews are generated) cannot gather information about links you see in this room.": "在启用加密的聊天室中,比如此聊天室,链接预览被默认禁用以确保主服务器(访问链接、生成预览的地方)无法获知聊天室中的链接及其信息。",
+ "When someone puts a URL in their message, a URL preview can be shown to give more information about that link such as the title, description, and an image from the website.": "当有人发送一条带有链接的消息后,可显示链接的预览,链接预览可包含此链接的网页标题、描述以及图片。",
+ "The email field must not be blank.": "必须输入电子邮箱。",
+ "The user name field must not be blank.": "必须输入用户名。",
+ "The phone number field must not be blank.": "必须输入手机号码。",
+ "The password field must not be blank.": "必须输入密码。",
+ "Display your community flair in rooms configured to show it.": "在启用“显示 Flair”的聊天室中显示本社区的 Flair。",
+ "Please help improve Riot.im by sending anonymous usage data. This will use a cookie (please see our Cookie Policy).": "请发送 匿名使用数据 以帮助我们改进 Riot.im。这将用到 Cookie(请看看我们的 Cookie 隐私政策)。",
+ "Please help improve Riot.im by sending anonymous usage data. This will use a cookie.": "请发送 匿名使用数据 以帮助我们改进 Riot.im。这将用到 Cookie。",
+ "Yes, I want to help!": "好啊,我要帮助你们!",
+ "This homeserver has hit its Monthly Active User limit. Please contact your service administrator to continue using the service.": "此主服务器已达到其每月活跃用户数量限制。若要继续使用此服务,请 联系您的服务提供者 。",
+ "This homeserver has hit its Monthly Active User limit so some users will not be able to log in. Please contact your service administrator to get this limit increased.": "此主服务器已达到其每月活跃用户数量限制,所以,一些用户将无法登录。若要提高此数量限制,请 联系您的服务提供者 。",
+ "Warning: This widget might use cookies.": "警告:此小挂件可能会使用 cookies。",
+ "Failed to remove widget": "移除小挂件失败",
+ "An error ocurred whilst trying to remove the widget from the room": "尝试从聊天室中移除小部件时发生了一个错误",
+ "Reload widget": "刷新小挂件",
+ "Are you sure you wish to remove (delete) this event? Note that if you delete a room name or topic change, it could undo the change.": "您确定要移除(删除)此事件吗?注意,如果删除了聊天室名称或话题的变化,就会撤销此更改。",
+ "This will make your account permanently unusable. You will not be able to log in, and no one will be able to re-register the same user ID. This will cause your account to leave all rooms it is participating in, and it will remove your account details from your identity server. This action is irreversible.": "这将使您的账户永远不再可用。您将不能登录,或使用相同的用户 ID 重新注册。您的账户将退出所有已加入的聊天室,身份服务器上的账户信息也会被删除。此操作是不可逆的。",
+ "Deactivating your account does not by default cause us to forget messages you have sent. If you would like us to forget your messages, please tick the box below.": "停用您的账户不会默认忘记您发送的消息。如果您希望我们忘记您发送的消息,请勾选下面的选择框。",
+ "Message visibility in Matrix is similar to email. Our forgetting your messages means that messages you have sent will not be shared with any new or unregistered users, but registered users who already have access to these messages will still have access to their copy.": "Matrix 中的信息可见性类似于电子邮件。我们忘记您的消息意味着您发送的消息将不会被发至新注册或未注册的用户,但是已收到您的消息的注册用户依旧可以看到他们的副本。",
+ "Please forget all messages I have sent when my account is deactivated (Warning: this will cause future users to see an incomplete view of conversations)": "请在我停用账户的同时忘记我发送的所有消息(警告:这将导致未来的用户看到残缺的对话)",
+ "To continue, please enter your password:": "请输入您的密码以继续:",
+ "password": "密码",
+ "Log out and remove encryption keys?": "是否退出登录并清除加密密钥?",
+ "Clear Storage and Sign Out": "清除数据并退出登录",
+ "Send Logs": "发送日志",
+ "Refresh": "刷新",
+ "Unable to join community": "无法加入社区",
+ "The user '%(displayName)s' could not be removed from the summary.": "无法将用户“%(displayName)s”从简介中移除。",
+ "Who would you like to add to this summary?": "您想将谁添加到简介中?",
+ "Add users to the community summary": "添加用户至社区简介",
+ "Collapse Reply Thread": "收起回复",
+ "Share Message": "分享消息",
+ "COPY": "复制",
+ "Share Room Message": "分享聊天室消息",
+ "Share Community": "分享社区",
+ "Share User": "分享用户",
+ "Share Room": "分享聊天室",
+ "Clearing your browser's storage may fix the problem, but will sign you out and cause any encrypted chat history to become unreadable.": "清除本页储存在您浏览器上的数据或许能修复此问题,但也会导致您退出登录并无法读取任何已加密的聊天记录。",
+ "We encountered an error trying to restore your previous session.": "我们在尝试恢复您先前的会话时遇到了错误。",
+ "Link to most recent message": "最新消息的链接",
+ "Link to selected message": "选中消息的链接",
+ "Changes made to your community name and avatar might not be seen by other users for up to 30 minutes.": "至多半个小时内,其他用户可能看不到您社区的 名称 与 头像 的变化。",
+ "These rooms are displayed to community members on the community page. Community members can join the rooms by clicking on them.": "这些聊天室对社区成员可见。社区成员可通过点击来加入它们。",
+ "Your community hasn't got a Long Description, a HTML page to show to community members. Click here to open settings and give it one!": "您的社区还没有详细介绍,一个展示给社区成员的 HTML 页面。 点击这里即可打开设置添加详细介绍!",
+ "Failed to load %(groupId)s": "%(groupId)s 加载失败",
+ "This room is not public. You will not be able to rejoin without an invite.": "此聊天室不是公开的。没有邀请的话,您将无法重新加入。",
+ "Can't leave Server Notices room": "无法退出服务器公告聊天室",
+ "This room is used for important messages from the Homeserver, so you cannot leave it.": "此聊天室是用于发布来自主服务器的重要讯息的,所以您不能退出它。",
+ "Terms and Conditions": "条款与要求",
+ "To continue using the %(homeserverDomain)s homeserver you must review and agree to our terms and conditions.": "若要继续使用主服务器 %(homeserverDomain)s,您必须浏览并同意我们的条款与要求。",
+ "Review terms and conditions": "浏览条款与要求",
+ "To set up a filter, drag a community avatar over to the filter panel on the far left hand side of the screen. You can click on an avatar in the filter panel at any time to see only the rooms and people associated with that community.": "若要设置社区过滤器,请将社区头像拖到屏幕最左侧的社区过滤器面板上。单击社区过滤器面板中的社区头像即可过滤出与该社区相关联的房间和人员。",
+ "You can't send any messages until you review and agree to our terms and conditions.": "在您查看并同意 我们的条款与要求 之前,您不能发送任何消息。",
+ "Your message wasn’t sent because this homeserver has hit its Monthly Active User Limit. Please contact your service administrator to continue using the service.": "您的消息未被发出,因为此主服务器已达到其每月活跃用户数量上限。请联系您的服务提供者以继续使用此服务。",
+ "Clear filter": "清除过滤器",
+ "Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "尝试加载此聊天室时间轴上的某处,但您没有查看相关消息的权限。",
+ "No Audio Outputs detected": "未检测到可用的音频输出方式",
+ "Audio Output": "音频输出",
+ "An email has been sent to %(emailAddress)s. Once you've followed the link it contains, click below.": "已向 %(emailAddress)s 发送了一封电子邮件。点开邮件中的链接后,请点击下面。",
+ "This homeserver has hit its Monthly Active User limit": "此主服务器已达到其每月活跃用户数量上限",
+ "Please contact your service administrator to continue using this service.": "请联系您的服务提供者以继续使用此服务。",
+ "Try the app first": "先试试 Riot.im 应用吧"
}
From 6cbafa3faaac74cd341fc4366a1d6a74c7451b91 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?K=C3=A9vin=20C?=
Date: Mon, 13 Aug 2018 16:09:19 +0000
Subject: [PATCH 110/343] Translated using Weblate (French)
Currently translated at 100.0% (1218 of 1218 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/fr/
---
src/i18n/strings/fr.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/i18n/strings/fr.json b/src/i18n/strings/fr.json
index 66e2ded55a..d0b455f311 100644
--- a/src/i18n/strings/fr.json
+++ b/src/i18n/strings/fr.json
@@ -1087,7 +1087,7 @@
"Downloading update...": "Mise à jour en cours de téléchargement...",
"State Key": "Clé d'état",
"Failed to send custom event.": "Échec de l'envoi de l'événement personnalisé.",
- "What's new?": "Nouveautés ?",
+ "What's new?": "Nouveautés",
"Notify me for anything else": "Me notifier pour tout le reste",
"View Source": "Voir la source",
"Can't update user notification settings": "Impossible de mettre à jour les paramètres de notification de l'utilisateur",
From 2f3d0503afb2bcfabdf1a0e7c9ceabc9ad9eae21 Mon Sep 17 00:00:00 2001
From: Szimszon
Date: Wed, 15 Aug 2018 07:56:12 +0000
Subject: [PATCH 111/343] Translated using Weblate (Hungarian)
Currently translated at 100.0% (1219 of 1219 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/hu/
---
src/i18n/strings/hu.json | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/i18n/strings/hu.json b/src/i18n/strings/hu.json
index 1cdb6ac5b3..6ccf70f077 100644
--- a/src/i18n/strings/hu.json
+++ b/src/i18n/strings/hu.json
@@ -1229,5 +1229,7 @@
"This homeserver has hit its Monthly Active User limit": "Ez a Matrix szerver elérte a havi aktív felhasználói korlátot",
"Please contact your service administrator to continue using this service.": "Kérlek vedd fel a kapcsolatot a szolgáltatás adminisztrátorával ha a továbbiakban is igénybe szeretnéd venni a szolgáltatást.",
"This homeserver has hit its Monthly Active User limit. Please contact your service administrator to continue using the service.": "Ez a Matrix szerver elérte a havi aktív felhasználói korlátot. Kérlek vedd fel a kapcsolatot a szolgáltatás adminisztrátorával a szolgáltatás további használatához.",
- "This homeserver has hit its Monthly Active User limit so some users will not be able to log in. Please contact your service administrator to get this limit increased.": "Ez a Matrix szerver elérte a havi aktív felhasználói korlátot, így néhány felhasználó nem fog tudni bejelentkezni. Kérlek vedd fel a kapcsolatot a szolgáltatás adminisztrátorával, hogy a korlátot felemeljék."
+ "This homeserver has hit its Monthly Active User limit so some users will not be able to log in. Please contact your service administrator to get this limit increased.": "Ez a Matrix szerver elérte a havi aktív felhasználói korlátot, így néhány felhasználó nem fog tudni bejelentkezni. Kérlek vedd fel a kapcsolatot a szolgáltatás adminisztrátorával, hogy a korlátot felemeljék.",
+ "Internal room ID: ": "Belső szoba azonosító: ",
+ "Room version number: ": "Szoba verziószáma: "
}
From 647ce511dbf119f81c18bc87b2e888e9a31df241 Mon Sep 17 00:00:00 2001
From: Slavi Pantaleev
Date: Wed, 15 Aug 2018 08:09:24 +0000
Subject: [PATCH 112/343] Translated using Weblate (Bulgarian)
Currently translated at 100.0% (1219 of 1219 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/bg/
---
src/i18n/strings/bg.json | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/src/i18n/strings/bg.json b/src/i18n/strings/bg.json
index ae31b82e39..18cdd5afdb 100644
--- a/src/i18n/strings/bg.json
+++ b/src/i18n/strings/bg.json
@@ -1227,5 +1227,9 @@
"Please contact your service administrator to continue using this service.": "Моля, свържете се с администратора на услугата за да продължите да я използвате.",
"This homeserver has hit its Monthly Active User limit. Please contact your service administrator to continue using the service.": "Този сървър достигна лимита си за активни потребители на месец. Моля, свържете се с администратора на услугата, за да продължите да я използвате.",
"Your message wasn’t sent because this homeserver has hit its Monthly Active User Limit. Please contact your service administrator to continue using the service.": "Съобщението Ви не бе изпратено, защото този сървър достигна лимита си за активни потребители на месец. Моля, свържете се с администратора на услугата, за да продължите да я използвате.",
- "System Alerts": "Системни уведомления"
+ "System Alerts": "Системни уведомления",
+ "Internal room ID: ": "Вътрешен идентификатор на стаята: ",
+ "Room version number: ": "Версия на стаята: ",
+ "This homeserver has hit its Monthly Active User limit. Please contact your service administrator to continue using the service.": "Този сървър достигна лимита си за активни потребители на месец. Моля, свържете се с администратора на услугата, за да продължите да я използвате.",
+ "This homeserver has hit its Monthly Active User limit so some users will not be able to log in. Please contact your service administrator to get this limit increased.": "Този сървър достигна лимита си за активни потребители на месец и някои потребители няма да успеят да влязат в профила си. Моля, свържете се с администратора на услугата за да се увеличи този лимит."
}
From ad6544f043cffc0163ebe8a2a75d67013ec956c2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?K=C3=A9vin=20C?=
Date: Wed, 15 Aug 2018 08:29:54 +0000
Subject: [PATCH 113/343] Translated using Weblate (French)
Currently translated at 100.0% (1219 of 1219 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/fr/
---
src/i18n/strings/fr.json | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/i18n/strings/fr.json b/src/i18n/strings/fr.json
index d0b455f311..3e0d253020 100644
--- a/src/i18n/strings/fr.json
+++ b/src/i18n/strings/fr.json
@@ -1229,5 +1229,7 @@
"This homeserver has hit its Monthly Active User limit. Please contact your service administrator to continue using the service.": "Ce serveur d'accueil a atteint sa limite mensuelle d'utilisateurs actifs. Veuillez contacter l'administrateur de votre service pour continuer à l'utiliser.",
"System Alerts": "Alertes système",
"This homeserver has hit its Monthly Active User limit. Please contact your service administrator to continue using the service.": "Ce serveur d'accueil a atteint sa limite mensuelle d'utilisateurs actifs. Veuillez contacter l'administrateur de votre service pour continuer à l'utiliser.",
- "This homeserver has hit its Monthly Active User limit so some users will not be able to log in. Please contact your service administrator to get this limit increased.": "Ce serveur d'accueil a atteint sa limite mensuelle d'utilisateurs actifs donc certains utilisateurs ne pourront pas se connecter. Veuillez contacter l'administrateur de votre service pour augmenter cette limite."
+ "This homeserver has hit its Monthly Active User limit so some users will not be able to log in. Please contact your service administrator to get this limit increased.": "Ce serveur d'accueil a atteint sa limite mensuelle d'utilisateurs actifs donc certains utilisateurs ne pourront pas se connecter. Veuillez contacter l'administrateur de votre service pour augmenter cette limite.",
+ "Internal room ID: ": "Identifiant interne du salon : ",
+ "Room version number: ": "Numéro de version du salon : "
}
From 3091738f22cc49cf44e7717aae0872b7fc28f467 Mon Sep 17 00:00:00 2001
From: Osoitz
Date: Wed, 15 Aug 2018 10:12:14 +0000
Subject: [PATCH 114/343] Translated using Weblate (Basque)
Currently translated at 100.0% (1219 of 1219 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/eu/
---
src/i18n/strings/eu.json | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/src/i18n/strings/eu.json b/src/i18n/strings/eu.json
index aa58f2646c..c89f0b44f0 100644
--- a/src/i18n/strings/eu.json
+++ b/src/i18n/strings/eu.json
@@ -1227,5 +1227,9 @@
"Your message wasn’t sent because this homeserver has hit its Monthly Active User Limit. Please contact your service administrator to continue using the service.": "Zure mezua ez da bidali hasiera zerbitzari honek bere hilabeteko erabiltzaile aktiboen muga jo duelako. Jarri kontaktuan zerbitzuaren administratzailearekin zerbitzua erabiltzen jarraitzeko.",
"This homeserver has hit its Monthly Active User limit": "Hasiera zerbitzari honek bere hilabeteko erabiltzaile aktiboen muga jo du",
"Please contact your service administrator to continue using this service.": "Jarri kontaktuan zerbitzuaren administratzailearekin zerbitzua erabiltzen jarraitzeko.",
- "System Alerts": "Sistemaren alertak"
+ "System Alerts": "Sistemaren alertak",
+ "Internal room ID: ": "Gelaren barne IDa: ",
+ "Room version number: ": "Gelaren bertsio zenbakia: ",
+ "This homeserver has hit its Monthly Active User limit. Please contact your service administrator to continue using the service.": "Hasiera zerbitzari honek hileko erabiltzaile aktiboen muga jo du. Jarri zerbitzuaren administratzailearekin kontaktuan zerbitzua erabiltzen jarraitzeko.",
+ "This homeserver has hit its Monthly Active User limit so some users will not be able to log in. Please contact your service administrator to get this limit increased.": "Hasiera zerbitzari honek hileko erabiltzaile aktiboen muga jo du eta ezin izango duzu saioa hasi. Jarri zerbitzuaren administratzailearekin kontaktuan muga hau handitu dezan."
}
From 1675d3c4ba368c292ed49bf93c013f13a6d513ee Mon Sep 17 00:00:00 2001
From: Bruno Windels
Date: Wed, 15 Aug 2018 13:22:26 +0200
Subject: [PATCH 115/343] room stub not having getVersion method broke tests
---
test/test-utils.js | 1 +
1 file changed, 1 insertion(+)
diff --git a/test/test-utils.js b/test/test-utils.js
index 0e8fb1df79..975a4df0ee 100644
--- a/test/test-utils.js
+++ b/test/test-utils.js
@@ -255,6 +255,7 @@ export function mkStubRoom(roomId = null) {
getUnfilteredTimelineSet: () => null,
getAccountData: () => null,
hasMembershipState: () => null,
+ getVersion: () => '1',
currentState: {
getStateEvents: sinon.stub(),
mayClientSendStateEvent: sinon.stub().returns(true),
From c8a99ddec1a1665157c88890b2974c580aad3acb Mon Sep 17 00:00:00 2001
From: csybr
Date: Wed, 15 Aug 2018 12:00:38 +0000
Subject: [PATCH 116/343] Translated using Weblate (Norwegian Nynorsk)
Currently translated at 100.0% (1219 of 1219 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/nn/
---
src/i18n/strings/nn.json | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/src/i18n/strings/nn.json b/src/i18n/strings/nn.json
index 33a4839378..976a2faa9f 100644
--- a/src/i18n/strings/nn.json
+++ b/src/i18n/strings/nn.json
@@ -1215,5 +1215,9 @@
"This process allows you to export the keys for messages you have received in encrypted rooms to a local file. You will then be able to import the file into another Matrix client in the future, so that client will also be able to decrypt these messages.": "Dette tillèt deg å henta nyklane for meldingar du har sendt i enkrypterte rom ut til ei lokal fil. Då kan du henta fila inn til ein annan Matrix-klient i framtida, slik at den klienten òg kan dekryptera meldingane.",
"The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a passphrase below, which will be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.": "Å henta filen ut tillèt kven som helst som kan lesa ho å dekryptera alle enkrypterte meldingar du kan sjå, so du bør passa på å halda ho trygg. For å hjelpa til med dette bør du skriva ei passetning inn i feltet under, som vil brukast til å enkryptere den uthenta dataen. Det vil berre vera mogeleg å henta dataen inn med den same passetninga.",
"This process allows you to import encryption keys that you had previously exported from another Matrix client. You will then be able to decrypt any messages that the other client could decrypt.": "Dette tillèt deg å henta enkrypteringsnyklar som du tidlegare henta ut frå ein annan Matrix-klient inn. Du vil so kunna dekryptera alle meldingane som den andre klienten kunne dekryptera.",
- "The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.": "Uthentingsfila vil verta verna med ei passetning. Du bør skriva passetninga inn her for å dekryptera fila."
+ "The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.": "Uthentingsfila vil verta verna med ei passetning. Du bør skriva passetninga inn her for å dekryptera fila.",
+ "Internal room ID: ": "Indre rom-ID: ",
+ "Room version number: ": "Romutgåvenummer: ",
+ "This homeserver has hit its Monthly Active User limit. Please contact your service administrator to continue using the service.": "Heimtenaren har truffe si Månadlege Grense for Aktive Brukarar. Ver venleg og kontakt tenesteadministratoren din for å halda fram med å bruka tenesten.",
+ "This homeserver has hit its Monthly Active User limit so some users will not be able to log in. Please contact your service administrator to get this limit increased.": "Heimtenaren har truffe si Månadlege Grense for Aktive Brukarar, so nokre brukarar vil ikkje kunna logga inn. Ver venleg og tak kontakt med tenesteadministratoren din for å auka grensa."
}
From 2c75cd9ad958b8105b7af7bb9d164b426e024d47 Mon Sep 17 00:00:00 2001
From: Krombel
Date: Wed, 15 Aug 2018 15:56:23 +0000
Subject: [PATCH 117/343] Translated using Weblate (German)
Currently translated at 100.0% (1219 of 1219 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/de/
---
src/i18n/strings/de_DE.json | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json
index e2377ffa71..7003a13cb2 100644
--- a/src/i18n/strings/de_DE.json
+++ b/src/i18n/strings/de_DE.json
@@ -1227,5 +1227,9 @@
"Please contact your service administrator to continue using this service.": "Bitte kontaktiere deinen Administrator um diesen Dienst weiter zu nutzen.",
"System Alerts": "System-Benachrichtigung",
"This homeserver has hit its Monthly Active User limit. Please contact your service administrator to continue using the service.": "Der Server hat sein monatliches Nutzerlimit erreicht. Bitte kontaktiere deinen Administrator, um den Service weiter nutzen zu können.",
- "Your message wasn’t sent because this homeserver has hit its Monthly Active User Limit. Please contact your service administrator to continue using the service.": "Deine Nachricht konnte nicht verschickt werden, weil der Homeserver sein monatliches Nutzerlimit erreicht hat. Bitte kontaktiere deine Administrator, um den Service weiter nutzen zu können."
+ "Your message wasn’t sent because this homeserver has hit its Monthly Active User Limit. Please contact your service administrator to continue using the service.": "Deine Nachricht konnte nicht verschickt werden, weil der Homeserver sein monatliches Nutzerlimit erreicht hat. Bitte kontaktiere deine Administrator, um den Service weiter nutzen zu können.",
+ "Internal room ID: ": "Interne Raum-ID: ",
+ "Room version number: ": "Raum-Versionsnummer: ",
+ "This homeserver has hit its Monthly Active User limit. Please contact your service administrator to continue using the service.": "Dieser Heimserver hat sein monatliches Limit an aktiven Benutzern erreicht. Bitte kontaktiere deinen Systemadministrator um mit der Nutzung dieses Services fortzufahren.",
+ "This homeserver has hit its Monthly Active User limit so some users will not be able to log in. Please contact your service administrator to get this limit increased.": "Dieser Heimserver hat sein monatliches Limit an aktiven Benutzern erreicht. Bitte kontaktiere deinen Systemadministrator um dieses Limit zu erhöhen."
}
From 9bde468e303bbf7cebbb25fa83b76ad59e8b4e83 Mon Sep 17 00:00:00 2001
From: David Baker
Date: Wed, 15 Aug 2018 17:03:54 +0100
Subject: [PATCH 118/343] Shift to M_RESOURCE_LIMIT_EXCEEDED errors
With support for admin_contact and limit_type fields
For https://github.com/vector-im/riot-web/issues/7091
---
src/components/structures/LoggedInView.js | 16 +++++---
src/components/structures/RoomStatusBar.js | 25 ++++++++++--
src/components/structures/login/Login.js | 18 +++++++--
.../structures/login/Registration.js | 18 +++++++--
.../views/globals/ServerLimitBar.js | 40 ++++++++++++++-----
src/i18n/strings/en_EN.json | 25 +++++++++---
6 files changed, 111 insertions(+), 31 deletions(-)
diff --git a/src/components/structures/LoggedInView.js b/src/components/structures/LoggedInView.js
index 5b617feb68..6217a91b2e 100644
--- a/src/components/structures/LoggedInView.js
+++ b/src/components/structures/LoggedInView.js
@@ -434,17 +434,21 @@ const LoggedInView = React.createClass({
}
const mauLimitEvent = this.state.serverNoticeEvents.find((e) => {
- return e && e.getType() === 'm.server_notice.usage_limit_reached' &&
- e.getContent().limit_type &&
- e.getContent().limit_type === 'monthly_active_user'
+ return e && e.getType() === 'm.server_notice.usage_limit_reached';
});
let topBar;
const isGuest = this.props.matrixClient.isGuest();
- if (this.state.syncErrorData && this.state.syncErrorData.error.errcode === 'M_MAU_LIMIT_EXCEEDED') {
- topBar = ;
+ if (this.state.syncErrorData && this.state.syncErrorData.error.errcode === 'M_RESOURCE_LIMIT_EXCEEDED') {
+ topBar = ;
} else if (mauLimitEvent) {
- topBar = ;
+ topBar = ;
} else if (this.props.showCookieBar &&
this.props.config.piwik
) {
diff --git a/src/components/structures/RoomStatusBar.js b/src/components/structures/RoomStatusBar.js
index ef82ed4bad..260aec81ea 100644
--- a/src/components/structures/RoomStatusBar.js
+++ b/src/components/structures/RoomStatusBar.js
@@ -293,11 +293,11 @@ module.exports = React.createClass({
// It also trumps the "some not sent" msg since you can't resend without
// a connection!
// There's one situation in which we don't show this 'no connection' bar, and that's
- // if it's a monthly-active-user limit error: those are shown in the top bar.
+ // if it's a resource limit exceeded error: those are shown in the top bar.
const errorIsMauError = Boolean(
this.state.syncStateData &&
this.state.syncStateData.error &&
- this.state.syncStateData.error.errcode === 'M_MAU_LIMIT_EXCEEDED'
+ this.state.syncStateData.error.errcode === 'M_RESOURCE_LIMIT_EXCEEDED'
);
return this.state.syncState === "ERROR" && !errorIsMauError;
},
@@ -327,11 +327,18 @@ module.exports = React.createClass({
} else {
let consentError = null;
let mauError = null;
+ const translateMauError = sub => {
+ if (mauError.data.admin_contact) {
+ return {sub};
+ } else {
+ return sub;
+ }
+ };
for (const m of unsentMessages) {
if (m.error && m.error.errcode === 'M_CONSENT_NOT_GIVEN') {
consentError = m.error;
break;
- } else if (m.error && m.error.errcode === 'M_MAU_LIMIT_EXCEEDED') {
+ } else if (m.error && m.error.errcode === 'M_RESOURCE_LIMIT_EXCEEDED') {
mauError = m.error;
break;
}
@@ -348,8 +355,18 @@ module.exports = React.createClass({
,
},
);
+ } else if (mauError && mauError.data.limit_type === 'monthly_active_user') {
+ title = _t(
+ "Your message wasn't sent because this homeserver has hit its Monthly Active User Limit. " +
+ "Please contact your service administrator to continue using the service.",
+ {}, { 'a' : translateMauError },
+ );
} else if (mauError) {
- title = _t("Your message wasn’t sent because this homeserver has hit its Monthly Active User Limit. Please contact your service administrator to continue using the service.");
+ title = _t(
+ "Your message wasn't sent because this homeserver has exceeded a resource limit. " +
+ "Please contact your service administrator to continue using the service.",
+ {}, { 'a' : translateMauError },
+ );
} else if (
unsentMessages.length === 1 &&
unsentMessages[0].error &&
diff --git a/src/components/structures/login/Login.js b/src/components/structures/login/Login.js
index cac1c99f24..77db6ea444 100644
--- a/src/components/structures/login/Login.js
+++ b/src/components/structures/login/Login.js
@@ -121,12 +121,24 @@ module.exports = React.createClass({
const usingEmail = username.indexOf("@") > 0;
if (error.httpStatus === 400 && usingEmail) {
errorText = _t('This Home Server does not support login using email address.');
- } else if (error.errcode == 'M_MAU_LIMIT_EXCEEDED') {
+ } else if (error.errcode == 'M_RESOURCE_LIMIT_EXCEEDED') {
errorText = (
-
{ _t('This homeserver has hit its Monthly Active User limit') }
+
{error.data.error ? error.data.error : _t("This server has exceeded its available resources")}
- { _t('Please contact your service administrator to continue using this service.') }
+ {_t(
+ "Please contact your service administrator to continue using this service.",
+ {},
+ {
+ a: (sub) => {
+ if (error.data.admin_contact) {
+ return {sub};
+ } else {
+ return sub;
+ }
+ },
+ },
+ )}
);
diff --git a/src/components/structures/login/Registration.js b/src/components/structures/login/Registration.js
index 1f6a2fbcdb..3e2b3c2bdc 100644
--- a/src/components/structures/login/Registration.js
+++ b/src/components/structures/login/Registration.js
@@ -164,10 +164,22 @@ module.exports = React.createClass({
if (!success) {
let msg = response.message || response.toString();
// can we give a better error message?
- if (response.errcode == 'M_MAU_LIMIT_EXCEEDED') {
+ if (response.errcode == 'M_RESOURCE_LIMIT_EXCEEDED') {
msg =
-
{_t("This homeserver has hit its Monthly Active User limit")}
-
{_t("Please contact your service administrator to continue using this service.")}
+
{response.data.error ? response.data.error : _t("This server has exceeded its available resources")}
+
{_t(
+ "Please contact your service administrator to continue using this service.",
+ {},
+ {
+ a: (sub) => {
+ if (response.data.admin_contact) {
+ return {sub};
+ } else {
+ return sub;
+ }
+ },
+ },
+ )}
;
} else if (response.required_stages && response.required_stages.indexOf('m.login.msisdn') > -1) {
let msisdnAvailable = false;
diff --git a/src/components/views/globals/ServerLimitBar.js b/src/components/views/globals/ServerLimitBar.js
index c0a7376bd6..375d52bbe4 100644
--- a/src/components/views/globals/ServerLimitBar.js
+++ b/src/components/views/globals/ServerLimitBar.js
@@ -23,7 +23,9 @@ export default React.createClass({
propTypes: {
// 'hard' if the logged in user has been locked out, 'soft' if they haven't
kind: PropTypes.string,
- adminContent: PropTypes.string,
+ adminContact: PropTypes.string,
+ // The type of limit that has been hit.
+ limitType: PropTypes.string.isRequired,
},
getDefaultProps: function() {
@@ -36,42 +38,60 @@ export default React.createClass({
const toolbarClasses = {
'mx_MatrixToolbar': true,
};
- let content;
const translateLink = (sub) => {
- if (this.props.adminContent) {
- return {sub};
+ if (this.props.adminContact) {
+ return {sub};
} else {
return sub;
}
};
+ let adminContact;
+ let limitError;
if (this.props.kind === 'hard') {
toolbarClasses['mx_MatrixToolbar_error'] = true;
- content = _t(
- "This homeserver has hit its Monthly Active User limit. " +
+ adminContact = _t(
"Please contact your service administrator to continue using the service.",
{},
{
'a': translateLink,
},
);
+ if (this.props.limitType === 'monthly_active_user') {
+ limitError = _t("This homeserver has hit its Monthly Active User limit.");
+ } else {
+ limitError = _t("This homeserver has exceeded one of its resource limits.");
+ }
} else {
toolbarClasses['mx_MatrixToolbar_info'] = true;
- content = _t(
- "This homeserver has hit its Monthly Active User " +
- "limit so some users will not be able to log in. " +
+ adminContact = _t(
"Please contact your service administrator to get this limit increased.",
{},
{
'a': translateLink,
},
);
+ if (this.props.limitType === 'monthly_active_user') {
+ limitError = _t(
+ "This homeserver has hit its Monthly Active User limit so " +
+ "some users will not be able to log in.", {},
+ {'b': sub => {sub}},
+ );
+ } else {
+ limitError = _t(
+ "This homeserver has exceeded one of its resource limits so " +
+ "some users will not be able to log in.", {},
+ {'b': sub => {sub}},
+ );
+ }
}
return (
);
diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json
index 08c7ae086d..68a4ce1508 100644
--- a/src/i18n/strings/en_EN.json
+++ b/src/i18n/strings/en_EN.json
@@ -543,6 +543,10 @@
"Internal room ID: ": "Internal room ID: ",
"Room version number: ": "Room version number: ",
"Add a topic": "Add a topic",
+ "There is a known vulnerability affecting this room.": "There is a known vulnerability affecting this room.",
+ "This room version is vulnerable to malicious modification of room state.": "This room version is vulnerable to malicious modification of room state.",
+ "Click here to upgrade to the latest room version and ensure room integrity is protected.": "Click here to upgrade to the latest room version and ensure room integrity is protected.",
+ "Only room administrators will see this warning": "Only room administrators will see this warning",
"Search…": "Search…",
"This Room": "This Room",
"All Rooms": "All Rooms",
@@ -679,8 +683,12 @@
"A new version of Riot is available.": "A new version of Riot is available.",
"To return to your account in future you need to set a password": "To return to your account in future you need to set a password",
"Set Password": "Set Password",
- "This homeserver has hit its Monthly Active User limit. Please contact your service administrator to continue using the service.": "This homeserver has hit its Monthly Active User limit. Please contact your service administrator to continue using the service.",
- "This homeserver has hit its Monthly Active User limit so some users will not be able to log in. Please contact your service administrator to get this limit increased.": "This homeserver has hit its Monthly Active User limit so some users will not be able to log in. Please contact your service administrator to get this limit increased.",
+ "Please contact your service administrator to continue using the service.": "Please contact your service administrator to continue using the service.",
+ "This homeserver has hit its Monthly Active User limit.": "This homeserver has hit its Monthly Active User limit.",
+ "This homeserver has exceeded one of its resource limits.": "This homeserver has exceeded one of its resource limits.",
+ "Please contact your service administrator to get this limit increased.": "Please contact your service administrator to get this limit increased.",
+ "This homeserver has hit its Monthly Active User limit so some users will not be able to log in.": "This homeserver has hit its Monthly Active User limit so some users will not be able to log in.",
+ "This homeserver has exceeded one of its resource limits so some users will not be able to log in.": "This homeserver has exceeded one of its resource limits so some users will not be able to log in.",
"Error encountered (%(errorDetail)s).": "Error encountered (%(errorDetail)s).",
"Checking for an update...": "Checking for an update...",
"No update available.": "No update available.",
@@ -857,6 +865,12 @@
"Ignore request": "Ignore request",
"Loading device info...": "Loading device info...",
"Encryption key request": "Encryption key request",
+ "Upgrade Room Version": "Upgrade Room Version",
+ "Upgrading this room requires closing down the current instance of the room and creating a new room it its place. To give room members the best possible experience, we will:": "Upgrading this room requires closing down the current instance of the room and creating a new room it its place. To give room members the best possible experience, we will:",
+ "Create a new room with the same name, description and avatar": "Create a new room with the same name, description and avatar",
+ "Update any local room aliases to point to the new room": "Update any local room aliases to point to the new room",
+ "Stop users from speaking in the old version of the room, and post a message advising users to move to the new room": "Stop users from speaking in the old version of the room, and post a message advising users to move to the new room",
+ "Put a link back to the old room at the start of the new room so people can see old messages": "Put a link back to the old room at the start of the new room so people can see old messages",
"Sign out": "Sign out",
"Log out and remove encryption keys?": "Log out and remove encryption keys?",
"Clear Storage and Sign Out": "Clear Storage and Sign Out",
@@ -1039,7 +1053,8 @@
"Message not sent due to unknown devices being present": "Message not sent due to unknown devices being present",
"Show devices, send anyway or cancel.": "Show devices, send anyway or cancel.",
"You can't send any messages until you review and agree to our terms and conditions.": "You can't send any messages until you review and agree to our terms and conditions.",
- "Your message wasn’t sent because this homeserver has hit its Monthly Active User Limit. Please contact your service administrator to continue using the service.": "Your message wasn’t sent because this homeserver has hit its Monthly Active User Limit. Please contact your service administrator to continue using the service.",
+ "Your message wasn't sent because this homeserver has hit its Monthly Active User Limit. Please contact your service administrator to continue using the service.": "Your message wasn't sent because this homeserver has hit its Monthly Active User Limit. Please contact your service administrator to continue using the service.",
+ "Your message wasn't sent because this homeserver has exceeded a resource limit. Please contact your service administrator to continue using the service.": "Your message wasn't sent because this homeserver has exceeded a resource limit. Please contact your service administrator to continue using the service.",
"%(count)s of your messages have not been sent.|other": "Some of your messages have not been sent.",
"%(count)s of your messages have not been sent.|one": "Your message was not sent.",
"%(count)s Resend all or cancel all now. You can also select individual messages to resend or cancel.|other": "Resend all or cancel all now. You can also select individual messages to resend or cancel.",
@@ -1156,8 +1171,8 @@
"Send Reset Email": "Send Reset Email",
"Create an account": "Create an account",
"This Home Server does not support login using email address.": "This Home Server does not support login using email address.",
- "This homeserver has hit its Monthly Active User limit": "This homeserver has hit its Monthly Active User limit",
- "Please contact your service administrator to continue using this service.": "Please contact your service administrator to continue using this service.",
+ "This server has exceeded its available resources": "This server has exceeded its available resources",
+ "Please contact your service administrator to continue using this service.": "Please contact your service administrator to continue using this service.",
"Incorrect username and/or password.": "Incorrect username and/or password.",
"Please note you are logging into the %(hs)s server, not matrix.org.": "Please note you are logging into the %(hs)s server, not matrix.org.",
"Guest access is disabled on this Home Server.": "Guest access is disabled on this Home Server.",
From e65f71f5fcc445da3c781d9f7ab4d6a34a13d6b2 Mon Sep 17 00:00:00 2001
From: Jeff Huang
Date: Wed, 15 Aug 2018 18:29:55 +0000
Subject: [PATCH 119/343] Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (1219 of 1219 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/zh_Hant/
---
src/i18n/strings/zh_Hant.json | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/src/i18n/strings/zh_Hant.json b/src/i18n/strings/zh_Hant.json
index c09a2ca982..48a0c8bd5a 100644
--- a/src/i18n/strings/zh_Hant.json
+++ b/src/i18n/strings/zh_Hant.json
@@ -1227,5 +1227,9 @@
"This homeserver has hit its Monthly Active User limit": "此家伺服器達到了其每月活躍使用者限制",
"Please contact your service administrator to continue using this service.": "請聯絡您的服務管理員以繼續使用此服務。",
"This homeserver has hit its Monthly Active User limit. Please contact your service administrator to continue using the service.": "您的訊息因為這個家伺服器到達了它的每月活躍使用者限制而沒有傳送出去。請聯絡您的服務管理員以繼續使用服務。",
- "System Alerts": "系統警告"
+ "System Alerts": "系統警告",
+ "Internal room ID: ": "內部聊天室 ID: ",
+ "Room version number: ": "聊天室版本號: ",
+ "This homeserver has hit its Monthly Active User limit. Please contact your service administrator to continue using the service.": "這個家伺服器已經達到了其每月活躍使用者限制。請聯絡您的服務管理員以繼續使用服務。",
+ "This homeserver has hit its Monthly Active User limit so some users will not be able to log in. Please contact your service administrator to get this limit increased.": "此家伺服器已達到其每月活躍使用者限制,所以其部份使用者將會無法登入。請聯絡您的服務管理員以讓此限制增加。"
}
From 7d690d98e3ca8edeaa1c52770bfef0fdc6db5ca0 Mon Sep 17 00:00:00 2001
From: David Baker
Date: Thu, 16 Aug 2018 10:35:27 +0100
Subject: [PATCH 120/343] Rename variable as it's now not just MAU
---
src/components/structures/LoggedInView.js | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/src/components/structures/LoggedInView.js b/src/components/structures/LoggedInView.js
index 6217a91b2e..2bc6522232 100644
--- a/src/components/structures/LoggedInView.js
+++ b/src/components/structures/LoggedInView.js
@@ -433,7 +433,7 @@ const LoggedInView = React.createClass({
break;
}
- const mauLimitEvent = this.state.serverNoticeEvents.find((e) => {
+ const usageLimitEvent = this.state.serverNoticeEvents.find((e) => {
return e && e.getType() === 'm.server_notice.usage_limit_reached';
});
@@ -444,10 +444,10 @@ const LoggedInView = React.createClass({
adminContact={this.state.syncErrorData.error.data.admin_contact}
limitType={this.state.syncErrorData.error.data.limit_type}
/>;
- } else if (mauLimitEvent) {
+ } else if (usageLimitEvent) {
topBar = ;
} else if (this.props.showCookieBar &&
this.props.config.piwik
From 8567ce585b0ccc339d569e20fbb41a183b7018aa Mon Sep 17 00:00:00 2001
From: David Baker
Date: Thu, 16 Aug 2018 13:31:17 +0100
Subject: [PATCH 121/343] Factor out duplication of resource limit i18n
---
src/components/structures/RoomStatusBar.js | 39 +++++------
src/components/structures/login/Login.js | 38 +++++-----
.../structures/login/Registration.js | 36 ++++++----
.../views/globals/ServerLimitBar.js | 69 +++++++++----------
src/i18n/strings/en_EN.json | 1 -
src/utils/ErrorUtils.js | 50 ++++++++++++++
6 files changed, 143 insertions(+), 90 deletions(-)
create mode 100644 src/utils/ErrorUtils.js
diff --git a/src/components/structures/RoomStatusBar.js b/src/components/structures/RoomStatusBar.js
index 260aec81ea..fec59aadd5 100644
--- a/src/components/structures/RoomStatusBar.js
+++ b/src/components/structures/RoomStatusBar.js
@@ -18,7 +18,7 @@ limitations under the License.
import React from 'react';
import PropTypes from 'prop-types';
import Matrix from 'matrix-js-sdk';
-import { _t } from '../../languageHandler';
+import { _t, _td } from '../../languageHandler';
import sdk from '../../index';
import WhoIsTyping from '../../WhoIsTyping';
import MatrixClientPeg from '../../MatrixClientPeg';
@@ -26,6 +26,7 @@ import MemberAvatar from '../views/avatars/MemberAvatar';
import Resend from '../../Resend';
import * as cryptodevices from '../../cryptodevices';
import dis from '../../dispatcher';
+import { messageForResourceLimitError } from '../../utils/ErrorUtils';
const STATUS_BAR_HIDDEN = 0;
const STATUS_BAR_EXPANDED = 1;
@@ -326,20 +327,13 @@ module.exports = React.createClass({
);
} else {
let consentError = null;
- let mauError = null;
- const translateMauError = sub => {
- if (mauError.data.admin_contact) {
- return {sub};
- } else {
- return sub;
- }
- };
+ let resourceLimitError = null;
for (const m of unsentMessages) {
if (m.error && m.error.errcode === 'M_CONSENT_NOT_GIVEN') {
consentError = m.error;
break;
} else if (m.error && m.error.errcode === 'M_RESOURCE_LIMIT_EXCEEDED') {
- mauError = m.error;
+ resourceLimitError = m.error;
break;
}
}
@@ -355,18 +349,19 @@ module.exports = React.createClass({
,
},
);
- } else if (mauError && mauError.data.limit_type === 'monthly_active_user') {
- title = _t(
- "Your message wasn't sent because this homeserver has hit its Monthly Active User Limit. " +
- "Please contact your service administrator to continue using the service.",
- {}, { 'a' : translateMauError },
- );
- } else if (mauError) {
- title = _t(
- "Your message wasn't sent because this homeserver has exceeded a resource limit. " +
- "Please contact your service administrator to continue using the service.",
- {}, { 'a' : translateMauError },
- );
+ } else if (resourceLimitError) {
+ title = messageForResourceLimitError(
+ resourceLimitError.data.limit_type,
+ resourceLimitError.data.admin_contact, {
+ 'monthly_active_user': _td(
+ "Your message wasn't sent because this homeserver has hit its Monthly Active User Limit. " +
+ "Please contact your service administrator to continue using the service.",
+ ),
+ '': _td(
+ "Your message wasn't sent because this homeserver has exceeded a resource limit. " +
+ "Please contact your service administrator to continue using the service.",
+ ),
+ });
} else if (
unsentMessages.length === 1 &&
unsentMessages[0].error &&
diff --git a/src/components/structures/login/Login.js b/src/components/structures/login/Login.js
index 77db6ea444..45f523f141 100644
--- a/src/components/structures/login/Login.js
+++ b/src/components/structures/login/Login.js
@@ -20,11 +20,12 @@ limitations under the License.
import React from 'react';
import PropTypes from 'prop-types';
-import { _t } from '../../../languageHandler';
+import { _t, _td } from '../../../languageHandler';
import sdk from '../../../index';
import Login from '../../../Login';
import SdkConfig from '../../../SdkConfig';
import SettingsStore from "../../../settings/SettingsStore";
+import { messageForResourceLimitError } from '../../../utils/ErrorUtils';
// For validating phone numbers without country codes
const PHONE_NUMBER_REGEX = /^[0-9()\-\s]*$/;
@@ -122,24 +123,27 @@ module.exports = React.createClass({
if (error.httpStatus === 400 && usingEmail) {
errorText = _t('This Home Server does not support login using email address.');
} else if (error.errcode == 'M_RESOURCE_LIMIT_EXCEEDED') {
+ const errorTop = messageForResourceLimitError(
+ error.data.limit_type,
+ error.data.admin_contact, {
+ 'monthly_active_user': _td(
+ "This homeserver has hit its Monthly Active User limit.",
+ ),
+ '': _td(
+ "This homeserver has exceeded one of its resource limits.",
+ ),
+ });
+ const errorDetail = messageForResourceLimitError(
+ error.data.limit_type,
+ error.data.admin_contact, {
+ '': _td(
+ "Please contact your service administrator to continue using this service.",
+ ),
+ });
errorText = (
-
{error.data.error ? error.data.error : _t("This server has exceeded its available resources")}
-
- {_t(
- "Please contact your service administrator to continue using this service.",
- {},
- {
- a: (sub) => {
- if (error.data.admin_contact) {
- return {sub};
- } else {
- return sub;
- }
- },
- },
- )}
-
+
{errorTop}
+
{errorDetail}
);
} else if (error.httpStatus === 401 || error.httpStatus === 403) {
diff --git a/src/components/structures/login/Registration.js b/src/components/structures/login/Registration.js
index 3e2b3c2bdc..1131218311 100644
--- a/src/components/structures/login/Registration.js
+++ b/src/components/structures/login/Registration.js
@@ -26,9 +26,10 @@ import sdk from '../../../index';
import MatrixClientPeg from '../../../MatrixClientPeg';
import RegistrationForm from '../../views/login/RegistrationForm';
import RtsClient from '../../../RtsClient';
-import { _t } from '../../../languageHandler';
+import { _t, _td } from '../../../languageHandler';
import SdkConfig from '../../../SdkConfig';
import SettingsStore from "../../../settings/SettingsStore";
+import { messageForResourceLimitError } from '../../../utils/ErrorUtils';
const MIN_PASSWORD_LENGTH = 6;
@@ -165,21 +166,26 @@ module.exports = React.createClass({
let msg = response.message || response.toString();
// can we give a better error message?
if (response.errcode == 'M_RESOURCE_LIMIT_EXCEEDED') {
- msg =
-
{response.data.error ? response.data.error : _t("This server has exceeded its available resources")}
-
{_t(
+ const errorTop = messageForResourceLimitError(
+ response.data.limit_type,
+ response.data.admin_contact, {
+ 'monthly_active_user': _td(
+ "This homeserver has hit its Monthly Active User limit.",
+ ),
+ '': _td(
+ "This homeserver has exceeded one of its resource limits.",
+ ),
+ });
+ const errorDetail = messageForResourceLimitError(
+ response.data.limit_type,
+ response.data.admin_contact, {
+ '': _td(
"Please contact your service administrator to continue using this service.",
- {},
- {
- a: (sub) => {
- if (response.data.admin_contact) {
- return {sub};
- } else {
- return sub;
- }
- },
- },
- )}
+ ),
+ });
+ msg =
+
{errorTop}
+
{errorDetail}
;
} else if (response.required_stages && response.required_stages.indexOf('m.login.msisdn') > -1) {
let msisdnAvailable = false;
diff --git a/src/components/views/globals/ServerLimitBar.js b/src/components/views/globals/ServerLimitBar.js
index 375d52bbe4..0b924fd2e2 100644
--- a/src/components/views/globals/ServerLimitBar.js
+++ b/src/components/views/globals/ServerLimitBar.js
@@ -17,7 +17,8 @@ limitations under the License.
import React from 'react';
import PropTypes from 'prop-types';
import classNames from 'classnames';
-import { _t } from '../../../languageHandler';
+import { _td } from '../../../languageHandler';
+import { messageForResourceLimitError } from '../../../utils/ErrorUtils';
export default React.createClass({
propTypes: {
@@ -39,52 +40,50 @@ export default React.createClass({
'mx_MatrixToolbar': true,
};
- const translateLink = (sub) => {
- if (this.props.adminContact) {
- return {sub};
- } else {
- return sub;
- }
- };
-
let adminContact;
let limitError;
if (this.props.kind === 'hard') {
toolbarClasses['mx_MatrixToolbar_error'] = true;
- adminContact = _t(
- "Please contact your service administrator to continue using the service.",
- {},
+
+ adminContact = messageForResourceLimitError(
+ this.props.limitType,
+ this.props.adminContact,
{
- 'a': translateLink,
+ '': _td("Please contact your service administrator to continue using the service."),
+ },
+ );
+ limitError = messageForResourceLimitError(
+ this.props.limitType,
+ this.props.adminContact,
+ {
+ 'monthly_active_user': _td("This homeserver has hit its Monthly Active User limit."),
+ '': _td("This homeserver has exceeded one of its resource limits."),
},
);
- if (this.props.limitType === 'monthly_active_user') {
- limitError = _t("This homeserver has hit its Monthly Active User limit.");
- } else {
- limitError = _t("This homeserver has exceeded one of its resource limits.");
- }
} else {
toolbarClasses['mx_MatrixToolbar_info'] = true;
- adminContact = _t(
- "Please contact your service administrator to get this limit increased.",
- {},
+ adminContact = messageForResourceLimitError(
+ this.props.limitType,
+ this.props.adminContact,
{
- 'a': translateLink,
+ '': _td("Please contact your service administrator to get this limit increased."),
},
);
- if (this.props.limitType === 'monthly_active_user') {
- limitError = _t(
- "This homeserver has hit its Monthly Active User limit so " +
- "some users will not be able to log in.", {},
- {'b': sub => {sub}},
- );
- } else {
- limitError = _t(
- "This homeserver has exceeded one of its resource limits so " +
- "some users will not be able to log in.", {},
- {'b': sub => {sub}},
- );
- }
+ limitError = messageForResourceLimitError(
+ this.props.limitType,
+ this.props.adminContact,
+ {
+ 'monthly_active_user': _td(
+ "This homeserver has hit its Monthly Active User limit so " +
+ "some users will not be able to log in.",
+ ),
+ '': _td(
+ "This homeserver has exceeded one of its resource limits so " +
+ "some users will not be able to log in.",
+ ),
+ },
+ {'b': sub => {sub}},
+ );
}
return (
\n Use the long description to introduce new members to the community, or distribute\n some important links\n
\n
\n You can even use 'img' tags\n
\n": "
HTML for samfunnssida di
\n
\n Bruk den Lange Skildringa for å ynskja nye medlemer velkomen, eller gje ut viktige lenkjer\n
\n
\n Du kan til og med bruka 'img'-merkelappar!\n
\n",
@@ -1150,7 +1150,7 @@
"Drop here to tag %(section)s": "Slepp her for å merka %(section)s",
"When someone puts a URL in their message, a URL preview can be shown to give more information about that link such as the title, description, and an image from the website.": "Når nokon legg ein URL med i meldinga si, kan ei URL-førehandsvising visast for å gje meir info om lenkja slik som tittelen, skildringa, og eit bilete frå nettsida.",
"You are about to be taken to a third-party site so you can authenticate your account for use with %(integrationsUrl)s. Do you wish to continue?": "Du held på å verta teken til ei tredje-partisside so du kan godkjenna brukaren din til bruk med %(integrationsUrl)s. Vil du gå fram?",
- "Token incorrect": "Tokenen er galen",
+ "Token incorrect": "Teiknet er gale",
"Filter community members": "Filtrer samfunnsmedlemer",
"Custom Server Options": "Eigentenar-innstillingar",
"Filter community rooms": "Filtrer samfunnsrom",
@@ -1198,7 +1198,7 @@
"Profile": "Brukar",
"Access Token:": "Tilgangs-Teikn:",
"Resetting password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Å attendestilla passordet vil førebels attendestilla alle ende-til-ende-enkrypteringsnyklar på alle einingar, slik at enkrypterte samtaler vert uleselege, med mindre du fyrst hentar romnyklane ut og hentar dei inn att etterpå. Dette vil forbetrast i framtida.",
- "This homeserver has hit its Monthly Active User limit": "Heimtenaren har truffe den Månadlege Aktive Brukargrensa si",
+ "This homeserver has hit its Monthly Active User limit": "Heimtenaren har truffe den Månadlege Grensa si for Aktive Brukarar",
"This homeserver doesn't offer any login flows which are supported by this client.": "Heimtenaren tilbyd ingen nye innloggingsstraumar som støttast av denne klienten.",
"Claimed Ed25519 fingerprint key": "Gjorde krav på Ed25519-fingeravtrykksnykel",
"Export room keys": "Hent romnyklar ut",
@@ -1218,6 +1218,6 @@
"The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.": "Uthentingsfila vil verta verna med ei passetning. Du bør skriva passetninga inn her for å dekryptera fila.",
"Internal room ID: ": "Indre rom-ID: ",
"Room version number: ": "Romutgåvenummer: ",
- "This homeserver has hit its Monthly Active User limit. Please contact your service administrator to continue using the service.": "Heimtenaren har truffe si Månadlege Grense for Aktive Brukarar. Ver venleg og kontakt tenesteadministratoren din for å halda fram med å bruka tenesten.",
+ "This homeserver has hit its Monthly Active User limit. Please contact your service administrator to continue using the service.": "Heimtenaren har truffe si Månadlege Grense for Aktive Brukarar. Ver venleg og tak kontakt med tenesteadministratoren din for å halda fram med å bruka tenesten.",
"This homeserver has hit its Monthly Active User limit so some users will not be able to log in. Please contact your service administrator to get this limit increased.": "Heimtenaren har truffe si Månadlege Grense for Aktive Brukarar, so nokre brukarar vil ikkje kunna logga inn. Ver venleg og tak kontakt med tenesteadministratoren din for å auka grensa."
}
From 35b6e2dc89e6a3455ce04eb8ffda71380c13b913 Mon Sep 17 00:00:00 2001
From: Andrey
Date: Wed, 15 Aug 2018 15:31:08 +0000
Subject: [PATCH 125/343] Translated using Weblate (Russian)
Currently translated at 99.0% (1207 of 1219 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/ru/
---
src/i18n/strings/ru.json | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/i18n/strings/ru.json b/src/i18n/strings/ru.json
index 77d4ec9c8d..47f46279c4 100644
--- a/src/i18n/strings/ru.json
+++ b/src/i18n/strings/ru.json
@@ -1217,5 +1217,6 @@
"Failed to remove widget": "Не удалось удалить виджет",
"An error ocurred whilst trying to remove the widget from the room": "Произошла ошибка при удалении виджета из комнаты",
"System Alerts": "Системные оповещения",
- "Please contact your service administrator to continue using this service.": "Для продолжения использования этого сервиса обратитесь к администратору."
+ "Please contact your service administrator to continue using this service.": "Для продолжения использования этого сервиса обратитесь к администратору.",
+ "Room version number: ": "Номер версии комнаты: "
}
From 85a2b76ca00a6e5d370a33a0dd4a6d4e22236ea9 Mon Sep 17 00:00:00 2001
From: David Baker
Date: Thu, 16 Aug 2018 13:33:57 +0000
Subject: [PATCH 126/343] Added translation using Weblate (Georgian)
---
src/i18n/strings/ka.json | 1 +
1 file changed, 1 insertion(+)
create mode 100644 src/i18n/strings/ka.json
diff --git a/src/i18n/strings/ka.json b/src/i18n/strings/ka.json
new file mode 100644
index 0000000000..0967ef424b
--- /dev/null
+++ b/src/i18n/strings/ka.json
@@ -0,0 +1 @@
+{}
From e79edfc0d2832e4507b22b86dad90b162867e023 Mon Sep 17 00:00:00 2001
From: csybr
Date: Thu, 16 Aug 2018 13:42:59 +0000
Subject: [PATCH 127/343] Translated using Weblate (Norwegian Nynorsk)
Currently translated at 98.4% (1214 of 1233 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/nn/
---
src/i18n/strings/nn.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/i18n/strings/nn.json b/src/i18n/strings/nn.json
index f8384a0455..66269a764d 100644
--- a/src/i18n/strings/nn.json
+++ b/src/i18n/strings/nn.json
@@ -200,7 +200,7 @@
"Unnamed Room": "Rom utan Namn",
"Your browser does not support the required cryptography extensions": "Nettlesaren din støttar ikkje dei naudsynte kryptografiske utvidingane",
"Not a valid Riot keyfile": "Ikkje ei gyldig Riot-nykelfil",
- "Authentication check failed: incorrect password?": "Autentifiseringssjekk mislukkast: urett passord?",
+ "Authentication check failed: incorrect password?": "Godkjenningssjekk mislukkast: urett passord?",
"Failed to join room": "Fekk ikkje til å gå inn i rom",
"Message Pinning": "Meldingsfesting",
"Disable Emoji suggestions while typing": "Skru emojiframlegg av mens ein skriv",
From 48bbc200e380360837463af6146c4f05c9c51201 Mon Sep 17 00:00:00 2001
From: David Baker
Date: Thu, 16 Aug 2018 15:23:59 +0100
Subject: [PATCH 128/343] js-sdk rc.1
---
package.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/package.json b/package.json
index 15e46019ea..1ac675971a 100644
--- a/package.json
+++ b/package.json
@@ -73,7 +73,7 @@
"linkifyjs": "^2.1.6",
"lodash": "^4.13.1",
"lolex": "2.3.2",
- "matrix-js-sdk": "0.10.7",
+ "matrix-js-sdk": "0.10.8-rc.1",
"optimist": "^0.6.1",
"pako": "^1.0.5",
"prop-types": "^15.5.8",
From 802ab83c937a724e0c803fade21a38f9a1957075 Mon Sep 17 00:00:00 2001
From: David Baker
Date: Thu, 16 Aug 2018 15:26:32 +0100
Subject: [PATCH 129/343] Prepare changelog for v0.13.1-rc.1
---
CHANGELOG.md | 45 +++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 45 insertions(+)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 5d7bef4a88..28d4a008cd 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,48 @@
+Changes in [0.13.1-rc.1](https://github.com/matrix-org/matrix-react-sdk/releases/tag/v0.13.1-rc.1) (2018-08-16)
+===============================================================================================================
+[Full Changelog](https://github.com/matrix-org/matrix-react-sdk/compare/v0.13.0...v0.13.1-rc.1)
+
+ * Update from Weblate.
+ [\#2121](https://github.com/matrix-org/matrix-react-sdk/pull/2121)
+ * Shift to M_RESOURCE_LIMIT_EXCEEDED errors
+ [\#2120](https://github.com/matrix-org/matrix-react-sdk/pull/2120)
+ * Fix RoomSettings test
+ [\#2119](https://github.com/matrix-org/matrix-react-sdk/pull/2119)
+ * Show room version number in room settings
+ [\#2117](https://github.com/matrix-org/matrix-react-sdk/pull/2117)
+ * Warning bar for MAU limit hit
+ [\#2114](https://github.com/matrix-org/matrix-react-sdk/pull/2114)
+ * Recognise server notices room(s)
+ [\#2112](https://github.com/matrix-org/matrix-react-sdk/pull/2112)
+ * Update room tags behaviour to match spec more
+ [\#2111](https://github.com/matrix-org/matrix-react-sdk/pull/2111)
+ * while logging out ignore `Session.logged_out` as it is intentional
+ [\#2058](https://github.com/matrix-org/matrix-react-sdk/pull/2058)
+ * Don't show 'connection lost' bar on MAU error
+ [\#2110](https://github.com/matrix-org/matrix-react-sdk/pull/2110)
+ * Support MAU error on sync
+ [\#2108](https://github.com/matrix-org/matrix-react-sdk/pull/2108)
+ * Support active user limit on message send
+ [\#2106](https://github.com/matrix-org/matrix-react-sdk/pull/2106)
+ * Run end to end tests as part of Travis build
+ [\#2091](https://github.com/matrix-org/matrix-react-sdk/pull/2091)
+ * Remove package-lock.json for now
+ [\#2097](https://github.com/matrix-org/matrix-react-sdk/pull/2097)
+ * Support montly active user limit error on /login
+ [\#2103](https://github.com/matrix-org/matrix-react-sdk/pull/2103)
+ * Unpin sanitize-html
+ [\#2105](https://github.com/matrix-org/matrix-react-sdk/pull/2105)
+ * Pin sanitize-html to 0.18.2
+ [\#2101](https://github.com/matrix-org/matrix-react-sdk/pull/2101)
+ * Make clicking on side panels close settings (mk 3)
+ [\#2096](https://github.com/matrix-org/matrix-react-sdk/pull/2096)
+ * Fix persistent element location not updating
+ [\#2092](https://github.com/matrix-org/matrix-react-sdk/pull/2092)
+ * fix Devtools input autofocus && state traversal when len === 1 && key=""
+ [\#2090](https://github.com/matrix-org/matrix-react-sdk/pull/2090)
+ * allow autocompleting Emoji by common aliases, e.g :+1: to :thumbsup:
+ [\#2085](https://github.com/matrix-org/matrix-react-sdk/pull/2085)
+
Changes in [0.13.0](https://github.com/matrix-org/matrix-react-sdk/releases/tag/v0.13.0) (2018-07-30)
=====================================================================================================
[Full Changelog](https://github.com/matrix-org/matrix-react-sdk/compare/v0.13.0-rc.2...v0.13.0)
From 0ab2589622b60a93e650b416f45047d9054aae8b Mon Sep 17 00:00:00 2001
From: David Baker
Date: Thu, 16 Aug 2018 15:26:32 +0100
Subject: [PATCH 130/343] v0.13.1-rc.1
---
package.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/package.json b/package.json
index 1ac675971a..426a31f549 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "matrix-react-sdk",
- "version": "0.13.0",
+ "version": "0.13.1-rc.1",
"description": "SDK for matrix.org using React",
"author": "matrix.org",
"repository": {
From 226b7bbe0488fd10c103215c1117c92dd309d329 Mon Sep 17 00:00:00 2001
From: random
Date: Thu, 16 Aug 2018 15:22:02 +0000
Subject: [PATCH 131/343] Translated using Weblate (Italian)
Currently translated at 100.0% (1233 of 1233 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/it/
---
src/i18n/strings/it.json | 23 +++++++++++++++++++++--
1 file changed, 21 insertions(+), 2 deletions(-)
diff --git a/src/i18n/strings/it.json b/src/i18n/strings/it.json
index 6b2a41f4fb..04e7c20e86 100644
--- a/src/i18n/strings/it.json
+++ b/src/i18n/strings/it.json
@@ -14,7 +14,7 @@
"Close": "Chiudi",
"Create new room": "Crea una nuova stanza",
"Custom Server Options": "Opzioni Server Personalizzate",
- "Dismiss": "Scarta",
+ "Dismiss": "Chiudi",
"Error": "Errore",
"Favourite": "Preferito",
"OK": "OK",
@@ -1230,5 +1230,24 @@
"This homeserver has hit its Monthly Active User limit": "Questo homeserver ha raggiunto il suo limite di utenti attivi mensili",
"Please contact your service administrator to continue using this service.": "Contatta l'amministratore del servizio per continuare ad usarlo.",
"Internal room ID: ": "ID interno della stanza: ",
- "Room version number: ": "Numero di versione della stanza: "
+ "Room version number: ": "Numero di versione della stanza: ",
+ "There is a known vulnerability affecting this room.": "C'è una vulnerabilità nota che affligge questa stanza.",
+ "This room version is vulnerable to malicious modification of room state.": "La versione di questa stanza è vulnerabile a modifiche malevole dello stato della stanza.",
+ "Click here to upgrade to the latest room version and ensure room integrity is protected.": "Clicca qui per aggiornare all'ultima versione ed assicurare che l'integrità della stanza sia protetta.",
+ "Only room administrators will see this warning": "Solo gli amministratori della stanza vedranno questo avviso",
+ "Please contact your service administrator to continue using the service.": "Contatta l'amministratore del servizio per continuare ad usarlo.",
+ "This homeserver has hit its Monthly Active User limit.": "Questo homeserver ha raggiunto il suo limite di utenti attivi mensili.",
+ "This homeserver has exceeded one of its resource limits.": "Questo homeserver ha oltrepassato uno dei suoi limiti di risorse.",
+ "Please contact your service administrator to get this limit increased.": "Contatta l'amministratore del servizio per fare aumentare questo limite.",
+ "This homeserver has hit its Monthly Active User limit so some users will not be able to log in.": "Questo homeserver ha raggiunto il suo limite di utenti attivi mensili, perciò alcuni utenti non potranno accedere.",
+ "This homeserver has exceeded one of its resource limits so some users will not be able to log in.": "Questo homeserver ha oltrepassato uno dei suoi limiti di risorse, perciò alcuni utenti non potranno accedere.",
+ "Upgrade Room Version": "Aggiorna versione stanza",
+ "Upgrading this room requires closing down the current instance of the room and creating a new room it its place. To give room members the best possible experience, we will:": "L'aggiornamento di questa stanza richiede la chiusura dell'istanza attuale e la creazione di una nuova stanza al suo posto. Per offrire la migliore esperienza possibile ai membri della stanza, noi:",
+ "Create a new room with the same name, description and avatar": "Creeremo una nuova stanza con lo stesso nome, descrizione e avatar",
+ "Update any local room aliases to point to the new room": "Aggiorneremo qualsiasi alias di stanza in modo che punti a quella nuova",
+ "Stop users from speaking in the old version of the room, and post a message advising users to move to the new room": "Eviteremo che gli utenti parlino nella vecchia versione della stanza e posteremo un messaggio avvisando gli utenti di spostarsi in quella nuova",
+ "Put a link back to the old room at the start of the new room so people can see old messages": "Inseriremo un link alla vecchia stanza all'inizio della di quella nuova in modo che la gente possa vedere i messaggi precedenti",
+ "Your message wasn't sent because this homeserver has hit its Monthly Active User Limit. Please contact your service administrator to continue using the service.": "Il tuo messaggio non è stato inviato perchè questo homeserver ha raggiunto il suo limite di utenti attivi mensili. Contatta l'amministratore del servizio per continuare ad usarlo.",
+ "Your message wasn't sent because this homeserver has exceeded a resource limit. Please contact your service administrator to continue using the service.": "Il tuo messaggio non è stato inviato perchè questo homeserver ha oltrepassato un limite di risorse. Contatta l'amministratore del servizio per continuare ad usarlo.",
+ "Please contact your service administrator to continue using this service.": "Contatta l'amministratore del servizio per continuare ad usarlo."
}
From 9bdd104858a3bc87cbfb76dfad92267392add51d Mon Sep 17 00:00:00 2001
From: csybr
Date: Thu, 16 Aug 2018 15:40:07 +0000
Subject: [PATCH 132/343] Translated using Weblate (Norwegian Nynorsk)
Currently translated at 98.4% (1214 of 1233 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/nn/
---
src/i18n/strings/nn.json | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/src/i18n/strings/nn.json b/src/i18n/strings/nn.json
index 66269a764d..dc48297631 100644
--- a/src/i18n/strings/nn.json
+++ b/src/i18n/strings/nn.json
@@ -103,8 +103,8 @@
"Your language of choice": "Ditt valde mål",
"e.g. %(exampleValue)s": "t.d. %(exampleValue)s",
"/ddg is not a command": "/ddg er ikkje eit påbod",
- "Changes your display nickname": "Endrar kallenamnet ditt",
- "Changes colour scheme of current room": "Endrar fargevala i ditt noverande rom",
+ "Changes your display nickname": "Forandrar kallenamnet ditt",
+ "Changes colour scheme of current room": "Forandrar fargevala i ditt noverande rom",
"Sets the room topic": "Set romemnet",
"Invites user with given id to current room": "Byd brukarar med den gjevne IDen inn til det noverande rommet",
"Joins room with given alias": "Gjeng inn i eit rom med det gjevne aliaset",
@@ -238,7 +238,7 @@
"Messages in one-to-one chats": "Meldingar i ein-til-ein-samtaler",
"Messages in group chats": "Meldingar i gruppesamtaler",
"When I'm invited to a room": "Når eg er bode inn til eit rom",
- "Call invitation": "Samtaleinnbyding",
+ "Call invitation": "Samtaleinnbydingar",
"Messages sent by bot": "Meldingar sendt frå ein bot",
"Active call (%(roomName)s)": "Pågåande samtale (%(roomName)s)",
"unknown caller": "ukjend ringar",
@@ -527,7 +527,7 @@
"Search…": "Søk…",
"This Room": "Dette Rommet",
"All Rooms": "Alle Rom",
- "Cancel": "Bryt av",
+ "Cancel": "Avbryt",
"You don't currently have any stickerpacks enabled": "Du har for tida ikkje skrudd nokre klistremerkepakkar på",
"Add a stickerpack": "Legg ei klistremerkepakke til",
"Stickerpack": "Klistremerkepakke",
@@ -615,7 +615,7 @@
"You are registering with %(SelectedTeamName)s": "Du melder deg inn med %(SelectedTeamName)s",
"Mobile phone number (optional)": "Mobiltelefonnummer (valfritt)",
"Register": "Meld deg inn",
- "Default server": "Utgangspunkttenar",
+ "Default server": "Vanleg tenar",
"Home server URL": "Heimtenar-URL",
"Identity server URL": "Identitetstenar-URL",
"What does this mean?": "Kva tyder dette?",
@@ -1029,7 +1029,7 @@
"Interface Language": "Grensesnitt-mål",
"User Interface": "Brukargrensesnitt",
"": "",
- "Import E2E room keys": "Hent E2E-romnyklar",
+ "Import E2E room keys": "Hent E2E-romnyklar inn",
"Cryptography": "Kryptografi",
"Device ID:": "Einings-ID:",
"Device key:": "Einingsnykel:",
From 4ae455a97f8237c9eff85f57aa33758f3474b3f9 Mon Sep 17 00:00:00 2001
From: Krombel
Date: Thu, 16 Aug 2018 16:45:58 +0000
Subject: [PATCH 133/343] Translated using Weblate (German)
Currently translated at 100.0% (1236 of 1236 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/de/
---
src/i18n/strings/de_DE.json | 24 +++++++++++++++++++++++-
1 file changed, 23 insertions(+), 1 deletion(-)
diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json
index 8b63a7b206..a8fd77fe11 100644
--- a/src/i18n/strings/de_DE.json
+++ b/src/i18n/strings/de_DE.json
@@ -1231,5 +1231,27 @@
"Internal room ID: ": "Interne Raum-ID: ",
"Room version number: ": "Raum-Versionsnummer: ",
"This homeserver has hit its Monthly Active User limit. Please contact your service administrator to continue using the service.": "Dieser Heimserver hat sein monatliches Limit an aktiven Benutzern erreicht. Bitte kontaktiere deinen Systemadministrator um mit der Nutzung dieses Services fortzufahren.",
- "This homeserver has hit its Monthly Active User limit so some users will not be able to log in. Please contact your service administrator to get this limit increased.": "Dieser Heimserver hat sein monatliches Limit an aktiven Benutzern erreicht. Bitte kontaktiere deinen Systemadministrator um dieses Limit zu erhöhen."
+ "This homeserver has hit its Monthly Active User limit so some users will not be able to log in. Please contact your service administrator to get this limit increased.": "Dieser Heimserver hat sein monatliches Limit an aktiven Benutzern erreicht. Bitte kontaktiere deinen Systemadministrator um dieses Limit zu erhöhen.",
+ "There is a known vulnerability affecting this room.": "Es gibt eine bekannte Schwachstelle, die diesen Raum betrifft.",
+ "This room version is vulnerable to malicious modification of room state.": "Dieser Raum ist verwundbar gegenüber bösartiger Veränderung des Raum-Status.",
+ "Click here to upgrade to the latest room version and ensure room integrity is protected.": "Klicke hier um ein Upgrade zur letzten Raum-Version durchzuführen und sicherzustellen, dass die Raum-Integrität gewahrt bleibt.",
+ "Only room administrators will see this warning": "Nur Raum-Administratoren werden diese Nachricht sehen",
+ "Please contact your service administrator to continue using the service.": "Bitte kontaktiere deinen Systemadministrator um diesen Dienst weiter zu nutzen.",
+ "This homeserver has hit its Monthly Active User limit.": "Dieser Heimserver hat sein Limit an monatlich aktiven Nutzern erreicht.",
+ "This homeserver has exceeded one of its resource limits.": "Dieser Heimserver hat einen seiner Ressourcen-Limits überschritten.",
+ "Please contact your service administrator to get this limit increased.": "Bitte kontaktiere deinen Systemadministrator um dieses Limit zu erhöht zu bekommen.",
+ "This homeserver has hit its Monthly Active User limit so some users will not be able to log in.": "Dieser Heimserver hat sein Limit an monatlich aktiven Nutzern erreicht, sodass einige Nutzer sich nicht anmelden können.",
+ "This homeserver has exceeded one of its resource limits so some users will not be able to log in.": "Dieser Heimserver hat einen seiner Ressourcen-Limits überschritten, sodass einige Benutzer nicht in der Lage sind sich anzumelden.",
+ "Upgrade Room Version": "Raum-Version upgraden",
+ "Upgrading this room requires closing down the current instance of the room and creating a new room it its place. To give room members the best possible experience, we will:": "Um diesen Raum upzugraden, wird der aktuelle geschlossen und ein neuer an seiner Stelle erstellt. Um den Raum-Mitgliedern die bestmögliche Erfahrung zu bieten, werden wir:",
+ "Create a new room with the same name, description and avatar": "Einen neuen Raum mit demselben Namen, Beschreibung und Profilbild erstellen",
+ "Update any local room aliases to point to the new room": "Alle lokalen Raum-Aliase aktualisieren, damit sie auf den neuen Raum zeigen",
+ "Stop users from speaking in the old version of the room, and post a message advising users to move to the new room": "Nutzern verbieten in dem Raum mit der alten Version zu schreiben und eine Nachricht senden, die den Nutzern rät in den neuen Raum zu wechseln",
+ "Put a link back to the old room at the start of the new room so people can see old messages": "Zu Beginn des neuen Raumes einen Link zum alten Raum setzen, damit Personen die alten Nachrichten sehen können",
+ "Your message wasn't sent because this homeserver has hit its Monthly Active User Limit. Please contact your service administrator to continue using the service.": "Deine Nachricht wurde nicht gesendet, weil dieser Heimserver sein Limit an monatlich aktiven Benutzern erreicht hat. Bitte kontaktiere deinen Systemadministrator um diesen Dienst weiter zu nutzen.",
+ "Your message wasn't sent because this homeserver has exceeded a resource limit. Please contact your service administrator to continue using the service.": "Deine Nachricht wurde nicht gesendet, weil dieser Heimserver ein Ressourcen-Limit erreicht hat. Bitte kontaktiere deinen Systemadministrator um diesen Dienst weiter zu nutzen.",
+ "Please contact your service administrator to continue using this service.": "Bitte kontaktiere deinen Systemadministrator um diesen Dienst weiter zu nutzen.",
+ "Increase performance by only loading room members on first view": "Verbessere Performanz, indem Raum-Mitglieder erst beim ersten Ansehen geladen werden",
+ "Lazy loading members not supported": "Verzögertes Laden von Mitgliedern nicht unterstützt",
+ "Lazy loading is not supported by your current homeserver.": "Verzögertes Laden wird von deinem aktuellen Heimserver."
}
From b61fb186d63987adca16d023ed1cb65230d43a3b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?K=C3=A9vin=20C?=
Date: Thu, 16 Aug 2018 17:35:14 +0000
Subject: [PATCH 134/343] Translated using Weblate (French)
Currently translated at 100.0% (1236 of 1236 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/fr/
---
src/i18n/strings/fr.json | 24 +++++++++++++++++++++++-
1 file changed, 23 insertions(+), 1 deletion(-)
diff --git a/src/i18n/strings/fr.json b/src/i18n/strings/fr.json
index 3e0d253020..d94a32258d 100644
--- a/src/i18n/strings/fr.json
+++ b/src/i18n/strings/fr.json
@@ -1231,5 +1231,27 @@
"This homeserver has hit its Monthly Active User limit. Please contact your service administrator to continue using the service.": "Ce serveur d'accueil a atteint sa limite mensuelle d'utilisateurs actifs. Veuillez contacter l'administrateur de votre service pour continuer à l'utiliser.",
"This homeserver has hit its Monthly Active User limit so some users will not be able to log in. Please contact your service administrator to get this limit increased.": "Ce serveur d'accueil a atteint sa limite mensuelle d'utilisateurs actifs donc certains utilisateurs ne pourront pas se connecter. Veuillez contacter l'administrateur de votre service pour augmenter cette limite.",
"Internal room ID: ": "Identifiant interne du salon : ",
- "Room version number: ": "Numéro de version du salon : "
+ "Room version number: ": "Numéro de version du salon : ",
+ "There is a known vulnerability affecting this room.": "Ce salon est touché par une faille de sécurité connue.",
+ "This room version is vulnerable to malicious modification of room state.": "Ce salon est vulnérable à la modification malveillante de l'état du salon.",
+ "Click here to upgrade to the latest room version and ensure room integrity is protected.": "Cliquer ici pour mettre le salon à niveau vers la dernière version et s'assurer que l'intégrité du salon est protégée.",
+ "Only room administrators will see this warning": "Seuls les administrateurs du salon verront cet avertissement",
+ "Please contact your service administrator to continue using the service.": "Veuillez contacter l'administrateur de votre service pour continuer à l'utiliser.",
+ "This homeserver has hit its Monthly Active User limit.": "Ce serveur d'accueil a atteint sa limite mensuelle d'utilisateurs actifs.",
+ "This homeserver has exceeded one of its resource limits.": "Ce serveur d'accueil a dépassé une de ses limites de ressources.",
+ "Please contact your service administrator to get this limit increased.": "Veuillez contacter l'administrateur de votre service pour augmenter cette limite.",
+ "This homeserver has hit its Monthly Active User limit so some users will not be able to log in.": "Ce serveur d'accueil a atteint sa limite mensuelle d'utilisateurs actifs donc certains utilisateurs ne pourront pas se connecter.",
+ "This homeserver has exceeded one of its resource limits so some users will not be able to log in.": "Ce serveur d'accueil a atteint une de ses limites de ressources donc certains utilisateurs ne pourront pas se connecter.",
+ "Upgrade Room Version": "Mettre à niveau la version du salon",
+ "Upgrading this room requires closing down the current instance of the room and creating a new room it its place. To give room members the best possible experience, we will:": "La mise à niveau de ce salon nécessite la clôture de l'instance en cours du salon et la création d'un nouveau salon à la place. Pour donner la meilleure expérience possible aux participants, nous allons :",
+ "Create a new room with the same name, description and avatar": "Créer un salon avec le même nom, la même description et le même avatar",
+ "Update any local room aliases to point to the new room": "Mettre à jour tous les alias du salon locaux pour qu'ils dirigent vers le nouveau salon",
+ "Stop users from speaking in the old version of the room, and post a message advising users to move to the new room": "Empêcher les utilisateurs de discuter dans l'ancienne version du salon et envoyer un message conseillant aux nouveaux utilisateurs d'aller dans le nouveau salon",
+ "Put a link back to the old room at the start of the new room so people can see old messages": "Fournir un lien vers l'ancien salon au début du nouveau salon pour que l'on puisse voir les vieux messages",
+ "Your message wasn't sent because this homeserver has hit its Monthly Active User Limit. Please contact your service administrator to continue using the service.": "Votre message n'a pas été envoyé car le serveur d'accueil a atteint sa limite mensuelle d'utilisateurs. Veuillez contacter l'administrateur de votre service pour continuer à l'utiliser.",
+ "Your message wasn't sent because this homeserver has exceeded a resource limit. Please contact your service administrator to continue using the service.": "Votre message n'a pas été envoyé car ce serveur d'accueil a dépassé une de ses limites de ressources. Veuillez contacter l'administrateur de votre service pour continuer à l'utiliser.",
+ "Please contact your service administrator to continue using this service.": "Veuillez contacter l'administrateur de votre service pour continuer à l'utiliser.",
+ "Increase performance by only loading room members on first view": "Améliorer les performances en ne chargeant les participants des salons qu'au premier affichage",
+ "Lazy loading members not supported": "La chargement différé des participants n'est pas pris en charge",
+ "Lazy loading is not supported by your current homeserver.": "Le chargement différé n'est pas pris en charge par votre serveur d'accueil actuel."
}
From 22c879d9d30c596d2f3f7c5d2ea689bd8da06c36 Mon Sep 17 00:00:00 2001
From: Szimszon
Date: Thu, 16 Aug 2018 19:53:07 +0000
Subject: [PATCH 135/343] Translated using Weblate (Hungarian)
Currently translated at 100.0% (1236 of 1236 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/hu/
---
src/i18n/strings/hu.json | 24 +++++++++++++++++++++++-
1 file changed, 23 insertions(+), 1 deletion(-)
diff --git a/src/i18n/strings/hu.json b/src/i18n/strings/hu.json
index 6ccf70f077..5334fba225 100644
--- a/src/i18n/strings/hu.json
+++ b/src/i18n/strings/hu.json
@@ -1231,5 +1231,27 @@
"This homeserver has hit its Monthly Active User limit. Please contact your service administrator to continue using the service.": "Ez a Matrix szerver elérte a havi aktív felhasználói korlátot. Kérlek vedd fel a kapcsolatot a szolgáltatás adminisztrátorával a szolgáltatás további használatához.",
"This homeserver has hit its Monthly Active User limit so some users will not be able to log in. Please contact your service administrator to get this limit increased.": "Ez a Matrix szerver elérte a havi aktív felhasználói korlátot, így néhány felhasználó nem fog tudni bejelentkezni. Kérlek vedd fel a kapcsolatot a szolgáltatás adminisztrátorával, hogy a korlátot felemeljék.",
"Internal room ID: ": "Belső szoba azonosító: ",
- "Room version number: ": "Szoba verziószáma: "
+ "Room version number: ": "Szoba verziószáma: ",
+ "There is a known vulnerability affecting this room.": "Ez a szoba ismert sérülékenységgel rendelkezik.",
+ "This room version is vulnerable to malicious modification of room state.": "A szoba ezen verziójában a szoba állapota ártó szándékkal módosítható.",
+ "Click here to upgrade to the latest room version and ensure room integrity is protected.": "Kattints ide a szoba legújabb verziójára való frissítéshez, hogy a szoba integritása védve legyen.",
+ "Only room administrators will see this warning": "Csak a szoba adminisztrátorai látják ezt a figyelmeztetést",
+ "Please contact your service administrator to continue using the service.": "A szolgáltatás további használata érdekében kérlek vedd fel a kapcsolatot a szolgáltatás adminisztrátorával.",
+ "This homeserver has hit its Monthly Active User limit.": "A Matrix szerver elérte a havi aktív felhasználói korlátot.",
+ "This homeserver has exceeded one of its resource limits.": "A Matrix szerver túllépte valamelyik erőforrás korlátját.",
+ "Please contact your service administrator to get this limit increased.": "A korlát emelése érdekében kérlek vedd fel a kapcsolatot a szolgáltatás adminisztrátorával.",
+ "This homeserver has hit its Monthly Active User limit so some users will not be able to log in.": "Ez a Matrix szerver elérte a havi aktív felhasználói korlátját néhány felhasználó nem fog tudni bejelentkezni.",
+ "This homeserver has exceeded one of its resource limits so some users will not be able to log in.": "Ez a Matrix szerver túllépte valamelyik erőforrás korlátját így néhány felhasználó nem tud majd bejelentkezni.",
+ "Upgrade Room Version": "Szoba verziójának frissítése",
+ "Upgrading this room requires closing down the current instance of the room and creating a new room it its place. To give room members the best possible experience, we will:": "A szoba frissítése miatt ezt a szobát be kell zárni és egy új szobát kell nyitni a helyében. Hogy a felhasználóknak ne legyen rossz tapasztalata ezért ezt fogjuk tenni:",
+ "Create a new room with the same name, description and avatar": "Készíts egy új szobát ugyanazzal a névvel, leírással és profilképpel",
+ "Update any local room aliases to point to the new room": "Állíts át minden helyi alternatív nevet erre a szobára",
+ "Stop users from speaking in the old version of the room, and post a message advising users to move to the new room": "A felhasználóknak tiltsd meg, hogy a régi szobában beszélgessenek. Küldj egy üzenetet amiben megkéred a felhasználókat, hogy menjenek át az új szobába",
+ "Put a link back to the old room at the start of the new room so people can see old messages": "Tegyél egy linket az új szoba elejére ami visszamutat a régi szobára, hogy az emberek lássák a régi üzeneteket",
+ "Your message wasn't sent because this homeserver has hit its Monthly Active User Limit. Please contact your service administrator to continue using the service.": "Az üzeneted nincs elküldve, mert ez a Matrix szerver elérte a havi aktív felhasználói korlátot. A szolgáltatás további igénybevétele végett kérlek vedd fel a kapcsolatot a szolgáltatás adminisztrátorával.",
+ "Your message wasn't sent because this homeserver has exceeded a resource limit. Please contact your service administrator to continue using the service.": "Az üzeneted nem került elküldésre mert ez a Matrix szerver túllépte valamelyik erőforrás korlátját. A szolgáltatás további igénybevétele végett kérlek vedd fel a kapcsolatot a szolgáltatás adminisztrátorával.",
+ "Please contact your service administrator to continue using this service.": "A szolgáltatás további használatához kérlek vedd fel a kapcsolatot a szolgáltatás adminisztrátorával.",
+ "Increase performance by only loading room members on first view": "A teljesítmény növelése érdekében a szoba tagsága csak az első megtekintéskor töltődik be",
+ "Lazy loading members not supported": "A tagok késleltetett betöltése nem támogatott",
+ "Lazy loading is not supported by your current homeserver.": "A késleltetett betöltés nem támogatott ennél a Matrix szervernél."
}
From e3643bd74cc7891a3873690ab9150a66ab16a795 Mon Sep 17 00:00:00 2001
From: David Baker
Date: Fri, 17 Aug 2018 09:42:23 +0100
Subject: [PATCH 136/343] Lint
---
src/components/views/elements/AppTile.js | 1 +
src/stores/ActiveWidgetStore.js | 1 -
2 files changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/components/views/elements/AppTile.js b/src/components/views/elements/AppTile.js
index d9593ff52a..7be0bab33c 100644
--- a/src/components/views/elements/AppTile.js
+++ b/src/components/views/elements/AppTile.js
@@ -439,6 +439,7 @@ export default class AppTile extends React.Component {
// Force the widget to be non-persistent
ActiveWidgetStore.destroyPersistentWidget();
+ const PersistedElement = sdk.getComponent("elements.PersistedElement");
PersistedElement.destroyElement(this._persistKey);
}
diff --git a/src/stores/ActiveWidgetStore.js b/src/stores/ActiveWidgetStore.js
index fe83260cde..89fa6e6936 100644
--- a/src/stores/ActiveWidgetStore.js
+++ b/src/stores/ActiveWidgetStore.js
@@ -17,7 +17,6 @@ limitations under the License.
import EventEmitter from 'events';
import MatrixClientPeg from '../MatrixClientPeg';
-import sdk from '../index';
/**
* Stores information about the widgets active in the app right now:
From 141e1a86dbcad21a57289d0cc06c3f1b0b1b8867 Mon Sep 17 00:00:00 2001
From: csybr
Date: Fri, 17 Aug 2018 00:02:00 +0000
Subject: [PATCH 137/343] Translated using Weblate (Norwegian Nynorsk)
Currently translated at 98.5% (1218 of 1236 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/nn/
---
src/i18n/strings/nn.json | 66 +++++++++++++++++++++-------------------
1 file changed, 35 insertions(+), 31 deletions(-)
diff --git a/src/i18n/strings/nn.json b/src/i18n/strings/nn.json
index dc48297631..fa07c596fe 100644
--- a/src/i18n/strings/nn.json
+++ b/src/i18n/strings/nn.json
@@ -62,10 +62,10 @@
"Add rooms to the community": "Legg til rom i samfunnet",
"Room name or alias": "Romnamn eller alias",
"Add to community": "Legg til i samfunn",
- "Failed to invite the following users to %(groupId)s:": "Følgjande brukarar lét seg ikkje byda inn i %(groupId)s:",
+ "Failed to invite the following users to %(groupId)s:": "Fylgjande brukarar lét seg ikkje byda inn i %(groupId)s:",
"Failed to invite users to community": "Fekk ikkje til å byda brukarar inn til samfunnet",
"Failed to invite users to %(groupId)s": "Fekk ikkje til å byda brukarar inn til %(groupId)s",
- "Failed to add the following rooms to %(groupId)s:": "Følgjande rom lét seg ikkje leggja til i %(groupId)s:",
+ "Failed to add the following rooms to %(groupId)s:": "Fylgjande rom lét seg ikkje leggja til i %(groupId)s:",
"Riot does not have permission to send you notifications - please check your browser settings": "Riot har ikkje tillating til å senda deg varsel - ver venleg og sjekk nettlesarinnstillingane dine",
"Riot was not given permission to send notifications - please try again": "Riot fekk ikkje tillating til å senda varsel - ver venleg og prøv igjen",
"Unable to enable Notifications": "Klarte ikkje å skru på Varsel",
@@ -85,7 +85,7 @@
"Failed to invite user": "Fekk ikkje til å byda brukar inn",
"Operation failed": "Handling mislukkast",
"Failed to invite": "Fekk ikkje til å byda inn",
- "Failed to invite the following users to the %(roomName)s room:": "Dei følgjande brukarane lét seg ikkje byda inn til %(roomName)s:",
+ "Failed to invite the following users to the %(roomName)s room:": "Dei fylgjande brukarane lét seg ikkje byda inn til %(roomName)s:",
"You need to be logged in.": "Du må vera logga inn.",
"You need to be able to invite users to do that.": "Du må kunna byda brukarar inn for å gjera det.",
"Unable to create widget.": "Klarte ikkje å laga widget.",
@@ -122,7 +122,7 @@
"Define the power level of a user": "Set ein brukar si makthøgd",
"This email address is already in use": "Denne emailadressa er allereie i bruk",
"The platform you're on": "Platformen du er på",
- "Failed to verify email address: make sure you clicked the link in the email": "Fekk ikkje til å godkjenna emailadressa: sjå til at du klikka på den rette lenkja i emailen",
+ "Failed to verify email address: make sure you clicked the link in the email": "Fekk ikkje til å stadfesta emailadressa: sjå til at du klikka på den rette lenkja i emailen",
"Your identity server's URL": "Din identitetstenar si nettadresse",
"Every page you use in the app": "Alle sider du brukar i æppen",
"e.g. ": "t.d. ",
@@ -160,7 +160,7 @@
"%(targetName)s joined the room.": "%(targetName)s kom inn i rommet.",
"VoIP conference finished.": "VoIP-gruppesamtale enda.",
"%(targetName)s rejected the invitation.": "%(targetName)s sa nei til innbydinga.",
- "%(targetName)s left the room.": "%(targetName)s gjekk frå rommet.",
+ "%(targetName)s left the room.": "%(targetName)s fór frå rommet.",
"%(senderName)s unbanned %(targetName)s.": "%(senderName)s fjerna utestenginga til %(targetName)s.",
"%(senderName)s kicked %(targetName)s.": "%(senderName)s sparka %(targetName)s ut.",
"%(senderName)s withdrew %(targetName)s's invitation.": "%(senderName)s tok attende %(targetName)s si innbyding.",
@@ -206,7 +206,7 @@
"Disable Emoji suggestions while typing": "Skru emojiframlegg av mens ein skriv",
"Use compact timeline layout": "Bruk smal tidslinjeutforming",
"Hide removed messages": "Gøym fjerna meldingar",
- "Hide join/leave messages (invites/kicks/bans unaffected)": "Gøym vert med/fór ut-meldingar (innbydingar, utspark, utestengingar påverkast ikkje)",
+ "Hide join/leave messages (invites/kicks/bans unaffected)": "Gøym kom inn/fór ut-meldingar (innbydingar, utspark, utestengingar påverkast ikkje)",
"Hide avatar changes": "Gøym avatarendringar",
"Hide display name changes": "Gøym visingsnamn-endringar",
"Show timestamps in 12 hour format (e.g. 2:30pm)": "Vis tidspunkt i 12-timarsform (t.d. 2:30pm)",
@@ -228,7 +228,7 @@
"Enable URL previews for this room (only affects you)": "Skru URL-førehandsvisingar på for dette rommet (påverkar deg åleine)",
"Enable URL previews by default for participants in this room": "Skru URL-førehandsvisingar på som utgangspunkt for deltakarar i dette rommet",
"Room Colour": "Romfarge",
- "Enable widget screenshots on supported widgets": "Skru widget-skjermbilete på for støtta widget",
+ "Enable widget screenshots on supported widgets": "Skru widget-skjermbilete på for støtta widgetar",
"Collecting app version information": "Samlar æppversjoninfo",
"Collecting logs": "Samlar loggar",
"Uploading report": "Lastar rapport opp",
@@ -248,8 +248,8 @@
"Decline": "Sei nei",
"Accept": "Sei ja",
"Error": "Noko gjekk gale",
- "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "Ei tekstmelding vart send til +%(msisdn)s. Ver venleg og skriv inn godkjenningskoden ho inneheld",
- "Incorrect verification code": "Urett godkjenningskode",
+ "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "Ei tekstmelding vart send til +%(msisdn)s. Ver venleg og skriv inn stadfestingskoden ho inneheld",
+ "Incorrect verification code": "Urett stadfestingskode",
"Enter Code": "Skriv inn Koden",
"Submit": "Send inn",
"Phone": "Telefon",
@@ -266,7 +266,7 @@
"Current password": "Noverande passord",
"Password": "Passord",
"New Password": "Nytt Passord",
- "Confirm password": "Godkjenn passord",
+ "Confirm password": "Stadfest passord",
"Change Password": "Endra Passord",
"Your home server does not support device management.": "Heimtenaren din støttar ikkje einingshandsaming.",
"Unable to load device list": "Klarte ikkje å lasta einingslista",
@@ -293,7 +293,7 @@
"All notifications are currently disabled for all targets.": "Alle varsel er for augeblunket skrudd av for alle mål.",
"Add an email address above to configure email notifications": "Legg til ein emailadresse i feltet over for å endra emailvarselinnstillingar",
"Enable email notifications": "Skru emailvarsel på",
- "Notifications on the following keywords follow rules which can’t be displayed here:": "Varsel på følgjande nykelord følgjer reglar som ikkje kan visast her:",
+ "Notifications on the following keywords follow rules which can’t be displayed here:": "Varsel på fylgjande nykelord følgjer reglar som ikkje kan visast her:",
"Unable to fetch notification target list": "Klarte ikkje å henta varselmållista",
"Notification targets": "Varselmål",
"Advanced notification settings": "Omfattande varselinnstillingar",
@@ -378,7 +378,7 @@
"Attachment": "Vedlegg",
"At this time it is not possible to reply with a file so this will be sent without being a reply.": "Det er førebels ikkje mogeleg å svara med ei fil, so dette vil verta send utan å vera eit svar.",
"Upload Files": "Last opp Filer",
- "Are you sure you want to upload the following files?": "Er du sikker på at du vil lasta opp dei følgjande filene?",
+ "Are you sure you want to upload the following files?": "Er du sikker på at du vil lasta opp dei fylgjande filene?",
"Encrypted room": "Enkryptert rom",
"Unencrypted room": "Ikkje-enkrypert rom",
"Hangup": "Legg på",
@@ -527,7 +527,7 @@
"Search…": "Søk…",
"This Room": "Dette Rommet",
"All Rooms": "Alle Rom",
- "Cancel": "Avbryt",
+ "Cancel": "Bryt av",
"You don't currently have any stickerpacks enabled": "Du har for tida ikkje skrudd nokre klistremerkepakkar på",
"Add a stickerpack": "Legg ei klistremerkepakke til",
"Stickerpack": "Klistremerkepakke",
@@ -725,7 +725,7 @@
"%(severalUsers)schanged their avatar %(count)s times|one": "%(severalUsers)s endra avatarane sine",
"%(oneUser)schanged their avatar %(count)s times|other": "%(oneUser)s har endra avataren sin %(count)s gonger",
"%(oneUser)schanged their avatar %(count)s times|one": "%(oneUser)s endra avataren sin",
- "%(items)s and %(count)s others|other": "%(items)s og %(count)s andre",
+ "%(items)s and %(count)s others|other": "%(items)s og %(count)s til",
"%(items)s and %(count)s others|one": "%(items)s og ein til",
"%(items)s and %(lastItem)s": "%(items)s og %(lastItem)s",
"collapse": "Slå saman",
@@ -740,13 +740,13 @@
"Matrix Room ID": "Matrixrom-ID",
"email address": "emailadresse",
"You have entered an invalid address.": "Du har skrive ei ugangbar adresse inn.",
- "Try using one of the following valid address types: %(validTypesList)s.": "Prøv å bruka ein av dei følgjande gangbare adressesortane: %(validTypesList)s.",
+ "Try using one of the following valid address types: %(validTypesList)s.": "Prøv å bruka ein av dei fylgjande gangbare adressesortane: %(validTypesList)s.",
"Preparing to send logs": "Førebur loggsending",
"Logs sent": "Loggar sende",
"Thank you!": "Takk skal du ha!",
"Failed to send logs: ": "Fekk ikkje til å senda loggar: ",
"Submit debug logs": "Send debøgg-loggar inn",
- "Riot bugs are tracked on GitHub: create a GitHub issue.": "Riot-bøggar følgjast på GitHub: lag eit GitHub-issue.",
+ "Riot bugs are tracked on GitHub: create a GitHub issue.": "Riot-bøggar fylgjast på GitHub: lag eit GitHub-issue.",
"GitHub issue link:": "lenkje til GitHub-issue:",
"Notes:": "Saker å merka seg:",
"Send logs": "Send loggar inn",
@@ -822,7 +822,7 @@
"Verification Pending": "Ventar på Godkjenning",
"Please check your email and click on the link it contains. Once this is done, click continue.": "Ver venleg og sjekk emailen din og klikk på lenkja du har fått. Når det er gjort, klikk gå fram.",
"Unable to add email address": "Klarte ikkje å leggja emailadressa til",
- "Unable to verify email address.": "Klarte ikkje å godkjenne emailadressa.",
+ "Unable to verify email address.": "Klarte ikkje å stadfesta emailadressa.",
"This will allow you to reset your password and receive notifications.": "Dette tillèt deg å attendestilla passordet ditt og å få varsel.",
"Skip": "Hopp over",
"User names may only contain letters, numbers, dots, hyphens and underscores.": "Brukarnamn kan berre innehalda bokstavar, tal, prikkar, bindestrek og understrek.",
@@ -862,7 +862,7 @@
"Reject": "Sei nei",
"You cannot delete this message. (%(code)s)": "Du kan ikkje sletta meldinga. (%(code)s)",
"Resend": "Send på nytt",
- "Cancel Sending": "Avbryt Sending",
+ "Cancel Sending": "Bryt Sending av",
"Forward Message": "Vidaresend Melding",
"Reply": "Svar",
"Pin Message": "Fest Meldinga",
@@ -876,7 +876,7 @@
"All messages (noisy)": "Alle meldingar (bråket)",
"All messages": "Alle meldingar",
"Mentions only": "Berre når eg vert nemnd",
- "Leave": "Far ut",
+ "Leave": "Far frå",
"Forget": "Gløym",
"Low Priority": "Lågrett",
"Direct Chat": "Direktesamtale",
@@ -899,13 +899,13 @@
"Add rooms to the community summary": "Legg rom til i samfunnsoppsamanfattinga",
"Which rooms would you like to add to this summary?": "Kva rom ynskjer du å leggja til i samanfattinga?",
"Add to summary": "Legg til i samanfattinga",
- "Failed to add the following rooms to the summary of %(groupId)s:": "Fekk ikkje til å leggja dei følgjande romma til i samanfattinga av %(groupId)s:",
+ "Failed to add the following rooms to the summary of %(groupId)s:": "Fekk ikkje til å leggja dei fylgjande romma til i samanfattinga av %(groupId)s:",
"Add a Room": "Legg eit Rom til",
"Failed to remove the room from the summary of %(groupId)s": "Fekk ikkje til å fjerna rommet frå samanfattinga av %(groupId)s",
"The room '%(roomName)s' could not be removed from the summary.": "Rommet '%(roomName)s' lét seg ikkje fjerna frå samanfattinga.",
"Add users to the community summary": "Legg brukarar til i samfunnsamanfattinga",
"Who would you like to add to this summary?": "Kven vil du leggja til i samanfattinga?",
- "Failed to add the following users to the summary of %(groupId)s:": "Fekk ikkje til å leggja følgjande brukarar til i samanfattinga av %(groupId)s:",
+ "Failed to add the following users to the summary of %(groupId)s:": "Fekk ikkje til å leggja fylgjande brukarar til i samanfattinga av %(groupId)s:",
"Add a User": "Legg ein Brukar til",
"Failed to remove a user from the summary of %(groupId)s": "Fekk ikkje til å fjerna brukaren frå samanfattinga av %(groupId)s",
"The user '%(displayName)s' could not be removed from the summary.": "Brukaren '%(displayName)s' lét seg ikkje fjerna frå samanfattinga.",
@@ -981,12 +981,12 @@
"#example": "#døme",
"Scroll to bottom of page": "Blad til botnen",
"Message not sent due to unknown devices being present": "Meldinga vart ikkje send fordi ukjende einingar er til stades",
- "Show devices, send anyway or cancel.": "Vis einingar, Send same kva eller Avbryt.",
+ "Show devices, send anyway or cancel.": "Vis einingar, Send same kva eller Bryt av.",
"You can't send any messages until you review and agree to our terms and conditions.": "Du kan ikkje senda meldingar før du ser over og seier deg einig i våre Vilkår og Føresetnader.",
"%(count)s of your messages have not been sent.|other": "Nokre av meldingane dine vart ikkje sende.",
"%(count)s of your messages have not been sent.|one": "Meldinga di vart ikkje send.",
"%(count)s Resend all or cancel all now. You can also select individual messages to resend or cancel.|other": "Send alle på nytt eller avbryt alle. Du kan ogso velja enkelte meldingar til sending på nytt eller avbryting.",
- "%(count)s Resend all or cancel all now. You can also select individual messages to resend or cancel.|one": "Send melding på nytt eller avbryt.",
+ "%(count)s Resend all or cancel all now. You can also select individual messages to resend or cancel.|one": "Send melding på nytt eller bryt av.",
"Connectivity to the server has been lost.": "Tilkoplinga til tenaren vart tapt.",
"Sent messages will be stored until your connection has returned.": "Sende meldingar lagrast ikkje før tilkoplinga di er attende.",
"%(count)s new messages|other": "%(count)s nye meldingar",
@@ -1012,9 +1012,9 @@
"Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "Freista å lasta eit gjeve punkt i rommet si tidslinje, men du har ikkje lov til å sjå den sistnemnde meldinga.",
"Tried to load a specific point in this room's timeline, but was unable to find it.": "Freista å lasta eit gjeve punkt i rommet si tidslinje, men klarte ikkje å finna det.",
"Failed to load timeline position": "Fekk ikkje til å lasta tidslinjestillinga",
- "Uploading %(filename)s and %(count)s others|other": "Lastar %(filename)s og %(count)s andre opp",
+ "Uploading %(filename)s and %(count)s others|other": "Lastar %(filename)s og %(count)s til opp",
"Uploading %(filename)s and %(count)s others|zero": "Lastar %(filename)s opp",
- "Uploading %(filename)s and %(count)s others|one": "Lastar %(filename)s og %(count)s andre opp",
+ "Uploading %(filename)s and %(count)s others|one": "Lastar %(filename)s og %(count)s til opp",
"Light theme": "Ljost preg",
"Dark theme": "Dimt preg",
"Status.im theme": "Status.im-preg",
@@ -1026,7 +1026,7 @@
"Remove %(threePid)s?": "Fjern %(threePid)s?",
"Unable to remove contact information": "Klarte ikkje å fjerna kontaktinfo",
"Refer a friend to Riot:": "Vis ein ven til Riot:",
- "Interface Language": "Grensesnitt-mål",
+ "Interface Language": "Grensesnitts-mål",
"User Interface": "Brukargrensesnitt",
"": "",
"Import E2E room keys": "Hent E2E-romnyklar inn",
@@ -1075,14 +1075,14 @@
"The email address linked to your account must be entered.": "Du må skriva emailadressa som er tilknytta brukaren din inn.",
"A new password must be entered.": "Du må skriva eit nytt passord inn.",
"New passwords must match each other.": "Dei nye passorda må vera like.",
- "An email has been sent to %(emailAddress)s. Once you've followed the link it contains, click below.": "Ein email vert send til %(emailAddress)s. Når du har far følgd lenkja i den, klikk under.",
+ "An email has been sent to %(emailAddress)s. Once you've followed the link it contains, click below.": "Ein email vert send til %(emailAddress)s. Når du har far fylgd lenkja i den, klikk under.",
"I have verified my email address": "Eg har godkjend emailadressa mi",
"Your password has been reset": "Passordet ditt vart attendesett",
"You have been logged out of all devices and will no longer receive push notifications. To re-enable notifications, sign in again on each device": "Du vart logga av alle einingar og får ikkje lenger pushvarsel. For å skru varsel på att, logg inn igjen på kvar eining",
"Return to login screen": "Gå attende til innlogging",
"To reset your password, enter the email address linked to your account": "For å attendestilla passordet ditt, skriv emailadressa som er lenkja til brukaren din inn",
"New password": "Nytt passord",
- "Confirm your new password": "Godkjenn det nye passordet ditt",
+ "Confirm your new password": "Stadfest det nye passordet ditt",
"Send Reset Email": "Send attendestillingsemail",
"Create an account": "Lag ein brukar",
"This Home Server does not support login using email address.": "Denne Heimtenaren støttar ikkje innlogging med email.",
@@ -1099,7 +1099,7 @@
"Failed to fetch avatar URL": "Klarte ikkje å henta avatar-URLen",
"Set a display name:": "Set eit visingsnamn:",
"Upload an avatar:": "Last ein avatar opp:",
- "This server does not support authentication with a phone number.": "Denne tenaren støttar ikkje godkjenning gjennom telefonnummer.",
+ "This server does not support authentication with a phone number.": "Denne tenaren støttar ikkje stadfesting gjennom telefonnummer.",
"Missing password.": "Vantande passord.",
"Passwords don't match.": "Passorda er ikkje like.",
"Password too short (min %(MIN_PASSWORD_LENGTH)s).": "Passordet er for kort (i det minste %(MIN_PASSWORD_LENGTH)s).",
@@ -1132,7 +1132,7 @@
"Passphrases must match": "Passetningane må vera like",
"Passphrase must not be empty": "Passetningsfeltet kan ikkje vera tomt",
"Enter passphrase": "Skriv passetning inn",
- "Confirm passphrase": "Godkjenn passetning",
+ "Confirm passphrase": "Stadfest passetning",
"You must specify an event type!": "Du må oppgje ein handlingssort!",
"Call Timeout": "Tidsavbrot i Samtala",
"Enable automatic language detection for syntax highlighting": "Skru automatisk måloppdaging på for syntax-understreking",
@@ -1219,5 +1219,9 @@
"Internal room ID: ": "Indre rom-ID: ",
"Room version number: ": "Romutgåvenummer: ",
"This homeserver has hit its Monthly Active User limit. Please contact your service administrator to continue using the service.": "Heimtenaren har truffe si Månadlege Grense for Aktive Brukarar. Ver venleg og tak kontakt med tenesteadministratoren din for å halda fram med å bruka tenesten.",
- "This homeserver has hit its Monthly Active User limit so some users will not be able to log in. Please contact your service administrator to get this limit increased.": "Heimtenaren har truffe si Månadlege Grense for Aktive Brukarar, so nokre brukarar vil ikkje kunna logga inn. Ver venleg og tak kontakt med tenesteadministratoren din for å auka grensa."
+ "This homeserver has hit its Monthly Active User limit so some users will not be able to log in. Please contact your service administrator to get this limit increased.": "Heimtenaren har truffe si Månadlege Grense for Aktive Brukarar, so nokre brukarar vil ikkje kunna logga inn. Ver venleg og tak kontakt med tenesteadministratoren din for å auka grensa.",
+ "There is a known vulnerability affecting this room.": "Ein kjend sårbarheit påverkar dette rommet.",
+ "This room version is vulnerable to malicious modification of room state.": "Denne romutgåva er sårbar til vondsinna endring på romtilstanden.",
+ "Only room administrators will see this warning": "Berre romadministratorar vil sjå denne åtvaringa",
+ "Please contact your service administrator to continue using the service.": "Ver venleg og tak kontakt med tenesteadministratoren for å halda fram med å bruka tenesten."
}
From c410a737d91c5c04c28ca41d98e1e20e63de1fd4 Mon Sep 17 00:00:00 2001
From: Matthew Hodgson
Date: Fri, 17 Aug 2018 12:23:58 +0200
Subject: [PATCH 138/343] fix NPE: apparently otherMember can be undefined as
well as null on LL
---
src/Rooms.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/Rooms.js b/src/Rooms.js
index 96e7c140bb..e24b8316b3 100644
--- a/src/Rooms.js
+++ b/src/Rooms.js
@@ -51,7 +51,7 @@ function _isConfCallRoom(room, myUserId, conferenceHandler) {
}
const otherMember = getOnlyOtherMember(room, myUserId);
- if (otherMember === null) {
+ if (!otherMember) {
return false;
}
From 9f19896df09a0cdc7d870e8f227e31c89d203890 Mon Sep 17 00:00:00 2001
From: David Baker
Date: Fri, 17 Aug 2018 14:54:43 +0100
Subject: [PATCH 139/343] Support for room upgrades
* Show when a room upgrade is needed
* Dialog box to perform the upgrade
---
res/css/_components.scss | 2 +
res/css/views/dialogs/_RoomUpgradeDialog.scss | 19 ++++
res/css/views/rooms/_RoomSettings.scss | 6 +
.../views/rooms/_RoomUpgradeWarningBar.scss | 48 ++++++++
res/themes/light/css/_base.scss | 4 +
src/components/structures/RoomView.js | 9 ++
.../views/dialogs/RoomUpgradeDialog.js | 106 ++++++++++++++++++
src/components/views/rooms/RoomSettings.js | 15 ++-
.../views/rooms/RoomUpgradeWarningBar.js | 57 ++++++++++
src/i18n/strings/en_EN.json | 12 +-
10 files changed, 273 insertions(+), 5 deletions(-)
create mode 100644 res/css/views/dialogs/_RoomUpgradeDialog.scss
create mode 100644 res/css/views/rooms/_RoomUpgradeWarningBar.scss
create mode 100644 src/components/views/dialogs/RoomUpgradeDialog.js
create mode 100644 src/components/views/rooms/RoomUpgradeWarningBar.js
diff --git a/res/css/_components.scss b/res/css/_components.scss
index 173939e143..62cdb4533e 100644
--- a/res/css/_components.scss
+++ b/res/css/_components.scss
@@ -39,6 +39,7 @@
@import "./views/dialogs/_EncryptedEventDialog.scss";
@import "./views/dialogs/_GroupAddressPicker.scss";
@import "./views/dialogs/_QuestionDialog.scss";
+@import "./views/dialogs/_RoomUpgradeDialog.scss";
@import "./views/dialogs/_SetEmailDialog.scss";
@import "./views/dialogs/_SetMxIdDialog.scss";
@import "./views/dialogs/_SetPasswordDialog.scss";
@@ -99,6 +100,7 @@
@import "./views/rooms/_RoomSettings.scss";
@import "./views/rooms/_RoomTile.scss";
@import "./views/rooms/_RoomTooltip.scss";
+@import "./views/rooms/_RoomUpgradeWarningBar.scss";
@import "./views/rooms/_SearchBar.scss";
@import "./views/rooms/_SearchableEntityList.scss";
@import "./views/rooms/_Stickers.scss";
diff --git a/res/css/views/dialogs/_RoomUpgradeDialog.scss b/res/css/views/dialogs/_RoomUpgradeDialog.scss
new file mode 100644
index 0000000000..2e3ac5fdea
--- /dev/null
+++ b/res/css/views/dialogs/_RoomUpgradeDialog.scss
@@ -0,0 +1,19 @@
+/*
+Copyright 2018 New Vector Ltd
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+.mx_RoomUpgradeDialog {
+ padding-right: 70px;
+}
diff --git a/res/css/views/rooms/_RoomSettings.scss b/res/css/views/rooms/_RoomSettings.scss
index 4013af4c7c..f04042ea77 100644
--- a/res/css/views/rooms/_RoomSettings.scss
+++ b/res/css/views/rooms/_RoomSettings.scss
@@ -20,6 +20,7 @@ limitations under the License.
margin-bottom: 20px;
}
+.mx_RoomSettings_upgradeButton,
.mx_RoomSettings_leaveButton,
.mx_RoomSettings_unbanButton {
@mixin mx_DialogButton;
@@ -27,11 +28,16 @@ limitations under the License.
margin-right: 8px;
}
+.mx_RoomSettings_upgradeButton,
.mx_RoomSettings_leaveButton:hover,
.mx_RoomSettings_unbanButton:hover {
@mixin mx_DialogButton_hover;
}
+.mx_RoomSettings_upgradeButton.danger {
+ @mixin mx_DialogButton_danger;
+}
+
.mx_RoomSettings_integrationsButton_error {
position: relative;
cursor: not-allowed;
diff --git a/res/css/views/rooms/_RoomUpgradeWarningBar.scss b/res/css/views/rooms/_RoomUpgradeWarningBar.scss
new file mode 100644
index 0000000000..82785b82d2
--- /dev/null
+++ b/res/css/views/rooms/_RoomUpgradeWarningBar.scss
@@ -0,0 +1,48 @@
+/*
+Copyright 2018 New Vector Ltd
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+.mx_RoomUpgradeWarningBar {
+ text-align: center;
+ height: 176px;
+ background-color: $event-selected-color;
+ align-items: center;
+ flex-direction: column;
+ justify-content: center;
+ display: flex;
+ background-color: $preview-bar-bg-color;
+ -webkit-align-items: center;
+ padding-left: 20px;
+ padding-right: 20px;
+}
+
+.mx_RoomUpgradeWarningBar_header {
+ color: $warning-color;
+ font-weight: bold;
+}
+
+.mx_RoomUpgradeWarningBar_body {
+ color: $warning-color;
+}
+
+.mx_RoomUpgradeWarningBar_upgradelink {
+ color: $warning-color;
+ text-decoration: underline;
+}
+
+.mx_RoomUpgradeWarningBar_small {
+ color: $greyed-fg-color;
+ font-size: 70%;
+}
diff --git a/res/themes/light/css/_base.scss b/res/themes/light/css/_base.scss
index 7d004bd831..c7fd38259c 100644
--- a/res/themes/light/css/_base.scss
+++ b/res/themes/light/css/_base.scss
@@ -171,6 +171,10 @@ $progressbar-color: #000;
outline: none;
}
+@define-mixin mx_DialogButton_danger {
+ background-color: $warning-color;
+}
+
@define-mixin mx_DialogButton_hover {
}
diff --git a/src/components/structures/RoomView.js b/src/components/structures/RoomView.js
index 855090873f..5243cd15fa 100644
--- a/src/components/structures/RoomView.js
+++ b/src/components/structures/RoomView.js
@@ -1461,6 +1461,7 @@ module.exports = React.createClass({
const RoomPreviewBar = sdk.getComponent("rooms.RoomPreviewBar");
const Loader = sdk.getComponent("elements.Spinner");
const TimelinePanel = sdk.getComponent("structures.TimelinePanel");
+ const RoomUpgradeWarningBar = sdk.getComponent("rooms.RoomUpgradeWarningBar");
if (!this.state.room) {
if (this.state.roomLoading || this.state.peekLoading) {
@@ -1586,6 +1587,11 @@ module.exports = React.createClass({
/>;
}
+ const showRoomUpgradeBar = (
+ this.state.room.shouldUpgradeToVersion() &&
+ this.state.room.userMayUpgradeRoom(MatrixClientPeg.get().credentials.userId)
+ );
+
let aux = null;
let hideCancel = false;
if (this.state.editingRoomSettings) {
@@ -1597,6 +1603,9 @@ module.exports = React.createClass({
} else if (this.state.searching) {
hideCancel = true; // has own cancel
aux = ;
+ } else if (showRoomUpgradeBar) {
+ aux = ;
+ hideCancel = true;
} else if (this.state.showingPinned) {
hideCancel = true; // has own cancel
aux = ;
diff --git a/src/components/views/dialogs/RoomUpgradeDialog.js b/src/components/views/dialogs/RoomUpgradeDialog.js
new file mode 100644
index 0000000000..936ff745d1
--- /dev/null
+++ b/src/components/views/dialogs/RoomUpgradeDialog.js
@@ -0,0 +1,106 @@
+/*
+Copyright 2018 New Vector Ltd
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+import React from 'react';
+import PropTypes from 'prop-types';
+import sdk from '../../../index';
+import MatrixClientPeg from '../../../MatrixClientPeg';
+import Modal from '../../../Modal';
+import { _t } from '../../../languageHandler';
+
+export default React.createClass({
+ displayName: 'RoomUpgradeDialog',
+
+ propTypes: {
+ room: PropTypes.object.isRequired,
+ onFinished: PropTypes.func.isRequired,
+ },
+
+ componentWillMount: function() {
+ this._targetVersion = this.props.room.shouldUpgradeToVersion();
+ },
+
+ getInitialState: function() {
+ return {
+ busy: false,
+ };
+ },
+
+ _onCancelClick: function() {
+ this.props.onFinished(false);
+ },
+
+ _onUpgradeClick: function() {
+ this.setState({busy: true});
+ MatrixClientPeg.get().upgradeRoom(this.props.room.roomId, this._targetVersion).catch((err) => {
+ const ErrorDialog = sdk.getComponent("dialogs.ErrorDialog");
+ Modal.createTrackedDialog('Failed to upgrade room', '', ErrorDialog, {
+ title: _t("Failed to upgrade room"),
+ description: ((err && err.message) ? err.message : _t("The room upgrade could not be completed")),
+ });
+ }).finally(() => {
+ this.setState({busy: false});
+ });
+ },
+
+ render: function() {
+ const BaseDialog = sdk.getComponent('views.dialogs.BaseDialog');
+ const DialogButtons = sdk.getComponent('views.elements.DialogButtons');
+ const Spinner = sdk.getComponent('views.elements.Spinner');
+
+ let buttons;
+ if (this.state.busy) {
+ buttons = ;
+ } else {
+ buttons = ;
+ }
+
+ return (
+
+
+ {_t(
+ "Upgrading this room requires closing down the current " +
+ "instance of the room and creating a new room it its place. " +
+ "To give room members the best possible experience, we will:",
+ )}
+
+
+
{_t("Create a new room with the same name, description and avatar")}
+
{_t("Update any local room aliases to point to the new room")}
+
{_t("Stop users from speaking in the old version of the room, and post a message advising users to move to the new room")}
+
{_t("Put a link back to the old room at the start of the new room so people can see old messages")}
);
diff --git a/src/components/views/rooms/RoomUpgradeWarningBar.js b/src/components/views/rooms/RoomUpgradeWarningBar.js
new file mode 100644
index 0000000000..a464d95140
--- /dev/null
+++ b/src/components/views/rooms/RoomUpgradeWarningBar.js
@@ -0,0 +1,57 @@
+/*
+Copyright 2018 New Vector Ltd
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+import React from 'react';
+import PropTypes from 'prop-types';
+import sdk from '../../../index';
+import Modal from '../../../Modal';
+
+import { _t } from '../../../languageHandler';
+
+module.exports = React.createClass({
+ displayName: 'RoomUpgardeWarningBar',
+
+ propTypes: {
+ room: PropTypes.object.isRequired,
+ },
+
+ onUpgradeClick: function() {
+ const RoomUpgradeDialog = sdk.getComponent('dialogs.RoomUpgradeDialog');
+ Modal.createTrackedDialog('Upgrade Room Version', '', RoomUpgradeDialog, {room: this.props.room});
+ },
+
+ render: function() {
+ const AccessibleButton = sdk.getComponent('elements.AccessibleButton');
+ return (
+
+
+ {_t("There is a known vulnerability affecting this room.")}
+
+
+ {_t("This room version is vulnerable to malicious modification of room state.")}
+
+
+
+ {_t("Click here to upgrade to the latest room version and ensure room integrity is protected.")}
+
+
+
+ {_t("Only room administrators will see this warning")}
+
+
+ );
+ },
+});
diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json
index fcc9bcc8be..043b90518d 100644
--- a/src/i18n/strings/en_EN.json
+++ b/src/i18n/strings/en_EN.json
@@ -205,6 +205,7 @@
"Authentication check failed: incorrect password?": "Authentication check failed: incorrect password?",
"Failed to join room": "Failed to join room",
"Message Pinning": "Message Pinning",
+ "Increase performance by only loading room members on first view": "Increase performance by only loading room members on first view",
"Disable Emoji suggestions while typing": "Disable Emoji suggestions while typing",
"Use compact timeline layout": "Use compact timeline layout",
"Hide removed messages": "Hide removed messages",
@@ -528,6 +529,7 @@
"Guests cannot join this room even if explicitly invited.": "Guests cannot join this room even if explicitly invited.",
"Click here to fix": "Click here to fix",
"To send events of type , you must be a": "To send events of type , you must be a",
+ "Upgrade room to version %(ver)s": "Upgrade room to version %(ver)s",
"Who can access this room?": "Who can access this room?",
"Only people who have been invited": "Only people who have been invited",
"Anyone who knows the room's link, apart from guests": "Anyone who knows the room's link, apart from guests",
@@ -865,6 +867,9 @@
"Ignore request": "Ignore request",
"Loading device info...": "Loading device info...",
"Encryption key request": "Encryption key request",
+ "Failed to upgrade room": "Failed to upgrade room",
+ "The room upgrade could not be completed": "The room upgrade could not be completed",
+ "Upgrade this room to version %(version)s": "Upgrade this room to version %(version)s",
"Upgrade Room Version": "Upgrade Room Version",
"Upgrading this room requires closing down the current instance of the room and creating a new room it its place. To give room members the best possible experience, we will:": "Upgrading this room requires closing down the current instance of the room and creating a new room it its place. To give room members the best possible experience, we will:",
"Create a new room with the same name, description and avatar": "Create a new room with the same name, description and avatar",
@@ -1121,6 +1126,8 @@
"Labs": "Labs",
"These are experimental features that may break in unexpected ways": "These are experimental features that may break in unexpected ways",
"Use with caution": "Use with caution",
+ "Lazy loading members not supported": "Lazy loading members not supported",
+ "Lazy loading is not supported by your current homeserver.": "Lazy loading is not supported by your current homeserver.",
"Deactivate my account": "Deactivate my account",
"Clear Cache": "Clear Cache",
"Clear Cache and Reload": "Clear Cache and Reload",
@@ -1231,8 +1238,5 @@
"Import": "Import",
"Failed to set direct chat tag": "Failed to set direct chat tag",
"Failed to remove tag %(tagName)s from room": "Failed to remove tag %(tagName)s from room",
- "Failed to add tag %(tagName)s to room": "Failed to add tag %(tagName)s to room",
- "Increase performance by only loading room members on first view": "Increase performance by only loading room members on first view",
- "Lazy loading members not supported": "Lazy load members not supported",
- "Lazy loading is not supported by your current homeserver.": "Lazy loading is not supported by your current homeserver."
+ "Failed to add tag %(tagName)s to room": "Failed to add tag %(tagName)s to room"
}
From 353b6e9e6d82f2d1e25398059ec0631a1dba76ce Mon Sep 17 00:00:00 2001
From: David Baker
Date: Fri, 17 Aug 2018 15:15:53 +0100
Subject: [PATCH 140/343] Add stub
---
test/test-utils.js | 1 +
1 file changed, 1 insertion(+)
diff --git a/test/test-utils.js b/test/test-utils.js
index 975a4df0ee..eab355d8a7 100644
--- a/test/test-utils.js
+++ b/test/test-utils.js
@@ -256,6 +256,7 @@ export function mkStubRoom(roomId = null) {
getAccountData: () => null,
hasMembershipState: () => null,
getVersion: () => '1',
+ shouldUpgradeToVersion: () => null,
currentState: {
getStateEvents: sinon.stub(),
mayClientSendStateEvent: sinon.stub().returns(true),
From 3ca56982e4679bba806639afce8998d966e6f2b1 Mon Sep 17 00:00:00 2001
From: Jeff Huang
Date: Sat, 18 Aug 2018 13:57:52 +0000
Subject: [PATCH 141/343] Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (1236 of 1236 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/zh_Hant/
---
src/i18n/strings/zh_Hant.json | 24 +++++++++++++++++++++++-
1 file changed, 23 insertions(+), 1 deletion(-)
diff --git a/src/i18n/strings/zh_Hant.json b/src/i18n/strings/zh_Hant.json
index 48a0c8bd5a..3a7d08fb8a 100644
--- a/src/i18n/strings/zh_Hant.json
+++ b/src/i18n/strings/zh_Hant.json
@@ -1231,5 +1231,27 @@
"Internal room ID: ": "內部聊天室 ID: ",
"Room version number: ": "聊天室版本號: ",
"This homeserver has hit its Monthly Active User limit. Please contact your service administrator to continue using the service.": "這個家伺服器已經達到了其每月活躍使用者限制。請聯絡您的服務管理員以繼續使用服務。",
- "This homeserver has hit its Monthly Active User limit so some users will not be able to log in. Please contact your service administrator to get this limit increased.": "此家伺服器已達到其每月活躍使用者限制,所以其部份使用者將會無法登入。請聯絡您的服務管理員以讓此限制增加。"
+ "This homeserver has hit its Monthly Active User limit so some users will not be able to log in. Please contact your service administrator to get this limit increased.": "此家伺服器已達到其每月活躍使用者限制,所以其部份使用者將會無法登入。請聯絡您的服務管理員以讓此限制增加。",
+ "There is a known vulnerability affecting this room.": "有一個已知的安全性漏洞影響此聊天室。",
+ "This room version is vulnerable to malicious modification of room state.": "此聊天室版本易受惡意修改聊天室狀態的影響。",
+ "Click here to upgrade to the latest room version and ensure room integrity is protected.": "點選這裡以升級到最新的聊天室版本並確保聊天室的完整性已被保護。",
+ "Only room administrators will see this warning": "僅聊天室管理員會看到此警告",
+ "Please contact your service administrator to continue using the service.": "請聯絡您的服務管理員以繼續使用服務。",
+ "This homeserver has hit its Monthly Active User limit.": "這個家伺服器已經到達其每月活躍使用者限制。",
+ "This homeserver has exceeded one of its resource limits.": "此家伺服器已經超過其中一項資源限制。",
+ "Please contact your service administrator to get this limit increased.": "請聯絡您的服務管理員以讓此限制增加。",
+ "This homeserver has hit its Monthly Active User limit so some users will not be able to log in.": "此家伺服器已經達到其每月活躍使用者限制所以某些使用者將會無法登入。",
+ "This homeserver has exceeded one of its resource limits so some users will not be able to log in.": "此家伺服器已超過其中一項資源限制所以某些使用者可能會無法登入。",
+ "Upgrade Room Version": "更新聊天室版本",
+ "Upgrading this room requires closing down the current instance of the room and creating a new room it its place. To give room members the best possible experience, we will:": "更新此聊天室需要關閉目前的聊天室實體並建立一個新的聊天室。為了給予聊天室成員最佳的體驗,我們將會:",
+ "Create a new room with the same name, description and avatar": "使用同樣的名稱、描述與大頭貼建立新聊天室",
+ "Update any local room aliases to point to the new room": "更新任何本地聊天室別名以指向新的聊天室",
+ "Stop users from speaking in the old version of the room, and post a message advising users to move to the new room": "讓使用者在舊版聊天室停止發言,並張貼訊息建議使用者移動到新的聊天室",
+ "Put a link back to the old room at the start of the new room so people can see old messages": "在新聊天室的開始處放置連回舊聊天室的連結,這樣夥伴們就可以看到舊的訊息",
+ "Your message wasn't sent because this homeserver has hit its Monthly Active User Limit. Please contact your service administrator to continue using the service.": "您的訊息未被傳送,因為其家伺服器已經達到了其每月活躍使用者限制。請聯絡您的服務管理員以繼續使用服務。",
+ "Your message wasn't sent because this homeserver has exceeded a resource limit. Please contact your service administrator to continue using the service.": "您的訊息未傳送,因為其家伺服器已超過一項資源限制。請聯絡您的服務管理員以繼序使用服務。",
+ "Please contact your service administrator to continue using this service.": "請聯絡您的服務管理員以繼續使用此服務。",
+ "Increase performance by only loading room members on first view": "透過僅在第一次檢視時載入聊天室成員來增加效能",
+ "Lazy loading members not supported": "不支援延持載入成員",
+ "Lazy loading is not supported by your current homeserver.": "您目前的家伺服器不支援延遲載入。"
}
From a2db7dead19a85464df99ab1c4e1f55e92f8461a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Franti=C5=A1ek=20=C5=A0indel=C3=A1=C5=99?=
Date: Sat, 18 Aug 2018 21:56:40 +0000
Subject: [PATCH 142/343] Translated using Weblate (Czech)
Currently translated at 100.0% (1236 of 1236 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/cs/
---
src/i18n/strings/cs.json | 168 ++++++++++++++++++++++++++++++++++++++-
1 file changed, 167 insertions(+), 1 deletion(-)
diff --git a/src/i18n/strings/cs.json b/src/i18n/strings/cs.json
index 9ac753e285..04c22afcf0 100644
--- a/src/i18n/strings/cs.json
+++ b/src/i18n/strings/cs.json
@@ -1080,5 +1080,171 @@
"The platform you're on": "Platforma na které jsi",
"The version of Riot.im": "Verze Riot.im",
"Whether or not you're logged in (we don't record your user name)": "Jestli jsi, nebo nejsi přihlášen (tvou přezdívku neukládáme)",
- "Your language of choice": "Tvá jazyková volba"
+ "Your language of choice": "Tvá jazyková volba",
+ "Which officially provided instance you are using, if any": "Přes kterou oficiální podporovanou instanci Riot.im jste pripojeni (jestli nehostujete Riot sami)",
+ "Whether or not you're using the Richtext mode of the Rich Text Editor": "Jestli při psaní zpráv používáte rozbalenou lištu formátování textu",
+ "Your homeserver's URL": "URL vámi používaného domovského serveru",
+ "Your identity server's URL": "URL Vámi používaného serveru totožností",
+ "e.g. %(exampleValue)s": "např. %(exampleValue)s",
+ "Every page you use in the app": "Každou stránku v aplikaci, kterou navštívíte",
+ "e.g. ": "např. ",
+ "Your User Agent": "Řetězec User Agent Vašeho zařízení",
+ "Your device resolution": "Rozlišení obrazovky Vašeho zařízení",
+ "The information being sent to us to help make Riot.im better includes:": "S cílem vylepšovat aplikaci Riot.im shromažďujeme následující údaje:",
+ "Where this page includes identifiable information, such as a room, user or group ID, that data is removed before being sent to the server.": "V případě, že se na stránce vyskytují identifikační údaje, jako například název místnosti, ID uživatele, místnosti a nebo skupiny, jsou tyto údaje před odesláním na server odstraněny.",
+ "A conference call could not be started because the intgrations server is not available": "Není možné uskutečnit konferenční hovor, integrační server není k dispozici",
+ "Call in Progress": "Probíhající hovor",
+ "A call is currently being placed!": "Právě probíhá jiný hovor!",
+ "A call is already in progress!": "Jeden hovor už probíhá!",
+ "Permission Required": "Vyžaduje oprávnění",
+ "You do not have permission to start a conference call in this room": "Nemáte oprávnění v této místnosti začít konferenční hovor",
+ "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s": "%(weekDayName)s, %(day)s %(monthName)s %(fullYear)s",
+ "Missing roomId.": "Chybějící ID místnosti.",
+ "Opens the Developer Tools dialog": "Otevře dialog nástrojů pro vývojáře",
+ "%(oldDisplayName)s changed their display name to %(displayName)s.": "%(oldDisplayName)s si změnil zobrazované jméno na %(displayName)s.",
+ "Always show encryption icons": "Vždy zobrazovat ikony stavu šifrovaní",
+ "Disable Community Filter Panel": "Zakázat panel Filtr komunity",
+ "Send analytics data": "Odesílat analytická data",
+ "Enable widget screenshots on supported widgets": "Povolit screenshot widgetu pro podporované widgety",
+ "Show empty room list headings": "Zobrazovat nadpisy prázdných seznamů místností",
+ "This event could not be displayed": "Tato událost nemohla být zobrazena",
+ "Your key share request has been sent - please check your other devices for key share requests.": "Žádost o sdílení klíče byla odeslána - prosím zkontrolujte si Vaše ostatí zařízení.",
+ "Key share requests are sent to your other devices automatically. If you rejected or dismissed the key share request on your other devices, click here to request the keys for this session again.": "Žádost o sdílení klíčů je automaticky odesílaná na Vaše ostatní zařízení. Jestli jste žádost odmítly nebo zrušili dialogové okno se žádostí na ostatních zařízeních, kliknutím sem ji můžete opakovaně pro tuto relaci vyžádat.",
+ "If your other devices do not have the key for this message you will not be able to decrypt them.": "Pokud Vaše ostatní zařízení nemají klíč pro tyto zprávy, nebudete je moci dešifrovat.",
+ "Key request sent.": "Žádost o klíč poslána.",
+ "Re-request encryption keys from your other devices.": "Znovu vyžádat šifrovací klíče z vašich ostatních zařízení.",
+ "Encrypting": "Šifruje",
+ "Encrypted, not sent": "Zašifrováno, ale neodesláno",
+ "Demote yourself?": "Snížit Vaši vlastní hodnost?",
+ "You will not be able to undo this change as you are demoting yourself, if you are the last privileged user in the room it will be impossible to regain privileges.": "Tuto změnu nebudete moci vzít zpět, protože snižujete svoji vlastní hodnost, jste-li poslední privilegovaný uživatel v místnosti, bude nemožné vaši současnou hodnost získat zpět.",
+ "Demote": "Degradovat",
+ "Share Link to User": "Sdílet odkaz na uživatele",
+ "deleted": "smazáno",
+ "underlined": "podtrženo",
+ "inline-code": "vnořený kód",
+ "block-quote": "citace",
+ "bulleted-list": "seznam s odrážkami",
+ "numbered-list": "číselný seznam",
+ "At this time it is not possible to reply with a file so this will be sent without being a reply.": "V současné době nejde odpovědět se souborem, proto toto bude odesláno jako by to odpověď nebyla.",
+ "Send an encrypted reply…": "Odeslat šifrovanou odpověď …",
+ "Send a reply (unencrypted)…": "Odeslat odpověď (nešifrovaně) …",
+ "Send an encrypted message…": "Odeslat šifrovanou zprávu …",
+ "Send a message (unencrypted)…": "Odeslat zprávu (nešifrovaně) …",
+ "Unable to reply": "Není možné odpovědět",
+ "At this time it is not possible to reply with an emote.": "V odpovědi zatím nejde vyjádřit pocit.",
+ "Seen by %(displayName)s (%(userName)s) at %(dateTime)s": "%(displayName)s (%(userName)s) viděl %(dateTime)s",
+ "Replying": "Odpovídá",
+ "Share room": "Sdílet místnost",
+ "You have no historical rooms": "Nemáte žádné historické místnosti",
+ "System Alerts": "Systémová varování",
+ "To notify everyone in the room, you must be a": "Abyste mohli upozornit všechny v místnosti, musíte být",
+ "%(user)s is a %(userRole)s": "%(user)s je %(userRole)s",
+ "Muted Users": "Umlčení uživatelé",
+ "Internal room ID: ": "Vnitřní ID mistnosti: ",
+ "Room version number: ": "Číslo verze místnosti: ",
+ "There is a known vulnerability affecting this room.": "Pro tuto místnost existuje známa zranitelnost.",
+ "This room version is vulnerable to malicious modification of room state.": "Tato verze místnosti je zranitelná zlomyslnou modifikací stavu místnosti.",
+ "Click here to upgrade to the latest room version and ensure room integrity is protected.": "Pro zaručení integrity místnosti klikněte sem a upgradeujte místnost na nejnovější verzi.",
+ "Only room administrators will see this warning": "Jen administrátoři místnosti uvidí toto varování",
+ "You don't currently have any stickerpacks enabled": "Momentálně nemáte aktívní žádné balíčky s nálepkami",
+ "Add a stickerpack": "Přidat balíček s nálepkami",
+ "Stickerpack": "Balíček s nálepkami",
+ "Hide Stickers": "Skrýt nálepky",
+ "Show Stickers": "Zobrazit nálepky",
+ "In encrypted rooms, like this one, URL previews are disabled by default to ensure that your homeserver (where the previews are generated) cannot gather information about links you see in this room.": "V šifrovaných místnostech, jako je tato, jsou URL náhledy ve výchozím nastavení zakázané, aby bylo možné zajistit, že váš domácí server nemůže shromažďovat informace o odkazech, které v této místnosti vidíte.",
+ "When someone puts a URL in their message, a URL preview can be shown to give more information about that link such as the title, description, and an image from the website.": "Když někdo ve zprávě pošle URL adresu, může být zobrazen její náhled obsahující informace jako titulek, popis a obrázek z cílové stránky.",
+ "Code": "Kód",
+ "The email field must not be blank.": "E-mail nemůže být prázdný.",
+ "The user name field must not be blank.": "Uživatelské jméno nemůže být prázdné.",
+ "The phone number field must not be blank.": "Telefonní číslo nemůže být prázdné.",
+ "The password field must not be blank.": "Heslo nemůže být prázdné.",
+ "Please help improve Riot.im by sending anonymous usage data. This will use a cookie (please see our Cookie Policy).": "Prosím pomozte nám vylepšovat Riot.im odesíláním anonymních údajů o používaní. Na tento účel použijeme cookie (přečtěte si jak cookies používáme).",
+ "Please help improve Riot.im by sending anonymous usage data. This will use a cookie.": "Prosím pomozte nám vylepšovat Riot.im odesíláním anonymních údajů o používaní. Na tento účel použijeme cookie.",
+ "Yes, I want to help!": "Ano, chci pomoci!",
+ "Please contact your service administrator to continue using the service.": "Please contact your service administrator to continue using the service.\nProsím kontaktujte Vašeho administratora aby jste mohli pokračovat v používání Vašeho zařízení.",
+ "This homeserver has hit its Monthly Active User limit.": "Tento domovský server dosáhl svého měsíčního limitu pro aktivní uživatele.",
+ "This homeserver has exceeded one of its resource limits.": "Tento domovský server překročil některý z limitů.",
+ "Please contact your service administrator to get this limit increased.": "Prosím kontaktujte Vašeho administrátora pro zvýšení tohoto limitu.",
+ "This homeserver has hit its Monthly Active User limit so some users will not be able to log in.": "Tento domovský server dosáhl svého měsíčního limitu pro aktivní uživatele, proto se někteří uživatelé nebudou moci přihlásit.",
+ "This homeserver has exceeded one of its resource limits so some users will not be able to log in.": "Tento domovský server překročil některý z limitů, proto se někteří uživatelé nebudou moci přihlásit.",
+ "Warning: This widget might use cookies.": "Varování: tento widget může používat cookies.",
+ "Failed to remove widget": "Nepovedlo se odstranit widget",
+ "An error ocurred whilst trying to remove the widget from the room": "Při odstraňování widgetu z místnosti nastala chyba",
+ "Minimize apps": "Minimalizovat aplikace",
+ "Reload widget": "Obnovit widget",
+ "Popout widget": "Otevřít widget v novém okně",
+ "Picture": "Fotografie",
+ "Unable to load event that was replied to, it either does not exist or you do not have permission to view it.": "Není možné načíst událost, na kterou se odpovídalo. Buď neexistuje, nebo nemáte oprávnění ji zobrazit.",
+ "In reply to": "V odpovědi na",
+ "Preparing to send logs": "Příprava na odeslání záznamů",
+ "Logs sent": "Záznamy odeslány",
+ "Failed to send logs: ": "Nepodařilo se odeslat záznamy: ",
+ "Submit debug logs": "Odeslat ladící záznamy",
+ "Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited and the usernames of other users. They do not contain messages.": "Ladící záznamy obsahují data o používání aplikace včetně Vašeho uživatelského jména, ID nebo aliasy navštívených místností a skupin a uživatelská jména jiných uživatelů. Neobsahují zprávy.",
+ "Riot bugs are tracked on GitHub: create a GitHub issue.": "Bugy Riotu jsou na Githubu: vytvořit bug na Githubu.",
+ "GitHub issue link:": "Odkaz na hlášení na GitHubu:",
+ "Notes:": "Poznámky:",
+ "Community IDs cannot be empty.": "ID komunity nemůže být prázdné.",
+ "Failed to indicate account erasure": "Nepovedlo se potvrdit výmaz účtu",
+ "This will make your account permanently unusable. You will not be able to log in, and no one will be able to re-register the same user ID. This will cause your account to leave all rooms it is participating in, and it will remove your account details from your identity server. This action is irreversible.": "Toto učiní účet permanentně nepoužitelný. Nebudete se moci přihlásit a nikdo se nebude moci se stejným uživatelskym ID znovu zaregistrovat. Účet bude odstraněn ze všech místnosti a bude vymazán ze servru identity.Tato akce je nevratná.",
+ "Deactivating your account does not by default cause us to forget messages you have sent. If you would like us to forget your messages, please tick the box below.": "Deaktivace účtu automaticky nesmaže zprávy, které jste poslali. Chcete-li je smazat, zaškrtněte prosím odpovídající pole níže.",
+ "Message visibility in Matrix is similar to email. Our forgetting your messages means that messages you have sent will not be shared with any new or unregistered users, but registered users who already have access to these messages will still have access to their copy.": "Viditelnost zpráv v Matrixu je podobná e-mailu. Výmaz Vašich zpráv znamené, že už nebudou sdíleny s žádným novým nebo neregistrovaným uživatelem, ale registrovaní uživatelé, kteří už přístup ke zprávám mají, budou stále mít přístup k jejich kopii.",
+ "Please forget all messages I have sent when my account is deactivated (Warning: this will cause future users to see an incomplete view of conversations)": "S deaktivací účtu si přeji smazat všechny mnou odeslané zprávy (Pozor: způsobí, že noví uživatelé uvidí nekompletní konverzace)",
+ "To continue, please enter your password:": "Pro pokračování, zadejte Vaše heslo:",
+ "password": "heslo",
+ "Upgrade Room Version": "Upgradeovat verzi místnosti",
+ "Upgrading this room requires closing down the current instance of the room and creating a new room it its place. To give room members the best possible experience, we will:": "Upgradování této místnosti vyžaduje uzavření současné instance místnosti a vytvoření místností nové. Pro co možná nejhladší průběh:",
+ "Create a new room with the same name, description and avatar": "Vytvoříme místnost se stejným jménem, popisem a avatarem",
+ "Update any local room aliases to point to the new room": "Aktualizujeme všechny lokální aliasy místnosti tak, aby ukazovaly na novou místnost",
+ "Stop users from speaking in the old version of the room, and post a message advising users to move to the new room": "Přerušíme konverzace ve staré verzi místnosti a pošleme uživatelům zprávu o přechodu do nové mistnosti",
+ "Put a link back to the old room at the start of the new room so people can see old messages": "Na začátek nové místnosti umístíme odkaz na starou místnost tak, aby uživatelé mohli vidět staré zprávy",
+ "Log out and remove encryption keys?": "Odhlásit se a odstranit šifrovací klíče?",
+ "Clear Storage and Sign Out": "Vymazat uložiště a odhlásit se",
+ "Send Logs": "Odeslat záznamy",
+ "Refresh": "Obnovit",
+ "We encountered an error trying to restore your previous session.": "V průběhu obnovování Vaší minulé relace nastala chyba.",
+ "Clearing your browser's storage may fix the problem, but will sign you out and cause any encrypted chat history to become unreadable.": "Vymazání uložiště prohlížeče možna opraví Váš problem, zároveň se tím ale odhlásíte a historie Vašich šifrovaných konverzací se pro Vás může stát nečitelnou.",
+ "Share Room": "Sdílet místnost",
+ "Link to most recent message": "Odkaz na nejnovější zprávu",
+ "Share User": "Sdílet uživatele",
+ "Share Community": "Sdílet komunitu",
+ "Share Room Message": "Sdílet zprávu z místnosti",
+ "Link to selected message": "Odkaz na vybranou zprávu",
+ "COPY": "Kopírovat",
+ "Share Message": "Sdílet zprávu",
+ "Collapse Reply Thread": "Sbalit vlákno odpovědi",
+ "Unable to join community": "Není možné vstoupit do komunity",
+ "Unable to leave community": "Není možné opustit komunitu",
+ "Changes made to your community name and avatar might not be seen by other users for up to 30 minutes.": "Změny ve Vaší komunitě název a avatar možná nebudou viditelné pro ostatní uživatele po dobu až 30 minut.",
+ "Join this community": "Vstoupit do komunity",
+ "Leave this community": "Opustit komunitu",
+ "Who can join this community?": "Kdo může vstoupit do této komunity?",
+ "Everyone": "Všichni",
+ "This room is not public. You will not be able to rejoin without an invite.": "Tato místnost není veřejná. Bez pozvánky nebudete moci znovu vstoupit.",
+ "Can't leave Server Notices room": "Z místnosti \"Server Notices\" nejde odejit",
+ "This room is used for important messages from the Homeserver, so you cannot leave it.": "Tato místnost je určena pro důležité zprávy od domácího servru, a proto z ní nemůžete odejít.",
+ "Terms and Conditions": "Smluvní podmínky",
+ "To continue using the %(homeserverDomain)s homeserver you must review and agree to our terms and conditions.": "Chcete-li nadále používat domovský server %(homeserverDomain)s, měli byste si přečíst a odsouhlasit naše smluvní podmínky.",
+ "Review terms and conditions": "Přečíst smluvní podmínky",
+ "Did you know: you can use communities to filter your Riot.im experience!": "Věděli jste, že: práci s Riot.im si můžete zpříjemnit s použitím komunit!",
+ "To set up a filter, drag a community avatar over to the filter panel on the far left hand side of the screen. You can click on an avatar in the filter panel at any time to see only the rooms and people associated with that community.": "Pro nastavení filtru, přetáhněte obrázek komunity na pantel foltrování na leve straně obrazovky. Potom můžete kdykoliv kliknout na obrazek komunity na tomto panelu a Riot.im Vám bude zobrazovat jen místnosti a lidi z dané komunity.",
+ "Show devices, send anyway or cancel.": "Zobrazit zařízení, i tak odeslat a nebo zrušit.",
+ "You can't send any messages until you review and agree to our terms and conditions.": "Dokud si nepřečtete a neodsouhlasíte naše smluvní podmínky, nebudete moci posílat žádné zprávy.",
+ "Your message wasn't sent because this homeserver has hit its Monthly Active User Limit. Please contact your service administrator to continue using the service.": "Vaše zpráva nebyla odeslána, protože tento domácí server dosáhl svého měsíčního limitu pro aktivní uživatele. Prosím kontaktujte Vašeho administratora pro další využívání služby.",
+ "Your message wasn't sent because this homeserver has exceeded a resource limit. Please contact your service administrator to continue using the service.": "Vaše zpráva nebyla odeslána, protože tento domácí server dosáhl limitu. Prosím kontaktujte Vašeho administratora pro další využívání služby.",
+ "%(count)s of your messages have not been sent.|one": "Vaše zpráva nebyla odeslána.",
+ "%(count)s Resend all or cancel all now. You can also select individual messages to resend or cancel.|other": "Znovu poslat všechny nebo zrušit všechny. Můžete též vybrat jednotlivé zprávy pro znovu odeslání nebo zrušení.",
+ "%(count)s Resend all or cancel all now. You can also select individual messages to resend or cancel.|one": "Znovu poslat zprávu nebo zrušit zprávu.",
+ "Clear filter": "Zrušit filtr",
+ "Debug Logs Submission": "Odeslání ladících záznamů",
+ "If you've submitted a bug via GitHub, debug logs can help us track down the problem. Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited and the usernames of other users. They do not contain messages.": "Jestli jste odeslali hlášení o chybě na GitHub, ladící záznamy nám pomohou problém najít. Ladicí záznamy obsahuji data o používání aplikate, která obsahují uživatelské jmeno, ID nebo aliasy navštívených místnosti a uživatelská jména dalších uživatelů. Neobsahují zprávy.",
+ "Privacy is important to us, so we don't collect any personal or identifiable data for our analytics.": "Soukromí je pro nás důležité a proto neshromažďujeme osobní udaje ani udaje na zakladě, kterých by Vás bylo možne identifikovat.",
+ "Learn more about how we use analytics.": "Dozvědět se více o tom, jak zpracováváme analytické údaje.",
+ "No Audio Outputs detected": "Nebyly rozpoznány žádné zvukové výstupy",
+ "Audio Output": "Zvukový výstup",
+ "Please contact your service administrator to continue using this service.": "Pro pokračování využívání této služby prosím kontaktujte Vašeho administrátora.",
+ "Try the app first": "Zkuste aplikaci",
+ "Increase performance by only loading room members on first view": "Zvýšit výkon nahráváním členů místnosti jen poprvé",
+ "Lazy loading members not supported": "Líné nahrávání členů není podporováno",
+ "Lazy loading is not supported by your current homeserver.": "Líné nahrávání není podporováno současným domácím serverem."
}
From 51d9c48230b5c130ac22daa9b0f56505db02d3bb Mon Sep 17 00:00:00 2001
From: David Baker
Date: Mon, 20 Aug 2018 13:52:09 +0100
Subject: [PATCH 143/343] Released js-sdk
---
package.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/package.json b/package.json
index 426a31f549..88333c3592 100644
--- a/package.json
+++ b/package.json
@@ -73,7 +73,7 @@
"linkifyjs": "^2.1.6",
"lodash": "^4.13.1",
"lolex": "2.3.2",
- "matrix-js-sdk": "0.10.8-rc.1",
+ "matrix-js-sdk": "0.10.8",
"optimist": "^0.6.1",
"pako": "^1.0.5",
"prop-types": "^15.5.8",
From c43f0bc2717b4fdc5a21a06632a5d7d31eb6193e Mon Sep 17 00:00:00 2001
From: David Baker
Date: Mon, 20 Aug 2018 13:56:10 +0100
Subject: [PATCH 144/343] Prepare changelog for v0.13.1
---
CHANGELOG.md | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 28d4a008cd..a3edbce2dd 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,9 @@
+Changes in [0.13.1](https://github.com/matrix-org/matrix-react-sdk/releases/tag/v0.13.1) (2018-08-20)
+=====================================================================================================
+[Full Changelog](https://github.com/matrix-org/matrix-react-sdk/compare/v0.13.1-rc.1...v0.13.1)
+
+ * No changes since rc.1
+
Changes in [0.13.1-rc.1](https://github.com/matrix-org/matrix-react-sdk/releases/tag/v0.13.1-rc.1) (2018-08-16)
===============================================================================================================
[Full Changelog](https://github.com/matrix-org/matrix-react-sdk/compare/v0.13.0...v0.13.1-rc.1)
From aecddd58cc2a9404296cf889cad9b07792de6837 Mon Sep 17 00:00:00 2001
From: David Baker
Date: Mon, 20 Aug 2018 13:56:10 +0100
Subject: [PATCH 145/343] v0.13.1
---
package.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/package.json b/package.json
index 88333c3592..f0a6004366 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "matrix-react-sdk",
- "version": "0.13.1-rc.1",
+ "version": "0.13.1",
"description": "SDK for matrix.org using React",
"author": "matrix.org",
"repository": {
From aa94168242b43e6353f4d0895b52bf1938707350 Mon Sep 17 00:00:00 2001
From: cocker-cc
Date: Sun, 19 Aug 2018 22:19:54 +0000
Subject: [PATCH 146/343] Translated using Weblate (German)
Currently translated at 100.0% (1236 of 1236 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/de/
---
src/i18n/strings/de_DE.json | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json
index a8fd77fe11..4d9bd7e882 100644
--- a/src/i18n/strings/de_DE.json
+++ b/src/i18n/strings/de_DE.json
@@ -190,7 +190,7 @@
"This email address is already in use": "Diese E-Mail-Adresse wird bereits verwendet",
"This email address was not found": "Diese E-Mail-Adresse konnte nicht gefunden werden",
"The file '%(fileName)s' exceeds this home server's size limit for uploads": "Die Datei '%(fileName)s' überschreitet das Größen-Limit für Uploads auf diesem Heimserver",
- "The file '%(fileName)s' failed to upload": "Das Hochladen der Datei '%(fileName)s' schlug fehl",
+ "The file '%(fileName)s' failed to upload": "Das Hochladen der Datei '%(fileName)' schlug fehl",
"The remote side failed to pick up": "Die Gegenstelle konnte nicht abheben",
"This phone number is already in use": "Diese Telefonnummer wird bereits verwendet",
"Unable to capture screen": "Der Bildschirm konnte nicht aufgenommen werden",
@@ -748,7 +748,7 @@
"No rooms to show": "Keine anzeigbaren Räume",
"Community Settings": "Community-Einstellungen",
"Who would you like to add to this community?": "Wen möchtest du zu dieser Community hinzufügen?",
- "Warning: any person you add to a community will be publicly visible to anyone who knows the community ID": "Warnung: Jede Person die du einer Community hinzufügst, wird für alle die die Community-ID kennen öffentlich sichtbar sein",
+ "Warning: any person you add to a community will be publicly visible to anyone who knows the community ID": "Warnung: Jede Person, die du einer Community hinzufügst, wird für alle, die die Community-ID kennen, öffentlich sichtbar sein",
"Invite new community members": "Neue Community-Mitglieder einladen",
"Invite to Community": "In die Community einladen",
"Which rooms would you like to add to this community?": "Welche Räume möchtest du zu dieser Community hinzufügen?",
@@ -915,7 +915,7 @@
"Display your community flair in rooms configured to show it.": "Zeige deinen Community-Flair in den Räumen, die es erlauben.",
"This homeserver doesn't offer any login flows which are supported by this client.": "Dieser Heimserver verfügt über keinen, von diesem Client unterstütztes Anmeldeverfahren.",
"Call Failed": "Anruf fehlgeschlagen",
- "There are unknown devices in this room: if you proceed without verifying them, it will be possible for someone to eavesdrop on your call.": "In diesem Raum befinden sich nicht verifizierte Geräte. Wenn du ohne sie zu verifizieren fortfährst, könnten Angreifer den Anruf mithören.",
+ "There are unknown devices in this room: if you proceed without verifying them, it will be possible for someone to eavesdrop on your call.": "In diesem Raum befinden sich nicht-verifizierte Geräte. Wenn du fortfährst ohne sie zu verifizieren, könnten Angreifer den Anruf mithören.",
"Review Devices": "Geräte ansehen",
"Call Anyway": "Trotzdem anrufen",
"Answer Anyway": "Trotzdem annehmen",
@@ -950,7 +950,7 @@
"Community IDs cannot be empty.": "Community-IDs können nicht leer sein.",
"Show devices, send anyway or cancel.": "Geräte anzeigen, trotzdem senden oder abbrechen.",
"Learn more about how we use analytics.": "Lerne mehr darüber, wie wir die Analysedaten nutzen.",
- "Where this page includes identifiable information, such as a room, user or group ID, that data is removed before being sent to the server.": "Wenn diese Seite identifizierbare Informationen sowie Raum, Nutzer oder Gruppen-ID enthalten, werden diese Daten entfernt bevor sie an den Server gesendet werden.",
+ "Where this page includes identifiable information, such as a room, user or group ID, that data is removed before being sent to the server.": "Wenn diese Seite identifizierbare Informationen wie Raum, Nutzer oder Gruppen-ID enthalten, werden diese Daten entfernt bevor sie an den Server gesendet werden.",
"Whether or not you're logged in (we don't record your user name)": "Ob oder ob du nicht angemeldet bist (wir zeichnen deinen Benutzernamen nicht auf)",
"Which officially provided instance you are using, if any": "Welche offiziell angebotene Instanz du nutzt, wenn es der Fall ist",
"In reply to": "Als Antwort auf",
@@ -1165,8 +1165,8 @@
"Reload widget": "Widget neu laden",
"To notify everyone in the room, you must be a": "Notwendiges Berechtigungslevel, um jeden im Raum zu benachrichten:",
"Muted Users": "Stummgeschaltete Benutzer",
- "Please help improve Riot.im by sending anonymous usage data. This will use a cookie (please see our Cookie Policy).": "Bitte helfe uns Riot.im zu verbessern, in dem du anonyme Nutzungsdaten schickst. Dies wird ein Cookie benutzen (bitte beachte auch unsere Cookie-Richtlinie).",
- "Please help improve Riot.im by sending anonymous usage data. This will use a cookie.": "Bitte helfe uns Riot.im zu verbessern, in dem du anonyme Nutzungsdaten schickst. Dies wird ein Cookie benutzen.",
+ "Please help improve Riot.im by sending anonymous usage data. This will use a cookie (please see our Cookie Policy).": "Bitte hilf uns Riot.im zu verbessern, in dem du anonyme Nutzungsdaten schickst. Dies wird ein Cookie benutzen (bitte beachte auch unsere Cookie-Richtlinie).",
+ "Please help improve Riot.im by sending anonymous usage data. This will use a cookie.": "Bitte hilf uns Riot.im zu verbessern, in dem du anonyme Nutzungsdaten schickst. Dies wird ein Cookie benutzen.",
"Yes, I want to help!": "Ja, ich möchte helfen!",
"Warning: This widget might use cookies.": "Warnung: Diese Widget mag Cookies verwenden.",
"Failed to indicate account erasure": "Fehler beim Signalisieren der Account-Löschung",
From dbe129cfefd3f0d21c22238747dc67024b3ed5cb Mon Sep 17 00:00:00 2001
From: Moo
Date: Sun, 19 Aug 2018 18:24:53 +0000
Subject: [PATCH 147/343] Translated using Weblate (Lithuanian)
Currently translated at 50.8% (629 of 1236 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/lt/
---
src/i18n/strings/lt.json | 181 ++++++++++++++++++++++++++++++++++++++-
1 file changed, 179 insertions(+), 2 deletions(-)
diff --git a/src/i18n/strings/lt.json b/src/i18n/strings/lt.json
index 0e98596e12..906bc8eb1f 100644
--- a/src/i18n/strings/lt.json
+++ b/src/i18n/strings/lt.json
@@ -46,7 +46,7 @@
"To return to your account in future you need to set a password": "Ateityje, norėdami grįžti prie savo paskyros turite nusistatyti slaptažodį",
"Forget": "Pamiršti",
"World readable": "Visiems skaitomas",
- "Mute": "Užtildyti",
+ "Mute": "Nutildyti",
"Hide panel": "Slėpti skydelį",
"You cannot delete this image. (%(code)s)": "Jūs negalite ištrinti šio paveikslėlio. (%(code)s)",
"Cancel Sending": "Atšaukti siuntimą",
@@ -452,5 +452,182 @@
"Allow": "Leisti",
"Delete Widget": "Ištrinti valdiklį",
"Delete widget": "Ištrinti valdiklį",
- "Failed to remove widget": "Nepavyko pašalinti valdiklį"
+ "Failed to remove widget": "Nepavyko pašalinti valdiklį",
+ "Scroll to bottom of page": "Slinkti į puslapio apačią",
+ "Show devices, send anyway or cancel.": "Rodyti įrenginius, vis tiek siųsti ar atsisakyti.",
+ "%(count)s of your messages have not been sent.|other": "Kai kurios iš jūsų žinučių nebuvo išsiųstos.",
+ "%(count)s of your messages have not been sent.|one": "Jūsų žinutė nebuvo išsiųsta.",
+ "Connectivity to the server has been lost.": "Jungiamumas su šiuo serveriu buvo prarastas.",
+ "Sent messages will be stored until your connection has returned.": "Išsiųstos žinutės bus saugomos tol, kol atsiras ryšys.",
+ "%(count)s new messages|other": "%(count)s naujų žinučių",
+ "%(count)s new messages|one": "%(count)s nauja žinutė",
+ "Active call": "Aktyvus skambutis",
+ "There's no one else here! Would you like to invite others or stop warning about the empty room?": "Čia daugiau nieko nėra! Ar norėtumėte pakviesti kitus ar išjungti įspėjimą apie tuščią kambarį?",
+ "You seem to be uploading files, are you sure you want to quit?": "Atrodo, kad jūs įkelinėjate failus, ar tikrai norite išeiti?",
+ "You seem to be in a call, are you sure you want to quit?": "Atrodo, kad dalyvaujate skambutyje, ar tikrai norite išeiti?",
+ "Failed to upload file": "Nepavyko įkelti failo",
+ "Server may be unavailable, overloaded, or the file too big": "Gali būti, kad serveris neprieinamas, perkrautas arba failas yra per didelis",
+ "Search failed": "Paieška nepavyko",
+ "Server may be unavailable, overloaded, or search timed out :(": "Gali būti, kad serveris neprieinamas, perkrautas arba pasibaigė paieškai skirtas laikas :(",
+ "No more results": "Daugiau nėra jokių rezultatų",
+ "Unknown room %(roomId)s": "Nežinomas kambarys %(roomId)s",
+ "Room": "Kambarys",
+ "Failed to save settings": "Nepavyko įrašyti nustatymų",
+ "Failed to reject invite": "Nepavyko atmesti pakvietimo",
+ "Fill screen": "Užpildyti ekraną",
+ "Click to unmute video": "Spustelėkite, norėdami įjungti vaizdą",
+ "Click to mute video": "Spustelėkite, norėdami išjungti vaizdą",
+ "Click to unmute audio": "Spustelėkite, norėdami įjungti garsą",
+ "Click to mute audio": "Spustelėkite, norėdami nutildyti garsą",
+ "Clear filter": "Išvalyti filtrą",
+ "Uploading %(filename)s and %(count)s others|other": "Įkeliamas %(filename)s ir dar %(count)s failai",
+ "Uploading %(filename)s and %(count)s others|zero": "Įkeliamas %(filename)s",
+ "Uploading %(filename)s and %(count)s others|one": "Įkeliamas %(filename)s ir dar %(count)s failas",
+ "Light theme": "Šviesi tema",
+ "Dark theme": "Tamsi tema",
+ "Status.im theme": "Status.im tema",
+ "Can't load user settings": "Nepavyksta įkelti naudotojo nustatymų",
+ "Server may be unavailable or overloaded": "Gali būti, kad serveris neprieinamas arba perkrautas",
+ "Success": "Pavyko",
+ "Remove Contact Information?": "Šalinti kontaktinę informaciją?",
+ "Remove %(threePid)s?": "Šalinti %(threePid)s?",
+ "Unable to remove contact information": "Nepavyko pašalinti kontaktinę informaciją",
+ "Interface Language": "Sąsajos kalba",
+ "User Interface": "Naudotojo sąsaja",
+ "": "",
+ "Device ID:": "Įrenginio ID:",
+ "Device key:": "Įrenginio raktas:",
+ "Ignored Users": "Nepaisomi naudotojai",
+ "Debug Logs Submission": "Derinimo žurnalų pateikimas",
+ "These are experimental features that may break in unexpected ways": "Šios yra eksperimentinės ypatybės, kurios veikti netikėtais būdais",
+ "Deactivate my account": "Pasyvinti mano paskyrą",
+ "Clear Cache": "Išvalyti podėlį",
+ "Clear Cache and Reload": "Išvalyti podėlį ir įkelti iš naujo",
+ "Updates": "Atnaujinimai",
+ "Check for update": "Tikrinti, ar yra atnaujinimų",
+ "Reject all %(invitedRooms)s invites": "Atmesti visus %(invitedRooms)s pakvietimus",
+ "Bulk Options": "Masiniai parametrai",
+ "You may need to manually permit Riot to access your microphone/webcam": "Jums gali tekti rankiniu būdu leisti Riot prieigą prie savo mikrofono/kameros",
+ "Missing Media Permissions, click here to request.": "Trūksta medijos leidimų, spustelėkite čia, norėdami užklausti.",
+ "No Audio Outputs detected": "Neaptikta jokių garso išvesčių",
+ "No Microphones detected": "Neaptikta jokių mikrofonų",
+ "No Webcams detected": "Neaptikta jokių kamerų",
+ "Default Device": "Numatytasis įrenginys",
+ "Audio Output": "Garso išvestis",
+ "Microphone": "Mikrofonas",
+ "Camera": "Kamera",
+ "VoIP": "VoIP",
+ "Email": "El. paštas",
+ "Add email address": "Pridėti el. pašto adresą",
+ "Profile": "Profilis",
+ "Account": "Paskyra",
+ "To return to your account in future you need to set a password": "Norėdami ateityje sugrįžti į savo paskyrą, turite nusistatyti slaptažodį",
+ "Logged in as:": "Esate prisijungę kaip:",
+ "click to reveal": "spustelėkite, norėdami atskleisti",
+ "matrix-react-sdk version:": "matrix-react-sdk versija:",
+ "riot-web version:": "riot-web versija:",
+ "olm version:": "olm versija:",
+ "Failed to send email": "Nepavyko išsiųsti el. laiško",
+ "The email address linked to your account must be entered.": "Privalo būti įvestas su jūsų paskyra susietas el. pašto adresas.",
+ "A new password must be entered.": "Privalo būti įvestas naujas slaptažodis.",
+ "New passwords must match each other.": "Nauji slaptažodžiai privalo sutapti.",
+ "I have verified my email address": "Aš patvirtinau savo el. pašto adresą",
+ "Your password has been reset": "Jūsų slaptažodis buvo atstatytas",
+ "Return to login screen": "Grįžti į prisijungimo ekraną",
+ "To reset your password, enter the email address linked to your account": "Norėdami atstatyti slaptažodį, įveskite su jūsų paskyra susietą el. pašto adresą",
+ "New password": "Naujas slaptažodis",
+ "Confirm your new password": "Patvirtinkite savo naują slaptažodį",
+ "Send Reset Email": "Siųsti atstatymo el. laišką",
+ "Create an account": "Sukurti paskyrą",
+ "Incorrect username and/or password.": "Neteisingas naudotojo vardas ir/ar slaptažodis.",
+ "Please note you are logging into the %(hs)s server, not matrix.org.": "Turėkite omenyje, kad jūs prisijungiate prie %(hs)s serverio, o ne matrix.org.",
+ "Sign in to get started": "Norėdami pradėti, prisijunkite",
+ "Failed to fetch avatar URL": "Nepavyko gauti avataro URL",
+ "Missing password.": "Trūksta slaptažodžio.",
+ "Passwords don't match.": "Slaptažodžiai nesutampa.",
+ "Password too short (min %(MIN_PASSWORD_LENGTH)s).": "Slaptažodis per trumpas (mažiausiai, %(MIN_PASSWORD_LENGTH)s).",
+ "This doesn't look like a valid email address.": "Tai nepanašu į teisingą el. pašto adresą.",
+ "This doesn't look like a valid phone number.": "Tai nepanašu į teisingą telefono numerį.",
+ "You need to enter a user name.": "Turite įvesti naudotojo vardą.",
+ "An unknown error occurred.": "Įvyko nežinoma klaida.",
+ "I already have an account": "Aš jau turiu paskyrą",
+ "Commands": "Komandos",
+ "Results from DuckDuckGo": "Rezultatai iš DuckDuckGo",
+ "Notify the whole room": "Pranešti visam kambariui",
+ "Users": "Naudotojai",
+ "unknown device": "nežinomas įrenginys",
+ "Ed25519 fingerprint": "Ed25519 kontrolinis kodas",
+ "User ID": "Naudotojo ID",
+ "Curve25519 identity key": "Curve25519 tapatybės raktas",
+ "none": "nėra",
+ "Algorithm": "Algoritmas",
+ "Decryption error": "Iššifravimo klaida",
+ "Session ID": "Seanso ID",
+ "End-to-end encryption information": "Ištisinio šifravimo informacija",
+ "Event information": "Įvykio informacija",
+ "Sender device information": "Siuntėjo įrenginio informacija",
+ "Passphrases must match": "Slaptafrazės privalo sutapti",
+ "Passphrase must not be empty": "Slaptafrazė negali būti tuščia",
+ "Export room keys": "Eksportuoti kambario raktus",
+ "Enter passphrase": "Įveskite slaptafrazę",
+ "Confirm passphrase": "Patvirtinkite slaptafrazę",
+ "Export": "Eksportuoti",
+ "Import room keys": "Importuoti kambario raktus",
+ "The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.": "Eksportavimo failas bus apsaugotas slaptafraze. Norėdami iššifruoti failą, čia turėtumėte įvesti slaptafrazę.",
+ "File to import": "Failas, kurį importuoti",
+ "Import": "Importuoti",
+ "Your User Agent": "Jūsų naudotojo agentas",
+ "Review Devices": "Peržiūrėti įrenginius",
+ "You do not have permission to start a conference call in this room": "Jūs neturite leidimo šiame kambaryje pradėti konferencinį pokalbį",
+ "The file '%(fileName)s' exceeds this home server's size limit for uploads": "Failas \"%(fileName)s\" viršija šio namų serverio įkeliamų failų dydžio apribojimą",
+ "Room name or alias": "Kambario pavadinimas ar slapyvardis",
+ "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Neatrodo, kad jūsų el. pašto adresas šiame namų serveryje būtų susietas su Matrix ID.",
+ "Who would you like to communicate with?": "Su kuo norėtumėte susisiekti?",
+ "Missing room_id in request": "Užklausoje trūksta room_id",
+ "Missing user_id in request": "Užklausoje trūksta user_id",
+ "Unrecognised room alias:": "Neatpažintas kambario slapyvardis:",
+ "WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and device %(deviceId)s is \"%(fprint)s\" which does not match the provided key \"%(fingerprint)s\". This could mean your communications are being intercepted!": "ĮSPĖJIMAS: RAKTO PATVIRTINIMAS NEPAVYKO! Pasirašymo raktas, skirtas %(userId)s ir įrenginiui %(deviceId)s yra \"%(fprint)s\", o tai nesutampa su pateiktu raktu \"%(fingerprint)s\". Tai gali reikšti, kad kažkas perima jūsų komunikavimą!",
+ "The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.": "Jūsų pateiktas pasirašymo raktas sutampa su pasirašymo raktus, kuris gautas iš naudotojo %(userId)s įrenginio %(deviceId)s. Įrenginys pažymėtas kaip patvirtintas.",
+ "VoIP conference started.": "VoIP konferencija pradėta.",
+ "VoIP conference finished.": "VoIP konferencija užbaigta.",
+ "%(senderDisplayName)s removed the room name.": "%(senderDisplayName)s pašalino kambario pavadinimą.",
+ "%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).": "%(senderName)s įjungė ištisinį šifravimą (%(algorithm)s algoritmas).",
+ "%(widgetName)s widget modified by %(senderName)s": "%(senderName)s modifikavo %(widgetName)s valdiklį",
+ "%(widgetName)s widget added by %(senderName)s": "%(senderName)s pridėjo %(widgetName)s valdiklį",
+ "%(widgetName)s widget removed by %(senderName)s": "%(senderName)s pašalino %(widgetName)s valdiklį",
+ "Failure to create room": "Nepavyko sukurti kambarį",
+ "Server may be unavailable, overloaded, or you hit a bug.": "Gali būti, kad serveris neprieinamas, perkrautas arba susidūrėte su klaida.",
+ "Use compact timeline layout": "Naudoti kompaktišką laiko juostos išdėstymą",
+ "Autoplay GIFs and videos": "Automatiškai atkurti GIF ir vaizdo įrašus",
+ "Never send encrypted messages to unverified devices from this device": "Niekada nesiųsti iš šio įrenginio šifruotų žinučių į nepatvirtintus įrenginius",
+ "Never send encrypted messages to unverified devices in this room from this device": "Niekada nesiųsti iš šio įrenginio šifruotas žinutes į nepatvirtintus įrenginius šiame kambaryje",
+ "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "Tekstinė žinutė išsiųsta į +%(msisdn)s. Įveskite žinutėje esantį patvirtinimo kodą",
+ "Enter Code": "Įvesti kodą",
+ "Your home server does not support device management.": "Jūsų namų serveris nepalaiko įrenginių tvarkymą.",
+ "Delete %(count)s devices|other": "Ištrinti %(count)s įrenginius",
+ "This event could not be displayed": "Nepavyko parodyti šio įvykio",
+ "If your other devices do not have the key for this message you will not be able to decrypt them.": "Jeigu jūsų kituose įrenginiuose nėra rakto šiai žinutei, tuomet jūs negalėsite jos iššifruoti.",
+ "Re-request encryption keys from your other devices.": "Iš naujo užklausti šifravimo raktus iš jūsų kitų įrenginių.",
+ "Undecryptable": "Neiššifruojama",
+ "Encrypted, not sent": "Šifruota, neišsiųsta",
+ "Encrypted by a verified device": "Šifruota patvirtintu įrenginiu",
+ "Encrypted by an unverified device": "Šifruota nepatvirtintu įrenginiu",
+ "Kick": "Išmesti",
+ "Kick this user?": "Išmesti šį naudotoją?",
+ "Failed to kick": "Nepavyko išmesti",
+ "Unban": "Atblokuoti",
+ "Ban": "Užblokuoti",
+ "Unban this user?": "Atblokuoti šį naudotoją?",
+ "Ban this user?": "Užblokuoti šį naudotoją?",
+ "Failed to ban user": "Nepavyko užblokuoti naudotoją",
+ "Failed to toggle moderator status": "Nepavyko perjungti moderatoriaus būseną",
+ "Invited": "Pakviestas",
+ "Filter room members": "Filtruoti kambario dalyvius",
+ "Server unavailable, overloaded, or something else went wrong.": "Serveris neprieinamas, perkrautas arba nutiko kažkas kito.",
+ "%(duration)ss": "%(duration)s sek.",
+ "%(duration)sm": "%(duration)s min.",
+ "%(duration)sh": "%(duration)s val.",
+ "%(duration)sd": "%(duration)s d.",
+ "Seen by %(userName)s at %(dateTime)s": "%(userName)s matė ties %(dateTime)s",
+ "Seen by %(displayName)s (%(userName)s) at %(dateTime)s": "%(displayName)s (%(userName)s) matė ties %(dateTime)s"
}
From 7ec2b2d44ce20b1e2c108aa3a4ed0844b826b369 Mon Sep 17 00:00:00 2001
From: csybr
Date: Mon, 20 Aug 2018 10:31:28 +0000
Subject: [PATCH 148/343] Translated using Weblate (Norwegian Nynorsk)
Currently translated at 98.5% (1218 of 1236 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/nn/
---
src/i18n/strings/nn.json | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/src/i18n/strings/nn.json b/src/i18n/strings/nn.json
index fa07c596fe..9e2c6f2076 100644
--- a/src/i18n/strings/nn.json
+++ b/src/i18n/strings/nn.json
@@ -223,8 +223,8 @@
"Disable Community Filter Panel": "Skru Samfunnsfilterpanel av",
"Disable Peer-to-Peer for 1:1 calls": "Skru Peer-til-Peer for 1:1-samtaler av",
"Send analytics data": "Send statistikkdata",
- "Never send encrypted messages to unverified devices from this device": "Send aldri enkrypterte meldingar til ugodkjende einingar frå denne eininga",
- "Never send encrypted messages to unverified devices in this room from this device": "Send aldri enkrypterte meldingar til ugodkjende einingar i dette rommet frå denne eininga",
+ "Never send encrypted messages to unverified devices from this device": "Send aldri enkrypterte meldingar til ikkje-godkjende einingar frå denne eininga",
+ "Never send encrypted messages to unverified devices in this room from this device": "Send aldri enkrypterte meldingar til ikkje-godkjende einingar i dette rommet frå denne eininga",
"Enable URL previews for this room (only affects you)": "Skru URL-førehandsvisingar på for dette rommet (påverkar deg åleine)",
"Enable URL previews by default for participants in this room": "Skru URL-førehandsvisingar på som utgangspunkt for deltakarar i dette rommet",
"Room Colour": "Romfarge",
@@ -253,7 +253,7 @@
"Enter Code": "Skriv inn Koden",
"Submit": "Send inn",
"Phone": "Telefon",
- "Add phone number": "Legg til telefonnummer",
+ "Add phone number": "Legg telefonnummer til",
"Add": "Legg til",
"Failed to upload profile picture!": "Fekk ikkje til å lasta opp profilbilete!",
"Upload new:": "Last opp ny:",
@@ -790,7 +790,7 @@
"Device key": "Einingsnykel",
"In future this verification process will be more sophisticated.": "I framtida kjem denne godkjenningsprosessen til å vera betre utvikla.",
"Verify device": "Godkjenn eining",
- "I verify that the keys match": "Eg godkjenner at nyklane samsvarar",
+ "I verify that the keys match": "Eg stadfestar at nyklane samsvarar",
"Back": "Attende",
"Event sent!": "Hending send!",
"Event Type": "Hendingsort",
@@ -1182,7 +1182,7 @@
"Custom": "Sjølvsett",
"Failed to set Direct Message status of room": "Fekk ikkje til å setja Direktemelding-tilstanden til rommet",
"Did you know: you can use communities to filter your Riot.im experience!": "Visste du at: du kan bruka samfunn for å filtrera Riot.im-opplevinga di!",
- "To set up a filter, drag a community avatar over to the filter panel on the far left hand side of the screen. You can click on an avatar in the filter panel at any time to see only the rooms and people associated with that community.": "For å setja opp eit filter, drag ein samfunnsavatar bort til filterpanelet til venstre på skjermen. Du kan klikka på ein avatar i filterpanelet når som helst for å berre sjå romma og folka tilknytta det samfunnet.",
+ "To set up a filter, drag a community avatar over to the filter panel on the far left hand side of the screen. You can click on an avatar in the filter panel at any time to see only the rooms and people associated with that community.": "For å setja opp eit filter, drag ein samfunnsavatar bort til filterpanelet til venstre på skjermen. Du kan klikka på ein avatar i filterpanelet når som helst for å sjå berre romma og folka tilknytta det samfunnet.",
"Create a community to group together users and rooms! Build a custom homepage to mark out your space in the Matrix universe.": "Lag eit samfunn for å føra saman brukarar og rom! Bygg din eiga heimeside for å kreva din del av Matrix-verda.",
"Hide panel": "Gøym panel",
"Unable to look up room ID from server": "Klarte ikkje å henta rom-ID frå tenaren",
From 7a125c3ad4c1878ca3c92d17b70f4db1f036f96d Mon Sep 17 00:00:00 2001
From: Andrey
Date: Fri, 17 Aug 2018 15:05:16 +0000
Subject: [PATCH 149/343] Translated using Weblate (Russian)
Currently translated at 98.8% (1222 of 1236 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/ru/
---
src/i18n/strings/ru.json | 18 +++++++++++++++++-
1 file changed, 17 insertions(+), 1 deletion(-)
diff --git a/src/i18n/strings/ru.json b/src/i18n/strings/ru.json
index 47f46279c4..e3cc761c30 100644
--- a/src/i18n/strings/ru.json
+++ b/src/i18n/strings/ru.json
@@ -1218,5 +1218,21 @@
"An error ocurred whilst trying to remove the widget from the room": "Произошла ошибка при удалении виджета из комнаты",
"System Alerts": "Системные оповещения",
"Please contact your service administrator to continue using this service.": "Для продолжения использования этого сервиса обратитесь к администратору.",
- "Room version number: ": "Номер версии комнаты: "
+ "Room version number: ": "Номер версии комнаты: ",
+ "Internal room ID: ": "Внутренний ID комнаты: ",
+ "There is a known vulnerability affecting this room.": "В этой комнате есть известная уязвимость.",
+ "This room version is vulnerable to malicious modification of room state.": "Эта версия комнаты уязвима для злонамеренной модификации состояния.",
+ "Click here to upgrade to the latest room version and ensure room integrity is protected.": "Нажмите здесь, чтобы перейти к последней версии комнаты и обеспечить ее целостность.",
+ "Only room administrators will see this warning": "Только администраторы комнат увидят это предупреждение",
+ "Please contact your service administrator to continue using the service.": "Пожалуйста, обратитесь к вашему администратору, чтобы продолжить использование сервиса.",
+ "Please contact your service administrator to get this limit increased.": "Пожалуйста, обратитесь к вашему администратору, чтобы увеличить этот лимит.",
+ "Upgrade Room Version": "Обновление версии комнаты",
+ "Upgrading this room requires closing down the current instance of the room and creating a new room it its place. To give room members the best possible experience, we will:": "Обновление этой комнаты требует закрытия текущей комнаты и создания новой. Чтобы предоставить участникам комнаты наилучший опыт, мы:",
+ "Create a new room with the same name, description and avatar": "Создадим новую комнату с тем же именем, описанием и аватаром",
+ "Update any local room aliases to point to the new room": "Обновим локальные псевдонимы комнат",
+ "Stop users from speaking in the old version of the room, and post a message advising users to move to the new room": "Остановим общение пользователей в старой версии комнаты и опубликуем сообщение, в котором пользователям рекомендуется перейти в новую комнату",
+ "Put a link back to the old room at the start of the new room so people can see old messages": "Разместим ссылку на старую комнату, чтобы люди могли видеть старые сообщения",
+ "Please contact your service administrator to continue using this service.": "Пожалуйста, обратитесь к вашему администратору, чтобы продолжить использовать этот сервис.",
+ "Increase performance by only loading room members on first view": "Увеличьте производительность, загрузив только список участников комнаты",
+ "Lazy loading members not supported": "Задержка загрузки элементов не поддерживается"
}
From 12e71aa8504d12867f0a0ae4dff64d34f6b53e41 Mon Sep 17 00:00:00 2001
From: Miguel L
Date: Mon, 20 Aug 2018 12:57:06 +0000
Subject: [PATCH 150/343] Translated using Weblate (Spanish)
Currently translated at 98.8% (1222 of 1236 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/es/
---
src/i18n/strings/es.json | 13 ++++++++++++-
1 file changed, 12 insertions(+), 1 deletion(-)
diff --git a/src/i18n/strings/es.json b/src/i18n/strings/es.json
index 6c2ce3bf11..a54e97cebd 100644
--- a/src/i18n/strings/es.json
+++ b/src/i18n/strings/es.json
@@ -1216,5 +1216,16 @@
"This process allows you to export the keys for messages you have received in encrypted rooms to a local file. You will then be able to import the file into another Matrix client in the future, so that client will also be able to decrypt these messages.": "Este proceso le permite exportar las claves para los mensajes que haya recibido en salas cifradas a un fichero local. Entonces podrá importar el fichero en otro cliente de Matrix en el futuro, de modo que dicho cliente será capaz de descifrar dichos mensajes.",
"The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a passphrase below, which will be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.": "El fichero exportado permitirá a cualquiera que pueda leerlo la tarea de descifrar todo mensaje cifrado que usted pueda ver, así que debe ser cuidadoso en mantenerlo seguro. Para ayudarle, debería introducir una contraseña debajo, la cual usará para cifrar la información exportada. Sólo será posible importar dicha información usando la misma contraseña.",
"This process allows you to import encryption keys that you had previously exported from another Matrix client. You will then be able to decrypt any messages that the other client could decrypt.": "Este proceso permite importar claves de cifrado que había exportado previamente desde otro cliente de Matrix. Entonces será capaz de descifrar todos los mensajes que el otro cliente así hacía.",
- "The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.": "El fichero de exportación se protegerá con una contraseña. Debería introducir aquí la contraseña para descifrar el fichero."
+ "The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.": "El fichero de exportación se protegerá con una contraseña. Debería introducir aquí la contraseña para descifrar el fichero.",
+ "Internal room ID: ": "ID interno de la sala: ",
+ "Room version number: ": "Número de versión de la sala: ",
+ "There is a known vulnerability affecting this room.": "Hay una vulnerabilidad conocida que afecta a esta sala.",
+ "This room version is vulnerable to malicious modification of room state.": "La versión de esta sala es vulnerable a la modificación maliciosa de su estado.",
+ "Click here to upgrade to the latest room version and ensure room integrity is protected.": "Pulse aquí para actualizar a la última versión de la sala y garantizar que se protege su integridad.",
+ "Only room administrators will see this warning": "Sólo los administradores de la sala verán esta advertencia",
+ "Please contact your service administrator to continue using the service.": "Por favor contacte con su administrador del servicio para continuar usándolo.",
+ "This homeserver has hit its Monthly Active User limit.": "Este servidor doméstico ha alcanzado su límite de Usuarios Activos Mensual.",
+ "This homeserver has exceeded one of its resource limits.": "Este servidor doméstico ha superado uno de sus límites de recursos.",
+ "Please contact your service administrator to get this limit increased.": "Por favor, contacte con su administrador del servicio para incrementar este límite.",
+ "This homeserver has hit its Monthly Active User limit so some users will not be able to log in.": "Este servidor doméstico ha alcanzado su límite de Usuarios Activos Mensual por lo que algunos usuarios no podrán ingresar."
}
From 50f398ff4aff53635f134c23703f073feadef9d0 Mon Sep 17 00:00:00 2001
From: Miguel L
Date: Mon, 20 Aug 2018 13:07:49 +0000
Subject: [PATCH 151/343] Translated using Weblate (Spanish)
Currently translated at 100.0% (1236 of 1236 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/es/
---
src/i18n/strings/es.json | 16 +++++++++++++++-
1 file changed, 15 insertions(+), 1 deletion(-)
diff --git a/src/i18n/strings/es.json b/src/i18n/strings/es.json
index a54e97cebd..9a23a8368b 100644
--- a/src/i18n/strings/es.json
+++ b/src/i18n/strings/es.json
@@ -1227,5 +1227,19 @@
"This homeserver has hit its Monthly Active User limit.": "Este servidor doméstico ha alcanzado su límite de Usuarios Activos Mensual.",
"This homeserver has exceeded one of its resource limits.": "Este servidor doméstico ha superado uno de sus límites de recursos.",
"Please contact your service administrator to get this limit increased.": "Por favor, contacte con su administrador del servicio para incrementar este límite.",
- "This homeserver has hit its Monthly Active User limit so some users will not be able to log in.": "Este servidor doméstico ha alcanzado su límite de Usuarios Activos Mensual por lo que algunos usuarios no podrán ingresar."
+ "This homeserver has hit its Monthly Active User limit so some users will not be able to log in.": "Este servidor doméstico ha alcanzado su límite de Usuarios Activos Mensual por lo que algunos usuarios no podrán ingresar.",
+ "This homeserver has exceeded one of its resource limits so some users will not be able to log in.": "Este servidor doméstico ha excedido uno de sus límites de recursos por lo que algunos usuarios no podrán ingresar.",
+ "Upgrade Room Version": "Actualizar Versión de la Sala",
+ "Upgrading this room requires closing down the current instance of the room and creating a new room it its place. To give room members the best possible experience, we will:": "La actualización esta sala requiere cerrar la instancia actual de la misma y crear una nueva en su lugar. Para ofrecer a los miembros de la sala la mejor experiencia posible, haremos:",
+ "Create a new room with the same name, description and avatar": "Crear una sala nueva con el mismo nombre, descripción y avatar",
+ "Update any local room aliases to point to the new room": "Actualizar los alias locales de la sala para que apunten a la nueva",
+ "Stop users from speaking in the old version of the room, and post a message advising users to move to the new room": "Impedir a los usuarios que conversen en la versión antigua de la sala, y publicar un mensaje aconsejándoles que se muden a la nueva",
+ "Put a link back to the old room at the start of the new room so people can see old messages": "Poner un enlace de retorno a la sala antigua al principio de la nueva de modo que se puedan ver los mensajes viejos",
+ "Your message wasn't sent because this homeserver has hit its Monthly Active User Limit. Please contact your service administrator to continue using the service.": "Su mensaje no se pudo enviar porque el servidor doméstico ha alcanzado el Límite Mensual de Usuarios Activos. Por favor contacte con su administrador del servicio para continuar usando el servicio.",
+ "Your message wasn't sent because this homeserver has exceeded a resource limit. Please contact your service administrator to continue using the service.": "Su mensaje no se envió porque este servidor doméstico ha excedido un límite de recursos. Por favor contacte con su administrador del servicio para continuar usando el servicio.",
+ "Please contact your service administrator to continue using this service.": "Por favor contacte con su administrador del servicio para continuar usando este servicio.",
+ "Increase performance by only loading room members on first view": "Incrementar el rendimiento cargando sólo los miembros de la sala en la primera vista",
+ "Lazy loading members not supported": "La carga lenta de los miembros no está soportada",
+ "Lazy loading is not supported by your current homeserver.": "La carga lenta no está soportada por su servidor doméstico actual.",
+ "System Alerts": "Alertas de Sistema"
}
From ab10b5493bf4e536741e3c68155e92867bfbbcd5 Mon Sep 17 00:00:00 2001
From: David Baker
Date: Mon, 20 Aug 2018 16:20:59 +0100
Subject: [PATCH 152/343] Support room creation events
For https://github.com/vector-im/riot-web/issues/7164
---
res/css/_components.scss | 1 +
res/css/views/messages/_CreateEvent.scss | 35 +++++++++++
src/components/views/messages/RoomCreate.js | 64 +++++++++++++++++++++
src/components/views/rooms/EventTile.js | 8 ++-
src/i18n/strings/en_EN.json | 20 ++-----
5 files changed, 113 insertions(+), 15 deletions(-)
create mode 100644 res/css/views/messages/_CreateEvent.scss
create mode 100644 src/components/views/messages/RoomCreate.js
diff --git a/res/css/_components.scss b/res/css/_components.scss
index 173939e143..13fefd5885 100644
--- a/res/css/_components.scss
+++ b/res/css/_components.scss
@@ -67,6 +67,7 @@
@import "./views/groups/_GroupUserSettings.scss";
@import "./views/login/_InteractiveAuthEntryComponents.scss";
@import "./views/login/_ServerConfig.scss";
+@import "./views/messages/_CreateEvent.scss";
@import "./views/messages/_DateSeparator.scss";
@import "./views/messages/_MEmoteBody.scss";
@import "./views/messages/_MFileBody.scss";
diff --git a/res/css/views/messages/_CreateEvent.scss b/res/css/views/messages/_CreateEvent.scss
new file mode 100644
index 0000000000..47de2c9753
--- /dev/null
+++ b/res/css/views/messages/_CreateEvent.scss
@@ -0,0 +1,35 @@
+/*
+Copyright 2018 New Vector Ltd
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+.mx_CreateEvent {
+ background-color: $info-plinth-bg-color;
+ padding-left: 20px;
+ padding-right: 20px;
+ padding-top: 10px;
+ padding-bottom: 10px;
+}
+
+.mx_CreateEvent_image {
+ float: left;
+ padding-right: 20px;
+}
+
+.mx_CreateEvent_header {
+ font-weight: bold;
+}
+
+.mx_CreateEvent_link {
+}
diff --git a/src/components/views/messages/RoomCreate.js b/src/components/views/messages/RoomCreate.js
new file mode 100644
index 0000000000..8159741ae1
--- /dev/null
+++ b/src/components/views/messages/RoomCreate.js
@@ -0,0 +1,64 @@
+/*
+Copyright 2018 New Vector Ltd
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+import React from 'react';
+import PropTypes from 'prop-types';
+
+import dis from '../../../dispatcher';
+import sdk from '../../../index';
+import { makeEventPermalink } from '../../../matrix-to';
+import { _t } from '../../../languageHandler';
+
+module.exports = React.createClass({
+ displayName: 'RoomCreate',
+
+ propTypes: {
+ /* the MatrixEvent to show */
+ mxEvent: PropTypes.object.isRequired,
+ },
+
+ _onLinkClicked: function(e) {
+ e.preventDefault();
+
+ const predecessor = this.props.mxEvent.getContent()['predecessor'];
+
+ dis.dispatch({
+ action: 'view_room',
+ event_id: predecessor['event_id'],
+ highlighted: true,
+ room_id: predecessor['room_id'],
+ });
+ },
+
+ render: function() {
+ const predecessor = this.props.mxEvent.getContent()['predecessor'];
+ if (predecessor === undefined) {
+ return ; // We should never have been instaniated in this case
+ }
+ return
+
+
+ {_t("This room is a continuation of another conversation.")}
+
;
+ },
+});
diff --git a/src/components/views/rooms/EventTile.js b/src/components/views/rooms/EventTile.js
index 7e73c01330..8dcc2139a7 100644
--- a/src/components/views/rooms/EventTile.js
+++ b/src/components/views/rooms/EventTile.js
@@ -47,6 +47,7 @@ const eventTileTypes = {
};
const stateEventTileTypes = {
+ 'm.room.create': 'messages.RoomCreate',
'm.room.member': 'messages.TextualEvent',
'm.room.name': 'messages.TextualEvent',
'm.room.avatar': 'messages.RoomAvatarEvent',
@@ -483,7 +484,7 @@ module.exports = withMatrixClient(React.createClass({
const eventType = this.props.mxEvent.getType();
// Info messages are basically information about commands processed on a room
- const isInfoMessage = (eventType !== 'm.room.message' && eventType !== 'm.sticker');
+ const isInfoMessage = (eventType !== 'm.room.message' && eventType !== 'm.sticker' && eventType != 'm.room.create');
const tileHandler = getHandlerTile(this.props.mxEvent);
// This shouldn't happen: the caller should check we support this type
@@ -535,6 +536,9 @@ module.exports = withMatrixClient(React.createClass({
if (this.props.tileShape === "notif") {
avatarSize = 24;
needsSenderProfile = true;
+ } else if (tileHandler === 'messages.RoomCreate') {
+ avatarSize = 0;
+ needsSenderProfile = false;
} else if (isInfoMessage) {
// a small avatar, with no sender profile, for
// joins/parts/etc
@@ -745,6 +749,8 @@ module.exports.haveTileForEvent = function(e) {
if (handler === undefined) return false;
if (handler === 'messages.TextualEvent') {
return TextForEvent.textForEvent(e) !== '';
+ } else if (handler === 'messages.RoomCreate') {
+ return Boolean(e.getContent()['predecessor']);
} else {
return true;
}
diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json
index fcc9bcc8be..db2537307d 100644
--- a/src/i18n/strings/en_EN.json
+++ b/src/i18n/strings/en_EN.json
@@ -205,6 +205,7 @@
"Authentication check failed: incorrect password?": "Authentication check failed: incorrect password?",
"Failed to join room": "Failed to join room",
"Message Pinning": "Message Pinning",
+ "Increase performance by only loading room members on first view": "Increase performance by only loading room members on first view",
"Disable Emoji suggestions while typing": "Disable Emoji suggestions while typing",
"Use compact timeline layout": "Use compact timeline layout",
"Hide removed messages": "Hide removed messages",
@@ -543,10 +544,6 @@
"Internal room ID: ": "Internal room ID: ",
"Room version number: ": "Room version number: ",
"Add a topic": "Add a topic",
- "There is a known vulnerability affecting this room.": "There is a known vulnerability affecting this room.",
- "This room version is vulnerable to malicious modification of room state.": "This room version is vulnerable to malicious modification of room state.",
- "Click here to upgrade to the latest room version and ensure room integrity is protected.": "Click here to upgrade to the latest room version and ensure room integrity is protected.",
- "Only room administrators will see this warning": "Only room administrators will see this warning",
"Search…": "Search…",
"This Room": "This Room",
"All Rooms": "All Rooms",
@@ -603,6 +600,8 @@
"%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s changed the avatar for %(roomName)s",
"%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s removed the room avatar.",
"%(senderDisplayName)s changed the room avatar to ": "%(senderDisplayName)s changed the room avatar to ",
+ "This room is a continuation of another conversation.": "This room is a continuation of another conversation.",
+ "Click here to see older messages.": "Click here to see older messages.",
"Copied!": "Copied!",
"Failed to copy": "Failed to copy",
"Add an Integration": "Add an Integration",
@@ -865,12 +864,6 @@
"Ignore request": "Ignore request",
"Loading device info...": "Loading device info...",
"Encryption key request": "Encryption key request",
- "Upgrade Room Version": "Upgrade Room Version",
- "Upgrading this room requires closing down the current instance of the room and creating a new room it its place. To give room members the best possible experience, we will:": "Upgrading this room requires closing down the current instance of the room and creating a new room it its place. To give room members the best possible experience, we will:",
- "Create a new room with the same name, description and avatar": "Create a new room with the same name, description and avatar",
- "Update any local room aliases to point to the new room": "Update any local room aliases to point to the new room",
- "Stop users from speaking in the old version of the room, and post a message advising users to move to the new room": "Stop users from speaking in the old version of the room, and post a message advising users to move to the new room",
- "Put a link back to the old room at the start of the new room so people can see old messages": "Put a link back to the old room at the start of the new room so people can see old messages",
"Sign out": "Sign out",
"Log out and remove encryption keys?": "Log out and remove encryption keys?",
"Clear Storage and Sign Out": "Clear Storage and Sign Out",
@@ -1121,6 +1114,8 @@
"Labs": "Labs",
"These are experimental features that may break in unexpected ways": "These are experimental features that may break in unexpected ways",
"Use with caution": "Use with caution",
+ "Lazy loading members not supported": "Lazy loading members not supported",
+ "Lazy loading is not supported by your current homeserver.": "Lazy loading is not supported by your current homeserver.",
"Deactivate my account": "Deactivate my account",
"Clear Cache": "Clear Cache",
"Clear Cache and Reload": "Clear Cache and Reload",
@@ -1231,8 +1226,5 @@
"Import": "Import",
"Failed to set direct chat tag": "Failed to set direct chat tag",
"Failed to remove tag %(tagName)s from room": "Failed to remove tag %(tagName)s from room",
- "Failed to add tag %(tagName)s to room": "Failed to add tag %(tagName)s to room",
- "Increase performance by only loading room members on first view": "Increase performance by only loading room members on first view",
- "Lazy loading members not supported": "Lazy load members not supported",
- "Lazy loading is not supported by your current homeserver.": "Lazy loading is not supported by your current homeserver."
+ "Failed to add tag %(tagName)s to room": "Failed to add tag %(tagName)s to room"
}
From 7f8cd203a8407e074f945fc890645c3f13485650 Mon Sep 17 00:00:00 2001
From: David Baker
Date: Tue, 21 Aug 2018 15:56:56 +0100
Subject: [PATCH 153/343] Support m.room.tombstone events
For https://github.com/vector-im/riot-web/issues/7164
---
res/css/views/rooms/_MessageComposer.scss | 22 ++++++++
src/components/views/rooms/MessageComposer.js | 51 ++++++++++++++++++-
src/i18n/strings/en_EN.json | 2 +
3 files changed, 73 insertions(+), 2 deletions(-)
diff --git a/res/css/views/rooms/_MessageComposer.scss b/res/css/views/rooms/_MessageComposer.scss
index e84240a705..ab7d4d7b34 100644
--- a/res/css/views/rooms/_MessageComposer.scss
+++ b/res/css/views/rooms/_MessageComposer.scss
@@ -1,5 +1,6 @@
/*
Copyright 2015, 2016 OpenMarket Ltd
+Copyright 2018 New Vector Ltd
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -22,6 +23,27 @@ limitations under the License.
position: relative;
}
+.mx_MessageComposer_replaced_wrapper {
+ margin-left: auto;
+ margin-right: auto;
+}
+
+.mx_MessageComposer_replaced_valign {
+ height: 60px;
+ display: table-cell;
+ vertical-align: middle;
+}
+
+.mx_MessageComposer_roomReplaced_icon {
+ float: left;
+ margin-right: 20px;
+ margin-top: 5px;
+}
+
+.mx_MessageComposer_roomReplaced_header {
+ font-weight: bold;
+}
+
.mx_MessageComposer_autocomplete_wrapper {
position: relative;
height: 0;
diff --git a/src/components/views/rooms/MessageComposer.js b/src/components/views/rooms/MessageComposer.js
index a7e02d16ae..cbce4cec81 100644
--- a/src/components/views/rooms/MessageComposer.js
+++ b/src/components/views/rooms/MessageComposer.js
@@ -1,6 +1,6 @@
/*
Copyright 2015, 2016 OpenMarket Ltd
-Copyright 2017 New Vector Ltd
+Copyright 2017, 2018 New Vector Ltd
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -25,6 +25,7 @@ import dis from '../../../dispatcher';
import RoomViewStore from '../../../stores/RoomViewStore';
import SettingsStore, {SettingLevel} from "../../../settings/SettingsStore";
import Stickerpicker from './Stickerpicker';
+import { makeRoomPermalink } from '../../../matrix-to';
const formatButtonList = [
_td("bold"),
@@ -51,7 +52,9 @@ export default class MessageComposer extends React.Component {
this.onToggleMarkdownClicked = this.onToggleMarkdownClicked.bind(this);
this.onInputStateChanged = this.onInputStateChanged.bind(this);
this.onEvent = this.onEvent.bind(this);
+ this._onRoomStateEvents = this._onRoomStateEvents.bind(this);
this._onRoomViewStoreUpdate = this._onRoomViewStoreUpdate.bind(this);
+ this._onTombstoneClick = this._onTombstoneClick.bind(this);
this.state = {
inputState: {
@@ -61,6 +64,7 @@ export default class MessageComposer extends React.Component {
},
showFormatting: SettingsStore.getValue('MessageComposer.showFormatting'),
isQuoting: Boolean(RoomViewStore.getQuotingEvent()),
+ tombstone: this._getRoomTombstone(),
};
}
@@ -70,12 +74,14 @@ export default class MessageComposer extends React.Component {
// marked as encrypted.
// XXX: fragile as all hell - fixme somehow, perhaps with a dedicated Room.encryption event or something.
MatrixClientPeg.get().on("event", this.onEvent);
+ MatrixClientPeg.get().on("RoomState.events", this._onRoomStateEvents);
this._roomStoreToken = RoomViewStore.addListener(this._onRoomViewStoreUpdate);
}
componentWillUnmount() {
if (MatrixClientPeg.get()) {
MatrixClientPeg.get().removeListener("event", this.onEvent);
+ MatrixClientPeg.get().removeListener("RoomState.events", this._onRoomStateEvents);
}
if (this._roomStoreToken) {
this._roomStoreToken.remove();
@@ -88,6 +94,18 @@ export default class MessageComposer extends React.Component {
this.forceUpdate();
}
+ _onRoomStateEvents(ev, state) {
+ if (ev.getRoomId() !== this.props.room.roomId) return;
+
+ if (ev.getType() === 'm.room.tombstone') {
+ this.setState({tombstone: this._getRoomTombstone()});
+ }
+ }
+
+ _getRoomTombstone() {
+ return this.props.room.currentState.getStateEvents('m.room.tombstone', '');
+ }
+
_onRoomViewStoreUpdate() {
const isQuoting = Boolean(RoomViewStore.getQuotingEvent());
if (this.state.isQuoting === isQuoting) return;
@@ -207,6 +225,17 @@ export default class MessageComposer extends React.Component {
this.messageComposerInput.enableRichtext(!this.state.inputState.isRichTextEnabled);
}
+ _onTombstoneClick(ev) {
+ ev.preventDefault();
+
+ const replacementRoomId = this.state.tombstone.getContent()['replacement_room'];
+ dis.dispatch({
+ action: 'view_room',
+ highlighted: true,
+ room_id: replacementRoomId,
+ });
+ }
+
render() {
const me = this.props.room.getMember(MatrixClientPeg.get().credentials.userId);
const uploadInputStyle = {display: 'none'};
@@ -262,7 +291,7 @@ export default class MessageComposer extends React.Component {
diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json
index fcc9bcc8be..0cf48e242e 100644
--- a/src/i18n/strings/en_EN.json
+++ b/src/i18n/strings/en_EN.json
@@ -393,6 +393,8 @@
"At this time it is not possible to reply with a file so this will be sent without being a reply.": "At this time it is not possible to reply with a file so this will be sent without being a reply.",
"Upload Files": "Upload Files",
"Are you sure you want to upload the following files?": "Are you sure you want to upload the following files?",
+ "This room has been replaced and is no longer active.": "This room has been replaced and is no longer active.",
+ "The conversation continues here.": "The conversation continues here.",
"Encrypted room": "Encrypted room",
"Unencrypted room": "Unencrypted room",
"Hangup": "Hangup",
From 8d6d1be992206a39dbac00f88c03e965f07f3dc3 Mon Sep 17 00:00:00 2001
From: David Baker
Date: Tue, 21 Aug 2018 16:40:04 +0100
Subject: [PATCH 154/343] Typo
---
src/components/views/rooms/RoomUpgradeWarningBar.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/components/views/rooms/RoomUpgradeWarningBar.js b/src/components/views/rooms/RoomUpgradeWarningBar.js
index a464d95140..75a5901fc9 100644
--- a/src/components/views/rooms/RoomUpgradeWarningBar.js
+++ b/src/components/views/rooms/RoomUpgradeWarningBar.js
@@ -22,7 +22,7 @@ import Modal from '../../../Modal';
import { _t } from '../../../languageHandler';
module.exports = React.createClass({
- displayName: 'RoomUpgardeWarningBar',
+ displayName: 'RoomUpgradeWarningBar',
propTypes: {
room: PropTypes.object.isRequired,
From c4235ca20a713c5707ab0a56ee1ec487011c8076 Mon Sep 17 00:00:00 2001
From: David Baker
Date: Tue, 21 Aug 2018 17:50:59 +0100
Subject: [PATCH 155/343] Add the image
---
res/img/room-continuation.svg | 6 ++++++
1 file changed, 6 insertions(+)
create mode 100644 res/img/room-continuation.svg
diff --git a/res/img/room-continuation.svg b/res/img/room-continuation.svg
new file mode 100644
index 0000000000..dc7e15462a
--- /dev/null
+++ b/res/img/room-continuation.svg
@@ -0,0 +1,6 @@
+
+
From cd4b520574d8c97104fc70821f45927a45fad2c6 Mon Sep 17 00:00:00 2001
From: David Baker
Date: Tue, 21 Aug 2018 17:52:13 +0100
Subject: [PATCH 156/343] Add image dimensions
To avoid popping when the image loads & make sure the SVG appears
the right size
---
res/css/views/messages/_CreateEvent.scss | 2 ++
1 file changed, 2 insertions(+)
diff --git a/res/css/views/messages/_CreateEvent.scss b/res/css/views/messages/_CreateEvent.scss
index 47de2c9753..c095fc26af 100644
--- a/res/css/views/messages/_CreateEvent.scss
+++ b/res/css/views/messages/_CreateEvent.scss
@@ -25,6 +25,8 @@ limitations under the License.
.mx_CreateEvent_image {
float: left;
padding-right: 20px;
+ width: 72px;
+ height: 34px;
}
.mx_CreateEvent_header {
From c54578d529fb68401395316b69f227a7e387893f Mon Sep 17 00:00:00 2001
From: David Baker
Date: Tue, 21 Aug 2018 17:56:28 +0100
Subject: [PATCH 157/343] Forgot the image file
---
res/img/room_replaced.svg | 13 +++++++++++++
1 file changed, 13 insertions(+)
create mode 100644 res/img/room_replaced.svg
diff --git a/res/img/room_replaced.svg b/res/img/room_replaced.svg
new file mode 100644
index 0000000000..fa5abd1c9f
--- /dev/null
+++ b/res/img/room_replaced.svg
@@ -0,0 +1,13 @@
+
+
From 42bb8e4ebd47e98172506e82d6954a6e1878f7a0 Mon Sep 17 00:00:00 2001
From: David Baker
Date: Tue, 21 Aug 2018 17:57:15 +0100
Subject: [PATCH 158/343] Add image dimensions
---
res/css/views/rooms/_MessageComposer.scss | 2 ++
1 file changed, 2 insertions(+)
diff --git a/res/css/views/rooms/_MessageComposer.scss b/res/css/views/rooms/_MessageComposer.scss
index ab7d4d7b34..e6a532d072 100644
--- a/res/css/views/rooms/_MessageComposer.scss
+++ b/res/css/views/rooms/_MessageComposer.scss
@@ -38,6 +38,8 @@ limitations under the License.
float: left;
margin-right: 20px;
margin-top: 5px;
+ width: 31px;
+ height: 31px;
}
.mx_MessageComposer_roomReplaced_header {
From 941a3cfa53f6add5f3521471ea9ab3fff14dcfd0 Mon Sep 17 00:00:00 2001
From: David Baker
Date: Tue, 21 Aug 2018 18:33:25 +0100
Subject: [PATCH 159/343] Support M_INCOMPATIBLE_ROOM_VERSION
For https://github.com/vector-im/riot-web/issues/7164
---
src/i18n/strings/en_EN.json | 20 ++++++--------------
src/stores/RoomViewStore.js | 8 +++++++-
2 files changed, 13 insertions(+), 15 deletions(-)
diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json
index fcc9bcc8be..b560c7e71b 100644
--- a/src/i18n/strings/en_EN.json
+++ b/src/i18n/strings/en_EN.json
@@ -203,8 +203,11 @@
"Your browser does not support the required cryptography extensions": "Your browser does not support the required cryptography extensions",
"Not a valid Riot keyfile": "Not a valid Riot keyfile",
"Authentication check failed: incorrect password?": "Authentication check failed: incorrect password?",
+ "Sorry, your homeserver is too old to participate in this room.": "Sorry, your homeserver is too old to participate in this room.",
+ "Please contact your homeserver administrator.": "Please contact your homeserver administrator.",
"Failed to join room": "Failed to join room",
"Message Pinning": "Message Pinning",
+ "Increase performance by only loading room members on first view": "Increase performance by only loading room members on first view",
"Disable Emoji suggestions while typing": "Disable Emoji suggestions while typing",
"Use compact timeline layout": "Use compact timeline layout",
"Hide removed messages": "Hide removed messages",
@@ -543,10 +546,6 @@
"Internal room ID: ": "Internal room ID: ",
"Room version number: ": "Room version number: ",
"Add a topic": "Add a topic",
- "There is a known vulnerability affecting this room.": "There is a known vulnerability affecting this room.",
- "This room version is vulnerable to malicious modification of room state.": "This room version is vulnerable to malicious modification of room state.",
- "Click here to upgrade to the latest room version and ensure room integrity is protected.": "Click here to upgrade to the latest room version and ensure room integrity is protected.",
- "Only room administrators will see this warning": "Only room administrators will see this warning",
"Search…": "Search…",
"This Room": "This Room",
"All Rooms": "All Rooms",
@@ -865,12 +864,6 @@
"Ignore request": "Ignore request",
"Loading device info...": "Loading device info...",
"Encryption key request": "Encryption key request",
- "Upgrade Room Version": "Upgrade Room Version",
- "Upgrading this room requires closing down the current instance of the room and creating a new room it its place. To give room members the best possible experience, we will:": "Upgrading this room requires closing down the current instance of the room and creating a new room it its place. To give room members the best possible experience, we will:",
- "Create a new room with the same name, description and avatar": "Create a new room with the same name, description and avatar",
- "Update any local room aliases to point to the new room": "Update any local room aliases to point to the new room",
- "Stop users from speaking in the old version of the room, and post a message advising users to move to the new room": "Stop users from speaking in the old version of the room, and post a message advising users to move to the new room",
- "Put a link back to the old room at the start of the new room so people can see old messages": "Put a link back to the old room at the start of the new room so people can see old messages",
"Sign out": "Sign out",
"Log out and remove encryption keys?": "Log out and remove encryption keys?",
"Clear Storage and Sign Out": "Clear Storage and Sign Out",
@@ -1121,6 +1114,8 @@
"Labs": "Labs",
"These are experimental features that may break in unexpected ways": "These are experimental features that may break in unexpected ways",
"Use with caution": "Use with caution",
+ "Lazy loading members not supported": "Lazy loading members not supported",
+ "Lazy loading is not supported by your current homeserver.": "Lazy loading is not supported by your current homeserver.",
"Deactivate my account": "Deactivate my account",
"Clear Cache": "Clear Cache",
"Clear Cache and Reload": "Clear Cache and Reload",
@@ -1231,8 +1226,5 @@
"Import": "Import",
"Failed to set direct chat tag": "Failed to set direct chat tag",
"Failed to remove tag %(tagName)s from room": "Failed to remove tag %(tagName)s from room",
- "Failed to add tag %(tagName)s to room": "Failed to add tag %(tagName)s to room",
- "Increase performance by only loading room members on first view": "Increase performance by only loading room members on first view",
- "Lazy loading members not supported": "Lazy load members not supported",
- "Lazy loading is not supported by your current homeserver.": "Lazy loading is not supported by your current homeserver."
+ "Failed to add tag %(tagName)s to room": "Failed to add tag %(tagName)s to room"
}
diff --git a/src/stores/RoomViewStore.js b/src/stores/RoomViewStore.js
index fed0d7b4a1..f15925f480 100644
--- a/src/stores/RoomViewStore.js
+++ b/src/stores/RoomViewStore.js
@@ -223,7 +223,13 @@ class RoomViewStore extends Store {
action: 'join_room_error',
err: err,
});
- const msg = err.message ? err.message : JSON.stringify(err);
+ let msg = err.message ? err.message : JSON.stringify(err);
+ if (err.errcode === 'M_INCOMPATIBLE_ROOM_VERSION') {
+ msg =
+ {_t("Sorry, your homeserver is too old to participate in this room.")}
+ {_t("Please contact your homeserver administrator.")}
+
;
+ }
const ErrorDialog = sdk.getComponent("dialogs.ErrorDialog");
Modal.createTrackedDialog('Failed to join room', '', ErrorDialog, {
title: _t("Failed to join room"),
From 01a0260ac8a05f35c7499b18810e677c66390f04 Mon Sep 17 00:00:00 2001
From: Bruno Windels
Date: Wed, 22 Aug 2018 10:33:13 +0200
Subject: [PATCH 160/343] use getMyMembership instead of member
---
src/components/structures/RoomView.js | 19 ++++++++++---------
1 file changed, 10 insertions(+), 9 deletions(-)
diff --git a/src/components/structures/RoomView.js b/src/components/structures/RoomView.js
index 855090873f..92be0954f9 100644
--- a/src/components/structures/RoomView.js
+++ b/src/components/structures/RoomView.js
@@ -310,7 +310,7 @@ module.exports = React.createClass({
});
} else if (room) {
//viewing a previously joined room, try to lazy load members
-
+
// Stop peeking because we have joined this room previously
MatrixClientPeg.get().stopPeeking();
this.setState({isPeeking: false});
@@ -1507,9 +1507,8 @@ module.exports = React.createClass({
}
}
- const myUserId = MatrixClientPeg.get().credentials.userId;
- const myMember = this.state.room.getMember(myUserId);
- if (myMember && myMember.membership == 'invite') {
+ const myMembership = this.state.room.getMyMembership();
+ if (myMembership == 'invite') {
if (this.state.joining || this.state.rejecting) {
return (
);
} else {
+ const myUserId = MatrixClientPeg.get().credentials.userId;
+ const myMember = this.state.room.getMember(myUserId);
const inviteEvent = myMember.events.member;
var inviterName = inviteEvent.sender ? inviteEvent.sender.name : inviteEvent.getSender();
@@ -1600,7 +1601,7 @@ module.exports = React.createClass({
} else if (this.state.showingPinned) {
hideCancel = true; // has own cancel
aux = ;
- } else if (!myMember || myMember.membership !== "join") {
+ } else if (!myMembership || myMembership !== "join") {
// We do have a room object for this room, but we're not currently in it.
// We may have a 3rd party invite to it.
var inviterName = undefined;
@@ -1642,7 +1643,7 @@ module.exports = React.createClass({
let messageComposer, searchInfo;
const canSpeak = (
// joined and not showing search results
- myMember && (myMember.membership == 'join') && !this.state.searchResults
+ myMembership == 'join' && !this.state.searchResults
);
if (canSpeak) {
messageComposer =
@@ -1777,15 +1778,15 @@ module.exports = React.createClass({
oobData={this.props.oobData}
editing={this.state.editingRoomSettings}
saving={this.state.uploadingRoomSettings}
- inRoom={myMember && myMember.membership === 'join'}
+ inRoom={myMembership === 'join'}
collapsedRhs={this.props.collapsedRhs}
onSearchClick={this.onSearchClick}
onSettingsClick={this.onSettingsClick}
onPinnedClick={this.onPinnedClick}
onSaveClick={this.onSettingsSaveClick}
onCancelClick={(aux && !hideCancel) ? this.onCancelClick : null}
- onForgetClick={(myMember && myMember.membership === "leave") ? this.onForgetClick : null}
- onLeaveClick={(myMember && myMember.membership === "join") ? this.onLeaveClick : null}
+ onForgetClick={(myMembership === "leave") ? this.onForgetClick : null}
+ onLeaveClick={(myMembership === "join") ? this.onLeaveClick : null}
/>
{ auxPanel }
From c38b286e8e6f7aaa3cf2d6f77939e3182736c8c1 Mon Sep 17 00:00:00 2001
From: Bruno Windels
Date: Wed, 22 Aug 2018 12:28:00 +0200
Subject: [PATCH 161/343] falsy check is obsolete now
---
src/components/structures/RoomView.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/components/structures/RoomView.js b/src/components/structures/RoomView.js
index 92be0954f9..84b8788297 100644
--- a/src/components/structures/RoomView.js
+++ b/src/components/structures/RoomView.js
@@ -1601,7 +1601,7 @@ module.exports = React.createClass({
} else if (this.state.showingPinned) {
hideCancel = true; // has own cancel
aux = ;
- } else if (!myMembership || myMembership !== "join") {
+ } else if (myMembership !== "join") {
// We do have a room object for this room, but we're not currently in it.
// We may have a 3rd party invite to it.
var inviterName = undefined;
From b7570002e0e531d80cc63b221cce1881a7a3637a Mon Sep 17 00:00:00 2001
From: David Baker
Date: Wed, 22 Aug 2018 12:01:29 +0100
Subject: [PATCH 162/343] Hide replaced rooms
By using new getVisibleRooms() in js-sdk
---
src/components/views/rooms/RoomList.js | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/components/views/rooms/RoomList.js b/src/components/views/rooms/RoomList.js
index 732048f712..3e632ba8ce 100644
--- a/src/components/views/rooms/RoomList.js
+++ b/src/components/views/rooms/RoomList.js
@@ -97,7 +97,7 @@ module.exports = React.createClass({
};
// All rooms that should be kept in the room list when filtering.
// By default, show all rooms.
- this._visibleRooms = MatrixClientPeg.get().getRooms();
+ this._visibleRooms = MatrixClientPeg.get().getVisibleRooms();
// Listen to updates to group data. RoomList cares about members and rooms in order
// to filter the room list when group tags are selected.
@@ -302,7 +302,7 @@ module.exports = React.createClass({
this._visibleRooms = Array.from(roomSet);
} else {
// Show all rooms
- this._visibleRooms = MatrixClientPeg.get().getRooms();
+ this._visibleRooms = MatrixClientPeg.get().getVisibleRooms();
}
this._delayedRefreshRoomList();
},
From 860c6355f026aabab384e75402f0de475510d49e Mon Sep 17 00:00:00 2001
From: Bruno Windels
Date: Wed, 22 Aug 2018 14:06:28 +0200
Subject: [PATCH 163/343] do self membership checks with getMyMembership
elsewhere as well
---
src/ScalarMessaging.js | 5 ++---
.../views/context_menus/RoomTileContextMenu.js | 10 ++++------
src/components/views/rooms/RoomSettings.js | 8 ++++----
3 files changed, 10 insertions(+), 13 deletions(-)
diff --git a/src/ScalarMessaging.js b/src/ScalarMessaging.js
index 3325044b84..7ec928f895 100644
--- a/src/ScalarMessaging.js
+++ b/src/ScalarMessaging.js
@@ -497,12 +497,11 @@ function canSendEvent(event, roomId) {
sendError(event, _t('This room is not recognised.'));
return;
}
- const me = client.credentials.userId;
- const member = room.getMember(me);
- if (!member || member.membership !== "join") {
+ if (room.getMyMembership() !== "join") {
sendError(event, _t('You are not in this room.'));
return;
}
+ const me = client.credentials.userId;
let canSend = false;
if (isState) {
diff --git a/src/components/views/context_menus/RoomTileContextMenu.js b/src/components/views/context_menus/RoomTileContextMenu.js
index 77f71fa8fa..ce9895447e 100644
--- a/src/components/views/context_menus/RoomTileContextMenu.js
+++ b/src/components/views/context_menus/RoomTileContextMenu.js
@@ -346,20 +346,18 @@ module.exports = React.createClass({
},
render: function() {
- const myMember = this.props.room.getMember(
- MatrixClientPeg.get().credentials.userId,
- );
+ const myMembership = this.props.room.getMyMembership();
// Can't set notif level or tags on non-join rooms
- if (myMember.membership !== 'join') {
- return this._renderLeaveMenu(myMember.membership);
+ if (myMembership !== 'join') {
+ return this._renderLeaveMenu(myMembership);
}
return (
diff --git a/src/components/views/rooms/RoomSettings.js b/src/components/views/rooms/RoomSettings.js
index 7a78d205b9..3b95fa9905 100644
--- a/src/components/views/rooms/RoomSettings.js
+++ b/src/components/views/rooms/RoomSettings.js
@@ -794,15 +794,15 @@ module.exports = React.createClass({
}
let leaveButton = null;
- const myMember = this.props.room.getMember(myUserId);
- if (myMember) {
- if (myMember.membership === "join") {
+ const myMemberShip = this.props.room.getMyMembership();
+ if (myMemberShip) {
+ if (myMemberShip === "join") {
leaveButton = (
{ _t('Leave room') }
);
- } else if (myMember.membership === "leave") {
+ } else if (myMemberShip === "leave") {
leaveButton = (
{ _t('Forget room') }
From a54629276fe225ad0281bf2f805b5d5b2fd6dc94 Mon Sep 17 00:00:00 2001
From: Bruno Windels
Date: Wed, 22 Aug 2018 14:08:18 +0200
Subject: [PATCH 164/343] use getJoinedMemberCount() instead of
getJoinedMembers().length as the latter doesnt take LL into account
---
src/ScalarMessaging.js | 2 +-
src/VectorConferenceHandler.js | 2 +-
src/components/structures/RightPanel.js | 2 +-
src/components/structures/RoomView.js | 2 +-
4 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/src/ScalarMessaging.js b/src/ScalarMessaging.js
index 7ec928f895..fa7b8c5b76 100644
--- a/src/ScalarMessaging.js
+++ b/src/ScalarMessaging.js
@@ -480,7 +480,7 @@ function getMembershipCount(event, roomId) {
sendError(event, _t('This room is not recognised.'));
return;
}
- const count = room.getJoinedMembers().length;
+ const count = room.getJoinedMemberCount();
sendResponse(event, count);
}
diff --git a/src/VectorConferenceHandler.js b/src/VectorConferenceHandler.js
index 9ba46b2ab6..c53a01d464 100644
--- a/src/VectorConferenceHandler.js
+++ b/src/VectorConferenceHandler.js
@@ -72,7 +72,7 @@ ConferenceCall.prototype._getConferenceUserRoom = function() {
for (var i = 0; i < rooms.length; i++) {
var confUser = rooms[i].getMember(this.confUserId);
if (confUser && confUser.membership === "join" &&
- rooms[i].getJoinedMembers().length === 2) {
+ rooms[i].getJoinedMemberCount() === 2) {
confRoom = rooms[i];
break;
}
diff --git a/src/components/structures/RightPanel.js b/src/components/structures/RightPanel.js
index 18523ceb59..bd4ed722cb 100644
--- a/src/components/structures/RightPanel.js
+++ b/src/components/structures/RightPanel.js
@@ -280,7 +280,7 @@ module.exports = React.createClass({
const room = cli.getRoom(this.props.roomId);
let isUserInRoom;
if (room) {
- const numMembers = room.getJoinedMembers().length;
+ const numMembers = room.getJoinedMemberCount();
membersTitle = _t('%(count)s Members', { count: numMembers });
membersBadge =
{ formatCount(numMembers) }
;
isUserInRoom = room.hasMembershipState(this.context.matrixClient.credentials.userId, 'join');
diff --git a/src/components/structures/RoomView.js b/src/components/structures/RoomView.js
index 84b8788297..7b7a7bb813 100644
--- a/src/components/structures/RoomView.js
+++ b/src/components/structures/RoomView.js
@@ -363,7 +363,7 @@ module.exports = React.createClass({
// XXX: EVIL HACK to autofocus inviting on empty rooms.
// We use the setTimeout to avoid racing with focus_composer.
if (this.state.room &&
- this.state.room.getJoinedMembers().length == 1 &&
+ this.state.room.getJoinedMemberCount() == 1 &&
this.state.room.getLiveTimeline() &&
this.state.room.getLiveTimeline().getEvents() &&
this.state.room.getLiveTimeline().getEvents().length <= 6) {
From 852d6a3be5a4bb2d9c3c6ee42fd4fafd64e08dc8 Mon Sep 17 00:00:00 2001
From: David Baker
Date: Wed, 22 Aug 2018 14:34:02 +0100
Subject: [PATCH 165/343] Fix CPU spin on joining large room
checkIfAlone() filters the whole member list, which is fine until
we do it once for every membership event, then we have an n^2
problem. Move it into the rate limited function.
Fixes https://github.com/vector-im/riot-web/issues/7163
---
src/components/structures/RoomView.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/components/structures/RoomView.js b/src/components/structures/RoomView.js
index 855090873f..1ecd7dad2e 100644
--- a/src/components/structures/RoomView.js
+++ b/src/components/structures/RoomView.js
@@ -701,7 +701,6 @@ module.exports = React.createClass({
}
this._updateRoomMembers();
- this._checkIfAlone(this.state.room);
},
onRoomMemberMembership: function(ev, member, oldMembership) {
@@ -717,6 +716,7 @@ module.exports = React.createClass({
// refresh the conf call notification state
this._updateConfCallNotification();
this._updateDMState();
+ this._checkIfAlone(this.state.room);
}, 500),
_checkIfAlone: function(room) {
From db7dd8e9e88edec5d128cea502b567c6384a12c2 Mon Sep 17 00:00:00 2001
From: Bruno Windels
Date: Wed, 22 Aug 2018 16:00:03 +0200
Subject: [PATCH 166/343] fix tests
---
test/test-utils.js | 1 +
1 file changed, 1 insertion(+)
diff --git a/test/test-utils.js b/test/test-utils.js
index 975a4df0ee..25df9686ff 100644
--- a/test/test-utils.js
+++ b/test/test-utils.js
@@ -256,6 +256,7 @@ export function mkStubRoom(roomId = null) {
getAccountData: () => null,
hasMembershipState: () => null,
getVersion: () => '1',
+ getMyMembership: () => "join",
currentState: {
getStateEvents: sinon.stub(),
mayClientSendStateEvent: sinon.stub().returns(true),
From 6201d4e9bb24938650996994242f72f2df1faa01 Mon Sep 17 00:00:00 2001
From: random
Date: Tue, 21 Aug 2018 15:15:27 +0000
Subject: [PATCH 167/343] Translated using Weblate (Italian)
Currently translated at 99.8% (1234 of 1236 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/it/
---
src/i18n/strings/it.json | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/src/i18n/strings/it.json b/src/i18n/strings/it.json
index 04e7c20e86..721c0382f7 100644
--- a/src/i18n/strings/it.json
+++ b/src/i18n/strings/it.json
@@ -1111,7 +1111,7 @@
"Messages in group chats": "Messaggi nelle chat di gruppo",
"Yesterday": "Ieri",
"Error encountered (%(errorDetail)s).": "Errore riscontrato (%(errorDetail)s).",
- "Login": "Entra",
+ "Login": "Accedi",
"Low Priority": "Priorità bassa",
"What's New": "Novità",
"Set Password": "Imposta Password",
@@ -1249,5 +1249,6 @@
"Put a link back to the old room at the start of the new room so people can see old messages": "Inseriremo un link alla vecchia stanza all'inizio della di quella nuova in modo che la gente possa vedere i messaggi precedenti",
"Your message wasn't sent because this homeserver has hit its Monthly Active User Limit. Please contact your service administrator to continue using the service.": "Il tuo messaggio non è stato inviato perchè questo homeserver ha raggiunto il suo limite di utenti attivi mensili. Contatta l'amministratore del servizio per continuare ad usarlo.",
"Your message wasn't sent because this homeserver has exceeded a resource limit. Please contact your service administrator to continue using the service.": "Il tuo messaggio non è stato inviato perchè questo homeserver ha oltrepassato un limite di risorse. Contatta l'amministratore del servizio per continuare ad usarlo.",
- "Please contact your service administrator to continue using this service.": "Contatta l'amministratore del servizio per continuare ad usarlo."
+ "Please contact your service administrator to continue using this service.": "Contatta l'amministratore del servizio per continuare ad usarlo.",
+ "Increase performance by only loading room members on first view": "Aumenta le prestazioni caricando solo i membri della stanza alla prima occhiata"
}
From 4a8fcd34294671c3f2c474677f76e9778f763810 Mon Sep 17 00:00:00 2001
From: Moo
Date: Tue, 21 Aug 2018 20:47:56 +0000
Subject: [PATCH 168/343] Translated using Weblate (Lithuanian)
Currently translated at 54.2% (671 of 1236 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/lt/
---
src/i18n/strings/lt.json | 44 +++++++++++++++++++++++++++++++++++++++-
1 file changed, 43 insertions(+), 1 deletion(-)
diff --git a/src/i18n/strings/lt.json b/src/i18n/strings/lt.json
index 906bc8eb1f..9657109608 100644
--- a/src/i18n/strings/lt.json
+++ b/src/i18n/strings/lt.json
@@ -629,5 +629,47 @@
"%(duration)sh": "%(duration)s val.",
"%(duration)sd": "%(duration)s d.",
"Seen by %(userName)s at %(dateTime)s": "%(userName)s matė ties %(dateTime)s",
- "Seen by %(displayName)s (%(userName)s) at %(dateTime)s": "%(displayName)s (%(userName)s) matė ties %(dateTime)s"
+ "Seen by %(displayName)s (%(userName)s) at %(dateTime)s": "%(displayName)s (%(userName)s) matė ties %(dateTime)s",
+ "Show these rooms to non-members on the community page and room list?": "Ar rodyti šiuos kambarius ne dalyviams bendruomenės puslapyje ir kambarių sąraše?",
+ "Invite new room members": "Pakviesti naujus kambario dalyvius",
+ "Changes colour scheme of current room": "Pakeičia esamo kambario spalvų rinkinį",
+ "Kicks user with given id": "Išmeta naudotoją su nurodytu id",
+ "Bans user with given id": "Užblokuoja naudotoja su nurodytu id",
+ "Unbans user with given id": "Atblokuoja naudotoją su nurodytu id",
+ "%(senderName)s banned %(targetName)s.": "%(senderName)s užblokavo naudotoją %(targetName)s.",
+ "%(senderName)s unbanned %(targetName)s.": "%(senderName)s atblokavo naudotoją %(targetName)s.",
+ "%(senderName)s kicked %(targetName)s.": "%(senderName)s išmetė naudotoją %(targetName)s.",
+ "(not supported by this browser)": "(nėra palaikoma šios naršyklės)",
+ "(no answer)": "(nėra atsakymo)",
+ "%(senderName)s made future room history visible to all room members, from the point they are invited.": "%(senderName)s padarė kambario ateities istoriją matomą visiems kambario dalyviams nuo to laiko, kai jie buvo pakviesti.",
+ "%(senderName)s made future room history visible to all room members.": "%(senderName)s padarė kambario ateities istoriją matomą visiems kambario dalyviams.",
+ "%(senderName)s made future room history visible to anyone.": "%(senderName)s padarė kambario ateities istoriją matomą bet kam.",
+ "%(names)s and %(count)s others are typing|one": "%(names)s ir dar vienas naudotojas rašo",
+ "Your browser does not support the required cryptography extensions": "Jūsų naršyklė nepalaiko reikalingų kriptografijos plėtinių",
+ "Not a valid Riot keyfile": "Negaliojantis Riot rakto failas",
+ "Authentication check failed: incorrect password?": "Tapatybės nustatymo patikrinimas patyrė nesėkmę: neteisingas slaptažodis?",
+ "Send analytics data": "Siųsti analitinius duomenis",
+ "Incoming voice call from %(name)s": "Gaunamasis balso skambutis nuo %(name)s",
+ "Incoming video call from %(name)s": "Gaunamasis vaizdo skambutis nuo %(name)s",
+ "Incoming call from %(name)s": "Gaunamasis skambutis nuo %(name)s",
+ "Changing password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Šiuo metu slaptažodžio pakeitimas atstatys bet kokius ištisinio šifravimo raktus visuose įrenginiuose ir tokiu būdu pavers šifruotą pokalbių istoriją neperskaitoma, nebent, iš pradžių, savo kambario raktus eksportuosite, o po to, juos importuosite iš naujo. Ateityje tai bus patobulinta.",
+ "Change Password": "Keisti slaptažodį",
+ "Authentication": "Tapatybės nustatymas",
+ "The maximum permitted number of widgets have already been added to this room.": "Į šį kambarį jau yra pridėtas didžiausias leidžiamas valdiklių skaičius.",
+ "Your key share request has been sent - please check your other devices for key share requests.": "Jūsų rakto bendrinimo užklausa išsiųsta - patikrinkite kitus savo įrenginius, ar juose nėra rakto bendrinimo užklausų.",
+ "Key share requests are sent to your other devices automatically. If you rejected or dismissed the key share request on your other devices, click here to request the keys for this session again.": "Rakto bendrinimo užklausos yra išsiunčiamos į jūsų kitus įrenginius automatiškai. Jeigu savo kitame įrenginyje atmetėte ar nepaisėte rakto užklausos, spustelėkite čia, norėdami dar kartą užklausti raktų šiam seansui.",
+ "Please select the destination room for this message": "Pasirinkite šiai žinutei paskirties kambarį",
+ "No devices with registered encryption keys": "Nėra jokių įrenginių su registruotais šifravimo raktais",
+ "Make Moderator": "Padaryti moderatoriumi",
+ "Level:": "Lygis:",
+ "Hangup": "Padėti ragelį",
+ "No pinned messages.": "Nėra jokių prisegtų žinučių.",
+ "Online for %(duration)s": "Prisijungęs %(duration)s",
+ "Idle for %(duration)s": "Neveiklus %(duration)s",
+ "Offline for %(duration)s": "Atsijungęs %(duration)s",
+ "Idle": "Neveiklus",
+ "Offline": "Atsijungęs",
+ "Failed to set avatar.": "Nepavyko nustatyti avataro.",
+ "Forget room": "Pamiršti kambarį",
+ "Share room": "Bendrinti kambarį"
}
From 9a2ecf9e004453081e56654ef85732f3c1554e97 Mon Sep 17 00:00:00 2001
From: csybr
Date: Tue, 21 Aug 2018 12:00:54 +0000
Subject: [PATCH 169/343] Translated using Weblate (Norwegian Nynorsk)
Currently translated at 98.7% (1220 of 1236 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/nn/
---
src/i18n/strings/nn.json | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/src/i18n/strings/nn.json b/src/i18n/strings/nn.json
index 9e2c6f2076..95183cad2d 100644
--- a/src/i18n/strings/nn.json
+++ b/src/i18n/strings/nn.json
@@ -950,7 +950,7 @@
"Review terms and conditions": "Sjå over Vilkår og Føresetnader",
"Old cryptography data detected": "Gamal kryptografidata vart oppdagen",
"Data from an older version of Riot has been detected. This will have caused end-to-end cryptography to malfunction in the older version. End-to-end encrypted messages exchanged recently whilst using the older version may not be decryptable in this version. This may also cause messages exchanged with this version to fail. If you experience problems, log out and back in again. To retain message history, export and re-import your keys.": "Data frå ei eldre utgåve av Riot vart oppdagen. I den eldre utgåva hadde dette gjort at ende-til-ende-kryptografi ikkje verkar som det skal. Ende-til-ende-enkrypterte meldingar som vert utveksla nyleg med den gamle utgåva er det kanskje ikkje mogeleg å dekryptera i denne utgåva. Dette fører kanskje òg til at meldingar som vart utveksla med denne utgåva ikkje verkar. Viss du opplever vansker, logg ut og inn att. For å spara på meldingshistoria, hent nyklane dine ut og inn at.",
- "Logout": "Utlogging",
+ "Logout": "Loggar ut",
"Your Communities": "Dine Samfunn",
"Error whilst fetching joined communities": "Noko gjekk gale med innhentinga av samfunna du er i",
"Create a new community": "Lag eit nytt samfunn",
@@ -1223,5 +1223,7 @@
"There is a known vulnerability affecting this room.": "Ein kjend sårbarheit påverkar dette rommet.",
"This room version is vulnerable to malicious modification of room state.": "Denne romutgåva er sårbar til vondsinna endring på romtilstanden.",
"Only room administrators will see this warning": "Berre romadministratorar vil sjå denne åtvaringa",
- "Please contact your service administrator to continue using the service.": "Ver venleg og tak kontakt med tenesteadministratoren for å halda fram med å bruka tenesten."
+ "Please contact your service administrator to continue using the service.": "Ver venleg og tak kontakt med tenesteadministratoren for å halda fram med å bruka tenesten.",
+ "This homeserver has hit its Monthly Active User limit.": "Heimtenaren har truffe den Månadlege Grensa si for Aktive Brukarar.",
+ "This homeserver has exceeded one of its resource limits.": "Heimtenaren har gått over ei av ressursgrensene sine."
}
From 8eaead9c1895483c87401c38d0756499b9c3888a Mon Sep 17 00:00:00 2001
From: Moo
Date: Tue, 21 Aug 2018 20:48:39 +0000
Subject: [PATCH 170/343] Translated using Weblate (Russian)
Currently translated at 98.8% (1222 of 1236 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/ru/
---
src/i18n/strings/ru.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/i18n/strings/ru.json b/src/i18n/strings/ru.json
index e3cc761c30..25e0d0b78d 100644
--- a/src/i18n/strings/ru.json
+++ b/src/i18n/strings/ru.json
@@ -861,7 +861,7 @@
"An email has been sent to %(emailAddress)s. Once you've followed the link it contains, click below.": "Сообщение отправлено на %(emailAddress)s. После перехода по ссылке в отправленном вам письме, щелкните ниже.",
"Room Notification": "Уведомления комнаты",
"Drop here to tag direct chat": "Перетащите сюда, чтобы пометить как личный чат",
- "Drop here to restore": "Перетащиет сюда, чтобы вернуть",
+ "Drop here to restore": "Перетащите сюда, чтобы вернуть",
"Drop here to demote": "Перетащите сюда, чтобы понизить",
"Community Invites": "Приглашения в сообщества",
"Notify the whole room": "Уведомить всю комнату",
From e70eee964163780a87a9f161efc824b58ada04e8 Mon Sep 17 00:00:00 2001
From: vejetaryenvampir
Date: Mon, 20 Aug 2018 19:26:20 +0000
Subject: [PATCH 171/343] Translated using Weblate (Turkish)
Currently translated at 60.1% (744 of 1236 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/tr/
---
src/i18n/strings/tr.json | 11 ++++++++---
1 file changed, 8 insertions(+), 3 deletions(-)
diff --git a/src/i18n/strings/tr.json b/src/i18n/strings/tr.json
index 04f78dc1ee..851d556757 100644
--- a/src/i18n/strings/tr.json
+++ b/src/i18n/strings/tr.json
@@ -574,11 +574,11 @@
"Add User": "Kullanıcı Ekle",
"This Home Server would like to make sure you are not a robot": "Bu Ana Sunucu robot olmadığınızdan emin olmak istiyor",
"Sign in with CAS": "CAS ile oturum açın",
- "Custom Server Options": "Özel Sunucu Seçenekleri",
+ "Custom Server Options": "Özelleştirilebilir Sunucu Seçenekleri",
"You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.": "Özel Sunucu Seçeneklerini diğer Matrix sunucularına giriş yapmak için farklı bir Ana Sunucu URL'si belirleyerek kullanabilirsiniz.",
"This allows you to use this app with an existing Matrix account on a different home server.": "Bu, sizin bu uygulamayı varolan Matrix hesabınızla farklı Ana Sunucularda kullanmanıza izin verir.",
"You can also set a custom identity server but this will typically prevent interaction with users based on email address.": "Ayrıca özel bir kimlik sunucusu da ayarlayabilirsiniz ancak bu e-posta adresine dayalı olarak kullanıcılarla olan etkileşimi engeller.",
- "Dismiss": "Uzaklaştır",
+ "Dismiss": "Kapat",
"Please check your email to continue registration.": "Kayıt işlemine devam etmek için lütfen e-postanızı kontrol edin.",
"Token incorrect": "Belirteç(Token) hatalı",
"Please enter the code it contains:": "Lütfen içerdiği kodu girin:",
@@ -751,5 +751,10 @@
"View Source": "Kaynağı Görüntüle",
"Collapse panel": "Katlanır panel",
"With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "Geçerli tarayıcınız ile birlikte , uygulamanın görünüş ve kullanım hissi tamamen hatalı olabilir ve bazı ya da tüm özellikler çalışmayabilir. Yine de denemek isterseniz devam edebilirsiniz ancak karşılaşabileceğiniz sorunlar karşısında kendi başınasınız !",
- "There are advanced notifications which are not shown here": "Burada gösterilmeyen gelişmiş bildirimler var"
+ "There are advanced notifications which are not shown here": "Burada gösterilmeyen gelişmiş bildirimler var",
+ "The platform you're on": "Bulunduğun platform",
+ "The version of Riot.im": "Riot.im'in sürümü",
+ "Whether or not you're logged in (we don't record your user name)": "Ne olursa olsun giriş yaptın (kullanıcı adınızı kaydetmeyiz)",
+ "Your language of choice": "Seçtiginiz diliniz",
+ "Which officially provided instance you are using, if any": ""
}
From bf7633250aa5c3308b15f358e610e24dcebfd8c8 Mon Sep 17 00:00:00 2001
From: David Baker
Date: Wed, 22 Aug 2018 16:16:17 +0100
Subject: [PATCH 172/343] Revert "Fix showing peek preview while LL members are
loading"
---
src/ScalarMessaging.js | 7 ++++---
src/VectorConferenceHandler.js | 2 +-
src/components/structures/RightPanel.js | 2 +-
src/components/structures/RoomView.js | 21 +++++++++----------
.../context_menus/RoomTileContextMenu.js | 10 +++++----
src/components/views/rooms/RoomSettings.js | 8 +++----
test/test-utils.js | 1 -
7 files changed, 26 insertions(+), 25 deletions(-)
diff --git a/src/ScalarMessaging.js b/src/ScalarMessaging.js
index fa7b8c5b76..3325044b84 100644
--- a/src/ScalarMessaging.js
+++ b/src/ScalarMessaging.js
@@ -480,7 +480,7 @@ function getMembershipCount(event, roomId) {
sendError(event, _t('This room is not recognised.'));
return;
}
- const count = room.getJoinedMemberCount();
+ const count = room.getJoinedMembers().length;
sendResponse(event, count);
}
@@ -497,11 +497,12 @@ function canSendEvent(event, roomId) {
sendError(event, _t('This room is not recognised.'));
return;
}
- if (room.getMyMembership() !== "join") {
+ const me = client.credentials.userId;
+ const member = room.getMember(me);
+ if (!member || member.membership !== "join") {
sendError(event, _t('You are not in this room.'));
return;
}
- const me = client.credentials.userId;
let canSend = false;
if (isState) {
diff --git a/src/VectorConferenceHandler.js b/src/VectorConferenceHandler.js
index c53a01d464..9ba46b2ab6 100644
--- a/src/VectorConferenceHandler.js
+++ b/src/VectorConferenceHandler.js
@@ -72,7 +72,7 @@ ConferenceCall.prototype._getConferenceUserRoom = function() {
for (var i = 0; i < rooms.length; i++) {
var confUser = rooms[i].getMember(this.confUserId);
if (confUser && confUser.membership === "join" &&
- rooms[i].getJoinedMemberCount() === 2) {
+ rooms[i].getJoinedMembers().length === 2) {
confRoom = rooms[i];
break;
}
diff --git a/src/components/structures/RightPanel.js b/src/components/structures/RightPanel.js
index bd4ed722cb..18523ceb59 100644
--- a/src/components/structures/RightPanel.js
+++ b/src/components/structures/RightPanel.js
@@ -280,7 +280,7 @@ module.exports = React.createClass({
const room = cli.getRoom(this.props.roomId);
let isUserInRoom;
if (room) {
- const numMembers = room.getJoinedMemberCount();
+ const numMembers = room.getJoinedMembers().length;
membersTitle = _t('%(count)s Members', { count: numMembers });
membersBadge =
{ formatCount(numMembers) }
;
isUserInRoom = room.hasMembershipState(this.context.matrixClient.credentials.userId, 'join');
diff --git a/src/components/structures/RoomView.js b/src/components/structures/RoomView.js
index 7b7a7bb813..855090873f 100644
--- a/src/components/structures/RoomView.js
+++ b/src/components/structures/RoomView.js
@@ -310,7 +310,7 @@ module.exports = React.createClass({
});
} else if (room) {
//viewing a previously joined room, try to lazy load members
-
+
// Stop peeking because we have joined this room previously
MatrixClientPeg.get().stopPeeking();
this.setState({isPeeking: false});
@@ -363,7 +363,7 @@ module.exports = React.createClass({
// XXX: EVIL HACK to autofocus inviting on empty rooms.
// We use the setTimeout to avoid racing with focus_composer.
if (this.state.room &&
- this.state.room.getJoinedMemberCount() == 1 &&
+ this.state.room.getJoinedMembers().length == 1 &&
this.state.room.getLiveTimeline() &&
this.state.room.getLiveTimeline().getEvents() &&
this.state.room.getLiveTimeline().getEvents().length <= 6) {
@@ -1507,8 +1507,9 @@ module.exports = React.createClass({
}
}
- const myMembership = this.state.room.getMyMembership();
- if (myMembership == 'invite') {
+ const myUserId = MatrixClientPeg.get().credentials.userId;
+ const myMember = this.state.room.getMember(myUserId);
+ if (myMember && myMember.membership == 'invite') {
if (this.state.joining || this.state.rejecting) {
return (
diff --git a/src/components/views/rooms/RoomSettings.js b/src/components/views/rooms/RoomSettings.js
index 3b95fa9905..7a78d205b9 100644
--- a/src/components/views/rooms/RoomSettings.js
+++ b/src/components/views/rooms/RoomSettings.js
@@ -794,15 +794,15 @@ module.exports = React.createClass({
}
let leaveButton = null;
- const myMemberShip = this.props.room.getMyMembership();
- if (myMemberShip) {
- if (myMemberShip === "join") {
+ const myMember = this.props.room.getMember(myUserId);
+ if (myMember) {
+ if (myMember.membership === "join") {
leaveButton = (
{ _t('Leave room') }
);
- } else if (myMemberShip === "leave") {
+ } else if (myMember.membership === "leave") {
leaveButton = (
{ _t('Forget room') }
diff --git a/test/test-utils.js b/test/test-utils.js
index 25df9686ff..975a4df0ee 100644
--- a/test/test-utils.js
+++ b/test/test-utils.js
@@ -256,7 +256,6 @@ export function mkStubRoom(roomId = null) {
getAccountData: () => null,
hasMembershipState: () => null,
getVersion: () => '1',
- getMyMembership: () => "join",
currentState: {
getStateEvents: sinon.stub(),
mayClientSendStateEvent: sinon.stub().returns(true),
From 2ba69b61d8fccdd2637a1ba2e2084a3993142ac8 Mon Sep 17 00:00:00 2001
From: Slavi Pantaleev
Date: Wed, 22 Aug 2018 14:56:43 +0000
Subject: [PATCH 173/343] Translated using Weblate (Bulgarian)
Currently translated at 98.3% (1216 of 1236 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/bg/
---
src/i18n/strings/bg.json | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/i18n/strings/bg.json b/src/i18n/strings/bg.json
index 18cdd5afdb..3e8d2368e1 100644
--- a/src/i18n/strings/bg.json
+++ b/src/i18n/strings/bg.json
@@ -1231,5 +1231,7 @@
"Internal room ID: ": "Вътрешен идентификатор на стаята: ",
"Room version number: ": "Версия на стаята: ",
"This homeserver has hit its Monthly Active User limit. Please contact your service administrator to continue using the service.": "Този сървър достигна лимита си за активни потребители на месец. Моля, свържете се с администратора на услугата, за да продължите да я използвате.",
- "This homeserver has hit its Monthly Active User limit so some users will not be able to log in. Please contact your service administrator to get this limit increased.": "Този сървър достигна лимита си за активни потребители на месец и някои потребители няма да успеят да влязат в профила си. Моля, свържете се с администратора на услугата за да се увеличи този лимит."
+ "This homeserver has hit its Monthly Active User limit so some users will not be able to log in. Please contact your service administrator to get this limit increased.": "Този сървър достигна лимита си за активни потребители на месец и някои потребители няма да успеят да влязат в профила си. Моля, свържете се с администратора на услугата за да се увеличи този лимит.",
+ "There is a known vulnerability affecting this room.": "Има пропуск в сигурността засягащ тази стая.",
+ "This room version is vulnerable to malicious modification of room state.": "Тази версия на стаята е уязвима към злонамерена модификация на състоянието й."
}
From f679acea08e4d9ae42edc334176cf9b0ce9f72ee Mon Sep 17 00:00:00 2001
From: David Baker
Date: Wed, 22 Aug 2018 16:35:58 +0100
Subject: [PATCH 174/343] Revert "Revert "Fix showing peek preview while LL
members are loading""
---
src/ScalarMessaging.js | 7 +++----
src/VectorConferenceHandler.js | 2 +-
src/components/structures/RightPanel.js | 2 +-
src/components/structures/RoomView.js | 21 ++++++++++---------
.../context_menus/RoomTileContextMenu.js | 10 ++++-----
src/components/views/rooms/RoomSettings.js | 8 +++----
test/test-utils.js | 1 +
7 files changed, 25 insertions(+), 26 deletions(-)
diff --git a/src/ScalarMessaging.js b/src/ScalarMessaging.js
index 3325044b84..fa7b8c5b76 100644
--- a/src/ScalarMessaging.js
+++ b/src/ScalarMessaging.js
@@ -480,7 +480,7 @@ function getMembershipCount(event, roomId) {
sendError(event, _t('This room is not recognised.'));
return;
}
- const count = room.getJoinedMembers().length;
+ const count = room.getJoinedMemberCount();
sendResponse(event, count);
}
@@ -497,12 +497,11 @@ function canSendEvent(event, roomId) {
sendError(event, _t('This room is not recognised.'));
return;
}
- const me = client.credentials.userId;
- const member = room.getMember(me);
- if (!member || member.membership !== "join") {
+ if (room.getMyMembership() !== "join") {
sendError(event, _t('You are not in this room.'));
return;
}
+ const me = client.credentials.userId;
let canSend = false;
if (isState) {
diff --git a/src/VectorConferenceHandler.js b/src/VectorConferenceHandler.js
index 9ba46b2ab6..c53a01d464 100644
--- a/src/VectorConferenceHandler.js
+++ b/src/VectorConferenceHandler.js
@@ -72,7 +72,7 @@ ConferenceCall.prototype._getConferenceUserRoom = function() {
for (var i = 0; i < rooms.length; i++) {
var confUser = rooms[i].getMember(this.confUserId);
if (confUser && confUser.membership === "join" &&
- rooms[i].getJoinedMembers().length === 2) {
+ rooms[i].getJoinedMemberCount() === 2) {
confRoom = rooms[i];
break;
}
diff --git a/src/components/structures/RightPanel.js b/src/components/structures/RightPanel.js
index 18523ceb59..bd4ed722cb 100644
--- a/src/components/structures/RightPanel.js
+++ b/src/components/structures/RightPanel.js
@@ -280,7 +280,7 @@ module.exports = React.createClass({
const room = cli.getRoom(this.props.roomId);
let isUserInRoom;
if (room) {
- const numMembers = room.getJoinedMembers().length;
+ const numMembers = room.getJoinedMemberCount();
membersTitle = _t('%(count)s Members', { count: numMembers });
membersBadge =
{ formatCount(numMembers) }
;
isUserInRoom = room.hasMembershipState(this.context.matrixClient.credentials.userId, 'join');
diff --git a/src/components/structures/RoomView.js b/src/components/structures/RoomView.js
index 855090873f..7b7a7bb813 100644
--- a/src/components/structures/RoomView.js
+++ b/src/components/structures/RoomView.js
@@ -310,7 +310,7 @@ module.exports = React.createClass({
});
} else if (room) {
//viewing a previously joined room, try to lazy load members
-
+
// Stop peeking because we have joined this room previously
MatrixClientPeg.get().stopPeeking();
this.setState({isPeeking: false});
@@ -363,7 +363,7 @@ module.exports = React.createClass({
// XXX: EVIL HACK to autofocus inviting on empty rooms.
// We use the setTimeout to avoid racing with focus_composer.
if (this.state.room &&
- this.state.room.getJoinedMembers().length == 1 &&
+ this.state.room.getJoinedMemberCount() == 1 &&
this.state.room.getLiveTimeline() &&
this.state.room.getLiveTimeline().getEvents() &&
this.state.room.getLiveTimeline().getEvents().length <= 6) {
@@ -1507,9 +1507,8 @@ module.exports = React.createClass({
}
}
- const myUserId = MatrixClientPeg.get().credentials.userId;
- const myMember = this.state.room.getMember(myUserId);
- if (myMember && myMember.membership == 'invite') {
+ const myMembership = this.state.room.getMyMembership();
+ if (myMembership == 'invite') {
if (this.state.joining || this.state.rejecting) {
return (
diff --git a/src/components/views/rooms/RoomSettings.js b/src/components/views/rooms/RoomSettings.js
index 7a78d205b9..3b95fa9905 100644
--- a/src/components/views/rooms/RoomSettings.js
+++ b/src/components/views/rooms/RoomSettings.js
@@ -794,15 +794,15 @@ module.exports = React.createClass({
}
let leaveButton = null;
- const myMember = this.props.room.getMember(myUserId);
- if (myMember) {
- if (myMember.membership === "join") {
+ const myMemberShip = this.props.room.getMyMembership();
+ if (myMemberShip) {
+ if (myMemberShip === "join") {
leaveButton = (
{ _t('Leave room') }
);
- } else if (myMember.membership === "leave") {
+ } else if (myMemberShip === "leave") {
leaveButton = (
{ _t('Forget room') }
diff --git a/test/test-utils.js b/test/test-utils.js
index 975a4df0ee..25df9686ff 100644
--- a/test/test-utils.js
+++ b/test/test-utils.js
@@ -256,6 +256,7 @@ export function mkStubRoom(roomId = null) {
getAccountData: () => null,
hasMembershipState: () => null,
getVersion: () => '1',
+ getMyMembership: () => "join",
currentState: {
getStateEvents: sinon.stub(),
mayClientSendStateEvent: sinon.stub().returns(true),
From a5f98b6a29675f1acc09f655e63230a6d366f499 Mon Sep 17 00:00:00 2001
From: David Baker
Date: Wed, 22 Aug 2018 17:05:36 +0100
Subject: [PATCH 175/343] Make the is-alone check use efficient methods
---
src/components/structures/RoomView.js | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/components/structures/RoomView.js b/src/components/structures/RoomView.js
index 1ecd7dad2e..dd8fba3929 100644
--- a/src/components/structures/RoomView.js
+++ b/src/components/structures/RoomView.js
@@ -729,8 +729,8 @@ module.exports = React.createClass({
return;
}
- const joinedMembers = room.currentState.getMembers().filter((m) => m.membership === "join" || m.membership === "invite");
- this.setState({isAlone: joinedMembers.length === 1});
+ const joinedOrInvitedMemberCount = room.getJoinedMemberCount() + room.getInvitedMemberCount();
+ this.setState({isAlone: joinedOrInvitedMemberCount === 1});
},
_updateConfCallNotification: function() {
From 3b0b836637aa42ef22de4fb8b4c294cd24113a1c Mon Sep 17 00:00:00 2001
From: David Baker
Date: Wed, 22 Aug 2018 17:54:02 +0100
Subject: [PATCH 176/343] Change format of server usage limit message
As per https://github.com/matrix-org/matrix-doc/issues/1452 /
https://github.com/matrix-org/synapse/pull/3680/
---
src/components/structures/LoggedInView.js | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/src/components/structures/LoggedInView.js b/src/components/structures/LoggedInView.js
index 2bc6522232..0c4688a411 100644
--- a/src/components/structures/LoggedInView.js
+++ b/src/components/structures/LoggedInView.js
@@ -434,7 +434,10 @@ const LoggedInView = React.createClass({
}
const usageLimitEvent = this.state.serverNoticeEvents.find((e) => {
- return e && e.getType() === 'm.server_notice.usage_limit_reached';
+ return (
+ e && e.getType() === 'm.room.message' &&
+ e.getContent()['server_notice_type'] === 'm.server_notice.usage_limit_reached'
+ );
});
let topBar;
From 37e60e4fc46e1e4b4446b18d34e678fd901a3516 Mon Sep 17 00:00:00 2001
From: Bruno Windels
Date: Thu, 23 Aug 2018 00:02:20 +0200
Subject: [PATCH 177/343] wait for members loading to finish to show the avatar
in the composer
---
src/components/views/rooms/MessageComposer.js | 30 +++++++++++++++----
1 file changed, 24 insertions(+), 6 deletions(-)
diff --git a/src/components/views/rooms/MessageComposer.js b/src/components/views/rooms/MessageComposer.js
index a7e02d16ae..eccdfe17af 100644
--- a/src/components/views/rooms/MessageComposer.js
+++ b/src/components/views/rooms/MessageComposer.js
@@ -71,6 +71,23 @@ export default class MessageComposer extends React.Component {
// XXX: fragile as all hell - fixme somehow, perhaps with a dedicated Room.encryption event or something.
MatrixClientPeg.get().on("event", this.onEvent);
this._roomStoreToken = RoomViewStore.addListener(this._onRoomViewStoreUpdate);
+ this._waitForOwnMember();
+ }
+
+ _waitForOwnMember() {
+ // if we have the member already, do that
+ const me = this.props.room.getMember(MatrixClientPeg.get().getUserId());
+ if (me) {
+ this.setState({me});
+ return;
+ }
+ // Otherwise, wait for member loading to finish and then update the member for the avatar.
+ // The members should already be loading, and loadMembersIfNeeded
+ // will return the promise for the existing operation
+ this.props.room.loadMembersIfNeeded().then(() => {
+ const me = this.props.room.getMember(MatrixClientPeg.get().getUserId());
+ this.setState({me});
+ });
}
componentWillUnmount() {
@@ -208,7 +225,6 @@ export default class MessageComposer extends React.Component {
}
render() {
- const me = this.props.room.getMember(MatrixClientPeg.get().credentials.userId);
const uploadInputStyle = {display: 'none'};
const MemberAvatar = sdk.getComponent('avatars.MemberAvatar');
const TintableSvg = sdk.getComponent("elements.TintableSvg");
@@ -216,11 +232,13 @@ export default class MessageComposer extends React.Component {
const controls = [];
- controls.push(
-
-
-
,
- );
+ if (this.state.me) {
+ controls.push(
+
+
+
,
+ );
+ }
let e2eImg, e2eTitle, e2eClass;
const roomIsEncrypted = MatrixClientPeg.get().isRoomEncrypted(this.props.room.roomId);
From 99b020b4b0eb101fa47314ce3939dc340d2d9076 Mon Sep 17 00:00:00 2001
From: Slavi Pantaleev
Date: Wed, 22 Aug 2018 17:31:12 +0000
Subject: [PATCH 178/343] Translated using Weblate (Bulgarian)
Currently translated at 100.0% (1236 of 1236 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/bg/
---
src/i18n/strings/bg.json | 22 +++++++++++++++++++++-
1 file changed, 21 insertions(+), 1 deletion(-)
diff --git a/src/i18n/strings/bg.json b/src/i18n/strings/bg.json
index 3e8d2368e1..2e6e680a7b 100644
--- a/src/i18n/strings/bg.json
+++ b/src/i18n/strings/bg.json
@@ -1233,5 +1233,25 @@
"This homeserver has hit its Monthly Active User limit. Please contact your service administrator to continue using the service.": "Този сървър достигна лимита си за активни потребители на месец. Моля, свържете се с администратора на услугата, за да продължите да я използвате.",
"This homeserver has hit its Monthly Active User limit so some users will not be able to log in. Please contact your service administrator to get this limit increased.": "Този сървър достигна лимита си за активни потребители на месец и някои потребители няма да успеят да влязат в профила си. Моля, свържете се с администратора на услугата за да се увеличи този лимит.",
"There is a known vulnerability affecting this room.": "Има пропуск в сигурността засягащ тази стая.",
- "This room version is vulnerable to malicious modification of room state.": "Тази версия на стаята е уязвима към злонамерена модификация на състоянието й."
+ "This room version is vulnerable to malicious modification of room state.": "Тази версия на стаята е уязвима към злонамерена модификация на състоянието й.",
+ "Click here to upgrade to the latest room version and ensure room integrity is protected.": "Кликнете тук за да обновите стаята до последна версия и подсигурите сигурността й.",
+ "Only room administrators will see this warning": "Само администратори на стаята виждат това предупреждение",
+ "Please contact your service administrator to continue using the service.": "Моля, свържете се с администратора на услугата за да продължите да я използвате.",
+ "This homeserver has hit its Monthly Active User limit.": "Този сървър е достигнал лимита си за активни потребители на месец.",
+ "This homeserver has exceeded one of its resource limits.": "Този сървър е надвишил някой от лимитите си.",
+ "Please contact your service administrator to get this limit increased.": "Моля, свържете се с администратора на услугата за да се увеличи този лимит.",
+ "This homeserver has hit its Monthly Active User limit so some users will not be able to log in.": "Този сървър е достигнал своя лимит за потребители на месец, така че някои потребители не биха успели да влязат.",
+ "This homeserver has exceeded one of its resource limits so some users will not be able to log in.": "Този сървър е достигнал някой от лимите си, така че някои потребители не биха успели да влязат.",
+ "Upgrade Room Version": "Обнови версията на стаята",
+ "Upgrading this room requires closing down the current instance of the room and creating a new room it its place. To give room members the best possible experience, we will:": "Обновяването на тази стая изисква затваряне на текущата и създаване на нова на нейно място. За да подсигурим най-доброто изживяване на потребителите, ще:",
+ "Create a new room with the same name, description and avatar": "Създадем нова стая със същото име, описание и снимка",
+ "Update any local room aliases to point to the new room": "Обновим всички локални адреси на стаята да сочат към новата",
+ "Stop users from speaking in the old version of the room, and post a message advising users to move to the new room": "Забраним комуникацията на потребителите в старата стая и публикуваме съобщение насочващо ги към новата",
+ "Put a link back to the old room at the start of the new room so people can see old messages": "Поставим връзка в новата стая, водещо обратно към старата, за да може хората да виждат старите съобщения",
+ "Your message wasn't sent because this homeserver has hit its Monthly Active User Limit. Please contact your service administrator to continue using the service.": "Съобщението Ви не бе изпратено, защото този сървър е достигнал лимита си за потребители на месец. Моля, свържете се с администратора на услугата за да продължите да я използвате.",
+ "Your message wasn't sent because this homeserver has exceeded a resource limit. Please contact your service administrator to continue using the service.": "Съобщението Ви не бе изпратено, защото този сървър е някой от лимитите си. Моля, свържете се с администратора на услугата за да продължите да я използвате.",
+ "Please contact your service administrator to continue using this service.": "Моля, свържете се с администратора на услугата за да продължите да я използвате.",
+ "Increase performance by only loading room members on first view": "Повишаване на бързодействието чрез отложено зареждане на членовете в стаите",
+ "Lazy loading members not supported": "Отложеното зареждане на членовете не се поддържа",
+ "Lazy loading is not supported by your current homeserver.": "Отложеното зареждане на членовете не се поддържа от текущия сървър."
}
From f2821d6e763cce00cf2df6df5da3a9f7ca3d197e Mon Sep 17 00:00:00 2001
From: csybr
Date: Wed, 22 Aug 2018 21:50:01 +0000
Subject: [PATCH 179/343] Translated using Weblate (Norwegian Nynorsk)
Currently translated at 98.7% (1220 of 1236 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/nn/
---
src/i18n/strings/nn.json | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/i18n/strings/nn.json b/src/i18n/strings/nn.json
index 95183cad2d..c8c9dacd95 100644
--- a/src/i18n/strings/nn.json
+++ b/src/i18n/strings/nn.json
@@ -337,9 +337,9 @@
"Kick this user?": "Spark denne brukaren ut?",
"Failed to kick": "Fekk ikkje til å sparka ut",
"Unban": "Slepp inn att",
- "Ban": "Utesteng",
+ "Ban": "Steng ute",
"Unban this user?": "Slepp denne brukaren inn att?",
- "Ban this user?": "Utesteng denne brukaren?",
+ "Ban this user?": "Steng denne brukaren ute?",
"Failed to ban user": "Fekk ikkje til å utestenga brukar",
"Demote yourself?": "Senk høgda di?",
"You will not be able to undo this change as you are demoting yourself, if you are the last privileged user in the room it will be impossible to regain privileges.": "Du kan ikkje gjera om på denne endringa sidan du senkar høgda di. Viss du er den siste opphøgda brukaren i rommet vert det umogeleg å få høgda att.",
@@ -356,7 +356,7 @@
"Mention": "Nemn",
"Invite": "Byd inn",
"Enable inline URL previews by default": "Skru URL-førehandsvisingar i tekstfeltet på",
- "Share Link to User": "Del Lenkje til Brukar",
+ "Share Link to User": "Del Brukarlenkje",
"User Options": "Brukarinnstillingar",
"Direct chats": "Direktesamtaler",
"Unmute": "Fjern stilning",
From f1e1553ef50d22258de12aecbca3fcf33d2f6b5e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?K=C3=A9vin=20C?=
Date: Thu, 23 Aug 2018 09:02:54 +0000
Subject: [PATCH 180/343] Translated using Weblate (French)
Currently translated at 100.0% (1228 of 1228 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/fr/
---
src/i18n/strings/fr.json | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/i18n/strings/fr.json b/src/i18n/strings/fr.json
index d94a32258d..9894e4073a 100644
--- a/src/i18n/strings/fr.json
+++ b/src/i18n/strings/fr.json
@@ -1253,5 +1253,7 @@
"Please contact your service administrator to continue using this service.": "Veuillez contacter l'administrateur de votre service pour continuer à l'utiliser.",
"Increase performance by only loading room members on first view": "Améliorer les performances en ne chargeant les participants des salons qu'au premier affichage",
"Lazy loading members not supported": "La chargement différé des participants n'est pas pris en charge",
- "Lazy loading is not supported by your current homeserver.": "Le chargement différé n'est pas pris en charge par votre serveur d'accueil actuel."
+ "Lazy loading is not supported by your current homeserver.": "Le chargement différé n'est pas pris en charge par votre serveur d'accueil actuel.",
+ "Sorry, your homeserver is too old to participate in this room.": "Désolé, votre serveur d'accueil est trop vieux pour participer à ce salon.",
+ "Please contact your homeserver administrator.": "Veuillez contacter l'administrateur de votre serveur d'accueil."
}
From 54620591ccc8026de15f41f75740b6e795a04418 Mon Sep 17 00:00:00 2001
From: David Baker
Date: Thu, 23 Aug 2018 12:05:09 +0100
Subject: [PATCH 181/343] Don't crash if the value of a room tag is null
We were checking that the order was not null, but not the object
itself.
---
src/stores/RoomListStore.js | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/stores/RoomListStore.js b/src/stores/RoomListStore.js
index 0a0a39a450..6571e1590f 100644
--- a/src/stores/RoomListStore.js
+++ b/src/stores/RoomListStore.js
@@ -284,8 +284,8 @@ class RoomListStore extends Store {
if (optimisticRequest && roomB === optimisticRequest.room) metaB = optimisticRequest.metaData;
// Make sure the room tag has an order element, if not set it to be the bottom
- const a = metaA.order;
- const b = metaB.order;
+ const a = metaA ? metaA.order : undefined;
+ const b = metaB ? metaB.order : undefined;
// Order undefined room tag orders to the bottom
if (a === undefined && b !== undefined) {
From cb84feefa928e5d8f5c98724844d3e327d50132e Mon Sep 17 00:00:00 2001
From: David Baker
Date: Thu, 23 Aug 2018 12:14:52 +0100
Subject: [PATCH 182/343] Add stub for getVisibleRooms()
Fixes the tests
---
test/components/views/rooms/RoomList-test.js | 1 +
test/test-utils.js | 1 +
2 files changed, 2 insertions(+)
diff --git a/test/components/views/rooms/RoomList-test.js b/test/components/views/rooms/RoomList-test.js
index 1e9f80f161..fbb2dd4af9 100644
--- a/test/components/views/rooms/RoomList-test.js
+++ b/test/components/views/rooms/RoomList-test.js
@@ -94,6 +94,7 @@ describe('RoomList', () => {
createRoom({tags: {'m.lowpriority': {}}, name: 'Some unimportant room'}),
createRoom({tags: {'custom.tag': {}}, name: 'Some room customly tagged'}),
];
+ client.getVisibleRooms = client.getRooms;
const roomMap = {};
client.getRooms().forEach((r) => {
diff --git a/test/test-utils.js b/test/test-utils.js
index 25df9686ff..ef864bf9e0 100644
--- a/test/test-utils.js
+++ b/test/test-utils.js
@@ -74,6 +74,7 @@ export function createTestClient() {
getPushActionsForEvent: sinon.stub(),
getRoom: sinon.stub().returns(mkStubRoom()),
getRooms: sinon.stub().returns([]),
+ getVisibleRooms: sinon.stub().returns([]),
getGroups: sinon.stub().returns([]),
loginFlows: sinon.stub(),
on: sinon.stub(),
From 1488417c3e8f9f91a4db18616d73c1a75471405f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Peter=20V=C3=A1gner?=
Date: Thu, 23 Aug 2018 12:11:11 +0000
Subject: [PATCH 183/343] Translated using Weblate (Slovak)
Currently translated at 100.0% (1228 of 1228 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/sk/
---
src/i18n/strings/sk.json | 19 ++++++++++++++++++-
1 file changed, 18 insertions(+), 1 deletion(-)
diff --git a/src/i18n/strings/sk.json b/src/i18n/strings/sk.json
index a343c44066..4da149b5f1 100644
--- a/src/i18n/strings/sk.json
+++ b/src/i18n/strings/sk.json
@@ -1222,5 +1222,22 @@
"numbered-list": "Číselný zoznam",
"Failed to remove widget": "Nepodarilo sa odstrániť widget",
"An error ocurred whilst trying to remove the widget from the room": "Pri odstraňovaní widgetu z miestnosti sa vyskytla chyba",
- "You can't send any messages until you review and agree to our terms and conditions.": "Nemôžete posielať žiadne správy, kým si neprečítate a neodsúhlasíte naše zmluvné podmienky."
+ "You can't send any messages until you review and agree to our terms and conditions.": "Nemôžete posielať žiadne správy, kým si neprečítate a neodsúhlasíte naše zmluvné podmienky.",
+ "Sorry, your homeserver is too old to participate in this room.": "Prepáčte, nie je možné prijímať a odosielať do tejto miestnosti, pretože váš domovský server je zastaralý.",
+ "Please contact your homeserver administrator.": "Prosím, kontaktujte správcu domovského servera.",
+ "Increase performance by only loading room members on first view": "Zvýšiť výkon načítaním zoznamu členov pri prvom zobrazení",
+ "System Alerts": "Systémové upozornenia",
+ "Internal room ID: ": "Interné ID miestnosti: ",
+ "Room version number: ": "Číslo verzie miestnosti: ",
+ "Please contact your service administrator to continue using the service.": "Prosím, kontaktujte správcu služieb aby ste službu mohli naďalej používať.",
+ "This homeserver has hit its Monthly Active User limit.": "Bol dosiahnutý mesačný limit počtu aktívnych používateľov tohoto domovského servera.",
+ "This homeserver has exceeded one of its resource limits.": "Bol prekročený limit využitia prostriedkov pre tento domovský server.",
+ "Please contact your service administrator to get this limit increased.": "Prosím, kontaktujte správcu služieb a pokúste sa tento limit navýšiť.",
+ "This homeserver has hit its Monthly Active User limit so some users will not be able to log in.": "Bol dosiahnutý mesačný limit počtu aktívnych používateľov a niektorí používatelia sa nebudú môcť prihlásiť.",
+ "This homeserver has exceeded one of its resource limits so some users will not be able to log in.": "Bol prekročený limit využitia prostriedkov pre tento domovský server a niektorí používatelia sa nebudú môcť prihlásiť.",
+ "Your message wasn't sent because this homeserver has hit its Monthly Active User Limit. Please contact your service administrator to continue using the service.": "Vaša správa nebola odoslaná, pretože bol dosiahnutý mesačný limit počtu aktívnych používateľov tohoto domovského servera. Prosím, kontaktujte správcu služieb aby ste službu mohli naďalej používať.",
+ "Your message wasn't sent because this homeserver has exceeded a resource limit. Please contact your service administrator to continue using the service.": "Vaša správa nebola odoslaná, pretože bol prekročený limit prostriedkov tohoto domovského servera. Prosím, kontaktujte správcu služieb aby ste službu mohli naďalej používať.",
+ "Lazy loading members not supported": "Načítanie zoznamu členov pri prvom zobrazení nie je podporované",
+ "Lazy loading is not supported by your current homeserver.": "Oneskorené načítanie nepodporuje váš domovský server.",
+ "Please contact your service administrator to continue using this service.": "Prosím, kontaktujte správcu služieb aby ste mohli službu ďalej používať."
}
From 58701d26ae5790f5c44645e8daf338c9dd4526e2 Mon Sep 17 00:00:00 2001
From: Jeff Huang
Date: Thu, 23 Aug 2018 13:17:56 +0000
Subject: [PATCH 184/343] Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (1228 of 1228 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/zh_Hant/
---
src/i18n/strings/zh_Hant.json | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/src/i18n/strings/zh_Hant.json b/src/i18n/strings/zh_Hant.json
index 3a7d08fb8a..ad4a01fca0 100644
--- a/src/i18n/strings/zh_Hant.json
+++ b/src/i18n/strings/zh_Hant.json
@@ -1252,6 +1252,8 @@
"Your message wasn't sent because this homeserver has exceeded a resource limit. Please contact your service administrator to continue using the service.": "您的訊息未傳送,因為其家伺服器已超過一項資源限制。請聯絡您的服務管理員以繼序使用服務。",
"Please contact your service administrator to continue using this service.": "請聯絡您的服務管理員以繼續使用此服務。",
"Increase performance by only loading room members on first view": "透過僅在第一次檢視時載入聊天室成員來增加效能",
- "Lazy loading members not supported": "不支援延持載入成員",
- "Lazy loading is not supported by your current homeserver.": "您目前的家伺服器不支援延遲載入。"
+ "Lazy loading members not supported": "不支援延遲載入成員",
+ "Lazy loading is not supported by your current homeserver.": "您目前的家伺服器不支援延遲載入。",
+ "Sorry, your homeserver is too old to participate in this room.": "抱歉,您的家伺服器太舊了,所以無法參與此聊天室。",
+ "Please contact your homeserver administrator.": "請聯絡您的家伺服器的管理員。"
}
From e3afbb157da2ad494b0910ec5660ca601b0bc3fd Mon Sep 17 00:00:00 2001
From: David Baker
Date: Thu, 23 Aug 2018 12:05:09 +0100
Subject: [PATCH 185/343] Don't crash if the value of a room tag is null
We were checking that the order was not null, but not the object
itself.
---
src/stores/RoomListStore.js | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/stores/RoomListStore.js b/src/stores/RoomListStore.js
index 5b38792678..4cc4e048df 100644
--- a/src/stores/RoomListStore.js
+++ b/src/stores/RoomListStore.js
@@ -284,8 +284,8 @@ class RoomListStore extends Store {
if (optimisticRequest && roomB === optimisticRequest.room) metaB = optimisticRequest.metaData;
// Make sure the room tag has an order element, if not set it to be the bottom
- const a = metaA.order;
- const b = metaB.order;
+ const a = metaA ? metaA.order : undefined;
+ const b = metaB ? metaB.order : undefined;
// Order undefined room tag orders to the bottom
if (a === undefined && b !== undefined) {
From 3192ecca7aa39d2e5d880206a8a9514a54146358 Mon Sep 17 00:00:00 2001
From: David Baker
Date: Thu, 23 Aug 2018 15:25:32 +0100
Subject: [PATCH 186/343] Prepare changelog for v0.13.2
---
CHANGELOG.md | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index a3edbce2dd..f668ca3f97 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,10 @@
+Changes in [0.13.2](https://github.com/matrix-org/matrix-react-sdk/releases/tag/v0.13.2) (2018-08-23)
+=====================================================================================================
+[Full Changelog](https://github.com/matrix-org/matrix-react-sdk/compare/v0.13.1...v0.13.2)
+
+ * Don't crash if the value of a room tag is null
+ [\#2135](https://github.com/matrix-org/matrix-react-sdk/pull/2135)
+
Changes in [0.13.1](https://github.com/matrix-org/matrix-react-sdk/releases/tag/v0.13.1) (2018-08-20)
=====================================================================================================
[Full Changelog](https://github.com/matrix-org/matrix-react-sdk/compare/v0.13.1-rc.1...v0.13.1)
From 04d1ba26372bddc76af39580ce25d865b12a87af Mon Sep 17 00:00:00 2001
From: David Baker
Date: Thu, 23 Aug 2018 15:25:33 +0100
Subject: [PATCH 187/343] v0.13.2
---
package.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/package.json b/package.json
index f0a6004366..1bdced5caf 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "matrix-react-sdk",
- "version": "0.13.1",
+ "version": "0.13.2",
"description": "SDK for matrix.org using React",
"author": "matrix.org",
"repository": {
From b468ffea635f2cc5e0fad0b0ca87ad74927f2ca4 Mon Sep 17 00:00:00 2001
From: Szimszon
Date: Thu, 23 Aug 2018 18:29:26 +0000
Subject: [PATCH 188/343] Translated using Weblate (Hungarian)
Currently translated at 100.0% (1228 of 1228 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/hu/
---
src/i18n/strings/hu.json | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/i18n/strings/hu.json b/src/i18n/strings/hu.json
index 5334fba225..f94d9fc9fb 100644
--- a/src/i18n/strings/hu.json
+++ b/src/i18n/strings/hu.json
@@ -1253,5 +1253,7 @@
"Please contact your service administrator to continue using this service.": "A szolgáltatás további használatához kérlek vedd fel a kapcsolatot a szolgáltatás adminisztrátorával.",
"Increase performance by only loading room members on first view": "A teljesítmény növelése érdekében a szoba tagsága csak az első megtekintéskor töltődik be",
"Lazy loading members not supported": "A tagok késleltetett betöltése nem támogatott",
- "Lazy loading is not supported by your current homeserver.": "A késleltetett betöltés nem támogatott ennél a Matrix szervernél."
+ "Lazy loading is not supported by your current homeserver.": "A késleltetett betöltés nem támogatott ennél a Matrix szervernél.",
+ "Sorry, your homeserver is too old to participate in this room.": "Sajnáljuk, a Matrix szervered nem elég friss ahhoz, hogy részt vegyen ebben a szobában.",
+ "Please contact your homeserver administrator.": "Kérlek vedd fel a kapcsolatot a Matrix szerver adminisztrátorával."
}
From 6c3ca166f04a37053a908e8202a4f45d66f4c0c3 Mon Sep 17 00:00:00 2001
From: cocker-cc
Date: Thu, 23 Aug 2018 17:49:35 +0000
Subject: [PATCH 189/343] Translated using Weblate (German)
Currently translated at 99.9% (1227 of 1228 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/de/
---
src/i18n/strings/de_DE.json | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json
index 4d9bd7e882..e5cb0de3d9 100644
--- a/src/i18n/strings/de_DE.json
+++ b/src/i18n/strings/de_DE.json
@@ -442,7 +442,7 @@
"You can also set a custom identity server but this will typically prevent interaction with users based on email address.": "Du kannst auch einen angepassten Idantitätsserver angeben aber dies wird typischerweise Interaktionen mit anderen Nutzern auf Basis der E-Mail-Adresse verhindern.",
"Please check your email to continue registration.": "Bitte prüfe deine E-Mails, um mit der Registrierung fortzufahren.",
"Token incorrect": "Token fehlerhaft",
- "Please enter the code it contains:": "Bitte gebe den Code ein, den sie enthält:",
+ "Please enter the code it contains:": "Bitte gib den darin enthaltenen Code ein:",
"powered by Matrix": "betrieben mit Matrix",
"If you don't specify an email address, you won't be able to reset your password. Are you sure?": "Wenn du keine E-Mail-Adresse angibst, wirst du nicht in der Lage sein, dein Passwort zurückzusetzen. Bist du sicher?",
"You are registering with %(SelectedTeamName)s": "Du registrierst dich mit %(SelectedTeamName)s",
@@ -1221,7 +1221,7 @@
"numbered-list": "Liste mit Nummern",
"Failed to remove widget": "Widget konnte nicht entfernt werden",
"An error ocurred whilst trying to remove the widget from the room": "Ein Fehler trat auf, während versucht wurde das Widget aus diesem Raum zu entfernen",
- "inline-code": "Quellcode im Satz",
+ "inline-code": "Quellcode in der Zeile",
"block-quote": "Quellcode im Block",
"This homeserver has hit its Monthly Active User limit": "Dieser Heimserver hat sein Limit für monatlich aktive Nutzer erreicht",
"Please contact your service administrator to continue using this service.": "Bitte kontaktiere deinen Administrator um diesen Dienst weiter zu nutzen.",
@@ -1253,5 +1253,7 @@
"Please contact your service administrator to continue using this service.": "Bitte kontaktiere deinen Systemadministrator um diesen Dienst weiter zu nutzen.",
"Increase performance by only loading room members on first view": "Verbessere Performanz, indem Raum-Mitglieder erst beim ersten Ansehen geladen werden",
"Lazy loading members not supported": "Verzögertes Laden von Mitgliedern nicht unterstützt",
- "Lazy loading is not supported by your current homeserver.": "Verzögertes Laden wird von deinem aktuellen Heimserver."
+ "Lazy loading is not supported by your current homeserver.": "Verzögertes Laden wird von deinem aktuellen Heimserver.",
+ "Sorry, your homeserver is too old to participate in this room.": "Sorry, dein Homeserver ist zu alt, um an diesem Raum teilzunehmen.",
+ "Please contact your homeserver administrator.": "Bitte setze dich mit dem Administrator deines Homeservers in Verbindung."
}
From 58450b6b0fdf1ec59a8fc2235d326206c76a0e32 Mon Sep 17 00:00:00 2001
From: Slavi Pantaleev
Date: Fri, 24 Aug 2018 05:57:18 +0000
Subject: [PATCH 190/343] Translated using Weblate (Bulgarian)
Currently translated at 100.0% (1228 of 1228 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/bg/
---
src/i18n/strings/bg.json | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/src/i18n/strings/bg.json b/src/i18n/strings/bg.json
index 2e6e680a7b..c13d166c69 100644
--- a/src/i18n/strings/bg.json
+++ b/src/i18n/strings/bg.json
@@ -1252,6 +1252,8 @@
"Your message wasn't sent because this homeserver has exceeded a resource limit. Please contact your service administrator to continue using the service.": "Съобщението Ви не бе изпратено, защото този сървър е някой от лимитите си. Моля, свържете се с администратора на услугата за да продължите да я използвате.",
"Please contact your service administrator to continue using this service.": "Моля, свържете се с администратора на услугата за да продължите да я използвате.",
"Increase performance by only loading room members on first view": "Повишаване на бързодействието чрез отложено зареждане на членовете в стаите",
- "Lazy loading members not supported": "Отложеното зареждане на членовете не се поддържа",
- "Lazy loading is not supported by your current homeserver.": "Отложеното зареждане на членовете не се поддържа от текущия сървър."
+ "Lazy loading members not supported": "Отложеното зареждане на членове не се поддържа",
+ "Lazy loading is not supported by your current homeserver.": "Отложеното зареждане на членовете не се поддържа от текущия сървър.",
+ "Sorry, your homeserver is too old to participate in this room.": "Съжаляваме, вашият сървър е прекалено стар за да участва в тази стая.",
+ "Please contact your homeserver administrator.": "Моля, свържете се се със сървърния администратор."
}
From 18ed6eb63c3075efeda709505b77615c7d8c0544 Mon Sep 17 00:00:00 2001
From: David Baker
Date: Fri, 24 Aug 2018 11:35:21 +0100
Subject: [PATCH 191/343] Rener terms & conditions in settings
If configured in config file
---
src/components/structures/UserSettings.js | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)
diff --git a/src/components/structures/UserSettings.js b/src/components/structures/UserSettings.js
index f4dc92aca4..ea700272b6 100644
--- a/src/components/structures/UserSettings.js
+++ b/src/components/structures/UserSettings.js
@@ -921,6 +921,25 @@ module.exports = React.createClass({
;
},
+ _renderTermsAndConditionsLinks: function() {
+ if (SdkConfig.get().terms_and_conditions_links) {
+ const tncLinks = [];
+ for (const tncEntry of SdkConfig.get().terms_and_conditions_links) {
+ tncLinks.push(
diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json
index b560c7e71b..2371ba0ca6 100644
--- a/src/i18n/strings/en_EN.json
+++ b/src/i18n/strings/en_EN.json
@@ -1117,6 +1117,7 @@
"Lazy loading members not supported": "Lazy loading members not supported",
"Lazy loading is not supported by your current homeserver.": "Lazy loading is not supported by your current homeserver.",
"Deactivate my account": "Deactivate my account",
+ "Legal": "Legal",
"Clear Cache": "Clear Cache",
"Clear Cache and Reload": "Clear Cache and Reload",
"Updates": "Updates",
From 88207716003d11791da03f29e8d35e0ef78fc6e5 Mon Sep 17 00:00:00 2001
From: Krombel
Date: Thu, 23 Aug 2018 21:06:37 +0000
Subject: [PATCH 193/343] Translated using Weblate (German)
Currently translated at 100.0% (1228 of 1228 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/de/
---
src/i18n/strings/de_DE.json | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json
index e5cb0de3d9..e2f2b64401 100644
--- a/src/i18n/strings/de_DE.json
+++ b/src/i18n/strings/de_DE.json
@@ -260,7 +260,7 @@
"%(senderName)s made future room history visible to all room members, from the point they joined.": "%(senderName)s hat den zukünftigen Chatverlauf sichtbar gemacht für alle Raum-Mitglieder (ab dem Zeitpunkt, an dem sie beigetreten sind).",
"%(senderName)s made future room history visible to all room members.": "%(senderName)s hat den zukünftigen Chatverlauf sichtbar gemacht für: Alle Raum-Mitglieder.",
"%(senderName)s made future room history visible to anyone.": "%(senderName)s hat den zukünftigen Chatverlauf sichtbar gemacht für Alle.",
- "%(senderName)s made future room history visible to unknown (%(visibility)s).": "%(senderName)s hat den zukünftigen Chatverlauf sichtbar gemacht für unbekannt (%(visibility)s).",
+ "%(senderName)s made future room history visible to unknown (%(visibility)s).": "%(senderName)s hat den zukünftigen Chatverlauf für Unbekannte sichtbar gemacht (%(visibility)s).",
"Missing room_id in request": "Fehlende room_id in Anfrage",
"Missing user_id in request": "Fehlende user_id in Anfrage",
"(not supported by this browser)": "(wird von diesem Browser nicht unterstützt)",
@@ -1149,7 +1149,7 @@
"Always show encryption icons": "Immer Verschlüsselungssymbole zeigen",
"At this time it is not possible to reply with a file so this will be sent without being a reply.": "Aktuell ist es nicht möglich mit einer Datei zu antworten, sodass diese gesendet wird ohne eine Antwort zu sein.",
"Unable to reply": "Antworten nicht möglich",
- "Unable to load event that was replied to, it either does not exist or you do not have permission to view it.": "Das Ereignis auf das geantwortet wurde könnte nicht geladen werden, da es entweder nicht existiert oder du keine Berechtigung hast, dieses anzusehen.",
+ "Unable to load event that was replied to, it either does not exist or you do not have permission to view it.": "Das Ereignis auf das geantwortet wurde konnte nicht geladen werden. Entweder es existiert nicht oder du hast keine Berechtigung, dieses anzusehen.",
"Riot bugs are tracked on GitHub: create a GitHub issue.": "Riot-Fehler werden auf GitHub festgehalten: Erzeuge ein GitHub-Issue.",
"Log out and remove encryption keys?": "Abmelden und alle Verschlüsselungs-Schlüssel löschen?",
"Send Logs": "Sende Protokoll",
From d2bfaca9a54b65de3cd9a84f5448388ceb47c0b0 Mon Sep 17 00:00:00 2001
From: Bamstam
Date: Fri, 24 Aug 2018 10:55:29 +0000
Subject: [PATCH 194/343] Translated using Weblate (German)
Currently translated at 100.0% (1228 of 1228 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/de/
---
src/i18n/strings/de_DE.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json
index e2f2b64401..19ac865bca 100644
--- a/src/i18n/strings/de_DE.json
+++ b/src/i18n/strings/de_DE.json
@@ -839,7 +839,7 @@
"%(severalUsers)schanged their avatar %(count)s times|one": "%(severalUsers)shaben das Profilbild geändert",
"%(oneUser)schanged their avatar %(count)s times|other": "%(oneUser)shat das Profilbild %(count)s-mal geändert",
"%(oneUser)schanged their avatar %(count)s times|one": "%(oneUser)shat das Profilbild geändert",
- "%(names)s and %(count)s others are typing|one": "%(names)s und eine weitere Person schreiben",
+ "%(names)s and %(count)s others are typing|one": "%(names)s und noch jemand schreiben",
"Disinvite this user?": "Einladung für diesen Benutzer zurückziehen?",
"Kick this user?": "Diesen Benutzer kicken?",
"Unban this user?": "Verbannung für diesen Benutzer aufheben?",
From 04c0dd95261a3f30536f5b8d2552f2e368fa370c Mon Sep 17 00:00:00 2001
From: Slavi Pantaleev
Date: Fri, 24 Aug 2018 05:58:07 +0000
Subject: [PATCH 195/343] Translated using Weblate (Bulgarian)
Currently translated at 100.0% (1228 of 1228 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/bg/
---
src/i18n/strings/bg.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/i18n/strings/bg.json b/src/i18n/strings/bg.json
index c13d166c69..ed0d372043 100644
--- a/src/i18n/strings/bg.json
+++ b/src/i18n/strings/bg.json
@@ -1253,7 +1253,7 @@
"Please contact your service administrator to continue using this service.": "Моля, свържете се с администратора на услугата за да продължите да я използвате.",
"Increase performance by only loading room members on first view": "Повишаване на бързодействието чрез отложено зареждане на членовете в стаите",
"Lazy loading members not supported": "Отложеното зареждане на членове не се поддържа",
- "Lazy loading is not supported by your current homeserver.": "Отложеното зареждане на членовете не се поддържа от текущия сървър.",
+ "Lazy loading is not supported by your current homeserver.": "Отложеното зареждане не се поддържа от текущия сървър.",
"Sorry, your homeserver is too old to participate in this room.": "Съжаляваме, вашият сървър е прекалено стар за да участва в тази стая.",
"Please contact your homeserver administrator.": "Моля, свържете се се със сървърния администратор."
}
From 69cd499e280a3eafa0ee6dffcb632d28629c51c5 Mon Sep 17 00:00:00 2001
From: Nikolas
Date: Fri, 24 Aug 2018 10:57:12 +0000
Subject: [PATCH 196/343] Translated using Weblate (German)
Currently translated at 100.0% (1228 of 1228 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/de/
---
src/i18n/strings/de_DE.json | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json
index 19ac865bca..6a85edeb31 100644
--- a/src/i18n/strings/de_DE.json
+++ b/src/i18n/strings/de_DE.json
@@ -929,9 +929,9 @@
"Warning": "Warnung",
"Data from an older version of Riot has been detected. This will have caused end-to-end cryptography to malfunction in the older version. End-to-end encrypted messages exchanged recently whilst using the older version may not be decryptable in this version. This may also cause messages exchanged with this version to fail. If you experience problems, log out and back in again. To retain message history, export and re-import your keys.": "Es wurden Daten von einer älteren Version von Riot entdeckt. Dies wird zu Fehlern in der Ende-zu-Ende-Verschlüsselung der älteren Version geführt haben. Ende-zu-Ende verschlüsselte Nachrichten, die ausgetauscht wruden, während die ältere Version genutzt wurde, werden in dieser Version nicht entschlüsselbar sein. Es kann auch zu Fehlern mit Nachrichten führen, die mit dieser Version versendet werden. Wenn du Probleme feststellst, melde dich ab und wieder an. Um die Historie zu behalten, ex- und reimportiere deine Schlüssel.",
"Send an encrypted reply…": "Verschlüsselte Antwort senden…",
- "Send a reply (unencrypted)…": "Antwort senden (unverschlüsselt)…",
+ "Send a reply (unencrypted)…": "Unverschlüsselte Antwort senden…",
"Send an encrypted message…": "Verschlüsselte Nachricht senden…",
- "Send a message (unencrypted)…": "Nachricht senden (unverschlüsselt)…",
+ "Send a message (unencrypted)…": "Unverschlüsselte Nachricht senden…",
"Replying": "Antwortet",
"Minimize apps": "Apps minimieren",
"%(count)s of your messages have not been sent.|one": "Deine Nachricht wurde nicht gesendet.",
From 06a2942afeae2bdf9eb58c6b91bcb60284dd34f0 Mon Sep 17 00:00:00 2001
From: csybr
Date: Fri, 24 Aug 2018 11:22:45 +0000
Subject: [PATCH 197/343] Translated using Weblate (Norwegian Nynorsk)
Currently translated at 99.1% (1217 of 1228 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/nn/
---
src/i18n/strings/nn.json | 20 ++++++++++----------
1 file changed, 10 insertions(+), 10 deletions(-)
diff --git a/src/i18n/strings/nn.json b/src/i18n/strings/nn.json
index c8c9dacd95..805143c2a3 100644
--- a/src/i18n/strings/nn.json
+++ b/src/i18n/strings/nn.json
@@ -411,13 +411,13 @@
"%(duration)sm": "%(duration)sm",
"%(duration)sh": "%(duration)st",
"%(duration)sd": "%(duration)sd",
- "Online for %(duration)s": "På nett i %(duration)s",
+ "Online for %(duration)s": "tilkopla i %(duration)s",
"Idle for %(duration)s": "Fråverande i %(duration)s",
- "Offline for %(duration)s": "Av nett i %(duration)s",
+ "Offline for %(duration)s": "Fråkopla i %(duration)s",
"Unknown for %(duration)s": "Ukjend i %(duration)s",
- "Online": "På nett",
+ "Online": "Tilkopla",
"Idle": "Fråverande",
- "Offline": "Av nett",
+ "Offline": "Fråkopla",
"Unknown": "Ukjend",
"Seen by %(userName)s at %(dateTime)s": "%(userName)s såg dette %(dateTime)s",
"Seen by %(displayName)s (%(userName)s) at %(dateTime)s": "%(displayName)s %(userName)s såg dette %(dateTime)s",
@@ -813,9 +813,9 @@
"Clear Storage and Sign Out": "Tøm Lager og Logg Ut",
"Send Logs": "Send Loggar",
"Refresh": "Hent fram på nytt",
- "Unable to restore session": "Kunne ikkje henta økta fram att",
- "We encountered an error trying to restore your previous session.": "Noko gjekk gale med framhentinga av den førre økta di.",
- "If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.": "Viss du har bruka ei nyare utgåve av Riot før, kan det henda at økta di ikkje passar inn i denne utgåva. Lukk dette vindauget og gå attende til den nyare utgåva.",
+ "Unable to restore session": "Kunne ikkje henta øykta fram att",
+ "We encountered an error trying to restore your previous session.": "Noko gjekk gale med framhentinga av den førre øykta di.",
+ "If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.": "Viss du har bruka ei nyare utgåve av Riot før, kan det henda at øykta di ikkje passar inn i denne utgåva. Lukk dette vindauget og gå attende til den nyare utgåva.",
"Clearing your browser's storage may fix the problem, but will sign you out and cause any encrypted chat history to become unreadable.": "Det kan henda at å tømma nettlesarlageret rettar opp i det, men det loggar deg ut og kan gjera den enkrypterte pratehistoria uleseleg.",
"Invalid Email Address": "Ugangbar Emailadresse",
"This doesn't appear to be a valid email address": "Det ser ikkje ut til at emailadressa er gangbar",
@@ -944,7 +944,7 @@
"Can't leave Server Notices room": "Kan ikkje fara frå Tenarvarsel-rommet",
"This room is used for important messages from the Homeserver, so you cannot leave it.": "Dette rommet er for viktige meldingar frå Heimtenaren, so du kan ikkje fara frå det.",
"Signed Out": "Logga Ut",
- "For security, this session has been signed out. Please sign in again.": "Av sikkerheitsgrunnar har denne økta vorte logga ut. Ver venleg og logg inn att.",
+ "For security, this session has been signed out. Please sign in again.": "Av sikkerheitsgrunnar har denne øykta vorte logga ut. Ver venleg og logg inn att.",
"Terms and Conditions": "Vilkår og Føresetnader",
"To continue using the %(homeserverDomain)s homeserver you must review and agree to our terms and conditions.": "For å framleis bruka %(homeserverDomain)s sin heimtenar må du sjå over og seia deg einig i våre Vilkår og Føresetnader.",
"Review terms and conditions": "Sjå over Vilkår og Føresetnader",
@@ -1140,7 +1140,7 @@
"Changing password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Å endra passordet ditt attendestiller førebelst alle ende-til-ende-enkrypteringsnyklar på alle einingar, slik at enkryptert pratehistorie vert uleseleg, med mindre du fyrst hentar romnyklane dine ut og hentar dei inn att etterpå. I framtida vil denne prosessen vera betre.",
"Export E2E room keys": "Hent E2E-romnyklar ut",
"You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "Det kan henda at du stilte dei inn på ein annan klient enn Riot. Du kan ikkje stilla på dei i Riot men dei gjeld framleis",
- "Key share requests are sent to your other devices automatically. If you rejected or dismissed the key share request on your other devices, click here to request the keys for this session again.": "Nykeldelingsførespurnader vert sende til dei andre einingane dine av seg sjølv. Viss du sa nei til eller avviste førespurnadene på dei andre einingane, klikk her for å beda om nyklane for denne økta på nytt.",
+ "Key share requests are sent to your other devices automatically. If you rejected or dismissed the key share request on your other devices, click here to request the keys for this session again.": "Nykeldelingsførespurnader vert sende til dei andre einingane dine av seg sjølv. Viss du sa nei til eller avviste førespurnadene på dei andre einingane, klikk her for å beda om nyklane for denne øykta på nytt.",
"Jump to read receipt": "Hopp til lest-lappen",
"Filter room members": "Filtrer rommedlemer",
"inline-code": "kode-i-tekst",
@@ -1211,7 +1211,7 @@
"Failed to remove tag %(tagName)s from room": "Fekk ikkje til å fjerna merket %(tagName)s frå rommet",
"Failed to add tag %(tagName)s to room": "Fekk ikkje til å leggja merket %(tagName)s til i rommet",
"Hide read receipts": "Gøym lest-lappar",
- "For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.": "Av sikkerheitsmessige grunnar vil det å logga ut sletta alle ende-til-ende-enkrypteringsnyklar frå nettlesaren. Viss du vil kunna dekryptera samtalehistoria di på framtidige Riot-økter, ver venleg og hent ut romnyklande dine og tak vare på dei.",
+ "For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.": "Av sikkerheitsmessige grunnar vil det å logga ut sletta alle ende-til-ende-enkrypteringsnyklar frå nettlesaren. Viss du vil kunna dekryptera samtalehistoria di på framtidige Riot-øykter, ver venleg og hent ut romnyklande dine og tak vare på dei.",
"This process allows you to export the keys for messages you have received in encrypted rooms to a local file. You will then be able to import the file into another Matrix client in the future, so that client will also be able to decrypt these messages.": "Dette tillèt deg å henta nyklane for meldingar du har sendt i enkrypterte rom ut til ei lokal fil. Då kan du henta fila inn til ein annan Matrix-klient i framtida, slik at den klienten òg kan dekryptera meldingane.",
"The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a passphrase below, which will be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.": "Å henta filen ut tillèt kven som helst som kan lesa ho å dekryptera alle enkrypterte meldingar du kan sjå, so du bør passa på å halda ho trygg. For å hjelpa til med dette bør du skriva ei passetning inn i feltet under, som vil brukast til å enkryptere den uthenta dataen. Det vil berre vera mogeleg å henta dataen inn med den same passetninga.",
"This process allows you to import encryption keys that you had previously exported from another Matrix client. You will then be able to decrypt any messages that the other client could decrypt.": "Dette tillèt deg å henta enkrypteringsnyklar som du tidlegare henta ut frå ein annan Matrix-klient inn. Du vil so kunna dekryptera alle meldingane som den andre klienten kunne dekryptera.",
From 192547b9e3dcbcf4eed0bf2b614ba1d32cd31bff Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?K=C3=A9vin=20C?=
Date: Thu, 23 Aug 2018 09:02:54 +0000
Subject: [PATCH 198/343] Translated using Weblate (French)
Currently translated at 100.0% (1229 of 1229 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/fr/
---
src/i18n/strings/fr.json | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/i18n/strings/fr.json b/src/i18n/strings/fr.json
index 9894e4073a..b48cc0b80c 100644
--- a/src/i18n/strings/fr.json
+++ b/src/i18n/strings/fr.json
@@ -1255,5 +1255,6 @@
"Lazy loading members not supported": "La chargement différé des participants n'est pas pris en charge",
"Lazy loading is not supported by your current homeserver.": "Le chargement différé n'est pas pris en charge par votre serveur d'accueil actuel.",
"Sorry, your homeserver is too old to participate in this room.": "Désolé, votre serveur d'accueil est trop vieux pour participer à ce salon.",
- "Please contact your homeserver administrator.": "Veuillez contacter l'administrateur de votre serveur d'accueil."
+ "Please contact your homeserver administrator.": "Veuillez contacter l'administrateur de votre serveur d'accueil.",
+ "Legal": "Légal"
}
From 03d8716ac6d3cb9c8a72e585dff54dbcbfbd8f83 Mon Sep 17 00:00:00 2001
From: Jeff Huang
Date: Thu, 23 Aug 2018 13:18:23 +0000
Subject: [PATCH 199/343] Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (1229 of 1229 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/zh_Hant/
---
src/i18n/strings/zh_Hant.json | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/i18n/strings/zh_Hant.json b/src/i18n/strings/zh_Hant.json
index ad4a01fca0..327b06cff1 100644
--- a/src/i18n/strings/zh_Hant.json
+++ b/src/i18n/strings/zh_Hant.json
@@ -1255,5 +1255,6 @@
"Lazy loading members not supported": "不支援延遲載入成員",
"Lazy loading is not supported by your current homeserver.": "您目前的家伺服器不支援延遲載入。",
"Sorry, your homeserver is too old to participate in this room.": "抱歉,您的家伺服器太舊了,所以無法參與此聊天室。",
- "Please contact your homeserver administrator.": "請聯絡您的家伺服器的管理員。"
+ "Please contact your homeserver administrator.": "請聯絡您的家伺服器的管理員。",
+ "Legal": "法律"
}
From 67d04f0f25bf9b55926592c305a201c2e76b42c6 Mon Sep 17 00:00:00 2001
From: Slavi Pantaleev
Date: Fri, 24 Aug 2018 05:58:07 +0000
Subject: [PATCH 200/343] Translated using Weblate (Bulgarian)
Currently translated at 100.0% (1229 of 1229 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/bg/
---
src/i18n/strings/bg.json | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/i18n/strings/bg.json b/src/i18n/strings/bg.json
index ed0d372043..8d340c3e6d 100644
--- a/src/i18n/strings/bg.json
+++ b/src/i18n/strings/bg.json
@@ -1255,5 +1255,6 @@
"Lazy loading members not supported": "Отложеното зареждане на членове не се поддържа",
"Lazy loading is not supported by your current homeserver.": "Отложеното зареждане не се поддържа от текущия сървър.",
"Sorry, your homeserver is too old to participate in this room.": "Съжаляваме, вашият сървър е прекалено стар за да участва в тази стая.",
- "Please contact your homeserver administrator.": "Моля, свържете се се със сървърния администратор."
+ "Please contact your homeserver administrator.": "Моля, свържете се се със сървърния администратор.",
+ "Legal": "Юридически"
}
From 25fb30bf7ddefbdf449c1defca923ade114dfb68 Mon Sep 17 00:00:00 2001
From: Szimszon
Date: Thu, 23 Aug 2018 18:29:39 +0000
Subject: [PATCH 201/343] Translated using Weblate (Hungarian)
Currently translated at 100.0% (1229 of 1229 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/hu/
---
src/i18n/strings/hu.json | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/i18n/strings/hu.json b/src/i18n/strings/hu.json
index f94d9fc9fb..38a38057b6 100644
--- a/src/i18n/strings/hu.json
+++ b/src/i18n/strings/hu.json
@@ -1255,5 +1255,6 @@
"Lazy loading members not supported": "A tagok késleltetett betöltése nem támogatott",
"Lazy loading is not supported by your current homeserver.": "A késleltetett betöltés nem támogatott ennél a Matrix szervernél.",
"Sorry, your homeserver is too old to participate in this room.": "Sajnáljuk, a Matrix szervered nem elég friss ahhoz, hogy részt vegyen ebben a szobában.",
- "Please contact your homeserver administrator.": "Kérlek vedd fel a kapcsolatot a Matrix szerver adminisztrátorával."
+ "Please contact your homeserver administrator.": "Kérlek vedd fel a kapcsolatot a Matrix szerver adminisztrátorával.",
+ "Legal": "Jogi"
}
From 21cc3f2467ca5185a17d11a2274738aedaa57f67 Mon Sep 17 00:00:00 2001
From: random
Date: Mon, 27 Aug 2018 08:29:29 +0000
Subject: [PATCH 202/343] Translated using Weblate (Italian)
Currently translated at 100.0% (1229 of 1229 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/it/
---
src/i18n/strings/it.json | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/src/i18n/strings/it.json b/src/i18n/strings/it.json
index 721c0382f7..dc46da4ede 100644
--- a/src/i18n/strings/it.json
+++ b/src/i18n/strings/it.json
@@ -1250,5 +1250,10 @@
"Your message wasn't sent because this homeserver has hit its Monthly Active User Limit. Please contact your service administrator to continue using the service.": "Il tuo messaggio non è stato inviato perchè questo homeserver ha raggiunto il suo limite di utenti attivi mensili. Contatta l'amministratore del servizio per continuare ad usarlo.",
"Your message wasn't sent because this homeserver has exceeded a resource limit. Please contact your service administrator to continue using the service.": "Il tuo messaggio non è stato inviato perchè questo homeserver ha oltrepassato un limite di risorse. Contatta l'amministratore del servizio per continuare ad usarlo.",
"Please contact your service administrator to continue using this service.": "Contatta l'amministratore del servizio per continuare ad usarlo.",
- "Increase performance by only loading room members on first view": "Aumenta le prestazioni caricando solo i membri della stanza alla prima occhiata"
+ "Increase performance by only loading room members on first view": "Aumenta le prestazioni caricando solo i membri della stanza alla prima occhiata",
+ "Sorry, your homeserver is too old to participate in this room.": "Spiacenti, il tuo homeserver è troppo vecchio per partecipare a questa stanza.",
+ "Please contact your homeserver administrator.": "Contatta l'amministratore del tuo homeserver.",
+ "Lazy loading members not supported": "Il caricamento pigro dei membri non è supportato",
+ "Lazy loading is not supported by your current homeserver.": "Il caricamento pigro non è supportato dal tuo attuale homeserver.",
+ "Legal": "Informazioni legali"
}
From 5be206d8dbf01345808ee544fcc76c14736f27f8 Mon Sep 17 00:00:00 2001
From: Nikolas
Date: Fri, 24 Aug 2018 10:57:12 +0000
Subject: [PATCH 203/343] Translated using Weblate (German)
Currently translated at 100.0% (1229 of 1229 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/de/
---
src/i18n/strings/de_DE.json | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json
index 6a85edeb31..dff76dbf94 100644
--- a/src/i18n/strings/de_DE.json
+++ b/src/i18n/strings/de_DE.json
@@ -1255,5 +1255,6 @@
"Lazy loading members not supported": "Verzögertes Laden von Mitgliedern nicht unterstützt",
"Lazy loading is not supported by your current homeserver.": "Verzögertes Laden wird von deinem aktuellen Heimserver.",
"Sorry, your homeserver is too old to participate in this room.": "Sorry, dein Homeserver ist zu alt, um an diesem Raum teilzunehmen.",
- "Please contact your homeserver administrator.": "Bitte setze dich mit dem Administrator deines Homeservers in Verbindung."
+ "Please contact your homeserver administrator.": "Bitte setze dich mit dem Administrator deines Homeservers in Verbindung.",
+ "Legal": "Rechte"
}
From 36665d3c6993e18566d41d5d008ee90eb3733eda Mon Sep 17 00:00:00 2001
From: Bruno Windels
Date: Mon, 27 Aug 2018 17:40:31 +0200
Subject: [PATCH 204/343] Fix: dont show 1:1 avatar for room with only 2
members loaded
---
src/components/views/avatars/RoomAvatar.js | 62 +++++-----------------
1 file changed, 14 insertions(+), 48 deletions(-)
diff --git a/src/components/views/avatars/RoomAvatar.js b/src/components/views/avatars/RoomAvatar.js
index 821448207f..c3336ce36a 100644
--- a/src/components/views/avatars/RoomAvatar.js
+++ b/src/components/views/avatars/RoomAvatar.js
@@ -19,6 +19,7 @@ import {ContentRepo} from "matrix-js-sdk";
import MatrixClientPeg from "../../../MatrixClientPeg";
import Modal from '../../../Modal';
import sdk from "../../../index";
+import DMRoomMap from '../../../utils/DMRoomMap';
module.exports = React.createClass({
displayName: 'RoomAvatar',
@@ -109,56 +110,21 @@ module.exports = React.createClass({
getOneToOneAvatar: function(props) {
if (!props.room) return null;
- const mlist = props.room.currentState.members;
- const userIds = [];
- const leftUserIds = [];
- // for .. in optimisation to return early if there are >2 keys
- for (const uid in mlist) {
- if (mlist.hasOwnProperty(uid)) {
- if (["join", "invite"].includes(mlist[uid].membership)) {
- userIds.push(uid);
- } else {
- leftUserIds.push(uid);
- }
- }
- if (userIds.length > 2) {
- return null;
- }
+ const otherUserId = DMRoomMap.shared().getUserIdForRoomId(props.room.roomId);
+ if (!otherUserId) {
+ return null;
}
-
- if (userIds.length == 2) {
- let theOtherGuy = null;
- if (mlist[userIds[0]].userId == MatrixClientPeg.get().credentials.userId) {
- theOtherGuy = mlist[userIds[1]];
- } else {
- theOtherGuy = mlist[userIds[0]];
- }
- return theOtherGuy.getAvatarUrl(
- MatrixClientPeg.get().getHomeserverUrl(),
- Math.floor(props.width * window.devicePixelRatio),
- Math.floor(props.height * window.devicePixelRatio),
- props.resizeMethod,
- false,
- );
- } else if (userIds.length == 1) {
- // The other 1-1 user left, leaving just the current user, so show the left user's avatar
- if (leftUserIds.length === 1) {
- return mlist[leftUserIds[0]].getAvatarUrl(
- MatrixClientPeg.get().getHomeserverUrl(),
- props.width, props.height, props.resizeMethod,
- false,
- );
- }
- return mlist[userIds[0]].getAvatarUrl(
- MatrixClientPeg.get().getHomeserverUrl(),
- Math.floor(props.width * window.devicePixelRatio),
- Math.floor(props.height * window.devicePixelRatio),
- props.resizeMethod,
- false,
- );
- } else {
- return null;
+ const otherMember = props.room.getMember(otherUserId);
+ if (!otherMember) {
+ return null;
}
+ return otherMember.getAvatarUrl(
+ MatrixClientPeg.get().getHomeserverUrl(),
+ Math.floor(props.width * window.devicePixelRatio),
+ Math.floor(props.height * window.devicePixelRatio),
+ props.resizeMethod,
+ false,
+ );
},
onRoomAvatarClick: function() {
From 6a077655e9f60f86b8776e6ca2113c043f7f5226 Mon Sep 17 00:00:00 2001
From: Bruno Windels
Date: Mon, 27 Aug 2018 18:48:21 +0200
Subject: [PATCH 205/343] bring back old behaviour to also show member avatars
if not marked as 1:1 room
---
src/components/views/avatars/RoomAvatar.js | 43 +++++++++++++++-------
1 file changed, 29 insertions(+), 14 deletions(-)
diff --git a/src/components/views/avatars/RoomAvatar.js b/src/components/views/avatars/RoomAvatar.js
index c3336ce36a..48c3d2a0d2 100644
--- a/src/components/views/avatars/RoomAvatar.js
+++ b/src/components/views/avatars/RoomAvatar.js
@@ -108,23 +108,38 @@ module.exports = React.createClass({
},
getOneToOneAvatar: function(props) {
- if (!props.room) return null;
+ const room = props.room;
+ if (!room) {
+ return null;
+ }
+ let otherMember = null;
+ const otherUserId = DMRoomMap.shared().getUserIdForRoomId(room.roomId);
+ if (otherUserId) {
+ otherMember = room.getMember(otherUserId);
+ } else {
+ // if the room is not marked as a 1:1, but only has max 2 members
+ // then still try to show any avatar (pref. other member)
+ const totalMemberCount = room.getJoinedMemberCount() +
+ room.getInvitedMemberCount();
+ const members = room.currentState.getMembers();
+ if (totalMemberCount == 2) {
+ const myUserId = MatrixClientPeg.get().getUserId();
+ otherMember = members.find(m => m.userId !== myUserId);
+ } else if(totalMemberCount == 1) {
+ otherMember = members[0];
+ }
- const otherUserId = DMRoomMap.shared().getUserIdForRoomId(props.room.roomId);
- if (!otherUserId) {
- return null;
}
- const otherMember = props.room.getMember(otherUserId);
- if (!otherMember) {
- return null;
+ if (otherMember) {
+ return otherMember.getAvatarUrl(
+ MatrixClientPeg.get().getHomeserverUrl(),
+ Math.floor(props.width * window.devicePixelRatio),
+ Math.floor(props.height * window.devicePixelRatio),
+ props.resizeMethod,
+ false,
+ );
}
- return otherMember.getAvatarUrl(
- MatrixClientPeg.get().getHomeserverUrl(),
- Math.floor(props.width * window.devicePixelRatio),
- Math.floor(props.height * window.devicePixelRatio),
- props.resizeMethod,
- false,
- );
+ return null;
},
onRoomAvatarClick: function() {
From 06160f5fae35672f3608e4a9435e707e8c964f0f Mon Sep 17 00:00:00 2001
From: Bruno Windels
Date: Mon, 27 Aug 2018 18:52:33 +0200
Subject: [PATCH 206/343] fix lint
---
src/components/views/avatars/RoomAvatar.js | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/src/components/views/avatars/RoomAvatar.js b/src/components/views/avatars/RoomAvatar.js
index 48c3d2a0d2..e0105159fb 100644
--- a/src/components/views/avatars/RoomAvatar.js
+++ b/src/components/views/avatars/RoomAvatar.js
@@ -125,10 +125,9 @@ module.exports = React.createClass({
if (totalMemberCount == 2) {
const myUserId = MatrixClientPeg.get().getUserId();
otherMember = members.find(m => m.userId !== myUserId);
- } else if(totalMemberCount == 1) {
+ } else if (totalMemberCount == 1) {
otherMember = members[0];
}
-
}
if (otherMember) {
return otherMember.getAvatarUrl(
From db05121e2ee8e53f8379954ad7296cc57d303cb9 Mon Sep 17 00:00:00 2001
From: Kenneth Larsson
Date: Mon, 27 Aug 2018 21:37:32 +0000
Subject: [PATCH 207/343] Translated using Weblate (Swedish)
Currently translated at 100.0% (1229 of 1229 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/sv/
---
src/i18n/strings/sv.json | 19 ++++++++++++++++++-
1 file changed, 18 insertions(+), 1 deletion(-)
diff --git a/src/i18n/strings/sv.json b/src/i18n/strings/sv.json
index 9f806495cf..8eb4743ad6 100644
--- a/src/i18n/strings/sv.json
+++ b/src/i18n/strings/sv.json
@@ -1227,5 +1227,22 @@
"This homeserver has hit its Monthly Active User limit": "Hemservern har nått sin månatliga gräns för användaraktivitet",
"Please contact your service administrator to continue using this service.": "Kontakta din serviceadministratör för att fortsätta använda servicen.",
"Show empty room list headings": "Visa tomma rumsrubriker",
- "System Alerts": "Systemvarningar"
+ "System Alerts": "Systemvarningar",
+ "Sorry, your homeserver is too old to participate in this room.": "Tyvärr, din hemserver är för gammal för att delta i detta rum.",
+ "Please contact your homeserver administrator.": "Vänligen kontakta din hemserver-administratör.",
+ "Increase performance by only loading room members on first view": "Öka prestanda genom att bara ladda rumsdeltagare vid första visning",
+ "Internal room ID: ": "Internt rums-ID: ",
+ "Room version number: ": "Rumsversionsnummer: ",
+ "Please contact your service administrator to continue using the service.": "Kontakta din serviceadministratör för att fortsätta använda tjänsten.",
+ "This homeserver has hit its Monthly Active User limit.": "Hemservern har nått sin månatliga gräns för användaraktivitet.",
+ "This homeserver has exceeded one of its resource limits.": "Hemservern har överskridit en av sina resursgränser.",
+ "Please contact your service administrator to get this limit increased.": "Kontakta din serviceadministratör för att få denna gräns ökad.",
+ "This homeserver has hit its Monthly Active User limit so some users will not be able to log in.": "Hemservern har nått sin månatliga gräns för användaraktivitet så vissa användare kommer inte kunna logga in.",
+ "This homeserver has exceeded one of its resource limits so some users will not be able to log in.": "Hemservern har överskridit en av sina resursgränser så vissa användare kommer inte kunna logga in.",
+ "Your message wasn't sent because this homeserver has hit its Monthly Active User Limit. Please contact your service administrator to continue using the service.": "Ditt meddelande skickades inte för hemservern har nått sin månatliga gräns för användaraktivitet. Kontakta din serviceadministratör för att fortsätta använda servicen.",
+ "Your message wasn't sent because this homeserver has exceeded a resource limit. Please contact your service administrator to continue using the service.": "Ditt meddelande skickades inte för hemservern har överskridit en av sina resursgränser. Kontakta din serviceadministratör för att fortsätta använda servicen.",
+ "Lazy loading members not supported": "Behovsladdning av medlemmar stöds inte",
+ "Lazy loading is not supported by your current homeserver.": "Behovsladdning stöds inte av din nuvarande hemserver.",
+ "Legal": "Juridiskt",
+ "Please contact your service administrator to continue using this service.": "Kontakta din serviceadministratör för att fortsätta använda servicen."
}
From 7d90e3ae21ddc6a33c7b5d2f79b01b21463aa3fb Mon Sep 17 00:00:00 2001
From: Xose M
Date: Tue, 28 Aug 2018 05:43:34 +0000
Subject: [PATCH 208/343] Translated using Weblate (Galician)
Currently translated at 100.0% (1229 of 1229 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/gl/
---
src/i18n/strings/gl.json | 23 ++++++++++++++++++++++-
1 file changed, 22 insertions(+), 1 deletion(-)
diff --git a/src/i18n/strings/gl.json b/src/i18n/strings/gl.json
index 41ab6a54d0..932ca95ca9 100644
--- a/src/i18n/strings/gl.json
+++ b/src/i18n/strings/gl.json
@@ -1219,5 +1219,26 @@
"The user name field must not be blank.": "O campo de nome de usuario non pode quedar en branco.",
"The phone number field must not be blank.": "O número de teléfono non pode quedar en branco.",
"The password field must not be blank.": "O campo do contrasinal non pode quedar en branco.",
- "You can't send any messages until you review and agree to our terms and conditions.": "Non vai poder enviar mensaxes ata que revise e acepte os nosos termos e condicións."
+ "You can't send any messages until you review and agree to our terms and conditions.": "Non vai poder enviar mensaxes ata que revise e acepte os nosos termos e condicións.",
+ "A call is currently being placed!": "Xa se estableceu a chamada!",
+ "Sorry, your homeserver is too old to participate in this room.": "Lametámolo, o seu servidor de inicio é vello de máis para participar en esta sala.",
+ "Please contact your homeserver administrator.": "Por favor, contacte coa administración do seu servidor.",
+ "Increase performance by only loading room members on first view": "Aumente o rendemento cargando só membros da sala na vista inicial",
+ "System Alerts": "Alertas do Sistema",
+ "Internal room ID: ": "ID interno da sala: ",
+ "Room version number: ": "Número de versión da sala: ",
+ "Please contact your service administrator to continue using the service.": "Por favor contacte coa administración do servizo para seguir utilizando o servizo.",
+ "This homeserver has hit its Monthly Active User limit.": "Este servidor acadou o límite mensual de usuarias activas.",
+ "This homeserver has exceeded one of its resource limits.": "Este servidor excedeu un dos seus límites de recursos.",
+ "Please contact your service administrator to get this limit increased.": "Por favor contacte coa administración do servizo para incrementar este límite.",
+ "This homeserver has hit its Monthly Active User limit so some users will not be able to log in.": "Este servidor acadou o Límite Mensual de usuarias activas polo que algunhas usuarias non poderán conectar.",
+ "This homeserver has exceeded one of its resource limits so some users will not be able to log in.": "Este servidor excedeu un dos límites de recursos polo que algunhas usuarias no poderán conectar.",
+ "Failed to remove widget": "Fallo ao eliminar o widget",
+ "An error ocurred whilst trying to remove the widget from the room": "Algo fallou mentras se intentaba eliminar o widget da sala",
+ "Your message wasn't sent because this homeserver has hit its Monthly Active User Limit. Please contact your service administrator to continue using the service.": "A súa mensaxe non foi enviada porque este servidor acadou o Límite Mensual de Usuaria Activa. Por favor contacte coa administración do servizo para continuar utilizando o servizo.",
+ "Your message wasn't sent because this homeserver has exceeded a resource limit. Please contact your service administrator to continue using the service.": "A súa mensaxe non foi enviada porque o servidor superou o límite de recursos. Por favor contacte coa administración do servizo para continuar utilizando o servizo.",
+ "Lazy loading members not supported": "A cargar preguiceira de membros non está soportada",
+ "Lazy loading is not supported by your current homeserver.": "A carga preguiceira non está soportada polo servidor actual.",
+ "Legal": "Legal",
+ "Please contact your service administrator to continue using this service.": "Por favor contacte coa administración do servizo para continuar utilizando o servizo."
}
From e44ca8df3e9898db7d6c8179415035fc1b985ef6 Mon Sep 17 00:00:00 2001
From: Krombel
Date: Mon, 27 Aug 2018 11:59:12 +0000
Subject: [PATCH 209/343] Translated using Weblate (German)
Currently translated at 100.0% (1229 of 1229 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/de/
---
src/i18n/strings/de_DE.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json
index dff76dbf94..41dbf5506e 100644
--- a/src/i18n/strings/de_DE.json
+++ b/src/i18n/strings/de_DE.json
@@ -1256,5 +1256,5 @@
"Lazy loading is not supported by your current homeserver.": "Verzögertes Laden wird von deinem aktuellen Heimserver.",
"Sorry, your homeserver is too old to participate in this room.": "Sorry, dein Homeserver ist zu alt, um an diesem Raum teilzunehmen.",
"Please contact your homeserver administrator.": "Bitte setze dich mit dem Administrator deines Homeservers in Verbindung.",
- "Legal": "Rechte"
+ "Legal": "Rechtliches"
}
From 2064cfca77f02a41cc949c075c17884690c02e87 Mon Sep 17 00:00:00 2001
From: random
Date: Mon, 27 Aug 2018 08:31:12 +0000
Subject: [PATCH 210/343] Translated using Weblate (Italian)
Currently translated at 100.0% (1229 of 1229 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/it/
---
src/i18n/strings/it.json | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/i18n/strings/it.json b/src/i18n/strings/it.json
index dc46da4ede..78ee961578 100644
--- a/src/i18n/strings/it.json
+++ b/src/i18n/strings/it.json
@@ -1253,7 +1253,7 @@
"Increase performance by only loading room members on first view": "Aumenta le prestazioni caricando solo i membri della stanza alla prima occhiata",
"Sorry, your homeserver is too old to participate in this room.": "Spiacenti, il tuo homeserver è troppo vecchio per partecipare a questa stanza.",
"Please contact your homeserver administrator.": "Contatta l'amministratore del tuo homeserver.",
- "Lazy loading members not supported": "Il caricamento pigro dei membri non è supportato",
- "Lazy loading is not supported by your current homeserver.": "Il caricamento pigro non è supportato dal tuo attuale homeserver.",
+ "Lazy loading members not supported": "Il caricamento lento dei membri non è supportato",
+ "Lazy loading is not supported by your current homeserver.": "Il caricamento lento non è supportato dal tuo attuale homeserver.",
"Legal": "Informazioni legali"
}
From b97c2035871d1008101c53e339675a0375161d57 Mon Sep 17 00:00:00 2001
From: csybr
Date: Sun, 26 Aug 2018 14:03:48 +0000
Subject: [PATCH 211/343] =?UTF-8?q?Translated=20using=20Weblate=20(Norwegi?=
=?UTF-8?q?an=20Bokm=C3=A5l)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Currently translated at 9.3% (115 of 1229 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/nb_NO/
---
src/i18n/strings/nb_NO.json | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/i18n/strings/nb_NO.json b/src/i18n/strings/nb_NO.json
index 9a2b859854..5641880501 100644
--- a/src/i18n/strings/nb_NO.json
+++ b/src/i18n/strings/nb_NO.json
@@ -112,5 +112,6 @@
"Quote": "Sitat",
"Collapse panel": "Skjul panel",
"Saturday": "Lørdag",
- "There are advanced notifications which are not shown here": "Det er avanserte varsler som ikke vises her"
+ "There are advanced notifications which are not shown here": "Det er avanserte varsler som ikke vises her",
+ "Dismiss": "Avvis"
}
From 38bab898f228897bbf750a7f5e209e7f68ebf36a Mon Sep 17 00:00:00 2001
From: csybr
Date: Fri, 24 Aug 2018 14:22:02 +0000
Subject: [PATCH 212/343] Translated using Weblate (Norwegian Nynorsk)
Currently translated at 99.0% (1217 of 1229 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/nn/
---
src/i18n/strings/nn.json | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/i18n/strings/nn.json b/src/i18n/strings/nn.json
index 805143c2a3..db09273e6d 100644
--- a/src/i18n/strings/nn.json
+++ b/src/i18n/strings/nn.json
@@ -237,7 +237,7 @@
"Messages containing my user name": "Meldingar som inneheld brukarnamnet mitt",
"Messages in one-to-one chats": "Meldingar i ein-til-ein-samtaler",
"Messages in group chats": "Meldingar i gruppesamtaler",
- "When I'm invited to a room": "Når eg er bode inn til eit rom",
+ "When I'm invited to a room": "Når eg er boden inn til eit rom",
"Call invitation": "Samtaleinnbydingar",
"Messages sent by bot": "Meldingar sendt frå ein bot",
"Active call (%(roomName)s)": "Pågåande samtale (%(roomName)s)",
@@ -299,7 +299,7 @@
"Advanced notification settings": "Omfattande varselinnstillingar",
"There are advanced notifications which are not shown here": "Det er omfattande varsel som ikkje er vist her",
"Enable desktop notifications": "Skru skrivebordsvarsel på",
- "Show message in desktop notification": "Vis meldingen i eit skriverbordsvarsel",
+ "Show message in desktop notification": "Vis meldinga i eit skriverbordsvarsel",
"Enable audible notifications in web client": "Skru høyrlege varsel i nettklienten på",
"Off": "Av",
"On": "På",
@@ -1183,7 +1183,7 @@
"Failed to set Direct Message status of room": "Fekk ikkje til å setja Direktemelding-tilstanden til rommet",
"Did you know: you can use communities to filter your Riot.im experience!": "Visste du at: du kan bruka samfunn for å filtrera Riot.im-opplevinga di!",
"To set up a filter, drag a community avatar over to the filter panel on the far left hand side of the screen. You can click on an avatar in the filter panel at any time to see only the rooms and people associated with that community.": "For å setja opp eit filter, drag ein samfunnsavatar bort til filterpanelet til venstre på skjermen. Du kan klikka på ein avatar i filterpanelet når som helst for å sjå berre romma og folka tilknytta det samfunnet.",
- "Create a community to group together users and rooms! Build a custom homepage to mark out your space in the Matrix universe.": "Lag eit samfunn for å føra saman brukarar og rom! Bygg din eiga heimeside for å kreva din del av Matrix-verda.",
+ "Create a community to group together users and rooms! Build a custom homepage to mark out your space in the Matrix universe.": "Lag eit samfunn for å føra saman brukarar og rom! Bygg di eiga heimeside for å kreva din del av Matrix-verda.",
"Hide panel": "Gøym panel",
"Unable to look up room ID from server": "Klarte ikkje å henta rom-ID frå tenaren",
"Your message wasn’t sent because this homeserver has hit its Monthly Active User Limit. Please contact your service administrator to continue using the service.": "Meldinga di vart ikkje send fordi heimtenaren har truffe si Månadlege Grense for Aktive Brukarar. Ver venleg og tak kontakt med tenesteadministratoren din for å halda frama med å bruka tenesten.",
From e9e5abfcc5e8e0337ddab67e8d0371df49c3f281 Mon Sep 17 00:00:00 2001
From: Bruno Windels
Date: Wed, 29 Aug 2018 10:30:25 +0200
Subject: [PATCH 213/343] show a spinner in the memberlist while loading the
members
---
src/components/views/rooms/MemberList.js | 29 ++++++++++++++++++++----
1 file changed, 25 insertions(+), 4 deletions(-)
diff --git a/src/components/views/rooms/MemberList.js b/src/components/views/rooms/MemberList.js
index 6f6188e0b5..ff410ce556 100644
--- a/src/components/views/rooms/MemberList.js
+++ b/src/components/views/rooms/MemberList.js
@@ -35,7 +35,16 @@ module.exports = React.createClass({
this.memberDict = this.getMemberDict();
const members = this.roomMembers();
- return {
+ return {loading: true};
+ },
+
+ componentDidMount: async function() {
+ await this._waitForMembersToLoad();
+ this.memberDict = this.getMemberDict();
+ const members = this.roomMembers();
+
+ this.setState({
+ loading: false,
members: members,
filteredJoinedMembers: this._filterMembers(members, 'join'),
filteredInvitedMembers: this._filterMembers(members, 'invite'),
@@ -45,10 +54,8 @@ module.exports = React.createClass({
truncateAtJoined: INITIAL_LOAD_NUM_MEMBERS,
truncateAtInvited: INITIAL_LOAD_NUM_INVITED,
searchQuery: "",
- };
- },
+ });
- componentWillMount: function() {
const cli = MatrixClientPeg.get();
cli.on("RoomState.members", this.onRoomStateMember);
cli.on("RoomMember.name", this.onRoomMemberName);
@@ -84,6 +91,15 @@ module.exports = React.createClass({
this._updateList.cancelPendingCall();
},
+ _waitForMembersToLoad: async function() {
+ if (!this.props.roomId) return {};
+ const cli = MatrixClientPeg.get();
+ const room = cli.getRoom(this.props.roomId);
+ if (room) {
+ await room.loadMembersIfNeeded();
+ }
+ },
+
/*
onRoomTimeline: function(ev, room, toStartOfTimeline, removed, data) {
// ignore anything but real-time updates at the end of the room:
@@ -393,6 +409,11 @@ module.exports = React.createClass({
},
render: function() {
+ if (this.state.loading) {
+ const Spinner = sdk.getComponent("elements.Spinner");
+ return
;
+ }
+
const TruncatedList = sdk.getComponent("elements.TruncatedList");
const GeminiScrollbarWrapper = sdk.getComponent("elements.GeminiScrollbarWrapper");
From f9c40390e95060c1d457bdc7e03c9379bf70d5b7 Mon Sep 17 00:00:00 2001
From: Bruno Windels
Date: Wed, 29 Aug 2018 11:09:55 +0200
Subject: [PATCH 214/343] set state after setting _showPresence to avoid all
members to appear offline on matrix.org
---
src/components/views/rooms/MemberList.js | 27 ++++++++++++------------
1 file changed, 14 insertions(+), 13 deletions(-)
diff --git a/src/components/views/rooms/MemberList.js b/src/components/views/rooms/MemberList.js
index ff410ce556..b418eef121 100644
--- a/src/components/views/rooms/MemberList.js
+++ b/src/components/views/rooms/MemberList.js
@@ -43,19 +43,6 @@ module.exports = React.createClass({
this.memberDict = this.getMemberDict();
const members = this.roomMembers();
- this.setState({
- loading: false,
- members: members,
- filteredJoinedMembers: this._filterMembers(members, 'join'),
- filteredInvitedMembers: this._filterMembers(members, 'invite'),
-
- // ideally we'd size this to the page height, but
- // in practice I find that a little constraining
- truncateAtJoined: INITIAL_LOAD_NUM_MEMBERS,
- truncateAtInvited: INITIAL_LOAD_NUM_INVITED,
- searchQuery: "",
- });
-
const cli = MatrixClientPeg.get();
cli.on("RoomState.members", this.onRoomStateMember);
cli.on("RoomMember.name", this.onRoomMemberName);
@@ -74,6 +61,20 @@ module.exports = React.createClass({
if (enablePresenceByHsUrl && enablePresenceByHsUrl[hsUrl] !== undefined) {
this._showPresence = enablePresenceByHsUrl[hsUrl];
}
+ // set the state after determining _showPresence to make sure it's
+ // taken into account while rerendering
+ this.setState({
+ loading: false,
+ members: members,
+ filteredJoinedMembers: this._filterMembers(members, 'join'),
+ filteredInvitedMembers: this._filterMembers(members, 'invite'),
+
+ // ideally we'd size this to the page height, but
+ // in practice I find that a little constraining
+ truncateAtJoined: INITIAL_LOAD_NUM_MEMBERS,
+ truncateAtInvited: INITIAL_LOAD_NUM_INVITED,
+ searchQuery: "",
+ });
},
componentWillUnmount: function() {
From 11d9e96d62176bcd5c5639efe029286431ae0897 Mon Sep 17 00:00:00 2001
From: csybr
Date: Wed, 29 Aug 2018 11:52:57 +0000
Subject: [PATCH 215/343] Translated using Weblate (Norwegian Nynorsk)
Currently translated at 99.0% (1217 of 1229 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/nn/
---
src/i18n/strings/nn.json | 78 ++++++++++++++++++++--------------------
1 file changed, 39 insertions(+), 39 deletions(-)
diff --git a/src/i18n/strings/nn.json b/src/i18n/strings/nn.json
index db09273e6d..58b156a08a 100644
--- a/src/i18n/strings/nn.json
+++ b/src/i18n/strings/nn.json
@@ -212,7 +212,7 @@
"Show timestamps in 12 hour format (e.g. 2:30pm)": "Vis tidspunkt i 12-timarsform (t.d. 2:30pm)",
"Always show message timestamps": "Vis alltid meldingstidspunkt",
"Autoplay GIFs and videos": "Spel av GIFar og videoar med ein gong",
- "Always show encryption icons": "Vis alltid enkrypteringsikon",
+ "Always show encryption icons": "Vis alltid krypteringsikon",
"Hide avatars in user and room mentions": "Gøym avatarar i brukar- og romnemningar",
"Disable big emoji in chat": "Skru store emojiar i samtaler av",
"Don't send typing notifications": "Ikkje send skrivevarsel",
@@ -223,8 +223,8 @@
"Disable Community Filter Panel": "Skru Samfunnsfilterpanel av",
"Disable Peer-to-Peer for 1:1 calls": "Skru Peer-til-Peer for 1:1-samtaler av",
"Send analytics data": "Send statistikkdata",
- "Never send encrypted messages to unverified devices from this device": "Send aldri enkrypterte meldingar til ikkje-godkjende einingar frå denne eininga",
- "Never send encrypted messages to unverified devices in this room from this device": "Send aldri enkrypterte meldingar til ikkje-godkjende einingar i dette rommet frå denne eininga",
+ "Never send encrypted messages to unverified devices from this device": "Send aldri krypterte meldingar til ikkje-godkjende einingar frå denne eininga",
+ "Never send encrypted messages to unverified devices in this room from this device": "Send aldri krypterte meldingar til ikkje-godkjende einingar i dette rommet frå denne eininga",
"Enable URL previews for this room (only affects you)": "Skru URL-førehandsvisingar på for dette rommet (påverkar deg åleine)",
"Enable URL previews by default for participants in this room": "Skru URL-førehandsvisingar på som utgangspunkt for deltakarar i dette rommet",
"Room Colour": "Romfarge",
@@ -319,13 +319,13 @@
"Your key share request has been sent - please check your other devices for key share requests.": "Nykeldelingsforespurnaden din vart send - ver venleg og sjekk dei andre einingane dine for nykeldelingsforespurnadar.",
"If your other devices do not have the key for this message you will not be able to decrypt them.": "Viss dei andre einingane dine ikkje har nykelen til denne meldinga kan du ikkje dekryptera ho.",
"Key request sent.": "Nykelforespurnad er send.",
- "Re-request encryption keys from your other devices.": "Spør på nytt om enkrypteringsnyklar frå dei andre einingane dine.",
+ "Re-request encryption keys from your other devices.": "Spør på nytt om krypteringsnyklar frå dei andre einingane dine.",
"Undecryptable": "Kan ikkje dekrypterast",
- "Encrypting": "Enkryptering er i gang",
- "Encrypted, not sent": "Enkryptert, men ikkje send",
- "Encrypted by a verified device": "Enkryptert av ei godkjent eining",
- "Encrypted by an unverified device": "Enkryptert av ei ikkje-godkjent eining",
- "Unencrypted message": "Ikkje-enkryptert melding",
+ "Encrypting": "Krypteringa er i gang",
+ "Encrypted, not sent": "Kryptert, men ikkje sendt",
+ "Encrypted by a verified device": "Kryptert av ei godkjent eining",
+ "Encrypted by an unverified device": "Kryptert av ei ikkje-godkjent eining",
+ "Unencrypted message": "Ikkje-kryptert melding",
"Please select the destination room for this message": "Ver venleg og vel målrommet for denne meldinga",
"Blacklisted": "Svartelista",
"Verified": "Godkjend",
@@ -349,7 +349,7 @@
"Failed to change power level": "Fekk ikkje til å endra makthøgda",
"You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "Du kjem ikkje til å kunna gjera om på denne endringa sidan du set brukaren si høgd opp til di eiga.",
"Are you sure?": "Er du sikker?",
- "No devices with registered encryption keys": "Inga einingar med oppskrivne enkrypteringsnykler",
+ "No devices with registered encryption keys": "Ingen einingar med oppskrivne krypteringsnykler",
"Devices": "Einingar",
"Unignore": "Slutt å oversjå",
"Ignore": "Oversjå",
@@ -379,17 +379,17 @@
"At this time it is not possible to reply with a file so this will be sent without being a reply.": "Det er førebels ikkje mogeleg å svara med ei fil, so dette vil verta send utan å vera eit svar.",
"Upload Files": "Last opp Filer",
"Are you sure you want to upload the following files?": "Er du sikker på at du vil lasta opp dei fylgjande filene?",
- "Encrypted room": "Enkryptert rom",
+ "Encrypted room": "Kryptert rom",
"Unencrypted room": "Ikkje-enkrypert rom",
"Hangup": "Legg på",
"Voice call": "Røystesamtale",
"Video call": "Videosamtale",
"Upload file": "Last ei fil opp",
"Show Text Formatting Toolbar": "Vis Tekstformverktøylinje",
- "Send an encrypted reply…": "Send eit enkryptert svar…",
- "Send a reply (unencrypted)…": "Send eit svar (ikkje-enkryptert)…",
- "Send an encrypted message…": "Send ei enkryptert melding…",
- "Send a message (unencrypted)…": "Send ei melding (ikkje-enkryptert)…",
+ "Send an encrypted reply…": "Send eit kryptert svar…",
+ "Send a reply (unencrypted)…": "Send eit svar (ikkje-kryptert)…",
+ "Send an encrypted message…": "Send ei kryptert melding…",
+ "Send a message (unencrypted)…": "Send ei melding (ikkje-kryptert)…",
"You do not have permission to post to this room": "Du har ikkje tillating til å sende meldingar i dette rommet",
"Turn Markdown on": "Skru Mardown på",
"Turn Markdown off": "Skru Markdown av",
@@ -482,15 +482,15 @@
"The visibility of existing history will be unchanged": "Synlegheita på den noverande historia vert ikkje endra",
"unknown error code": "ukjend errorkode",
"Failed to forget room %(errCode)s": "Fekk ikkje til å gløyma rommet %(errCode)s",
- "End-to-end encryption is in beta and may not be reliable": "Ende-til-ende-enkryptering vert betatesta og er kanskje ikkje påliteleg",
+ "End-to-end encryption is in beta and may not be reliable": "Ende-til-ende-kryptering vert betatesta og er kanskje ikkje påliteleg",
"You should not yet trust it to secure data": "Du bør førebels ikkje stole på at ho kan sikra data",
"Devices will not yet be able to decrypt history from before they joined the room": "Einingar kan førebels ikkje dekryptera historia frå før dei kom inn i rommet",
- "Once encryption is enabled for a room it cannot be turned off again (for now)": "Når enkryptering er skrudd på i eit rom kan ho (førebels) ikkje skruast av att",
- "Encrypted messages will not be visible on clients that do not yet implement encryption": "Enkrypterte meldingar visast ikkje hjå klientar som førebels ikkje implementerar enkryptering",
- "Enable encryption": "Skru enkryptering på",
+ "Once encryption is enabled for a room it cannot be turned off again (for now)": "Når kryptering er skrudd på i eit rom kan ho (førebels) ikkje skruast av att",
+ "Encrypted messages will not be visible on clients that do not yet implement encryption": "Krypterte meldingar visast ikkje hjå klientar som førebels ikkje implementerer kryptering",
+ "Enable encryption": "Skru kryptering på",
"(warning: cannot be disabled again!)": "(åtvaring: kan ikkje skruast av att!)",
- "Encryption is enabled in this room": "Enkryptering er skrudd på i dette rommet",
- "Encryption is not enabled in this room": "Enkryptering er ikkje skrudd på i dette rommet",
+ "Encryption is enabled in this room": "Kryptering er skrudd på i dette rommet",
+ "Encryption is not enabled in this room": "Kryptering er ikkje skrudd på i dette rommet",
"The default role for new room members is": "Rolla nye medlemer har i utgangspunktet er",
"To send messages, you must be a": "For å senda meldingar må du vera ein",
"To invite users into the room, you must be a": "For å byda brukarar inn til rommet må du vera ein",
@@ -500,7 +500,7 @@
"To remove other users' messages, you must be a": "For å fjerna andre brukarar sine meldingar må du vera ein",
"To notify everyone in the room, you must be a": "For å varsla alle i rommet må du vera ein",
"No users have specific privileges in this room": "Ingen brukarar har særeigne rettar i dette rommet",
- "%(user)s is a %(userRole)s": "%(user)s er ein %(userRole)s",
+ "%(user)s is a %(userRole)s": "%(user)s er %(userRole)s",
"Privileged Users": "Brukarar med Særrett",
"Muted Users": "Stilna Brukarar",
"Banned users": "Utestengde Brukarar",
@@ -557,7 +557,7 @@
"You have disabled URL previews by default.": "Du har skrudd URL-førehandsvisingar av i utgangspunktet.",
"URL previews are enabled by default for participants in this room.": "URL-førehandsvisingar er skrudd på i utgangspunktet for dette rommet.",
"URL previews are disabled by default for participants in this room.": "URL-førehandsvisingar er skrudd av i utgangspunktet for dette rommet.",
- "In encrypted rooms, like this one, URL previews are disabled by default to ensure that your homeserver (where the previews are generated) cannot gather information about links you see in this room.": "I enkrypterte rom, slik som denne, er URL-førehandsvisingar skrudd av i utgangspunktet for å forsikra at heimtenaren din (der førehandsvisinger lagast) ikkje kan samla informasjon om lenkjer som du ser i dette rommet.",
+ "In encrypted rooms, like this one, URL previews are disabled by default to ensure that your homeserver (where the previews are generated) cannot gather information about links you see in this room.": "I krypterte rom, slik som denne, er URL-førehandsvisingar skrudd av i utgangspunktet for å forsikra at heimtenaren din (der førehandsvisinger lagast) ikkje kan samla informasjon om lenkjer som du ser i dette rommet.",
"URL Previews": "URL-førehandsvisingar",
"Sunday": "søndag",
"Monday": "måndag",
@@ -654,7 +654,7 @@
"Downloading update...": "Lastar oppdatering ned...",
"Warning": "Åtvaring",
"Unknown Address": "Ukjend Adresse",
- "NOTE: Apps are not end-to-end encrypted": "MERK DEG: Æppar er ikkje ende-til-ende-enkrypterte",
+ "NOTE: Apps are not end-to-end encrypted": "MERK DEG: Æppar er ikkje ende-til-ende-krypterte",
"Warning: This widget might use cookies.": "Åtvaring: Denne widgeten brukar kanskje datakaker.",
"Do you want to load widget from URL:": "Vil du lasta widgeten frå URL:",
"Allow": "Tillat",
@@ -801,22 +801,22 @@
"Toolbox": "Verktøykasse",
"Developer Tools": "Utviklarverktøy",
"An error has occurred.": "Noko gjekk gale.",
- "You added a new device '%(displayName)s', which is requesting encryption keys.": "Du la til den nye eininga '%(displayName)s', som spør om enkrypteringsnyklar.",
- "Your unverified device '%(displayName)s' is requesting encryption keys.": "Den ikkje-godkjende eininga di '%(displayName)s' spør om enkrypteringsnyklar.",
+ "You added a new device '%(displayName)s', which is requesting encryption keys.": "Du la til den nye eininga '%(displayName)s', som spør om krypteringsnyklar.",
+ "Your unverified device '%(displayName)s' is requesting encryption keys.": "Den ikkje-godkjende eininga di '%(displayName)s' spør om krypteringsnyklar.",
"Start verification": "Byrj godkjenning",
"Share without verifying": "Del utan å godkjenna",
"Ignore request": "Oversjå førespurnad",
"Loading device info...": "Lastar einingsinfo inn...",
- "Encryption key request": "Enkrypteringsnykel-førespurnad",
+ "Encryption key request": "Krypteringsnykel-førespurnad",
"Sign out": "Logg ut",
- "Log out and remove encryption keys?": "Logg ut og fjern enkrypteringsnyklar?",
+ "Log out and remove encryption keys?": "Logg ut og fjern krypteringsnyklar?",
"Clear Storage and Sign Out": "Tøm Lager og Logg Ut",
"Send Logs": "Send Loggar",
"Refresh": "Hent fram på nytt",
"Unable to restore session": "Kunne ikkje henta øykta fram att",
"We encountered an error trying to restore your previous session.": "Noko gjekk gale med framhentinga av den førre øykta di.",
"If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.": "Viss du har bruka ei nyare utgåve av Riot før, kan det henda at øykta di ikkje passar inn i denne utgåva. Lukk dette vindauget og gå attende til den nyare utgåva.",
- "Clearing your browser's storage may fix the problem, but will sign you out and cause any encrypted chat history to become unreadable.": "Det kan henda at å tømma nettlesarlageret rettar opp i det, men det loggar deg ut og kan gjera den enkrypterte pratehistoria uleseleg.",
+ "Clearing your browser's storage may fix the problem, but will sign you out and cause any encrypted chat history to become unreadable.": "Det kan henda at å tømma nettlesarlageret rettar opp i det, men det loggar deg ut og kan gjera den krypterte pratehistoria uleseleg.",
"Invalid Email Address": "Ugangbar Emailadresse",
"This doesn't appear to be a valid email address": "Det ser ikkje ut til at emailadressa er gangbar",
"Verification Pending": "Ventar på Godkjenning",
@@ -891,7 +891,7 @@
"Topic": "Emne",
"Make this room private": "Gjer dette rommet privat",
"Share message history with new users": "Del meldingshistoria med nye brukarar",
- "Encrypt room": "Enkrypter rommet",
+ "Encrypt room": "Krypter rommet",
"You must register to use this functionality": "Du må melda deg inn for å bruka denne funksjonen",
"You must join the room to see its files": "Du må fare inn i rommet for å sjå filene dets",
"There are no visible files in this room": "Det er ingen synlege filer i dette rommet",
@@ -949,7 +949,7 @@
"To continue using the %(homeserverDomain)s homeserver you must review and agree to our terms and conditions.": "For å framleis bruka %(homeserverDomain)s sin heimtenar må du sjå over og seia deg einig i våre Vilkår og Føresetnader.",
"Review terms and conditions": "Sjå over Vilkår og Føresetnader",
"Old cryptography data detected": "Gamal kryptografidata vart oppdagen",
- "Data from an older version of Riot has been detected. This will have caused end-to-end cryptography to malfunction in the older version. End-to-end encrypted messages exchanged recently whilst using the older version may not be decryptable in this version. This may also cause messages exchanged with this version to fail. If you experience problems, log out and back in again. To retain message history, export and re-import your keys.": "Data frå ei eldre utgåve av Riot vart oppdagen. I den eldre utgåva hadde dette gjort at ende-til-ende-kryptografi ikkje verkar som det skal. Ende-til-ende-enkrypterte meldingar som vert utveksla nyleg med den gamle utgåva er det kanskje ikkje mogeleg å dekryptera i denne utgåva. Dette fører kanskje òg til at meldingar som vart utveksla med denne utgåva ikkje verkar. Viss du opplever vansker, logg ut og inn att. For å spara på meldingshistoria, hent nyklane dine ut og inn at.",
+ "Data from an older version of Riot has been detected. This will have caused end-to-end cryptography to malfunction in the older version. End-to-end encrypted messages exchanged recently whilst using the older version may not be decryptable in this version. This may also cause messages exchanged with this version to fail. If you experience problems, log out and back in again. To retain message history, export and re-import your keys.": "Data frå ei eldre utgåve av Riot vart oppdagen. I den eldre utgåva hadde dette gjort at ende-til-ende-kryptografi ikkje verkar som det skal. Ende-til-ende-krypterte meldingar som vert utveksla nyleg med den gamle utgåva er det kanskje ikkje mogeleg å dekryptera i denne utgåva. Dette fører kanskje òg til at meldingar som vart utveksla med denne utgåva ikkje verkar. Viss du opplever vansker, logg ut og inn att. For å spara på meldingshistoria, hent nyklane dine ut og inn at.",
"Logout": "Loggar ut",
"Your Communities": "Dine Samfunn",
"Error whilst fetching joined communities": "Noko gjekk gale med innhentinga av samfunna du er i",
@@ -1123,10 +1123,10 @@
"Curve25519 identity key": "Curve25519-identitetsnykel",
"none": "ingen",
"Algorithm": "Algoritme",
- "unencrypted": "ikkje-enkryptert",
+ "unencrypted": "ikkje-kryptert",
"Decryption error": "Noko gjekk gale med dekrypteringa",
"Session ID": "Økt-ID",
- "End-to-end encryption information": "Ende-til-ende-enkrypteringsinfo",
+ "End-to-end encryption information": "Ende-til-ende-krypteringsinfo",
"Event information": "Hendingsinfo",
"Sender device information": "Info om avsendareininga",
"Passphrases must match": "Passetningane må vera like",
@@ -1137,7 +1137,7 @@
"Call Timeout": "Tidsavbrot i Samtala",
"Enable automatic language detection for syntax highlighting": "Skru automatisk måloppdaging på for syntax-understreking",
"Show empty room list headings": "Vis overskrift på tomme romlister",
- "Changing password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Å endra passordet ditt attendestiller førebelst alle ende-til-ende-enkrypteringsnyklar på alle einingar, slik at enkryptert pratehistorie vert uleseleg, med mindre du fyrst hentar romnyklane dine ut og hentar dei inn att etterpå. I framtida vil denne prosessen vera betre.",
+ "Changing password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Å endra passordet ditt attendestiller førebelst alle ende-til-ende-krypteringsnyklar på alle einingar, slik at kryptert pratehistorie vert uleseleg, med mindre du fyrst hentar romnyklane dine ut og hentar dei inn att etterpå. I framtida vil denne prosessen vera betre.",
"Export E2E room keys": "Hent E2E-romnyklar ut",
"You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "Det kan henda at du stilte dei inn på ein annan klient enn Riot. Du kan ikkje stilla på dei i Riot men dei gjeld framleis",
"Key share requests are sent to your other devices automatically. If you rejected or dismissed the key share request on your other devices, click here to request the keys for this session again.": "Nykeldelingsførespurnader vert sende til dei andre einingane dine av seg sjølv. Viss du sa nei til eller avviste førespurnadene på dei andre einingane, klikk her for å beda om nyklane for denne øykta på nytt.",
@@ -1197,7 +1197,7 @@
"Clear Cache and Reload": "Tøm Buffar og Last inn att",
"Profile": "Brukar",
"Access Token:": "Tilgangs-Teikn:",
- "Resetting password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Å attendestilla passordet vil førebels attendestilla alle ende-til-ende-enkrypteringsnyklar på alle einingar, slik at enkrypterte samtaler vert uleselege, med mindre du fyrst hentar romnyklane ut og hentar dei inn att etterpå. Dette vil forbetrast i framtida.",
+ "Resetting password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Å attendestilla passordet vil førebels attendestilla alle ende-til-ende-krypteringsnyklar på alle einingar, slik at krypterte samtaler vert uleselege, med mindre du fyrst hentar romnyklane ut og hentar dei inn att etterpå. Dette vil forbetrast i framtida.",
"This homeserver has hit its Monthly Active User limit": "Heimtenaren har truffe den Månadlege Grensa si for Aktive Brukarar",
"This homeserver doesn't offer any login flows which are supported by this client.": "Heimtenaren tilbyd ingen nye innloggingsstraumar som støttast av denne klienten.",
"Claimed Ed25519 fingerprint key": "Gjorde krav på Ed25519-fingeravtrykksnykel",
@@ -1211,10 +1211,10 @@
"Failed to remove tag %(tagName)s from room": "Fekk ikkje til å fjerna merket %(tagName)s frå rommet",
"Failed to add tag %(tagName)s to room": "Fekk ikkje til å leggja merket %(tagName)s til i rommet",
"Hide read receipts": "Gøym lest-lappar",
- "For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.": "Av sikkerheitsmessige grunnar vil det å logga ut sletta alle ende-til-ende-enkrypteringsnyklar frå nettlesaren. Viss du vil kunna dekryptera samtalehistoria di på framtidige Riot-øykter, ver venleg og hent ut romnyklande dine og tak vare på dei.",
- "This process allows you to export the keys for messages you have received in encrypted rooms to a local file. You will then be able to import the file into another Matrix client in the future, so that client will also be able to decrypt these messages.": "Dette tillèt deg å henta nyklane for meldingar du har sendt i enkrypterte rom ut til ei lokal fil. Då kan du henta fila inn til ein annan Matrix-klient i framtida, slik at den klienten òg kan dekryptera meldingane.",
- "The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a passphrase below, which will be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.": "Å henta filen ut tillèt kven som helst som kan lesa ho å dekryptera alle enkrypterte meldingar du kan sjå, so du bør passa på å halda ho trygg. For å hjelpa til med dette bør du skriva ei passetning inn i feltet under, som vil brukast til å enkryptere den uthenta dataen. Det vil berre vera mogeleg å henta dataen inn med den same passetninga.",
- "This process allows you to import encryption keys that you had previously exported from another Matrix client. You will then be able to decrypt any messages that the other client could decrypt.": "Dette tillèt deg å henta enkrypteringsnyklar som du tidlegare henta ut frå ein annan Matrix-klient inn. Du vil so kunna dekryptera alle meldingane som den andre klienten kunne dekryptera.",
+ "For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.": "Av sikkerheitsmessige grunnar vil det å logga ut sletta alle ende-til-ende-krypteringsnyklar frå nettlesaren. Viss du vil kunna dekryptera samtalehistoria di på framtidige Riot-øykter, ver venleg og hent ut romnyklande dine og tak vare på dei.",
+ "This process allows you to export the keys for messages you have received in encrypted rooms to a local file. You will then be able to import the file into another Matrix client in the future, so that client will also be able to decrypt these messages.": "Dette tillèt deg å henta nyklane for meldingar du har sendt i krypterte rom ut til ei lokal fil. Då kan du henta fila inn til ein annan Matrix-klient i framtida, slik at den klienten òg kan dekryptera meldingane.",
+ "The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a passphrase below, which will be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.": "Å henta filen ut tillèt kven som helst som kan lesa ho å dekryptera alle krypterte meldingar du kan sjå, so du bør passa på å halda ho trygg. For å hjelpa til med dette bør du skriva ei passetning inn i feltet under, som vil brukast til å kryptere den uthenta dataen. Det vil berre vera mogeleg å henta dataen inn med den same passetninga.",
+ "This process allows you to import encryption keys that you had previously exported from another Matrix client. You will then be able to decrypt any messages that the other client could decrypt.": "Dette tillèt deg å henta krypteringsnyklar som du tidlegare henta ut frå ein annan Matrix-klient inn. Du vil so kunna dekryptera alle meldingane som den andre klienten kunne dekryptera.",
"The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.": "Uthentingsfila vil verta verna med ei passetning. Du bør skriva passetninga inn her for å dekryptera fila.",
"Internal room ID: ": "Indre rom-ID: ",
"Room version number: ": "Romutgåvenummer: ",
From 63938a3f9f4799fe656ca250d2342ebe83f718e5 Mon Sep 17 00:00:00 2001
From: David Baker
Date: Wed, 29 Aug 2018 18:09:37 +0100
Subject: [PATCH 216/343] Slash command to discard megolm session
For faster crypto debugging
Requires https://github.com/matrix-org/matrix-js-sdk/pull/704
---
src/SlashCommands.js | 15 +++++++++++++++
src/i18n/strings/en_EN.json | 2 ++
2 files changed, 17 insertions(+)
diff --git a/src/SlashCommands.js b/src/SlashCommands.js
index 9c9573ae21..3a8e77293b 100644
--- a/src/SlashCommands.js
+++ b/src/SlashCommands.js
@@ -1,5 +1,6 @@
/*
Copyright 2015, 2016 OpenMarket Ltd
+Copyright 2018 New Vector Ltd
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -470,6 +471,19 @@ export const CommandMap = {
description: _td('Displays action'),
hideCompletionAfterSpace: true,
}),
+
+ discardsession: new Command({
+ name: 'discardsession',
+ description: _td('Forces the current outbound group session in an encrypted room to be discarded'),
+ runFn: function(roomId) {
+ try {
+ MatrixClientPeg.get().forceDiscardSession(roomId);
+ } catch (e) {
+ return reject(e.message);
+ }
+ return success();
+ },
+ }),
};
/* eslint-enable babel/no-invalid-this */
@@ -477,6 +491,7 @@ export const CommandMap = {
// helpful aliases
const aliases = {
j: "join",
+ newballsplease: "discardsession",
};
diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json
index 2371ba0ca6..643bf06089 100644
--- a/src/i18n/strings/en_EN.json
+++ b/src/i18n/strings/en_EN.json
@@ -145,6 +145,8 @@
"Verified key": "Verified key",
"The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.": "The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.",
"Displays action": "Displays action",
+ "Forces the current outbound group session in an encrypted room to be discarded": "Forces the current outbound group session in an encrypted room to be discarded",
+ "Error Discarding Session": "Error Discarding Session",
"Unrecognised command:": "Unrecognised command:",
"Reason": "Reason",
"%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s accepted the invitation for %(displayName)s.",
From 6cbe4144d4c648f34e1ff01ce0e678d91536eb13 Mon Sep 17 00:00:00 2001
From: David Baker
Date: Wed, 29 Aug 2018 18:28:16 +0100
Subject: [PATCH 217/343] unused import
---
src/components/views/messages/RoomCreate.js | 1 -
1 file changed, 1 deletion(-)
diff --git a/src/components/views/messages/RoomCreate.js b/src/components/views/messages/RoomCreate.js
index 8159741ae1..0bb832f8ea 100644
--- a/src/components/views/messages/RoomCreate.js
+++ b/src/components/views/messages/RoomCreate.js
@@ -18,7 +18,6 @@ import React from 'react';
import PropTypes from 'prop-types';
import dis from '../../../dispatcher';
-import sdk from '../../../index';
import { makeEventPermalink } from '../../../matrix-to';
import { _t } from '../../../languageHandler';
From 0a8f62b92e2a281a03235a63c13b3feb8761f189 Mon Sep 17 00:00:00 2001
From: Szimszon
Date: Wed, 29 Aug 2018 17:52:41 +0000
Subject: [PATCH 218/343] Translated using Weblate (Hungarian)
Currently translated at 100.0% (1247 of 1247 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/hu/
---
src/i18n/strings/hu.json | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/src/i18n/strings/hu.json b/src/i18n/strings/hu.json
index 38a38057b6..888ad80e17 100644
--- a/src/i18n/strings/hu.json
+++ b/src/i18n/strings/hu.json
@@ -1256,5 +1256,13 @@
"Lazy loading is not supported by your current homeserver.": "A késleltetett betöltés nem támogatott ennél a Matrix szervernél.",
"Sorry, your homeserver is too old to participate in this room.": "Sajnáljuk, a Matrix szervered nem elég friss ahhoz, hogy részt vegyen ebben a szobában.",
"Please contact your homeserver administrator.": "Kérlek vedd fel a kapcsolatot a Matrix szerver adminisztrátorával.",
- "Legal": "Jogi"
+ "Legal": "Jogi",
+ "This room has been replaced and is no longer active.": "Ezt a szobát lecseréltük és nem aktív többé.",
+ "The conversation continues here.": "A beszélgetés itt folytatódik.",
+ "Upgrade room to version %(ver)s": "A szoba frissítése %(ver)s verzióra",
+ "This room is a continuation of another conversation.": "Ebben a szobában folytatódik egy másik beszélgetés.",
+ "Click here to see older messages.": "Ide kattintva megnézheted a régi üzeneteket.",
+ "Failed to upgrade room": "A szoba frissítése sikertelen",
+ "The room upgrade could not be completed": "A szoba frissítését nem sikerült befejezni",
+ "Upgrade this room to version %(version)s": "A szoba frissítése %(version)s verzióra"
}
From 023035a7dd2a0cd0007a55ac33bf5e6ec0fda208 Mon Sep 17 00:00:00 2001
From: Kenneth Larsson
Date: Wed, 29 Aug 2018 19:06:30 +0000
Subject: [PATCH 219/343] Translated using Weblate (Swedish)
Currently translated at 100.0% (1247 of 1247 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/sv/
---
src/i18n/strings/sv.json | 20 +++++++++++++++++++-
1 file changed, 19 insertions(+), 1 deletion(-)
diff --git a/src/i18n/strings/sv.json b/src/i18n/strings/sv.json
index 8eb4743ad6..da167bb4e3 100644
--- a/src/i18n/strings/sv.json
+++ b/src/i18n/strings/sv.json
@@ -1244,5 +1244,23 @@
"Lazy loading members not supported": "Behovsladdning av medlemmar stöds inte",
"Lazy loading is not supported by your current homeserver.": "Behovsladdning stöds inte av din nuvarande hemserver.",
"Legal": "Juridiskt",
- "Please contact your service administrator to continue using this service.": "Kontakta din serviceadministratör för att fortsätta använda servicen."
+ "Please contact your service administrator to continue using this service.": "Kontakta din serviceadministratör för att fortsätta använda servicen.",
+ "This room has been replaced and is no longer active.": "Detta rum har ersatts och är inte längre aktivt.",
+ "The conversation continues here.": "Konversationen fortsätter här.",
+ "Upgrade room to version %(ver)s": "Uppgradera rummet till version %(ver)s",
+ "There is a known vulnerability affecting this room.": "Det finns en känd sårbarhet som påverkar detta rum.",
+ "This room version is vulnerable to malicious modification of room state.": "Denna rumsversion är sårbar för skadlig modifiering av rumstillstånd.",
+ "Click here to upgrade to the latest room version and ensure room integrity is protected.": "Klicka här för att uppgradera till senaste rumsversionen och se till att rumsintegriteten är skyddad.",
+ "Only room administrators will see this warning": "Endast rumsadministratörer kommer att se denna varning",
+ "This room is a continuation of another conversation.": "Detta rum är en fortsättning på en annan konversation.",
+ "Click here to see older messages.": "Klicka här för att se äldre meddelanden.",
+ "Failed to upgrade room": "Det gick inte att uppgradera rum",
+ "The room upgrade could not be completed": "Rumsuppgraderingen kunde inte slutföras",
+ "Upgrade this room to version %(version)s": "Uppgradera detta rum till version %(version)s",
+ "Upgrade Room Version": "Uppgradera rumsversion",
+ "Upgrading this room requires closing down the current instance of the room and creating a new room it its place. To give room members the best possible experience, we will:": "Uppgradering av detta rum kräver att nuvarande rumsinstans stängs och ersätts av ett nytt rum. För att ge rumsmedlemmarna bästa möjliga upplevelse, kommer vi att:",
+ "Create a new room with the same name, description and avatar": "Skapa ett nytt rum med samma namn, beskrivning och avatar",
+ "Update any local room aliases to point to the new room": "Uppdatera lokala rumsalias att peka på det nya rummet",
+ "Stop users from speaking in the old version of the room, and post a message advising users to move to the new room": "Hindra användare från att prata i den gamla rumsversionen och posta ett meddelande som rekommenderar användare att flytta till det nya rummet",
+ "Put a link back to the old room at the start of the new room so people can see old messages": "Sätta en länk tillbaka till det gamla rummet i början av det nya rummet så att folk kan se gamla meddelanden"
}
From 47609feb2c8d501747ab1a3147b2adeffbc1e3d6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?K=C3=A9vin=20C?=
Date: Wed, 29 Aug 2018 20:57:18 +0000
Subject: [PATCH 220/343] Translated using Weblate (French)
Currently translated at 100.0% (1247 of 1247 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/fr/
---
src/i18n/strings/fr.json | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/src/i18n/strings/fr.json b/src/i18n/strings/fr.json
index b48cc0b80c..c80117cf89 100644
--- a/src/i18n/strings/fr.json
+++ b/src/i18n/strings/fr.json
@@ -1256,5 +1256,13 @@
"Lazy loading is not supported by your current homeserver.": "Le chargement différé n'est pas pris en charge par votre serveur d'accueil actuel.",
"Sorry, your homeserver is too old to participate in this room.": "Désolé, votre serveur d'accueil est trop vieux pour participer à ce salon.",
"Please contact your homeserver administrator.": "Veuillez contacter l'administrateur de votre serveur d'accueil.",
- "Legal": "Légal"
+ "Legal": "Légal",
+ "This room has been replaced and is no longer active.": "Ce salon a été remplacé et n'est plus actif.",
+ "The conversation continues here.": "La discussion continue ici.",
+ "Upgrade room to version %(ver)s": "Mettre à jour le salon vers la version %(ver)s",
+ "This room is a continuation of another conversation.": "Ce salon est la suite d'une autre discussion.",
+ "Click here to see older messages.": "Cliquer ici pour voir les vieux messages.",
+ "Failed to upgrade room": "Échec de la mise à niveau du salon",
+ "The room upgrade could not be completed": "La mise à niveau du salon n'a pas pu être effectuée",
+ "Upgrade this room to version %(version)s": "Mettre à niveau ce salon vers la version %(version)s"
}
From 91544b42e748fcc6f0c213bd5fe2b58c86ada8d5 Mon Sep 17 00:00:00 2001
From: Jeff Huang
Date: Thu, 30 Aug 2018 00:41:50 +0000
Subject: [PATCH 221/343] Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (1247 of 1247 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/zh_Hant/
---
src/i18n/strings/zh_Hant.json | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/src/i18n/strings/zh_Hant.json b/src/i18n/strings/zh_Hant.json
index 327b06cff1..536628c3b1 100644
--- a/src/i18n/strings/zh_Hant.json
+++ b/src/i18n/strings/zh_Hant.json
@@ -1256,5 +1256,13 @@
"Lazy loading is not supported by your current homeserver.": "您目前的家伺服器不支援延遲載入。",
"Sorry, your homeserver is too old to participate in this room.": "抱歉,您的家伺服器太舊了,所以無法參與此聊天室。",
"Please contact your homeserver administrator.": "請聯絡您的家伺服器的管理員。",
- "Legal": "法律"
+ "Legal": "法律",
+ "This room has been replaced and is no longer active.": "此已被取代的聊天室已不再活躍。",
+ "The conversation continues here.": "對話在此繼續。",
+ "Upgrade room to version %(ver)s": "將聊天室升級為版本 %(ver)s",
+ "This room is a continuation of another conversation.": "此聊天室是另一個對話的延續。",
+ "Click here to see older messages.": "點選這裡以檢視較舊的訊息。",
+ "Failed to upgrade room": "升級聊天室失敗",
+ "The room upgrade could not be completed": "聊天室升級可能不完整",
+ "Upgrade this room to version %(version)s": "升級此聊天室到版本 %(version)s"
}
From 5afb3bfb2959a3d61e8a024a042080785fafc7d2 Mon Sep 17 00:00:00 2001
From: Bruno Windels
Date: Thu, 30 Aug 2018 10:53:25 +0200
Subject: [PATCH 222/343] patch up DMs marked to self (can happy if any client
has a bug here)
---
src/utils/DMRoomMap.js | 38 +++++++++++++++++++++++++++++++++++++-
1 file changed, 37 insertions(+), 1 deletion(-)
diff --git a/src/utils/DMRoomMap.js b/src/utils/DMRoomMap.js
index d95eda490d..93ff565080 100644
--- a/src/utils/DMRoomMap.js
+++ b/src/utils/DMRoomMap.js
@@ -70,10 +70,46 @@ export default class DMRoomMap {
_onAccountData(ev) {
if (ev.getType() == 'm.direct') {
- this.userToRooms = this.matrixClient.getAccountData('m.direct').getContent();
+ let userToRooms = this.matrixClient.getAccountData('m.direct').getContent();
+ const myUserId = this.matrixClient.getUserId();
+ if (userToRooms[myUserId]) {
+ userToRooms = this._patchUpSelfDMs(userToRooms);
+ this.matrixClient.setAccountData('m.direct', userToRooms);
+ }
+ this.userToRooms = userToRooms;
this._populateRoomToUser();
}
}
+ /**
+ * some client bug somewhere is causing some DMs to be marked
+ * with ourself, not the other user. Fix it by guessing the other user and
+ * modifying userToRooms
+ */
+ _patchUpSelfDMs(userToRooms) {
+ const myUserId = this.matrixClient.getUserId();
+ const selfRoomIds = userToRooms[myUserId];
+ if (selfRoomIds) {
+ const guessedUserIds = selfRoomIds.map((roomId) => {
+ const room = this.matrixClient.getRoom(roomId);
+ return room.guessDMUserId();
+ });
+ delete userToRooms[myUserId];
+ guessedUserIds.forEach((userId, i) => {
+ if (!userId) {
+ // if not able to guess the other user (unlikely)
+ // still put it in the map so the room stays marked
+ // as a DM, we just wont be able to show an avatar.
+ userId = "";
+ }
+ const roomId = selfRoomIds[i];
+ const roomIds = userToRooms[userId];
+ if (!roomIds) {
+ roomIds = userToRooms[userId] = [];
+ }
+ roomIds.push(roomId);
+ });
+ }
+ }
getDMRoomsForUserId(userId) {
// Here, we return the empty list if there are no rooms,
From d7868dbe3346a99aedc8facfb9d6cf83b6c8a5ab Mon Sep 17 00:00:00 2001
From: Bruno Windels
Date: Thu, 30 Aug 2018 10:54:01 +0200
Subject: [PATCH 223/343] delegate avatar selection to room for rooms with two
members (but not in m.direct)
---
src/components/views/avatars/RoomAvatar.js | 10 +---------
1 file changed, 1 insertion(+), 9 deletions(-)
diff --git a/src/components/views/avatars/RoomAvatar.js b/src/components/views/avatars/RoomAvatar.js
index e0105159fb..7b9cb10d51 100644
--- a/src/components/views/avatars/RoomAvatar.js
+++ b/src/components/views/avatars/RoomAvatar.js
@@ -119,15 +119,7 @@ module.exports = React.createClass({
} else {
// if the room is not marked as a 1:1, but only has max 2 members
// then still try to show any avatar (pref. other member)
- const totalMemberCount = room.getJoinedMemberCount() +
- room.getInvitedMemberCount();
- const members = room.currentState.getMembers();
- if (totalMemberCount == 2) {
- const myUserId = MatrixClientPeg.get().getUserId();
- otherMember = members.find(m => m.userId !== myUserId);
- } else if (totalMemberCount == 1) {
- otherMember = members[0];
- }
+ otherMember = room.getAvatarFallbackMember();
}
if (otherMember) {
return otherMember.getAvatarUrl(
From f8baa0f7296ccf028f049b8fb2176dde8b4387d2 Mon Sep 17 00:00:00 2001
From: Osoitz
Date: Thu, 30 Aug 2018 09:31:19 +0000
Subject: [PATCH 224/343] Translated using Weblate (Basque)
Currently translated at 100.0% (1247 of 1247 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/eu/
---
src/i18n/strings/eu.json | 35 ++++++++++++++++++++++++++++++++++-
1 file changed, 34 insertions(+), 1 deletion(-)
diff --git a/src/i18n/strings/eu.json b/src/i18n/strings/eu.json
index c89f0b44f0..703602ea9f 100644
--- a/src/i18n/strings/eu.json
+++ b/src/i18n/strings/eu.json
@@ -1231,5 +1231,38 @@
"Internal room ID: ": "Gelaren barne IDa: ",
"Room version number: ": "Gelaren bertsio zenbakia: ",
"This homeserver has hit its Monthly Active User limit. Please contact your service administrator to continue using the service.": "Hasiera zerbitzari honek hileko erabiltzaile aktiboen muga jo du. Jarri zerbitzuaren administratzailearekin kontaktuan zerbitzua erabiltzen jarraitzeko.",
- "This homeserver has hit its Monthly Active User limit so some users will not be able to log in. Please contact your service administrator to get this limit increased.": "Hasiera zerbitzari honek hileko erabiltzaile aktiboen muga jo du eta ezin izango duzu saioa hasi. Jarri zerbitzuaren administratzailearekin kontaktuan muga hau handitu dezan."
+ "This homeserver has hit its Monthly Active User limit so some users will not be able to log in. Please contact your service administrator to get this limit increased.": "Hasiera zerbitzari honek hileko erabiltzaile aktiboen muga jo du eta ezin izango duzu saioa hasi. Jarri zerbitzuaren administratzailearekin kontaktuan muga hau handitu dezan.",
+ "Sorry, your homeserver is too old to participate in this room.": "Zure hasiera-zerbitzaria zaharregia da gela honetan parte hartzeko.",
+ "Please contact your homeserver administrator.": "Jarri zure hasiera-zerbitzariaren administratzailearekin kontaktuan.",
+ "Increase performance by only loading room members on first view": "Hobetu errendimendua gelako kideak lehen ikustaldian besterik ez kargatuz",
+ "This room has been replaced and is no longer active.": "Gela hau ordeztu da eta ez dago aktibo jada.",
+ "The conversation continues here.": "Elkarrizketak hemen darrai.",
+ "Upgrade room to version %(ver)s": "Eguneratu gela %(ver)s bertsiora",
+ "There is a known vulnerability affecting this room.": "Gela honi eragiten dion ahulezia ezagun bat dago.",
+ "This room version is vulnerable to malicious modification of room state.": "Gela bertsio honek gelaren egoera gaiztoki aldatzea baimentzen duen ahulezia bat du.",
+ "Click here to upgrade to the latest room version and ensure room integrity is protected.": "Sakatu hemen gela azken bertsiora eguneratzeko eta gelaren osotasuna babestuta dagoela egiaztatzeko.",
+ "Only room administrators will see this warning": "Gelaren administratzaileek besterik ez dute abisu hau ikusiko",
+ "This room is a continuation of another conversation.": "Gela hau aurreko elkarrizketa baten jarraipena da.",
+ "Click here to see older messages.": "Egin klik hemen mezu zaharrak ikusteko.",
+ "Please contact your service administrator to continue using the service.": "Jarri kontaktuan zerbitzuaren administratzailearekin zerbitzu hau erabiltzen jarraitzeko.",
+ "This homeserver has hit its Monthly Active User limit.": "Hasiera zerbitzari honek bere hilabeteko erabiltzaile aktiboen muga gainditu du.",
+ "This homeserver has exceeded one of its resource limits.": "Hasiera zerbitzari honek bere baliabide mugetako bat gainditu du.",
+ "Please contact your service administrator to get this limit increased.": "Jarri kontaktuan zerbitzuaren administratzailearekin muga hau areagotzeko.",
+ "This homeserver has hit its Monthly Active User limit so some users will not be able to log in.": "Hasiera zerbitzari honek hilabeteko erabiltzaile aktiboen muga jo du erabiltzaile batzuk ezin izango dute saioa hasi.",
+ "This homeserver has exceeded one of its resource limits so some users will not be able to log in.": "Hasiera zerbitzari honek bere baliabide mugetako bat jo du erabiltzaile batzuk ezin izango dute saioa hasi.",
+ "Failed to upgrade room": "Huts egin du gela eguneratzea",
+ "The room upgrade could not be completed": "Ezin izan da gelaren eguneraketa osatu",
+ "Upgrade this room to version %(version)s": "Eguneratu gela hau %(version)s bertsiora",
+ "Upgrade Room Version": "Eguneratu gelaren bertsioa",
+ "Upgrading this room requires closing down the current instance of the room and creating a new room it its place. To give room members the best possible experience, we will:": "Gela hau eguneratzeak instantzian uneko gela itxi eta berri bat sortzea dakar. Erabiltzaileei ahalik eta esperientzia onena emateko hau egingo dugu:",
+ "Create a new room with the same name, description and avatar": "Izen, deskripzio eta abatar bereko beste gela bat sortu",
+ "Update any local room aliases to point to the new room": "Tokiko gelaren ezizen guztiak gela berrira apuntatu ditzaten eguneratu",
+ "Stop users from speaking in the old version of the room, and post a message advising users to move to the new room": "Erabiltzaileei gelaren bertsio zaharrean hitz egiten jarraitzea eragotzi, eta erabiltzaileei gela berrira mugitzea aholkatzeko mezu bat bidali",
+ "Put a link back to the old room at the start of the new room so people can see old messages": "Gela berriaren hasieran gela zaharrera esteka bat jarri jendeak mezu zaharrak ikus ditzan",
+ "Your message wasn't sent because this homeserver has hit its Monthly Active User Limit. Please contact your service administrator to continue using the service.": "Zure mezua ez da bidali zure hasiera zerbitzariak hilabeteko erabiltzaile aktiboen muga jo duelako. Jarri kontaktuan zerbitzuaren administratzailearekin zerbitzua erabiltzen jarraitzeko.",
+ "Your message wasn't sent because this homeserver has exceeded a resource limit. Please contact your service administrator to continue using the service.": "Zure mezua ez da bidali zure hasiera zerbitzariak baliabide mugaren bat jo duelako. Jarri kontaktuan zerbitzuaren administratzailearekin zerbitzua erabiltzen jarraitzeko.",
+ "Lazy loading members not supported": "Kideen karga alferrerako euskarririk ez",
+ "Lazy loading is not supported by your current homeserver.": "Zure hasiera zerbitzariak ez du onartzen karga alferra.",
+ "Legal": "Legezkoa",
+ "Please contact your service administrator to continue using this service.": "Jarri kontaktuan zerbitzuaren administratzailearekin zerbitzu hau erabiltzen jarraitzeko."
}
From caff60d56d85b9db0bca1e9e238fd2507c7c2c62 Mon Sep 17 00:00:00 2001
From: Bruno Windels
Date: Thu, 30 Aug 2018 11:37:13 +0200
Subject: [PATCH 225/343] fix var decl
---
src/utils/DMRoomMap.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/utils/DMRoomMap.js b/src/utils/DMRoomMap.js
index 93ff565080..7974ab5681 100644
--- a/src/utils/DMRoomMap.js
+++ b/src/utils/DMRoomMap.js
@@ -102,7 +102,7 @@ export default class DMRoomMap {
userId = "";
}
const roomId = selfRoomIds[i];
- const roomIds = userToRooms[userId];
+ let roomIds = userToRooms[userId];
if (!roomIds) {
roomIds = userToRooms[userId] = [];
}
From 379ddfff2961faf381d12560ec78095314ed8018 Mon Sep 17 00:00:00 2001
From: Bruno Windels
Date: Thu, 30 Aug 2018 11:50:57 +0200
Subject: [PATCH 226/343] dont reassign userToRooms as we're just patching it
up, also better check if we really have self DMs
---
src/utils/DMRoomMap.js | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/src/utils/DMRoomMap.js b/src/utils/DMRoomMap.js
index 7974ab5681..1db8e7f970 100644
--- a/src/utils/DMRoomMap.js
+++ b/src/utils/DMRoomMap.js
@@ -72,8 +72,9 @@ export default class DMRoomMap {
if (ev.getType() == 'm.direct') {
let userToRooms = this.matrixClient.getAccountData('m.direct').getContent();
const myUserId = this.matrixClient.getUserId();
- if (userToRooms[myUserId]) {
- userToRooms = this._patchUpSelfDMs(userToRooms);
+ const selfDMs = userToRooms[myUserId];
+ if (selfDMs && selfDMs.length) {
+ this._patchUpSelfDMs(userToRooms);
this.matrixClient.setAccountData('m.direct', userToRooms);
}
this.userToRooms = userToRooms;
From 85b6f157c1314d51b904f62cdef5080cf690efce Mon Sep 17 00:00:00 2001
From: Bruno Windels
Date: Thu, 30 Aug 2018 12:01:13 +0200
Subject: [PATCH 227/343] only patch m.direct data on server once per session
to avoid request storm
---
src/utils/DMRoomMap.js | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/src/utils/DMRoomMap.js b/src/utils/DMRoomMap.js
index 1db8e7f970..ff0a7cbbf0 100644
--- a/src/utils/DMRoomMap.js
+++ b/src/utils/DMRoomMap.js
@@ -27,6 +27,8 @@ export default class DMRoomMap {
constructor(matrixClient) {
this.matrixClient = matrixClient;
this.roomToUser = null;
+ // see _onAccountData
+ this._hasSentOutPatchDirectAccountDataPatch = false;
// XXX: Force-bind the event handler method because it
// doesn't call it with our object as the 'this'
@@ -75,7 +77,13 @@ export default class DMRoomMap {
const selfDMs = userToRooms[myUserId];
if (selfDMs && selfDMs.length) {
this._patchUpSelfDMs(userToRooms);
- this.matrixClient.setAccountData('m.direct', userToRooms);
+ // to avoid multiple devices fighting to correct
+ // the account data, only try to send the corrected
+ // version once.
+ if (!this._hasSentOutPatchDirectAccountDataPatch) {
+ this._hasSentOutPatchDirectAccountDataPatch = true;
+ this.matrixClient.setAccountData('m.direct', userToRooms);
+ }
}
this.userToRooms = userToRooms;
this._populateRoomToUser();
From d8f15e11594fde3dc1feda692d32b53659ff8be1 Mon Sep 17 00:00:00 2001
From: Bruno Windels
Date: Thu, 30 Aug 2018 12:06:34 +0200
Subject: [PATCH 228/343] make sure we still have the room
---
src/utils/DMRoomMap.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/utils/DMRoomMap.js b/src/utils/DMRoomMap.js
index ff0a7cbbf0..7767e6bc8b 100644
--- a/src/utils/DMRoomMap.js
+++ b/src/utils/DMRoomMap.js
@@ -100,7 +100,7 @@ export default class DMRoomMap {
if (selfRoomIds) {
const guessedUserIds = selfRoomIds.map((roomId) => {
const room = this.matrixClient.getRoom(roomId);
- return room.guessDMUserId();
+ return room && room.guessDMUserId();
});
delete userToRooms[myUserId];
guessedUserIds.forEach((userId, i) => {
From 332c190c633cb77e2ca68995eeff4101d463ea00 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?K=C3=A9vin=20C?=
Date: Wed, 29 Aug 2018 20:58:20 +0000
Subject: [PATCH 229/343] Translated using Weblate (French)
Currently translated at 100.0% (1247 of 1247 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/fr/
---
src/i18n/strings/fr.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/i18n/strings/fr.json b/src/i18n/strings/fr.json
index c80117cf89..22a61d214c 100644
--- a/src/i18n/strings/fr.json
+++ b/src/i18n/strings/fr.json
@@ -1259,7 +1259,7 @@
"Legal": "Légal",
"This room has been replaced and is no longer active.": "Ce salon a été remplacé et n'est plus actif.",
"The conversation continues here.": "La discussion continue ici.",
- "Upgrade room to version %(ver)s": "Mettre à jour le salon vers la version %(ver)s",
+ "Upgrade room to version %(ver)s": "Mettre à niveau le salon vers la version %(ver)s",
"This room is a continuation of another conversation.": "Ce salon est la suite d'une autre discussion.",
"Click here to see older messages.": "Cliquer ici pour voir les vieux messages.",
"Failed to upgrade room": "Échec de la mise à niveau du salon",
From fad6816d5ef56374cc3a5c66b4216756be59f956 Mon Sep 17 00:00:00 2001
From: Krombel
Date: Wed, 29 Aug 2018 18:07:54 +0000
Subject: [PATCH 230/343] Translated using Weblate (German)
Currently translated at 100.0% (1247 of 1247 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/de/
---
src/i18n/strings/de_DE.json | 18 +++++++++++++-----
1 file changed, 13 insertions(+), 5 deletions(-)
diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json
index 41dbf5506e..f50c1180f8 100644
--- a/src/i18n/strings/de_DE.json
+++ b/src/i18n/strings/de_DE.json
@@ -190,7 +190,7 @@
"This email address is already in use": "Diese E-Mail-Adresse wird bereits verwendet",
"This email address was not found": "Diese E-Mail-Adresse konnte nicht gefunden werden",
"The file '%(fileName)s' exceeds this home server's size limit for uploads": "Die Datei '%(fileName)s' überschreitet das Größen-Limit für Uploads auf diesem Heimserver",
- "The file '%(fileName)s' failed to upload": "Das Hochladen der Datei '%(fileName)' schlug fehl",
+ "The file '%(fileName)s' failed to upload": "Das Hochladen der Datei '%(fileName)s' schlug fehl",
"The remote side failed to pick up": "Die Gegenstelle konnte nicht abheben",
"This phone number is already in use": "Diese Telefonnummer wird bereits verwendet",
"Unable to capture screen": "Der Bildschirm konnte nicht aufgenommen werden",
@@ -1234,7 +1234,7 @@
"This homeserver has hit its Monthly Active User limit so some users will not be able to log in. Please contact your service administrator to get this limit increased.": "Dieser Heimserver hat sein monatliches Limit an aktiven Benutzern erreicht. Bitte kontaktiere deinen Systemadministrator um dieses Limit zu erhöhen.",
"There is a known vulnerability affecting this room.": "Es gibt eine bekannte Schwachstelle, die diesen Raum betrifft.",
"This room version is vulnerable to malicious modification of room state.": "Dieser Raum ist verwundbar gegenüber bösartiger Veränderung des Raum-Status.",
- "Click here to upgrade to the latest room version and ensure room integrity is protected.": "Klicke hier um ein Upgrade zur letzten Raum-Version durchzuführen und sicherzustellen, dass die Raum-Integrität gewahrt bleibt.",
+ "Click here to upgrade to the latest room version and ensure room integrity is protected.": "Klicke hier um den Raum zur letzten Raum-Version aufzurüsten und sicherzustellen, dass die Raum-Integrität gewahrt bleibt.",
"Only room administrators will see this warning": "Nur Raum-Administratoren werden diese Nachricht sehen",
"Please contact your service administrator to continue using the service.": "Bitte kontaktiere deinen Systemadministrator um diesen Dienst weiter zu nutzen.",
"This homeserver has hit its Monthly Active User limit.": "Dieser Heimserver hat sein Limit an monatlich aktiven Nutzern erreicht.",
@@ -1242,8 +1242,8 @@
"Please contact your service administrator to get this limit increased.": "Bitte kontaktiere deinen Systemadministrator um dieses Limit zu erhöht zu bekommen.",
"This homeserver has hit its Monthly Active User limit so some users will not be able to log in.": "Dieser Heimserver hat sein Limit an monatlich aktiven Nutzern erreicht, sodass einige Nutzer sich nicht anmelden können.",
"This homeserver has exceeded one of its resource limits so some users will not be able to log in.": "Dieser Heimserver hat einen seiner Ressourcen-Limits überschritten, sodass einige Benutzer nicht in der Lage sind sich anzumelden.",
- "Upgrade Room Version": "Raum-Version upgraden",
- "Upgrading this room requires closing down the current instance of the room and creating a new room it its place. To give room members the best possible experience, we will:": "Um diesen Raum upzugraden, wird der aktuelle geschlossen und ein neuer an seiner Stelle erstellt. Um den Raum-Mitgliedern die bestmögliche Erfahrung zu bieten, werden wir:",
+ "Upgrade Room Version": "Raum-Version aufrüsten",
+ "Upgrading this room requires closing down the current instance of the room and creating a new room it its place. To give room members the best possible experience, we will:": "Um diesen Raum aufzurüsten, wird der aktuelle geschlossen und ein neuer an seiner Stelle erstellt. Um den Raum-Mitgliedern die bestmögliche Erfahrung zu bieten, werden wir:",
"Create a new room with the same name, description and avatar": "Einen neuen Raum mit demselben Namen, Beschreibung und Profilbild erstellen",
"Update any local room aliases to point to the new room": "Alle lokalen Raum-Aliase aktualisieren, damit sie auf den neuen Raum zeigen",
"Stop users from speaking in the old version of the room, and post a message advising users to move to the new room": "Nutzern verbieten in dem Raum mit der alten Version zu schreiben und eine Nachricht senden, die den Nutzern rät in den neuen Raum zu wechseln",
@@ -1256,5 +1256,13 @@
"Lazy loading is not supported by your current homeserver.": "Verzögertes Laden wird von deinem aktuellen Heimserver.",
"Sorry, your homeserver is too old to participate in this room.": "Sorry, dein Homeserver ist zu alt, um an diesem Raum teilzunehmen.",
"Please contact your homeserver administrator.": "Bitte setze dich mit dem Administrator deines Homeservers in Verbindung.",
- "Legal": "Rechtliches"
+ "Legal": "Rechtliches",
+ "This room has been replaced and is no longer active.": "Dieser Raum wurde ersetzt und ist nicht länger aktiv.",
+ "The conversation continues here.": "Die Konversation wird hier fortgesetzt.",
+ "Upgrade room to version %(ver)s": "Den Raum zur Version %(ver)s aufrüsten",
+ "This room is a continuation of another conversation.": "Dieser Raum ist eine Fortsetzung einer anderen Konversation.",
+ "Click here to see older messages.": "Klicke hier um ältere Nachrichten zu sehen.",
+ "Failed to upgrade room": "Konnte Raum nicht aufrüsten",
+ "The room upgrade could not be completed": "Die Raum-Aufrüstung konnte nicht fertiggestellt werden",
+ "Upgrade this room to version %(version)s": "Diesen Raum zur Version %(version)s aufrüsten"
}
From e45008ec226b472f1b0971d7c584b16015645eb8 Mon Sep 17 00:00:00 2001
From: csybr
Date: Wed, 29 Aug 2018 22:31:17 +0000
Subject: [PATCH 231/343] Translated using Weblate (Norwegian Nynorsk)
Currently translated at 97.8% (1220 of 1247 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/nn/
---
src/i18n/strings/nn.json | 22 +++++++++++-----------
1 file changed, 11 insertions(+), 11 deletions(-)
diff --git a/src/i18n/strings/nn.json b/src/i18n/strings/nn.json
index 58b156a08a..c1174dcd5a 100644
--- a/src/i18n/strings/nn.json
+++ b/src/i18n/strings/nn.json
@@ -9,8 +9,8 @@
"Call Failed": "Oppringjing Mislukkast",
"There are unknown devices in this room: if you proceed without verifying them, it will be possible for someone to eavesdrop on your call.": "Det finst ukjende einingar i dette rommet: viss du gjeng frama utan å godkjenna dei, kan nokon mogelegvis tjuvlytta på samtala.",
"Review Devices": "Sjå Over Einingar",
- "Call Anyway": "Ring Same Kva",
- "Answer Anyway": "Svar Same Kva",
+ "Call Anyway": "Ring Likevel",
+ "Answer Anyway": "Svar Likevel",
"Call": "Ring",
"Answer": "Svar",
"You are already in a call.": "Du er allereie i ei samtale.",
@@ -195,7 +195,7 @@
"%(names)s and %(lastPerson)s are typing": "%(names)s og %(lastPerson)s skriv",
"Failure to create room": "Klarte ikkje å laga rommet",
"Server may be unavailable, overloaded, or you hit a bug.": "tenaren er kanskje utilgjengeleg, overlasta elles so traff du ein bøgg.",
- "Send anyway": "Send same kva",
+ "Send anyway": "Send likevel",
"Send": "Send",
"Unnamed Room": "Rom utan Namn",
"Your browser does not support the required cryptography extensions": "Nettlesaren din støttar ikkje dei naudsynte kryptografiske utvidingane",
@@ -426,7 +426,7 @@
"Unnamed room": "Rom utan namn",
"Guests can join": "Gjester kan koma inn",
"Failed to set avatar.": "Fekk ikkje til å setja avatar.",
- "Save": "Lagra",
+ "Save": "Lagr",
"(~%(count)s results)|other": "(~%(count)s resultat)",
"(~%(count)s results)|one": "(~%(count)s resultat)",
"Join Room": "Far inn i Rom",
@@ -512,8 +512,8 @@
"To send events of type , you must be a": "For å senda hendingar av sorten må du vera ein",
"Who can access this room?": "Kven har tilgang til rommet?",
"Only people who have been invited": "Berre dei som er bodne inn",
- "Anyone who knows the room's link, apart from guests": "Nokon som kjenner lenkja til rommet, sett vekk frå gjester",
- "Anyone who knows the room's link, including guests": "Nokon som kjenner lenkja til rommet, gjester òg",
+ "Anyone who knows the room's link, apart from guests": "Dei som kjenner lenkja til rommet, sett vekk frå gjester",
+ "Anyone who knows the room's link, including guests": "Dei som kjenner lenkja til rommet, gjester òg",
"Publish this room to the public in %(domain)s's room directory?": "Gjer dette rommet offentleg i %(domain)s sitt romutval?",
"Who can read history?": "Kven kan lesa historia?",
"Anyone": "Kven som helst",
@@ -885,7 +885,7 @@
"Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Riot brukar mange omfattande nettlesarfunksjonar, og nokre av dei er ikkje tilgjengelege eller i utprøving i nettlesaren din.",
"Please install Chrome or Firefox for the best experience.": "Ver venleg og legg Chrome eller Firefox inn på datamaskina for den beste opplevinga.",
"Safari and Opera work too.": "Safari og Opera verkar òg.",
- "With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "Med denne nettlesaren, er det mogleg at synet og kjensla av applikasjonen er fullstendig gale, og nokre eller alle funksjonar verkar kanskje ikkje. Viss du vil prøva same kva kan du gå fram, men då du må sjølv handtera alle vanskar du møter på!",
+ "With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "Med denne nettlesaren, er det mogleg at synet og kjensla av applikasjonen er fullstendig gale, og nokre eller alle funksjonar verkar kanskje ikkje. Viss du vil prøva likevel kan du gå fram, men då du må sjølv handtera alle vanskar du møter på!",
"I understand the risks and wish to continue": "Eg forstår farane og vil gå fram",
"Name": "Namn",
"Topic": "Emne",
@@ -981,7 +981,7 @@
"#example": "#døme",
"Scroll to bottom of page": "Blad til botnen",
"Message not sent due to unknown devices being present": "Meldinga vart ikkje send fordi ukjende einingar er til stades",
- "Show devices, send anyway or cancel.": "Vis einingar, Send same kva eller Bryt av.",
+ "Show devices, send anyway or cancel.": "Vis einingar, Send likevel eller Bryt av.",
"You can't send any messages until you review and agree to our terms and conditions.": "Du kan ikkje senda meldingar før du ser over og seier deg einig i våre Vilkår og Føresetnader.",
"%(count)s of your messages have not been sent.|other": "Nokre av meldingane dine vart ikkje sende.",
"%(count)s of your messages have not been sent.|one": "Meldinga di vart ikkje send.",
@@ -1035,7 +1035,7 @@
"Device key:": "Einingsnykel:",
"Ignored Users": "Oversedde Brukarar",
"Debug Logs Submission": "Innsending av Debøgg-loggar",
- "If you've submitted a bug via GitHub, debug logs can help us track down the problem. Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited and the usernames of other users. They do not contain messages.": "Viss du har send inn ein bøgg gjennom GitHub, kan debøgg-loggar hjelpa oss med å finna problemet. Debøgg-loggar inneheld data om æpp-bruk, b.a. Brukarnamnet ditt, IDane eller aliasa på romma eller gruppene du har vitja og brukarnamna til andre brukarar. Dei inneheld ikkje meldingar.",
+ "If you've submitted a bug via GitHub, debug logs can help us track down the problem. Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited and the usernames of other users. They do not contain messages.": "Viss du har sendt inn ein bøgg gjennom GitHub, kan debøgg-loggar hjelpa oss med å finna problemet. Debøgg-loggar inneheld data om æpp-bruk, b.a. Brukarnamnet ditt, IDane eller aliasa på romma eller gruppene du har vitja og brukarnamna til andre brukarar. Dei inneheld ikkje meldingar.",
"Riot collects anonymous analytics to allow us to improve the application.": "Riot samlar anonym statistikk inn slik at vi kan forbetre æppen.",
"Privacy is important to us, so we don't collect any personal or identifiable data for our analytics.": "Personvern er viktig for oss, so vi samlar ikkje på personleg eller attkjenneleg data for statistikken vår.",
"Learn more about how we use analytics.": "Finn ut meir om korleis vi brukar statistikk.",
@@ -1154,8 +1154,8 @@
"Filter community members": "Filtrer samfunnsmedlemer",
"Custom Server Options": "Eigentenar-innstillingar",
"Filter community rooms": "Filtrer samfunnsrom",
- "Please help improve Riot.im by sending anonymous usage data. This will use a cookie (please see our Cookie Policy).": "Ver venleg og hjelp oss å forbetra Riot.im med å senda anonym brukardata. Dette brukar ei datakake (ver venleg og sjå på Datakakeretningslinene våre).",
- "Please help improve Riot.im by sending anonymous usage data. This will use a cookie.": "Ver venleg og hjelp oss å forbetra Riot.im med å senda anonym brukardata. Dette brukar ei datakake.",
+ "Please help improve Riot.im by sending anonymous usage data. This will use a cookie (please see our Cookie Policy).": "Ver venleg og hjelp oss å forbetra Riot.im ved å senda anonym brukardata. Dette brukar ei datakake (ver venleg og sjå på Datakakeretningslinene våre).",
+ "Please help improve Riot.im by sending anonymous usage data. This will use a cookie.": "Ver venleg og hjelp oss å forbetra Riot.im ved å senda anonym brukardata. Dette brukar ei datakake.",
"Whether or not you're using the Richtext mode of the Rich Text Editor": "Om du brukar Riktekst-innstillinga på Riktekstfeltet",
"WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and device %(deviceId)s is \"%(fprint)s\" which does not match the provided key \"%(fingerprint)s\". This could mean your communications are being intercepted!": "ÅTVARING: NOKO GJEKK GALT MED NYKELGODKJENNINGA! Signeringsnykelen til %(userId)s og eininga %(deviceId)s er \"%(fprint)s\", som ikkje er lik den gjevne nykelen \"%(fingerprint)s\". Dette kan tyda at nokon tjuvlyttar på kommuniseringa!",
"The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.": "Signeringsnykelen du oppgav er lik signeringsnykelen du fekk frå %(userId)s si eining %(deviceId)s. Eininga merkast som godkjend.",
From 40e5d379f0e3dc2268ba62ff1be8398b09db351a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Peter=20V=C3=A1gner?=
Date: Thu, 30 Aug 2018 10:32:34 +0000
Subject: [PATCH 232/343] Translated using Weblate (Slovak)
Currently translated at 99.4% (1240 of 1247 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/sk/
---
src/i18n/strings/sk.json | 14 +++++++++++++-
1 file changed, 13 insertions(+), 1 deletion(-)
diff --git a/src/i18n/strings/sk.json b/src/i18n/strings/sk.json
index 4da149b5f1..8137be265b 100644
--- a/src/i18n/strings/sk.json
+++ b/src/i18n/strings/sk.json
@@ -1239,5 +1239,17 @@
"Your message wasn't sent because this homeserver has exceeded a resource limit. Please contact your service administrator to continue using the service.": "Vaša správa nebola odoslaná, pretože bol prekročený limit prostriedkov tohoto domovského servera. Prosím, kontaktujte správcu služieb aby ste službu mohli naďalej používať.",
"Lazy loading members not supported": "Načítanie zoznamu členov pri prvom zobrazení nie je podporované",
"Lazy loading is not supported by your current homeserver.": "Oneskorené načítanie nepodporuje váš domovský server.",
- "Please contact your service administrator to continue using this service.": "Prosím, kontaktujte správcu služieb aby ste mohli službu ďalej používať."
+ "Please contact your service administrator to continue using this service.": "Prosím, kontaktujte správcu služieb aby ste mohli službu ďalej používať.",
+ "This room has been replaced and is no longer active.": "Táto miestnosť bola nahradená a nie je viac aktívna.",
+ "The conversation continues here.": "Konverzácia pokračuje tu.",
+ "Upgrade room to version %(ver)s": "Aktualizácia miestnosti na verziu %(ver)s",
+ "There is a known vulnerability affecting this room.": "Existuje známa zraniteľnosť, ktorú je možné zneužiť v tejto miestnosti.",
+ "This room version is vulnerable to malicious modification of room state.": "Táto verzia miestnosti je zraniteľná proti zlomyseľným zmenám jej stavu.",
+ "Click here to upgrade to the latest room version and ensure room integrity is protected.": "Kliknutím sem aktualizujete miestnosť na najnovšiu verziu a uistíte sa, že jej integrita je bezpečne zachovaná.",
+ "Only room administrators will see this warning": "Toto upozornenie sa zobrazuje len správcom miestnosti",
+ "This room is a continuation of another conversation.": "Táto miestnosť je pokračovaním staršej konverzácii.",
+ "Click here to see older messages.": "Kliknutím sem zobrazíte staršie správy.",
+ "Failed to upgrade room": "Nepodarilo sa aktualizovať miestnosť",
+ "The room upgrade could not be completed": "Nie je možné dokončiť aktualizáciu miestnosti na jej najnovšiu verziu",
+ "Upgrade this room to version %(version)s": "Aktualizácia tejto miestnosti na verziu %(version)s"
}
From fb0a0d5d9e83c0b4bd38f6346fb990456c8d92e7 Mon Sep 17 00:00:00 2001
From: Bruno Windels
Date: Thu, 30 Aug 2018 12:36:53 +0200
Subject: [PATCH 233/343] allow self-chats
---
src/utils/DMRoomMap.js | 31 +++++++++++++++++++++++--------
1 file changed, 23 insertions(+), 8 deletions(-)
diff --git a/src/utils/DMRoomMap.js b/src/utils/DMRoomMap.js
index 7767e6bc8b..0c5e696c5f 100644
--- a/src/utils/DMRoomMap.js
+++ b/src/utils/DMRoomMap.js
@@ -72,15 +72,15 @@ export default class DMRoomMap {
_onAccountData(ev) {
if (ev.getType() == 'm.direct') {
- let userToRooms = this.matrixClient.getAccountData('m.direct').getContent();
+ const userToRooms = this.matrixClient.getAccountData('m.direct').getContent() || {};
const myUserId = this.matrixClient.getUserId();
const selfDMs = userToRooms[myUserId];
if (selfDMs && selfDMs.length) {
- this._patchUpSelfDMs(userToRooms);
+ const neededPatching = this._patchUpSelfDMs(userToRooms);
// to avoid multiple devices fighting to correct
// the account data, only try to send the corrected
// version once.
- if (!this._hasSentOutPatchDirectAccountDataPatch) {
+ if (neededPatching && !this._hasSentOutPatchDirectAccountDataPatch) {
this._hasSentOutPatchDirectAccountDataPatch = true;
this.matrixClient.setAccountData('m.direct', userToRooms);
}
@@ -98,25 +98,40 @@ export default class DMRoomMap {
const myUserId = this.matrixClient.getUserId();
const selfRoomIds = userToRooms[myUserId];
if (selfRoomIds) {
- const guessedUserIds = selfRoomIds.map((roomId) => {
+ // any self-chats that should not be self-chats?
+ const guessedUserIdsThatChanged = selfRoomIds.map((roomId) => {
const room = this.matrixClient.getRoom(roomId);
- return room && room.guessDMUserId();
+ if (room) {
+ const userId = room.guessDMUserId();
+ if (userId && userId !== myUserId) {
+ return {userId, roomId};
+ }
+ }
+ }).filter((ids) => !!ids); //filter out
+ // these are actually all legit self-chats
+ // bail out
+ if (!guessedUserIdsThatChanged.length) {
+ return false;
+ }
+ userToRooms[myUserId] = selfRoomIds.filter((roomId) => {
+ return guessedUserIdsThatChanged
+ .some((ids) => ids.roomId === roomId);
});
- delete userToRooms[myUserId];
- guessedUserIds.forEach((userId, i) => {
+
+ guessedUserIdsThatChanged.forEach(({userId, roomId}) => {
if (!userId) {
// if not able to guess the other user (unlikely)
// still put it in the map so the room stays marked
// as a DM, we just wont be able to show an avatar.
userId = "";
}
- const roomId = selfRoomIds[i];
let roomIds = userToRooms[userId];
if (!roomIds) {
roomIds = userToRooms[userId] = [];
}
roomIds.push(roomId);
});
+ return true;
}
}
From 8dd17dadd286f98646b97d9fd94d68d823db124a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Peter=20V=C3=A1gner?=
Date: Thu, 30 Aug 2018 10:44:48 +0000
Subject: [PATCH 234/343] Translated using Weblate (Slovak)
Currently translated at 99.7% (1244 of 1247 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/sk/
---
src/i18n/strings/sk.json | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/src/i18n/strings/sk.json b/src/i18n/strings/sk.json
index 8137be265b..7f16c1d6c6 100644
--- a/src/i18n/strings/sk.json
+++ b/src/i18n/strings/sk.json
@@ -1251,5 +1251,9 @@
"Click here to see older messages.": "Kliknutím sem zobrazíte staršie správy.",
"Failed to upgrade room": "Nepodarilo sa aktualizovať miestnosť",
"The room upgrade could not be completed": "Nie je možné dokončiť aktualizáciu miestnosti na jej najnovšiu verziu",
- "Upgrade this room to version %(version)s": "Aktualizácia tejto miestnosti na verziu %(version)s"
+ "Upgrade this room to version %(version)s": "Aktualizácia tejto miestnosti na verziu %(version)s",
+ "Upgrade Room Version": "Aktualizovať verziu miestnosti",
+ "Upgrading this room requires closing down the current instance of the room and creating a new room it its place. To give room members the best possible experience, we will:": "Aktualizácia verzii tejto miestnosti si vyžaduje jej uzatvorenie a vytvorenie novej miestnosti na jej pôvodnom mieste. Aby bol prechod pre členov miestnosti čo najplynulejší, nasledovné kroky sa vykonajú automaticky:",
+ "Create a new room with the same name, description and avatar": "Vznikne nová miestnosť s rovnakým názvom, témou a obrázkom",
+ "Update any local room aliases to point to the new room": "Všetky lokálne aliasy pôvodnej miestnosti sa aktualizujú tak, aby ukazovali na novú miestnosť"
}
From 47fcc0d264a0243ff86328cd6f9c7fb5b605b006 Mon Sep 17 00:00:00 2001
From: David Baker
Date: Thu, 30 Aug 2018 14:21:11 +0100
Subject: [PATCH 235/343] js-sdk rc.1
---
package.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/package.json b/package.json
index 1bdced5caf..3a732d3c80 100644
--- a/package.json
+++ b/package.json
@@ -73,7 +73,7 @@
"linkifyjs": "^2.1.6",
"lodash": "^4.13.1",
"lolex": "2.3.2",
- "matrix-js-sdk": "0.10.8",
+ "matrix-js-sdk": "0.10.9-rc.1",
"optimist": "^0.6.1",
"pako": "^1.0.5",
"prop-types": "^15.5.8",
From 53c6b7e4cbffb9c536742497bff2cc38b0516362 Mon Sep 17 00:00:00 2001
From: David Baker
Date: Thu, 30 Aug 2018 14:28:58 +0100
Subject: [PATCH 236/343] Prepare changelog for v0.13.3-rc.1
---
CHANGELOG.md | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 56 insertions(+)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index f668ca3f97..026b241d21 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,59 @@
+Changes in [0.13.3-rc.1](https://github.com/matrix-org/matrix-react-sdk/releases/tag/v0.13.3-rc.1) (2018-08-30)
+===============================================================================================================
+[Full Changelog](https://github.com/matrix-org/matrix-react-sdk/compare/v0.13.2...v0.13.3-rc.1)
+
+ * Fix DM avatar
+ [\#2141](https://github.com/matrix-org/matrix-react-sdk/pull/2141)
+ * Update from Weblate.
+ [\#2142](https://github.com/matrix-org/matrix-react-sdk/pull/2142)
+ * Support m.room.tombstone events
+ [\#2124](https://github.com/matrix-org/matrix-react-sdk/pull/2124)
+ * Support room creation events
+ [\#2123](https://github.com/matrix-org/matrix-react-sdk/pull/2123)
+ * Support for room upgrades
+ [\#2122](https://github.com/matrix-org/matrix-react-sdk/pull/2122)
+ * Fix: dont show 1:1 avatar for rooms +2 members but only <=2 members loaded
+ [\#2137](https://github.com/matrix-org/matrix-react-sdk/pull/2137)
+ * Render terms & conditions in settings
+ [\#2136](https://github.com/matrix-org/matrix-react-sdk/pull/2136)
+ * Don't crash if the value of a room tag is null
+ [\#2133](https://github.com/matrix-org/matrix-react-sdk/pull/2133)
+ * Add stub for getVisibleRooms()
+ [\#2134](https://github.com/matrix-org/matrix-react-sdk/pull/2134)
+ * Fix LL crash trying to render own avatar in composer when member isn't
+ available yet
+ [\#2132](https://github.com/matrix-org/matrix-react-sdk/pull/2132)
+ * Support M_INCOMPATIBLE_ROOM_VERSION
+ [\#2125](https://github.com/matrix-org/matrix-react-sdk/pull/2125)
+ * Hide replaced rooms
+ [\#2127](https://github.com/matrix-org/matrix-react-sdk/pull/2127)
+ * Fix CPU spin on joining large room
+ [\#2128](https://github.com/matrix-org/matrix-react-sdk/pull/2128)
+ * Change format of server usage limit message
+ [\#2131](https://github.com/matrix-org/matrix-react-sdk/pull/2131)
+ * Re-apply "Fix showing peek preview while LL members are loading""
+ [\#2130](https://github.com/matrix-org/matrix-react-sdk/pull/2130)
+ * Revert "Fix showing peek preview while LL members are loading"
+ [\#2129](https://github.com/matrix-org/matrix-react-sdk/pull/2129)
+ * Fix showing peek preview while LL members are loading
+ [\#2126](https://github.com/matrix-org/matrix-react-sdk/pull/2126)
+ * Destroy non-persistent widgets when switching room
+ [\#2098](https://github.com/matrix-org/matrix-react-sdk/pull/2098)
+ * Lazy loading of room members
+ [\#2118](https://github.com/matrix-org/matrix-react-sdk/pull/2118)
+ * Lazy loading: feature toggle
+ [\#2115](https://github.com/matrix-org/matrix-react-sdk/pull/2115)
+ * Lazy loading: cleanup
+ [\#2116](https://github.com/matrix-org/matrix-react-sdk/pull/2116)
+ * Lazy loading: fix end-to-end encryption rooms
+ [\#2113](https://github.com/matrix-org/matrix-react-sdk/pull/2113)
+ * Lazy loading: Lazy load members while backpaginating
+ [\#2104](https://github.com/matrix-org/matrix-react-sdk/pull/2104)
+ * Lazy loading: don't assume we have our own member available
+ [\#2102](https://github.com/matrix-org/matrix-react-sdk/pull/2102)
+ * Lazy load room members - Part I
+ [\#2072](https://github.com/matrix-org/matrix-react-sdk/pull/2072)
+
Changes in [0.13.2](https://github.com/matrix-org/matrix-react-sdk/releases/tag/v0.13.2) (2018-08-23)
=====================================================================================================
[Full Changelog](https://github.com/matrix-org/matrix-react-sdk/compare/v0.13.1...v0.13.2)
From 5688f98d2245de0c26c9d97f98ce08adf06f7690 Mon Sep 17 00:00:00 2001
From: David Baker
Date: Thu, 30 Aug 2018 14:28:58 +0100
Subject: [PATCH 237/343] v0.13.3-rc.1
---
package.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/package.json b/package.json
index 3a732d3c80..8da67cd693 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "matrix-react-sdk",
- "version": "0.13.2",
+ "version": "0.13.3-rc.1",
"description": "SDK for matrix.org using React",
"author": "matrix.org",
"repository": {
From debcc20604294a110ec98ca6790c1004a09eb2cf Mon Sep 17 00:00:00 2001
From: Bruno Windels
Date: Thu, 30 Aug 2018 15:39:48 +0200
Subject: [PATCH 238/343] also show spinner on new CATCHUP state
---
src/components/structures/TagPanel.js | 2 +-
src/components/structures/TimelinePanel.js | 5 +++--
src/components/views/avatars/BaseAvatar.js | 2 +-
src/components/views/messages/MImageBody.js | 2 +-
4 files changed, 6 insertions(+), 5 deletions(-)
diff --git a/src/components/structures/TagPanel.js b/src/components/structures/TagPanel.js
index 652211595b..f23ac698ba 100644
--- a/src/components/structures/TagPanel.js
+++ b/src/components/structures/TagPanel.js
@@ -76,7 +76,7 @@ const TagPanel = React.createClass({
_onClientSync(syncState, prevState) {
// Consider the client reconnected if there is no error with syncing.
- // This means the state could be RECONNECTING, SYNCING or PREPARED.
+ // This means the state could be RECONNECTING, SYNCING, PREPARED or CATCHUP.
const reconnected = syncState !== "ERROR" && prevState !== syncState;
if (reconnected) {
// Load joined groups
diff --git a/src/components/structures/TimelinePanel.js b/src/components/structures/TimelinePanel.js
index 1a03b5d994..e06c652924 100644
--- a/src/components/structures/TimelinePanel.js
+++ b/src/components/structures/TimelinePanel.js
@@ -1146,10 +1146,11 @@ var TimelinePanel = React.createClass({
// of paginating our way through the entire history of the room.
const stickyBottom = !this._timelineWindow.canPaginate(EventTimeline.FORWARDS);
- // If the state is PREPARED, we're still waiting for the js-sdk to sync with
+ // If the state is PREPARED or CATCHUP, we're still waiting for the js-sdk to sync with
// the HS and fetch the latest events, so we are effectively forward paginating.
const forwardPaginating = (
- this.state.forwardPaginating || this.state.clientSyncState == 'PREPARED'
+ this.state.forwardPaginating ||
+ ['PREPARED', 'CATCHUP'].includes(this.state.clientSyncState)
);
return (
Date: Thu, 30 Aug 2018 10:52:02 +0000
Subject: [PATCH 239/343] Translated using Weblate (Slovak)
Currently translated at 99.9% (1246 of 1247 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/sk/
---
src/i18n/strings/sk.json | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/i18n/strings/sk.json b/src/i18n/strings/sk.json
index 7f16c1d6c6..05c102d516 100644
--- a/src/i18n/strings/sk.json
+++ b/src/i18n/strings/sk.json
@@ -1255,5 +1255,7 @@
"Upgrade Room Version": "Aktualizovať verziu miestnosti",
"Upgrading this room requires closing down the current instance of the room and creating a new room it its place. To give room members the best possible experience, we will:": "Aktualizácia verzii tejto miestnosti si vyžaduje jej uzatvorenie a vytvorenie novej miestnosti na jej pôvodnom mieste. Aby bol prechod pre členov miestnosti čo najplynulejší, nasledovné kroky sa vykonajú automaticky:",
"Create a new room with the same name, description and avatar": "Vznikne nová miestnosť s rovnakým názvom, témou a obrázkom",
- "Update any local room aliases to point to the new room": "Všetky lokálne aliasy pôvodnej miestnosti sa aktualizujú tak, aby ukazovali na novú miestnosť"
+ "Update any local room aliases to point to the new room": "Všetky lokálne aliasy pôvodnej miestnosti sa aktualizujú tak, aby ukazovali na novú miestnosť",
+ "Stop users from speaking in the old version of the room, and post a message advising users to move to the new room": "V pôvodnej miestnosti bude zverejnené odporúčanie prejsť do novej miestnosti a posielanie do pôvodnej miestnosti bude zakázané pre všetkých používateľov",
+ "Put a link back to the old room at the start of the new room so people can see old messages": "História novej miestnosti sa začne odkazom do pôvodnej miestnosti, aby si členovia vedeli zobraziť staršie správy"
}
From 33cfd34bc11b6612d1a7842f920cad15f647ad48 Mon Sep 17 00:00:00 2001
From: Szimszon
Date: Thu, 30 Aug 2018 19:03:17 +0000
Subject: [PATCH 240/343] Translated using Weblate (Hungarian)
Currently translated at 100.0% (1249 of 1249 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/hu/
---
src/i18n/strings/hu.json | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/i18n/strings/hu.json b/src/i18n/strings/hu.json
index 888ad80e17..c2c367f106 100644
--- a/src/i18n/strings/hu.json
+++ b/src/i18n/strings/hu.json
@@ -1264,5 +1264,7 @@
"Click here to see older messages.": "Ide kattintva megnézheted a régi üzeneteket.",
"Failed to upgrade room": "A szoba frissítése sikertelen",
"The room upgrade could not be completed": "A szoba frissítését nem sikerült befejezni",
- "Upgrade this room to version %(version)s": "A szoba frissítése %(version)s verzióra"
+ "Upgrade this room to version %(version)s": "A szoba frissítése %(version)s verzióra",
+ "Error Discarding Session": "Hiba a munkamenet törlésénél",
+ "Forces the current outbound group session in an encrypted room to be discarded": "A jelenlegi csoport munkamenet törlését kikényszeríti a titkosított szobában"
}
From 8b29641dea5a7f728341e21970f07a6345fd98bc Mon Sep 17 00:00:00 2001
From: Jeff Huang
Date: Fri, 31 Aug 2018 02:59:16 +0000
Subject: [PATCH 241/343] Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (1249 of 1249 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/zh_Hant/
---
src/i18n/strings/zh_Hant.json | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/i18n/strings/zh_Hant.json b/src/i18n/strings/zh_Hant.json
index 536628c3b1..ffd623e6cf 100644
--- a/src/i18n/strings/zh_Hant.json
+++ b/src/i18n/strings/zh_Hant.json
@@ -1264,5 +1264,7 @@
"Click here to see older messages.": "點選這裡以檢視較舊的訊息。",
"Failed to upgrade room": "升級聊天室失敗",
"The room upgrade could not be completed": "聊天室升級可能不完整",
- "Upgrade this room to version %(version)s": "升級此聊天室到版本 %(version)s"
+ "Upgrade this room to version %(version)s": "升級此聊天室到版本 %(version)s",
+ "Forces the current outbound group session in an encrypted room to be discarded": "強制目前在已加密的聊天室中的外發群組工作階段丟棄",
+ "Error Discarding Session": "丟棄工作階段錯誤"
}
From 8cae1150b17dbc3af17f86435a77767d8cd19dcf Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?K=C3=A9vin=20C?=
Date: Fri, 31 Aug 2018 07:43:23 +0000
Subject: [PATCH 242/343] Translated using Weblate (French)
Currently translated at 100.0% (1249 of 1249 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/fr/
---
src/i18n/strings/fr.json | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/i18n/strings/fr.json b/src/i18n/strings/fr.json
index 22a61d214c..c4efb76e55 100644
--- a/src/i18n/strings/fr.json
+++ b/src/i18n/strings/fr.json
@@ -1264,5 +1264,7 @@
"Click here to see older messages.": "Cliquer ici pour voir les vieux messages.",
"Failed to upgrade room": "Échec de la mise à niveau du salon",
"The room upgrade could not be completed": "La mise à niveau du salon n'a pas pu être effectuée",
- "Upgrade this room to version %(version)s": "Mettre à niveau ce salon vers la version %(version)s"
+ "Upgrade this room to version %(version)s": "Mettre à niveau ce salon vers la version %(version)s",
+ "Forces the current outbound group session in an encrypted room to be discarded": "Force la session de groupe sortante actuelle dans un salon chiffré à être rejetée",
+ "Error Discarding Session": "Erreur lors du rejet de la session"
}
From 77316dddf22396378a3568de3f787ffc40f77fd9 Mon Sep 17 00:00:00 2001
From: David Baker
Date: Fri, 31 Aug 2018 13:43:55 +0100
Subject: [PATCH 243/343] js-sdk rc.2
---
package.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/package.json b/package.json
index 8da67cd693..119e7e527f 100644
--- a/package.json
+++ b/package.json
@@ -73,7 +73,7 @@
"linkifyjs": "^2.1.6",
"lodash": "^4.13.1",
"lolex": "2.3.2",
- "matrix-js-sdk": "0.10.9-rc.1",
+ "matrix-js-sdk": "0.10.9-rc.2",
"optimist": "^0.6.1",
"pako": "^1.0.5",
"prop-types": "^15.5.8",
From 07baaca5728f2ded122fd8584658efc45e1e3c72 Mon Sep 17 00:00:00 2001
From: David Baker
Date: Fri, 31 Aug 2018 13:48:27 +0100
Subject: [PATCH 244/343] Prepare changelog for v0.13.3-rc.2
---
CHANGELOG.md | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 026b241d21..2181df17a9 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,9 @@
+Changes in [0.13.3-rc.2](https://github.com/matrix-org/matrix-react-sdk/releases/tag/v0.13.3-rc.2) (2018-08-31)
+===============================================================================================================
+[Full Changelog](https://github.com/matrix-org/matrix-react-sdk/compare/v0.13.3-rc.1...v0.13.3-rc.2)
+
+ * Update js-sdk to fix exception
+
Changes in [0.13.3-rc.1](https://github.com/matrix-org/matrix-react-sdk/releases/tag/v0.13.3-rc.1) (2018-08-30)
===============================================================================================================
[Full Changelog](https://github.com/matrix-org/matrix-react-sdk/compare/v0.13.2...v0.13.3-rc.1)
From e83dca4150a94ac0f9956ca1c395dccedfa03fa3 Mon Sep 17 00:00:00 2001
From: David Baker
Date: Fri, 31 Aug 2018 13:48:28 +0100
Subject: [PATCH 245/343] v0.13.3-rc.2
---
package.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/package.json b/package.json
index 119e7e527f..68b770acd1 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "matrix-react-sdk",
- "version": "0.13.3-rc.1",
+ "version": "0.13.3-rc.2",
"description": "SDK for matrix.org using React",
"author": "matrix.org",
"repository": {
From a97819e7f5044800643a738e0015c584f7446273 Mon Sep 17 00:00:00 2001
From: Krombel
Date: Sun, 2 Sep 2018 17:01:20 +0000
Subject: [PATCH 246/343] Translated using Weblate (German)
Currently translated at 100.0% (1249 of 1249 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/de/
---
src/i18n/strings/de_DE.json | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json
index f50c1180f8..9c4ec3519b 100644
--- a/src/i18n/strings/de_DE.json
+++ b/src/i18n/strings/de_DE.json
@@ -1264,5 +1264,7 @@
"Click here to see older messages.": "Klicke hier um ältere Nachrichten zu sehen.",
"Failed to upgrade room": "Konnte Raum nicht aufrüsten",
"The room upgrade could not be completed": "Die Raum-Aufrüstung konnte nicht fertiggestellt werden",
- "Upgrade this room to version %(version)s": "Diesen Raum zur Version %(version)s aufrüsten"
+ "Upgrade this room to version %(version)s": "Diesen Raum zur Version %(version)s aufrüsten",
+ "Forces the current outbound group session in an encrypted room to be discarded": "Erzwingt, dass die aktuell ausgehende Gruppen-Sitzung in einem verschlüsseltem Raum verworfen wird",
+ "Error Discarding Session": "Sitzung konnte nicht verworfen werden"
}
From cae419e304c7fce0e53f746baa39ef37a292fbd2 Mon Sep 17 00:00:00 2001
From: Bruno Windels
Date: Mon, 3 Sep 2018 11:13:56 +0200
Subject: [PATCH 247/343] avoid rerendering when LL is disabled
---
src/components/views/rooms/MemberList.js | 52 +++++++++++++++---------
1 file changed, 32 insertions(+), 20 deletions(-)
diff --git a/src/components/views/rooms/MemberList.js b/src/components/views/rooms/MemberList.js
index b418eef121..d302bee832 100644
--- a/src/components/views/rooms/MemberList.js
+++ b/src/components/views/rooms/MemberList.js
@@ -33,16 +33,16 @@ module.exports = React.createClass({
getInitialState: function() {
this.memberDict = this.getMemberDict();
- const members = this.roomMembers();
- return {loading: true};
+ const cli = MatrixClientPeg.get();
+ if (cli.hasLazyLoadMembersEnabled()) {
+ return {loading: true};
+ } else {
+ return this._getMembersState();
+ }
},
- componentDidMount: async function() {
- await this._waitForMembersToLoad();
- this.memberDict = this.getMemberDict();
- const members = this.roomMembers();
-
+ componentWillMount: function() {
const cli = MatrixClientPeg.get();
cli.on("RoomState.members", this.onRoomStateMember);
cli.on("RoomMember.name", this.onRoomMemberName);
@@ -61,20 +61,14 @@ module.exports = React.createClass({
if (enablePresenceByHsUrl && enablePresenceByHsUrl[hsUrl] !== undefined) {
this._showPresence = enablePresenceByHsUrl[hsUrl];
}
- // set the state after determining _showPresence to make sure it's
- // taken into account while rerendering
- this.setState({
- loading: false,
- members: members,
- filteredJoinedMembers: this._filterMembers(members, 'join'),
- filteredInvitedMembers: this._filterMembers(members, 'invite'),
+ },
- // ideally we'd size this to the page height, but
- // in practice I find that a little constraining
- truncateAtJoined: INITIAL_LOAD_NUM_MEMBERS,
- truncateAtInvited: INITIAL_LOAD_NUM_INVITED,
- searchQuery: "",
- });
+ componentDidMount: async function() {
+ const cli = MatrixClientPeg.get();
+ if (cli.hasLazyLoadMembersEnabled()) {
+ await this._waitForMembersToLoad();
+ this.setState(this._getMembersState());
+ }
},
componentWillUnmount: function() {
@@ -101,6 +95,24 @@ module.exports = React.createClass({
}
},
+ _getMembersState: function() {
+ const members = this.roomMembers();
+ // set the state after determining _showPresence to make sure it's
+ // taken into account while rerendering
+ return {
+ loading: false,
+ members: members,
+ filteredJoinedMembers: this._filterMembers(members, 'join'),
+ filteredInvitedMembers: this._filterMembers(members, 'invite'),
+
+ // ideally we'd size this to the page height, but
+ // in practice I find that a little constraining
+ truncateAtJoined: INITIAL_LOAD_NUM_MEMBERS,
+ truncateAtInvited: INITIAL_LOAD_NUM_INVITED,
+ searchQuery: "",
+ };
+ },
+
/*
onRoomTimeline: function(ev, room, toStartOfTimeline, removed, data) {
// ignore anything but real-time updates at the end of the room:
From 32d2db5df487a1162bce5a7fe0956748d81a9c54 Mon Sep 17 00:00:00 2001
From: Andri
Date: Fri, 31 Aug 2018 07:50:23 +0000
Subject: [PATCH 248/343] Translated using Weblate (Indonesian)
Currently translated at 27.3% (341 of 1249 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/id/
---
src/i18n/strings/id.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/i18n/strings/id.json b/src/i18n/strings/id.json
index 86605c1d41..0c6ee2afe7 100644
--- a/src/i18n/strings/id.json
+++ b/src/i18n/strings/id.json
@@ -151,7 +151,7 @@
"Access Token:": "Token Akses:",
"Active call (%(roomName)s)": "Panggilan aktif (%(roomName)s)",
"Admin": "Admin",
- "Admin Tools": "Alat admin",
+ "Admin Tools": "Peralatan Admin",
"VoIP": "VoIP",
"Missing Media Permissions, click here to request.": "Tidak ada Izin Media, klik disini untuk meminta.",
"No Webcams detected": "Tidak ada Webcam terdeteksi",
From f86b4a67593e8b2b0d0b501910ce7ed4327b5482 Mon Sep 17 00:00:00 2001
From: Moo
Date: Sun, 2 Sep 2018 22:08:08 +0000
Subject: [PATCH 249/343] Translated using Weblate (Lithuanian)
Currently translated at 62.6% (782 of 1249 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/lt/
---
src/i18n/strings/lt.json | 113 ++++++++++++++++++++++++++++++++++++++-
1 file changed, 112 insertions(+), 1 deletion(-)
diff --git a/src/i18n/strings/lt.json b/src/i18n/strings/lt.json
index 9657109608..b911458438 100644
--- a/src/i18n/strings/lt.json
+++ b/src/i18n/strings/lt.json
@@ -671,5 +671,116 @@
"Offline": "Atsijungęs",
"Failed to set avatar.": "Nepavyko nustatyti avataro.",
"Forget room": "Pamiršti kambarį",
- "Share room": "Bendrinti kambarį"
+ "Share room": "Bendrinti kambarį",
+ "There are unknown devices in this room: if you proceed without verifying them, it will be possible for someone to eavesdrop on your call.": "Šiame kambaryje yra nepatvirtintų įrenginių: jeigu tęsite jų nepatvirtinę, tuomet kas nors galės slapta klausytis jūsų skambučio.",
+ "Usage": "Naudojimas",
+ "Searches DuckDuckGo for results": "Atlieka rezultatų paiešką sistemoje DuckDuckGo",
+ "To use it, just wait for autocomplete results to load and tab through them.": "Norėdami tai naudoti, tiesiog, palaukite, kol bus įkelti automatiškai užbaigti rezultatai, o tuomet, pereikite per juos naudodami Tab klavišą.",
+ "%(targetName)s left the room.": "%(targetName)s išėjo iš kambario.",
+ "%(senderName)s changed the pinned messages for the room.": "%(senderName)s pakeitė prisegtas kambario žinutes.",
+ "Sorry, your homeserver is too old to participate in this room.": "Atleiskite, jūsų namų serveris yra per senas dalyvauti šiame kambaryje.",
+ "Please contact your homeserver administrator.": "Prašome susisiekti su savo namų serverio administratoriumi.",
+ "Enable inline URL previews by default": "Įjungti tiesiogines URL nuorodų peržiūras pagal numatymą",
+ "Enable URL previews for this room (only affects you)": "Įjungti URL nuorodų peržiūras šiame kambaryje (įtakoja tik jus)",
+ "Enable URL previews by default for participants in this room": "Įjungti URL nuorodų peržiūras pagal numatymą dalyviams šiame kambaryje",
+ "Confirm password": "Pakartokite slaptažodį",
+ "Demote yourself?": "Pažeminti save?",
+ "Demote": "Pažeminti",
+ "Share Link to User": "Bendrinti nuorodą su naudotoju",
+ "Direct chats": "Tiesioginiai pokalbiai",
+ "The conversation continues here.": "Pokalbis tęsiasi čia.",
+ "Jump to message": "Pereiti prie žinutės",
+ "Drop here to demote": "Vilkite čia, norėdami pažeminti",
+ "Favourites": "Mėgstami",
+ "This invitation was sent to an email address which is not associated with this account:": "Šis pakvietimas buvo išsiųstas į el. pašto adresą, kuris nėra susietas su šia paskyra:",
+ "You may wish to login with a different account, or add this email to this account.": "Jūs galite pageidauti prisijungti, naudojant kitą paskyrą, arba pridėti šį el. paštą į šią paskyrą.",
+ "You have been kicked from %(roomName)s by %(userName)s.": "%(userName)s išmetė jus iš %(roomName)s.",
+ "You have been kicked from this room by %(userName)s.": "%(userName)s išmetė jus iš šio kambario.",
+ "You have been banned from %(roomName)s by %(userName)s.": "%(userName)s užblokavo jus kambaryje %(roomName)s.",
+ "You have been banned from this room by %(userName)s.": "%(userName)s užblokavo jus šiame kambaryje.",
+ "To change the room's name, you must be a": "Norėdami pakeisti kambario pavadinimą, privalote būti",
+ "To change the room's main address, you must be a": "Norėdami pakeisti pagrindinį kambario adresą, privalote būti",
+ "To change the room's history visibility, you must be a": "Norėdami pakeisti kambario istorijos matomumą, privalote būti",
+ "To change the permissions in the room, you must be a": "Norėdami pakeisti leidimus kambaryje, privalote būti",
+ "To modify widgets in the room, you must be a": "Norėdami modifikuoti valdiklius šiame kambaryje, privalote būti",
+ "The visibility of existing history will be unchanged": "Esamos istorijos matomumas išliks nepakeistas",
+ "End-to-end encryption is in beta and may not be reliable": "Ištisinis šifravimas yra beta versijoje ir gali būti nepatikimas",
+ "You should not yet trust it to secure data": "Kol kas neturėtumėte pasitikėti, kad jis apsaugos jūsų duomenis",
+ "Encryption is enabled in this room": "Šifravimas šiame kambaryje yra įjungtas",
+ "Encryption is not enabled in this room": "Šifravimas šiame kambaryje nėra įjungtas",
+ "To kick users, you must be a": "Norėdami išmesti naudotojus, privalote būti",
+ "To ban users, you must be a": "Norėdami užblokuoti naudotojus, privalote būti",
+ "Banned users": "Užblokuoti naudotojai",
+ "This room is not accessible by remote Matrix servers": "Šis kambarys nėra pasiekiamas nuotoliniams Matrix serveriams",
+ "Who can read history?": "Kas gali skaityti istoriją?",
+ "Room version number: ": "Kambario versijos numeris: ",
+ "There is a known vulnerability affecting this room.": "Yra žinomas pažeidžiamumas, kuris paveikia šį kambarį.",
+ "Only room administrators will see this warning": "Šį įspėjimą matys tik kambario administratoriai",
+ "Remote addresses for this room:": "Nuotoliniai šio kambario adresai:",
+ "You have enabled URL previews by default.": "Jūs esate įjungę URL nuorodų peržiūras pagal numatymą.",
+ "You have disabled URL previews by default.": "Jūs esate išjungę URL nuorodų peržiūras pagal numatymą.",
+ "URL previews are enabled by default for participants in this room.": "URL nuorodų peržiūros yra įjungtos pagal numatymą šio kambario dalyviams.",
+ "URL previews are disabled by default for participants in this room.": "URL nuorodų peržiūros yra išjungtos pagal numatymą šio kambario dalyviams.",
+ "Invalid file%(extra)s": "Neteisingas failas %(extra)s",
+ "This room is a continuation of another conversation.": "Šis kambarys yra kito pokalbio pratęsimas.",
+ "Click here to see older messages.": "Spustelėkite čia, norėdami matyti senesnes žinutes.",
+ "This Home Server would like to make sure you are not a robot": "Šis namų serveris norėtų įsitikinti, kad nesate robotas",
+ "Token incorrect": "Neteisingas prieigos raktas",
+ "Sign in with": "Prisijungti naudojant",
+ "Sign in": "Prisijungti",
+ "If you don't specify an email address, you won't be able to reset your password. Are you sure?": "Jeigu nenurodysite savo el. pašto adreso, negalėsite atstatyti savo slaptažodį. Ar esate tikri?",
+ "Home server URL": "Namų serverio URL",
+ "Identity server URL": "Tapatybės serverio URL",
+ "Please contact your service administrator to continue using the service.": "Norėdami tęsti naudotis paslauga, susisiekite su savo paslaugos administratoriumi.",
+ "Reload widget": "Įkelti valdiklį iš naujo",
+ "Picture": "Paveikslas",
+ "Create new room": "Sukurti naują kambarį",
+ "No results": "Jokių rezultatų",
+ "Delete": "Ištrinti",
+ "%(nameList)s %(transitionList)s": "%(nameList)s %(transitionList)s",
+ "%(oneUser)schanged their name %(count)s times|one": "%(oneUser)s pasikeitė savo vardą",
+ "%(severalUsers)schanged their avatar %(count)s times|one": "%(severalUsers)s pasikeitė savo avatarą",
+ "%(oneUser)schanged their avatar %(count)s times|one": "%(oneUser)s pasikeitė savo avatarą",
+ "collapse": "suskleisti",
+ "expand": "išskleisti",
+ "Room directory": "Kambarių katalogas",
+ "Start chat": "Pradėti pokalbį",
+ "ex. @bob:example.com": "pvz., @jonas:example.com",
+ "Add User": "Pridėti naudotoją",
+ "Matrix ID": "Matrix ID",
+ "email address": "el. pašto adresas",
+ "You have entered an invalid address.": "Įvedėte neteisingą adresą.",
+ "Try using one of the following valid address types: %(validTypesList)s.": "Pabandykite naudoti vieną iš šių teisingų adreso tipų: %(validTypesList)s.",
+ "Logs sent": "Žurnalai išsiųsti",
+ "Failed to send logs: ": "Nepavyko išsiųsti žurnalų: ",
+ "Submit debug logs": "Pateikti derinimo žurnalus",
+ "Start new chat": "Pradėti naują pokalbį",
+ "Click on the button below to start chatting!": "Norėdami pradėti bendravimą, paspauskite ant žemiau esančio mygtuko!",
+ "Create Community": "Sukurti bendruomenę",
+ "Community Name": "Bendruomenės pavadinimas",
+ "Example": "Pavyzdys",
+ "Community ID": "Bendruomenės ID",
+ "example": "pavyzdys",
+ "Create": "Sukurti",
+ "Create Room": "Sukurti kambarį",
+ "Room name (optional)": "Kambario pavadinimas (nebūtina)",
+ "Advanced options": "Išplėstiniai parametrai",
+ "This setting cannot be changed later!": "Šio nustatymo vėliau nebeįmanoma bus pakeisti!",
+ "Unknown error": "Nežinoma klaida",
+ "Incorrect password": "Neteisingas slaptažodis",
+ "To continue, please enter your password:": "Norėdami tęsti, įveskite savo slaptažodį:",
+ "password": "slaptažodis",
+ "Device name": "Įrenginio pavadinimas",
+ "Device key": "Įrenginio raktas",
+ "An error has occurred.": "Įvyko klaida.",
+ "Ignore request": "Nepaisyti užklausos",
+ "Loading device info...": "Įkeliama įrenginio informacija...",
+ "Failed to upgrade room": "Nepavyko atnaujinti kambarį",
+ "The room upgrade could not be completed": "Nepavyko užbaigti kambario naujinimo",
+ "Sign out": "Atsijungti",
+ "Log out and remove encryption keys?": "Atsijungti ir pašalinti šifravimo raktus?",
+ "Send Logs": "Siųsti žurnalus",
+ "Refresh": "Įkelti iš naujo",
+ "Unable to restore session": "Nepavyko atkurti seanso",
+ "Invalid Email Address": "Neteisingas el. pašto adresas"
}
From a2bb08f58e3462a2bb5c3816c5cbcc46e46743e6 Mon Sep 17 00:00:00 2001
From: Markel
Date: Mon, 3 Sep 2018 00:17:02 +0000
Subject: [PATCH 250/343] Translated using Weblate (Spanish)
Currently translated at 98.8% (1235 of 1249 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/es/
---
src/i18n/strings/es.json | 18 +++++++++---------
1 file changed, 9 insertions(+), 9 deletions(-)
diff --git a/src/i18n/strings/es.json b/src/i18n/strings/es.json
index 9a23a8368b..c427bd54ec 100644
--- a/src/i18n/strings/es.json
+++ b/src/i18n/strings/es.json
@@ -620,7 +620,7 @@
"Messages containing my display name": "Mensajes que contienen mi nombre",
"Messages in one-to-one chats": "Mensajes en chats uno a uno",
"Unavailable": "No disponible",
- "View Decrypted Source": "Ver Fuente Descifrada",
+ "View Decrypted Source": "Ver fuente descifrada",
"Failed to update keywords": "Error al actualizar las palabras clave",
"Notes:": "Notas:",
"remove %(name)s from the directory.": "retirar %(name)s del directorio.",
@@ -702,7 +702,7 @@
"Reply": "Responder",
"Show message in desktop notification": "Mostrar mensaje en la notificación del escritorio",
"Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited and the usernames of other users. They do not contain messages.": "Los registros de depuración contienen datos de uso de la aplicación como nombre de usuario, ID o alias de las salas o grupos que hayas visitado (y nombres de usuario de otros usuarios). No contienen mensajes.",
- "Unhide Preview": "Mostrar Vista Previa",
+ "Unhide Preview": "Mostrar vista previa",
"Unable to join network": "No se puede unir a la red",
"You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "Es posible que los hayas configurado en un cliente que no sea Riot. No puedes ajustarlos en Riot, pero todavía se aplican",
"Sorry, your browser is not able to run Riot.": "¡Lo sentimos! Su navegador no puede ejecutar Riot.",
@@ -729,7 +729,7 @@
"View Community": "Ver la comunidad",
"%(count)s Members|one": "%(count)s miembro",
"Developer Tools": "Herramientas de Desarrollo",
- "View Source": "Ver Fuente",
+ "View Source": "Ver fuente",
"Event Content": "Contenido del Evento",
"Unable to fetch notification target list": "No se puede obtener la lista de objetivos de notificación",
"Quote": "Citar",
@@ -1109,7 +1109,7 @@
"\"%(RoomName)s\" contains devices that you haven't seen before.": "\"%(RoomName)s\" contiene dispositivos que no ha visto antes.",
"Unknown devices": "Dispositivos desconocidos",
"Unable to reject invite": "No se pudo rechazar la invitación",
- "Share Message": "Compartir Mensaje",
+ "Share Message": "Compartir mensaje",
"Collapse Reply Thread": "Colapsar Hilo de Respuestas",
"Topic": "Tema",
"Make this room private": "Hacer privada esta sala",
@@ -1121,13 +1121,13 @@
"Which rooms would you like to add to this summary?": "¿Cuáles salas desea agregar a este resumen?",
"Add to summary": "Agregar a resumen",
"Failed to add the following rooms to the summary of %(groupId)s:": "Falló la agregación de las salas siguientes al resumen de %(groupId)s:",
- "Add a Room": "Agregar una Sala",
+ "Add a Room": "Agregar una sala",
"Failed to remove the room from the summary of %(groupId)s": "Falló la eliminación de la sala del resumen de %(groupId)s",
"The room '%(roomName)s' could not be removed from the summary.": "La sala '%(roomName)s' no se pudo eliminar del resumen.",
"Add users to the community summary": "Agregar usuario al resumen de la comunidad",
"Who would you like to add to this summary?": "¿A quién le gustaría agregar a este resumen?",
"Failed to add the following users to the summary of %(groupId)s:": "Falló la adición de los usuarios siguientes al resumen de %(groupId)s:",
- "Add a User": "Agregar un Usuario",
+ "Add a User": "Agregar un usuario",
"Failed to remove a user from the summary of %(groupId)s": "Falló la eliminación de un usuario del resumen de %(groupId)s",
"The user '%(displayName)s' could not be removed from the summary.": "No se pudo eliminar al usuario '%(displayName)s' del resumen.",
"Failed to upload image": "Falló la subida de la imagen",
@@ -1137,11 +1137,11 @@
"Leave Community": "Abandonar Comunidad",
"Leave %(groupName)s?": "¿Abandonar %(groupName)s?",
"Unable to leave community": "No se pudo abandonar la comunidad",
- "Community Settings": "Configuración de la Comunidad",
+ "Community Settings": "Configuración de la comunidad",
"Changes made to your community name and avatar might not be seen by other users for up to 30 minutes.": "Las modificaciones realizadas al nombre y avatar de la comunidad pueden no mostrarse a otros usuarios hasta dentro de 30 minutos.",
"These rooms are displayed to community members on the community page. Community members can join the rooms by clicking on them.": "Estas salas se muestran a los miembros de la comunidad en la página de la misma. Los miembros pueden unirse a las salas pulsando sobre ellas.",
- "Featured Rooms:": "Salas Destacadas:",
- "Featured Users:": "Usuarios Destacados:",
+ "Featured Rooms:": "Salas destacadas:",
+ "Featured Users:": "Usuarios destacados:",
"%(inviter)s has invited you to join this community": "%(inviter)s le ha invitado a unirse a esta comunidad",
"Join this community": "Unirse a esta comunidad",
"Leave this community": "Abandonar esta comunidad",
From 3e227bb40ff8aab7715ae8539de8e648bd33b4a2 Mon Sep 17 00:00:00 2001
From: David Baker
Date: Mon, 3 Sep 2018 14:14:24 +0100
Subject: [PATCH 251/343] released matrix-js-sdk
---
package.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/package.json b/package.json
index 68b770acd1..a991b4cae8 100644
--- a/package.json
+++ b/package.json
@@ -73,7 +73,7 @@
"linkifyjs": "^2.1.6",
"lodash": "^4.13.1",
"lolex": "2.3.2",
- "matrix-js-sdk": "0.10.9-rc.2",
+ "matrix-js-sdk": "0.10.9",
"optimist": "^0.6.1",
"pako": "^1.0.5",
"prop-types": "^15.5.8",
From c87406c1b2f9294cd392434bd9ca480b8bb6ddfa Mon Sep 17 00:00:00 2001
From: David Baker
Date: Mon, 3 Sep 2018 14:26:00 +0100
Subject: [PATCH 252/343] Prepare changelog for v0.13.3
---
CHANGELOG.md | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 2181df17a9..5298e1cd63 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,9 @@
+Changes in [0.13.3](https://github.com/matrix-org/matrix-react-sdk/releases/tag/v0.13.3) (2018-09-03)
+=====================================================================================================
+[Full Changelog](https://github.com/matrix-org/matrix-react-sdk/compare/v0.13.3-rc.2...v0.13.3)
+
+ * No changes since rc.2
+
Changes in [0.13.3-rc.2](https://github.com/matrix-org/matrix-react-sdk/releases/tag/v0.13.3-rc.2) (2018-08-31)
===============================================================================================================
[Full Changelog](https://github.com/matrix-org/matrix-react-sdk/compare/v0.13.3-rc.1...v0.13.3-rc.2)
From 4b45c17f59d6320493c1c3c0884f7497bd3487ea Mon Sep 17 00:00:00 2001
From: David Baker
Date: Mon, 3 Sep 2018 14:26:00 +0100
Subject: [PATCH 253/343] v0.13.3
---
package.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/package.json b/package.json
index a991b4cae8..fb8acbecf7 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "matrix-react-sdk",
- "version": "0.13.3-rc.2",
+ "version": "0.13.3",
"description": "SDK for matrix.org using React",
"author": "matrix.org",
"repository": {
From 0acb403d5535570428b4147a3ce4f4a3b47a151d Mon Sep 17 00:00:00 2001
From: csybr
Date: Mon, 3 Sep 2018 13:18:59 +0000
Subject: [PATCH 254/343] Translated using Weblate (Norwegian Nynorsk)
Currently translated at 97.6% (1220 of 1249 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/nn/
---
src/i18n/strings/nn.json | 50 ++++++++++++++++++++--------------------
1 file changed, 25 insertions(+), 25 deletions(-)
diff --git a/src/i18n/strings/nn.json b/src/i18n/strings/nn.json
index c1174dcd5a..c6682b03aa 100644
--- a/src/i18n/strings/nn.json
+++ b/src/i18n/strings/nn.json
@@ -69,15 +69,15 @@
"Riot does not have permission to send you notifications - please check your browser settings": "Riot har ikkje tillating til å senda deg varsel - ver venleg og sjekk nettlesarinnstillingane dine",
"Riot was not given permission to send notifications - please try again": "Riot fekk ikkje tillating til å senda varsel - ver venleg og prøv igjen",
"Unable to enable Notifications": "Klarte ikkje å skru på Varsel",
- "This email address was not found": "Denne emailadressa var ikkje funne",
- "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Emailadressa di ser ikkje ut til å vera tilknytta ein Matrix-ID på denne heimtenaren.",
+ "This email address was not found": "Denne epostadressa var ikkje funnen",
+ "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Epostadressa di ser ikkje ut til å vera tilknytta ein Matrix-ID på denne heimtenaren.",
"Default": "Utgangspunktinnstilling",
"Restricted": "Avgrensa",
"Moderator": "Moderator",
"Admin": "Administrator",
"Start a chat": "Start ei samtale",
"Who would you like to communicate with?": "Kven vil du koma i kontakt med?",
- "Email, name or matrix ID": "Email, namn eller Matrix-ID",
+ "Email, name or matrix ID": "Epost, namn eller Matrix-ID",
"Start Chat": "Start ei Samtale",
"Invite new room members": "Byd nye rommedlemer inn",
"Who would you like to add to this room?": "Kven vil du leggja til i rommet?",
@@ -120,9 +120,9 @@
"Unignored user": "Avoversedd brukar",
"You are no longer ignoring %(userId)s": "Du overser ikkje %(userId)s no lenger",
"Define the power level of a user": "Set ein brukar si makthøgd",
- "This email address is already in use": "Denne emailadressa er allereie i bruk",
+ "This email address is already in use": "Denne epostadressa er allereie i bruk",
"The platform you're on": "Platformen du er på",
- "Failed to verify email address: make sure you clicked the link in the email": "Fekk ikkje til å stadfesta emailadressa: sjå til at du klikka på den rette lenkja i emailen",
+ "Failed to verify email address: make sure you clicked the link in the email": "Fekk ikkje til å stadfesta epostadressa: sjå til at du klikka på den rette lenkja i eposten",
"Your identity server's URL": "Din identitetstenar si nettadresse",
"Every page you use in the app": "Alle sider du brukar i æppen",
"e.g. ": "t.d. ",
@@ -262,7 +262,7 @@
"Passwords can't be empty": "Passordsfelta kan ikkje vera tomme",
"Warning!": "Åtvaring!",
"Continue": "Gå fram",
- "Do you want to set an email address?": "Vil du setja ei emailadresse?",
+ "Do you want to set an email address?": "Vil du setja ei epostadresse?",
"Current password": "Noverande passord",
"Password": "Passord",
"New Password": "Nytt Passord",
@@ -278,8 +278,8 @@
"Last seen": "Sist sedd",
"Select devices": "Vel einingar",
"Failed to set display name": "Fekk ikkje til å setja visingsnamn",
- "Error saving email notification preferences": "Klarte ikkje å lagra foretrukne emailvarselinnstillingar",
- "An error occurred whilst saving your email notification preferences.": "Noko gjekk gale med lagringa av dine foretrukne emailvarselinstillingar.",
+ "Error saving email notification preferences": "Klarte ikkje å lagra foretrukne epostvarselinnstillingar",
+ "An error occurred whilst saving your email notification preferences.": "Noko gjekk gale med lagringa av dine foretrukne epostvarselinstillingar.",
"Keywords": "Nykelord",
"Enter keywords separated by a comma:": "Skriv inn nykelord med komma imellom:",
"OK": "Greitt",
@@ -291,8 +291,8 @@
"Notify me for anything else": "Varsl meg for kva som helst anna",
"Enable notifications for this account": "Skru varsel på for denne brukaren",
"All notifications are currently disabled for all targets.": "Alle varsel er for augeblunket skrudd av for alle mål.",
- "Add an email address above to configure email notifications": "Legg til ein emailadresse i feltet over for å endra emailvarselinnstillingar",
- "Enable email notifications": "Skru emailvarsel på",
+ "Add an email address above to configure email notifications": "Legg til ein epostadresse i feltet over for å endra epostvarselinnstillingar",
+ "Enable email notifications": "Skru epostvarsel på",
"Notifications on the following keywords follow rules which can’t be displayed here:": "Varsel på fylgjande nykelord følgjer reglar som ikkje kan visast her:",
"Unable to fetch notification target list": "Klarte ikkje å henta varselmållista",
"Notification targets": "Varselmål",
@@ -451,8 +451,8 @@
"You have no historical rooms": "Du har inkje historiske rom",
"Historical": "Historiske",
"Unable to ascertain that the address this invite was sent to matches one associated with your account.": "Klarte ikkje å forsikra at adressa som denne innbydinga er send til samsvarar med den som er tilknytta brukaren din.",
- "This invitation was sent to an email address which is not associated with this account:": "Denne invitasjonen er send til ei emailadressa som ikkje er tilknytta denne brukaren:",
- "You may wish to login with a different account, or add this email to this account.": "Kanskje du ynskjer å logga inn med ein anna brukar, eller leggja til denne emailen til denne brukaren.",
+ "This invitation was sent to an email address which is not associated with this account:": "Denne invitasjonen er send til ei epostadressa som ikkje er tilknytta denne brukaren:",
+ "You may wish to login with a different account, or add this email to this account.": "Kanskje du ynskjer å logga inn med ein annan brukar, eller leggja til denne eposten til denne brukaren.",
"You have been invited to join this room by %(inviterName)s": "Du vart boden inn i dette rommet av %(inviterName)s",
"Would you like to accept or decline this invitation?": "Vil du seia ja eller nei til denne innbydinga?",
"Reason: %(reasonText)s": "Grunnlag: %(reasonText)s",
@@ -587,18 +587,18 @@
"This Home Server would like to make sure you are not a robot": "Denne heimtenaren ynskjer å forsikra seg om at du ikkje er ein robot",
"Sign in with CAS": "Logg inn med CAS",
"This allows you to use this app with an existing Matrix account on a different home server.": "Dette tillèt deg å bruka denne æppen med ein Matrixbrukar som allereie finst på ein annan heimtenar.",
- "You can also set a custom identity server but this will typically prevent interaction with users based on email address.": "Du kan i tillegg setja ein eigen identitetstenar, men dette hindrar som regel samhandling med brukarar som brukar emailadresse.",
+ "You can also set a custom identity server but this will typically prevent interaction with users based on email address.": "Du kan i tillegg setja ein eigen identitetstenar, men dette hindrar som regel samhandling med brukarar som brukar epostadresse.",
"Dismiss": "Avvis",
"To continue, please enter your password.": "For å gå fram, ver venleg og skriv passordet ditt inn.",
"Password:": "Passord:",
- "An email has been sent to %(emailAddress)s": "En email vart send til %(emailAddress)s",
- "Please check your email to continue registration.": "Ver venleg og sjekk emailen din for å gå vidare med påmeldinga.",
+ "An email has been sent to %(emailAddress)s": "En epost vart send til %(emailAddress)s",
+ "Please check your email to continue registration.": "Ver venleg og sjekk eposten din for å gå vidare med påmeldinga.",
"A text message has been sent to %(msisdn)s": "Ei tekstmelding vart send til %(msisdn)s",
"Please enter the code it contains:": "Ver venleg og skriv koden den inneheld inn:",
"Code": "Kode",
"Start authentication": "Byrj godkjenning",
"powered by Matrix": "Matrixdriven",
- "The email field must not be blank.": "Emailfeltet kan ikkje vera tomt.",
+ "The email field must not be blank.": "Epostfeltet kan ikkje vera tomt.",
"The user name field must not be blank.": "Brukarnamnfeltet kan ikkje vera tomt.",
"The phone number field must not be blank.": "Telefonnummerfeltet kan ikkje vera tomt.",
"The password field must not be blank.": "Passordfeltet kan ikkje vera tomt.",
@@ -608,10 +608,10 @@
"Forgot your password?": "Gløymt passordet ditt?",
"%(serverName)s Matrix ID": "%(serverName)s Matrix-ID",
"Sign in with": "Logg inn med",
- "Email address": "Emailadresse",
+ "Email address": "Epostadresse",
"Sign in": "Logg inn",
- "If you don't specify an email address, you won't be able to reset your password. Are you sure?": "Viss du ikkje seier kva emailadresse du vil bruka vil du ikkje kunna attendestille passordet ditt. Er du sikker?",
- "Email address (optional)": "Emailadresse (valfritt)",
+ "If you don't specify an email address, you won't be able to reset your password. Are you sure?": "Viss du ikkje seier kva epostadresse du vil bruka vil du ikkje kunna attendestille passordet ditt. Er du sikker?",
+ "Email address (optional)": "Epostadresse (valfritt)",
"You are registering with %(SelectedTeamName)s": "Du melder deg inn med %(SelectedTeamName)s",
"Mobile phone number (optional)": "Mobiltelefonnummer (valfritt)",
"Register": "Meld deg inn",
@@ -738,7 +738,7 @@
"Add User": "Legg Brukar til",
"Matrix ID": "Matrix-ID",
"Matrix Room ID": "Matrixrom-ID",
- "email address": "emailadresse",
+ "email address": "epostadresse",
"You have entered an invalid address.": "Du har skrive ei ugangbar adresse inn.",
"Try using one of the following valid address types: %(validTypesList)s.": "Prøv å bruka ein av dei fylgjande gangbare adressesortane: %(validTypesList)s.",
"Preparing to send logs": "Førebur loggsending",
@@ -781,7 +781,7 @@
"This will make your account permanently unusable. You will not be able to log in, and no one will be able to re-register the same user ID. This will cause your account to leave all rooms it is participating in, and it will remove your account details from your identity server. This action is irreversible.": "Dette gjer at brukaren din vert ubrukeleg til evig tid. Du kjem ikkje til å kunna logga inn, og ingen andre kjem til å kunna melde seg inn med den gamle brukar-IDen din. Brukaren din forlét òg alle rom han er i, og brukardetaljane dine vil verta fjerna frå identitetstenaren. Denne handlinga kan ikkje gjerast om.",
"Deactivate Account": "Avliv Brukaren",
"Deactivating your account does not by default cause us to forget messages you have sent. If you would like us to forget your messages, please tick the box below.": "Å avliva brukaren din gjer i utgangspunktet ikkje at vi gløymer meldingane du har send. Viss du vil at vi skal gløyma meldingane dine, ver venleg og kryss av i firkanten under.",
- "Message visibility in Matrix is similar to email. Our forgetting your messages means that messages you have sent will not be shared with any new or unregistered users, but registered users who already have access to these messages will still have access to their copy.": "Meldingssynlegheit på Matrix liknar på email. At vi gløymer meldingane dine tyder at meldingar du har send ikkje vil verta delt med nye, ikkje-innmeldte brukarar, men brukare som er meldt på som allereie har tilgang til desse meldingane vil fortsatt kunne sjå kopien deira.",
+ "Message visibility in Matrix is similar to email. Our forgetting your messages means that messages you have sent will not be shared with any new or unregistered users, but registered users who already have access to these messages will still have access to their copy.": "Meldingssynlegheit på Matrix liknar på epost. At vi gløymer meldingane dine tyder at meldingar du har send ikkje vil verta delt med nye, ikkje-innmeldte brukarar, men brukare som er meldt på som allereie har tilgang til desse meldingane vil fortsatt kunne sjå kopien deira.",
"Please forget all messages I have sent when my account is deactivated (Warning: this will cause future users to see an incomplete view of conversations)": "Ver venleg og gløym alle meldingane eg har send når brukaren min vert avliven (Åtvaring: dette gjer at framtidige brukarar ikkje fær eit fullstendig oversyn av samtalene)",
"To continue, please enter your password:": "For å gå fram, ver venleg og skriv passordet ditt inn:",
"password": "passord",
@@ -817,11 +817,11 @@
"We encountered an error trying to restore your previous session.": "Noko gjekk gale med framhentinga av den førre øykta di.",
"If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.": "Viss du har bruka ei nyare utgåve av Riot før, kan det henda at øykta di ikkje passar inn i denne utgåva. Lukk dette vindauget og gå attende til den nyare utgåva.",
"Clearing your browser's storage may fix the problem, but will sign you out and cause any encrypted chat history to become unreadable.": "Det kan henda at å tømma nettlesarlageret rettar opp i det, men det loggar deg ut og kan gjera den krypterte pratehistoria uleseleg.",
- "Invalid Email Address": "Ugangbar Emailadresse",
- "This doesn't appear to be a valid email address": "Det ser ikkje ut til at emailadressa er gangbar",
+ "Invalid Email Address": "Ugangbar Epostadresse",
+ "This doesn't appear to be a valid email address": "Det ser ikkje ut til at epostadressa er gangbar",
"Verification Pending": "Ventar på Godkjenning",
- "Please check your email and click on the link it contains. Once this is done, click continue.": "Ver venleg og sjekk emailen din og klikk på lenkja du har fått. Når det er gjort, klikk gå fram.",
- "Unable to add email address": "Klarte ikkje å leggja emailadressa til",
+ "Please check your email and click on the link it contains. Once this is done, click continue.": "Ver venleg og sjekk eposten din og klikk på lenkja du har fått. Når det er gjort, klikk gå fram.",
+ "Unable to add email address": "Klarte ikkje å leggja epostadressa til",
"Unable to verify email address.": "Klarte ikkje å stadfesta emailadressa.",
"This will allow you to reset your password and receive notifications.": "Dette tillèt deg å attendestilla passordet ditt og å få varsel.",
"Skip": "Hopp over",
From c12abab52d6b4f1be95084fbb4b80578395f480a Mon Sep 17 00:00:00 2001
From: Bruno Windels
Date: Tue, 4 Sep 2018 13:03:55 +0200
Subject: [PATCH 255/343] wait until rooms are available
as accountData get processed before rooms, during initial sync
or loading sync from cache, accountData gets emitted
before any room is available, hence our patching wasn't doing
anything. Just as well, because it would have failed (see next commits)
---
src/utils/DMRoomMap.js | 22 +++++++++++++++++++---
1 file changed, 19 insertions(+), 3 deletions(-)
diff --git a/src/utils/DMRoomMap.js b/src/utils/DMRoomMap.js
index 0c5e696c5f..789970c744 100644
--- a/src/utils/DMRoomMap.js
+++ b/src/utils/DMRoomMap.js
@@ -70,13 +70,13 @@ export default class DMRoomMap {
this.matrixClient.removeListener("accountData", this._onAccountData);
}
- _onAccountData(ev) {
+ async _onAccountData(ev) {
if (ev.getType() == 'm.direct') {
const userToRooms = this.matrixClient.getAccountData('m.direct').getContent() || {};
const myUserId = this.matrixClient.getUserId();
const selfDMs = userToRooms[myUserId];
if (selfDMs && selfDMs.length) {
- const neededPatching = this._patchUpSelfDMs(userToRooms);
+ const neededPatching = await this._patchUpSelfDMs(userToRooms);
// to avoid multiple devices fighting to correct
// the account data, only try to send the corrected
// version once.
@@ -94,10 +94,13 @@ export default class DMRoomMap {
* with ourself, not the other user. Fix it by guessing the other user and
* modifying userToRooms
*/
- _patchUpSelfDMs(userToRooms) {
+ async _patchUpSelfDMs(userToRooms) {
const myUserId = this.matrixClient.getUserId();
const selfRoomIds = userToRooms[myUserId];
if (selfRoomIds) {
+ // account data gets emitted before the rooms are available
+ // so wait for the sync to be ready and then read the rooms.
+ await this._waitForSyncReady();
// any self-chats that should not be self-chats?
const guessedUserIdsThatChanged = selfRoomIds.map((roomId) => {
const room = this.matrixClient.getRoom(roomId);
@@ -135,6 +138,19 @@ export default class DMRoomMap {
}
}
+ _waitForSyncReady() {
+ return new Promise((resolve) => {
+ const syncState = this.matrixClient.getSyncState();
+ if (syncState === 'PREPARED' || syncState === 'SYNCING') {
+ resolve();
+ } else {
+ // if we already got an accountData event,
+ // next sync should not be ERROR, so just resolve
+ this.matrixClient.once('sync', () => resolve());
+ }
+ });
+ }
+
getDMRoomsForUserId(userId) {
// Here, we return the empty list if there are no rooms,
// since the number of conversations you have with this user is zero.
From 245dfbf957cf3705c529bb50445e665107f5659f Mon Sep 17 00:00:00 2001
From: Bruno Windels
Date: Tue, 4 Sep 2018 13:06:27 +0200
Subject: [PATCH 256/343] only put NON-guessed rooms in self-chats
---
src/utils/DMRoomMap.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/utils/DMRoomMap.js b/src/utils/DMRoomMap.js
index 789970c744..56832a1a75 100644
--- a/src/utils/DMRoomMap.js
+++ b/src/utils/DMRoomMap.js
@@ -117,7 +117,7 @@ export default class DMRoomMap {
return false;
}
userToRooms[myUserId] = selfRoomIds.filter((roomId) => {
- return guessedUserIdsThatChanged
+ return !guessedUserIdsThatChanged
.some((ids) => ids.roomId === roomId);
});
From 441036ff93f546292231833e7ec068171b2d2469 Mon Sep 17 00:00:00 2001
From: Bruno Windels
Date: Tue, 4 Sep 2018 13:07:24 +0200
Subject: [PATCH 257/343] remove duplicates from room lists
---
src/ArrayUtils.js | 29 +++++++++++++++++++++++++++++
src/utils/DMRoomMap.js | 14 +++++---------
2 files changed, 34 insertions(+), 9 deletions(-)
create mode 100644 src/ArrayUtils.js
diff --git a/src/ArrayUtils.js b/src/ArrayUtils.js
new file mode 100644
index 0000000000..850fcc40f9
--- /dev/null
+++ b/src/ArrayUtils.js
@@ -0,0 +1,29 @@
+/*
+Copyright 2018 New Vector
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+/**
+ * creates a new array with only the unique values of the given array
+ * @return {array} the deduplicated array
+ */
+export function unique(arr) {
+ const cpy = [];
+ arr.forEach((el) => {
+ if (!cpy.includes(el)) {
+ cpy.push(el);
+ }
+ });
+ return cpy;
+};
diff --git a/src/utils/DMRoomMap.js b/src/utils/DMRoomMap.js
index 56832a1a75..cb76610e4d 100644
--- a/src/utils/DMRoomMap.js
+++ b/src/utils/DMRoomMap.js
@@ -15,6 +15,7 @@ limitations under the License.
*/
import MatrixClientPeg from '../MatrixClientPeg';
+import {unique} from '../ArrayUtils';
/**
* Class that takes a Matrix Client and flips the m.direct map
@@ -120,19 +121,14 @@ export default class DMRoomMap {
return !guessedUserIdsThatChanged
.some((ids) => ids.roomId === roomId);
});
-
guessedUserIdsThatChanged.forEach(({userId, roomId}) => {
- if (!userId) {
- // if not able to guess the other user (unlikely)
- // still put it in the map so the room stays marked
- // as a DM, we just wont be able to show an avatar.
- userId = "";
- }
let roomIds = userToRooms[userId];
if (!roomIds) {
- roomIds = userToRooms[userId] = [];
+ userToRooms[userId] = [roomId];
+ } else {
+ roomIds.push(roomId);
+ userToRooms[userId] = unique(roomIds);
}
- roomIds.push(roomId);
});
return true;
}
From 6c7cb380e06c4cfead5c916ac8f3089e7ecee4c9 Mon Sep 17 00:00:00 2001
From: Bruno Windels
Date: Tue, 4 Sep 2018 13:07:45 +0200
Subject: [PATCH 258/343] add warning in console when patching rooms, so it
appears in rage shakes
---
src/utils/DMRoomMap.js | 2 ++
1 file changed, 2 insertions(+)
diff --git a/src/utils/DMRoomMap.js b/src/utils/DMRoomMap.js
index cb76610e4d..637df4fd0f 100644
--- a/src/utils/DMRoomMap.js
+++ b/src/utils/DMRoomMap.js
@@ -81,6 +81,8 @@ export default class DMRoomMap {
// to avoid multiple devices fighting to correct
// the account data, only try to send the corrected
// version once.
+ console.warn(`Invalid m.direct account data detected ` +
+ `(self-chats that shouldn't be), patching it up.`);
if (neededPatching && !this._hasSentOutPatchDirectAccountDataPatch) {
this._hasSentOutPatchDirectAccountDataPatch = true;
this.matrixClient.setAccountData('m.direct', userToRooms);
From abd9d3a11e0b2db2722d2551f2b53ebad2549f40 Mon Sep 17 00:00:00 2001
From: Bruno Windels
Date: Tue, 4 Sep 2018 13:55:29 +0200
Subject: [PATCH 259/343] fix lint
---
src/ArrayUtils.js | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/ArrayUtils.js b/src/ArrayUtils.js
index 850fcc40f9..ca1aea9b5b 100644
--- a/src/ArrayUtils.js
+++ b/src/ArrayUtils.js
@@ -16,6 +16,7 @@ limitations under the License.
/**
* creates a new array with only the unique values of the given array
+ * @param {array} arr the array to deduplicate
* @return {array} the deduplicated array
*/
export function unique(arr) {
@@ -26,4 +27,4 @@ export function unique(arr) {
}
});
return cpy;
-};
+}
From 5c395e4db737de08870976860fe95be455433bd6 Mon Sep 17 00:00:00 2001
From: Bruno Windels
Date: Tue, 4 Sep 2018 14:26:36 +0200
Subject: [PATCH 260/343] wait for room creation, to go to home page in case of
failure
---
src/components/structures/MatrixChat.js | 11 ++++++++---
1 file changed, 8 insertions(+), 3 deletions(-)
diff --git a/src/components/structures/MatrixChat.js b/src/components/structures/MatrixChat.js
index 4bcfd77ff7..7a13067976 100644
--- a/src/components/structures/MatrixChat.js
+++ b/src/components/structures/MatrixChat.js
@@ -1132,7 +1132,7 @@ export default React.createClass({
*
* @param {string} teamToken
*/
- _onLoggedIn: function(teamToken) {
+ _onLoggedIn: async function(teamToken) {
this.setState({
view: VIEWS.LOGGED_IN,
});
@@ -1145,12 +1145,17 @@ export default React.createClass({
this._is_registered = false;
if (this.props.config.welcomeUserId && getCurrentLanguage().startsWith("en")) {
- createRoom({
+ const roomId = await createRoom({
dmUserId: this.props.config.welcomeUserId,
// Only view the welcome user if we're NOT looking at a room
andView: !this.state.currentRoomId,
});
- return;
+ // if successful, return because we're already
+ // viewing the welcomeUserId room
+ // else, if failed, fall through to view_home_page
+ if (roomId) {
+ return;
+ }
}
// The user has just logged in after registering
dis.dispatch({action: 'view_home_page'});
From be66f98381f50941b15bf67e7e038c597bed39b0 Mon Sep 17 00:00:00 2001
From: Bruno Windels
Date: Tue, 4 Sep 2018 15:35:44 +0200
Subject: [PATCH 261/343] use room method for checking power levels
as it is always are of the syncing user's membership
in case of lazy loading members
---
src/components/views/rooms/MessageComposer.js | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/components/views/rooms/MessageComposer.js b/src/components/views/rooms/MessageComposer.js
index dacd433e3e..ad4a1dfafe 100644
--- a/src/components/views/rooms/MessageComposer.js
+++ b/src/components/views/rooms/MessageComposer.js
@@ -309,8 +309,8 @@ export default class MessageComposer extends React.Component {
;
}
- const canSendMessages = !this.state.tombstone && this.props.room.currentState.maySendMessage(
- MatrixClientPeg.get().credentials.userId);
+ const canSendMessages = !this.state.tombstone &&
+ this.props.room.maySendMessage();
if (canSendMessages) {
// This also currently includes the call buttons. Really we should
From e171296d51aeee49467622ead79f65cb9d8260e8 Mon Sep 17 00:00:00 2001
From: Bruno Windels
Date: Tue, 4 Sep 2018 16:00:40 +0200
Subject: [PATCH 262/343] patch self-chats lazily in favor of awaiting sync
state
---
src/utils/DMRoomMap.js | 71 ++++++++++++++++++------------------------
1 file changed, 30 insertions(+), 41 deletions(-)
diff --git a/src/utils/DMRoomMap.js b/src/utils/DMRoomMap.js
index 637df4fd0f..453d6c89b0 100644
--- a/src/utils/DMRoomMap.js
+++ b/src/utils/DMRoomMap.js
@@ -37,11 +37,8 @@ export default class DMRoomMap {
this._onAccountData = this._onAccountData.bind(this);
const mDirectEvent = matrixClient.getAccountData('m.direct');
- if (!mDirectEvent) {
- this.userToRooms = {};
- } else {
- this.userToRooms = mDirectEvent.getContent();
- }
+ this.mDirectEvent = mDirectEvent ? mDirectEvent.getContent() : {};
+ this.userToRooms = null;
}
/**
@@ -71,25 +68,11 @@ export default class DMRoomMap {
this.matrixClient.removeListener("accountData", this._onAccountData);
}
- async _onAccountData(ev) {
+ _onAccountData(ev) {
if (ev.getType() == 'm.direct') {
- const userToRooms = this.matrixClient.getAccountData('m.direct').getContent() || {};
- const myUserId = this.matrixClient.getUserId();
- const selfDMs = userToRooms[myUserId];
- if (selfDMs && selfDMs.length) {
- const neededPatching = await this._patchUpSelfDMs(userToRooms);
- // to avoid multiple devices fighting to correct
- // the account data, only try to send the corrected
- // version once.
- console.warn(`Invalid m.direct account data detected ` +
- `(self-chats that shouldn't be), patching it up.`);
- if (neededPatching && !this._hasSentOutPatchDirectAccountDataPatch) {
- this._hasSentOutPatchDirectAccountDataPatch = true;
- this.matrixClient.setAccountData('m.direct', userToRooms);
- }
- }
- this.userToRooms = userToRooms;
- this._populateRoomToUser();
+ this.mDirectEvent = this.matrixClient.getAccountData('m.direct').getContent() || {};
+ this.userToRooms = null;
+ this.roomToUser = null;
}
}
/**
@@ -97,13 +80,10 @@ export default class DMRoomMap {
* with ourself, not the other user. Fix it by guessing the other user and
* modifying userToRooms
*/
- async _patchUpSelfDMs(userToRooms) {
+ _patchUpSelfDMs(userToRooms) {
const myUserId = this.matrixClient.getUserId();
const selfRoomIds = userToRooms[myUserId];
if (selfRoomIds) {
- // account data gets emitted before the rooms are available
- // so wait for the sync to be ready and then read the rooms.
- await this._waitForSyncReady();
// any self-chats that should not be self-chats?
const guessedUserIdsThatChanged = selfRoomIds.map((roomId) => {
const room = this.matrixClient.getRoom(roomId);
@@ -136,19 +116,6 @@ export default class DMRoomMap {
}
}
- _waitForSyncReady() {
- return new Promise((resolve) => {
- const syncState = this.matrixClient.getSyncState();
- if (syncState === 'PREPARED' || syncState === 'SYNCING') {
- resolve();
- } else {
- // if we already got an accountData event,
- // next sync should not be ERROR, so just resolve
- this.matrixClient.once('sync', () => resolve());
- }
- });
- }
-
getDMRoomsForUserId(userId) {
// Here, we return the empty list if there are no rooms,
// since the number of conversations you have with this user is zero.
@@ -177,9 +144,31 @@ export default class DMRoomMap {
return this.roomToUser[roomId];
}
+ _getUserToRooms() {
+ if (!this.userToRooms) {
+ const userToRooms = this.mDirectEvent;
+ const myUserId = this.matrixClient.getUserId();
+ const selfDMs = userToRooms[myUserId];
+ if (selfDMs && selfDMs.length) {
+ const neededPatching = this._patchUpSelfDMs(userToRooms);
+ // to avoid multiple devices fighting to correct
+ // the account data, only try to send the corrected
+ // version once.
+ console.warn(`Invalid m.direct account data detected ` +
+ `(self-chats that shouldn't be), patching it up.`);
+ if (neededPatching && !this._hasSentOutPatchDirectAccountDataPatch) {
+ this._hasSentOutPatchDirectAccountDataPatch = true;
+ this.matrixClient.setAccountData('m.direct', userToRooms);
+ }
+ }
+ this.userToRooms = userToRooms;
+ }
+ return this.userToRooms;
+ }
+
_populateRoomToUser() {
this.roomToUser = {};
- for (const user of Object.keys(this.userToRooms)) {
+ for (const user of Object.keys(this._getUserToRooms())) {
for (const roomId of this.userToRooms[user]) {
this.roomToUser[roomId] = user;
}
From 44a53cfc0d2358a3702ab3b4469113290c87c0e4 Mon Sep 17 00:00:00 2001
From: Bruno Windels
Date: Tue, 4 Sep 2018 16:03:15 +0200
Subject: [PATCH 263/343] use lodash for unique function instead of rolling our
own
---
src/ArrayUtils.js | 30 ------------------------------
src/utils/DMRoomMap.js | 4 ++--
2 files changed, 2 insertions(+), 32 deletions(-)
delete mode 100644 src/ArrayUtils.js
diff --git a/src/ArrayUtils.js b/src/ArrayUtils.js
deleted file mode 100644
index ca1aea9b5b..0000000000
--- a/src/ArrayUtils.js
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
-Copyright 2018 New Vector
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
-/**
- * creates a new array with only the unique values of the given array
- * @param {array} arr the array to deduplicate
- * @return {array} the deduplicated array
- */
-export function unique(arr) {
- const cpy = [];
- arr.forEach((el) => {
- if (!cpy.includes(el)) {
- cpy.push(el);
- }
- });
- return cpy;
-}
diff --git a/src/utils/DMRoomMap.js b/src/utils/DMRoomMap.js
index 453d6c89b0..e0004ebc9d 100644
--- a/src/utils/DMRoomMap.js
+++ b/src/utils/DMRoomMap.js
@@ -15,7 +15,7 @@ limitations under the License.
*/
import MatrixClientPeg from '../MatrixClientPeg';
-import {unique} from '../ArrayUtils';
+import _uniq from 'lodash/uniq';
/**
* Class that takes a Matrix Client and flips the m.direct map
@@ -109,7 +109,7 @@ export default class DMRoomMap {
userToRooms[userId] = [roomId];
} else {
roomIds.push(roomId);
- userToRooms[userId] = unique(roomIds);
+ userToRooms[userId] = _uniq(roomIds);
}
});
return true;
From 37703843e070f6f75b2d529fbd00f884ae85d31c Mon Sep 17 00:00:00 2001
From: csybr
Date: Mon, 3 Sep 2018 15:09:21 +0000
Subject: [PATCH 264/343] Translated using Weblate (Norwegian Nynorsk)
Currently translated at 97.6% (1220 of 1249 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/nn/
---
src/i18n/strings/nn.json | 26 +++++++++++++-------------
1 file changed, 13 insertions(+), 13 deletions(-)
diff --git a/src/i18n/strings/nn.json b/src/i18n/strings/nn.json
index c6682b03aa..dcbdb9977c 100644
--- a/src/i18n/strings/nn.json
+++ b/src/i18n/strings/nn.json
@@ -822,7 +822,7 @@
"Verification Pending": "Ventar på Godkjenning",
"Please check your email and click on the link it contains. Once this is done, click continue.": "Ver venleg og sjekk eposten din og klikk på lenkja du har fått. Når det er gjort, klikk gå fram.",
"Unable to add email address": "Klarte ikkje å leggja epostadressa til",
- "Unable to verify email address.": "Klarte ikkje å stadfesta emailadressa.",
+ "Unable to verify email address.": "Klarte ikkje å stadfesta epostadressa.",
"This will allow you to reset your password and receive notifications.": "Dette tillèt deg å attendestilla passordet ditt og å få varsel.",
"Skip": "Hopp over",
"User names may only contain letters, numbers, dots, hyphens and underscores.": "Brukarnamn kan berre innehalda bokstavar, tal, prikkar, bindestrek og understrek.",
@@ -834,9 +834,9 @@
"This will be your account name on the homeserver, or you can pick a different server.": "Dette vert brukarnamnet ditt på heimtenaren, elles so kan du velja ein annan tenar.",
"If you already have a Matrix account you can log in instead.": "Viss du har ein Matrixbrukar allereie kan du logga på i staden.",
"You have successfully set a password!": "Du sette passordet ditt!",
- "You have successfully set a password and an email address!": "Du sette passordet og emailadressa di!",
+ "You have successfully set a password and an email address!": "Du sette passordet og epostadressa di!",
"You can now return to your account after signing out, and sign in on other devices.": "Du kan no gå attende til brukaren din etter å ha logga ut, og logga inn på andre einingar.",
- "Remember, you can always set an email address in user settings if you change your mind.": "Hugs at du alltid kan setja ei emailadresse i brukarinnstillingar viss du skiftar meining.",
+ "Remember, you can always set an email address in user settings if you change your mind.": "Hugs at du alltid kan setja ei epostadresse i brukarinnstillingar viss du skiftar meining.",
"Failed to change password. Is your password correct?": "Fekk ikkje til å skifta passord. Er passordet rett?",
"(HTTP status %(httpStatus)s)": "(HTTP-tilstand %(httpStatus)s)",
"Please set a password!": "Ver venleg og set eit passord!",
@@ -1059,8 +1059,8 @@
"Microphone": "Ljodopptaking",
"Camera": "Kamera",
"VoIP": "VoIP",
- "Email": "Email",
- "Add email address": "Legg emailadresse til",
+ "Email": "Epost",
+ "Add email address": "Legg epostadresse til",
"Display name": "Visingsnamn",
"Account": "Brukar",
"To return to your account in future you need to set a password": "For å kunna koma attende til brukaren din i framtida må du setja eit passord",
@@ -1071,21 +1071,21 @@
"matrix-react-sdk version:": "matrix-react-sdk-utgåve:",
"riot-web version:": "riot-web-utgåve:",
"olm version:": "olm-utgåve:",
- "Failed to send email": "Fekk ikkje til å senda emailen",
- "The email address linked to your account must be entered.": "Du må skriva emailadressa som er tilknytta brukaren din inn.",
+ "Failed to send email": "Fekk ikkje til å senda eposten",
+ "The email address linked to your account must be entered.": "Du må skriva epostadressa som er tilknytta brukaren din inn.",
"A new password must be entered.": "Du må skriva eit nytt passord inn.",
"New passwords must match each other.": "Dei nye passorda må vera like.",
- "An email has been sent to %(emailAddress)s. Once you've followed the link it contains, click below.": "Ein email vert send til %(emailAddress)s. Når du har far fylgd lenkja i den, klikk under.",
- "I have verified my email address": "Eg har godkjend emailadressa mi",
+ "An email has been sent to %(emailAddress)s. Once you've followed the link it contains, click below.": "Ein epost vart send til %(emailAddress)s. Når du har far fylgd lenkja i den, klikk under.",
+ "I have verified my email address": "Eg har godkjend epostadressa mi",
"Your password has been reset": "Passordet ditt vart attendesett",
"You have been logged out of all devices and will no longer receive push notifications. To re-enable notifications, sign in again on each device": "Du vart logga av alle einingar og får ikkje lenger pushvarsel. For å skru varsel på att, logg inn igjen på kvar eining",
"Return to login screen": "Gå attende til innlogging",
- "To reset your password, enter the email address linked to your account": "For å attendestilla passordet ditt, skriv emailadressa som er lenkja til brukaren din inn",
+ "To reset your password, enter the email address linked to your account": "For å attendestilla passordet ditt, skriv epostadressa som er lenkja til brukaren din inn",
"New password": "Nytt passord",
"Confirm your new password": "Stadfest det nye passordet ditt",
- "Send Reset Email": "Send attendestillingsemail",
+ "Send Reset Email": "Send attendestillingsepost",
"Create an account": "Lag ein brukar",
- "This Home Server does not support login using email address.": "Denne Heimtenaren støttar ikkje innlogging med email.",
+ "This Home Server does not support login using email address.": "Denne Heimtenaren støttar ikkje innlogging med epost.",
"Please contact your service administrator to continue using this service.": "Ver venleg og kontakt din tenesteadministrator for å halda fram med å bruka tenesten.",
"Incorrect username and/or password.": "Urett brukarnamn og/eller passord.",
"Please note you are logging into the %(hs)s server, not matrix.org.": "Merk deg at du loggar inn på %(hs)s-tenaren, ikkje matrix.org.",
@@ -1103,7 +1103,7 @@
"Missing password.": "Vantande passord.",
"Passwords don't match.": "Passorda er ikkje like.",
"Password too short (min %(MIN_PASSWORD_LENGTH)s).": "Passordet er for kort (i det minste %(MIN_PASSWORD_LENGTH)s).",
- "This doesn't look like a valid email address.": "Dette ser ikkje ut som ei gangbar emailadresse.",
+ "This doesn't look like a valid email address.": "Dette ser ikkje ut som ei gangbar epostadresse.",
"This doesn't look like a valid phone number.": "Dette ser ikkje ut som eit gangbart telefonnummer.",
"You need to enter a user name.": "Du må skriva eit brukarnamn inn.",
"An unknown error occurred.": "Noko ukjend gjekk gale.",
From 3b29b7aab6488f338434f6a3d365e01bf62b058f Mon Sep 17 00:00:00 2001
From: Bruno Windels
Date: Tue, 4 Sep 2018 17:36:50 +0200
Subject: [PATCH 265/343] fix getDMRoomsForUserId not calling _getUserToRooms
first (thanks e2e tests)
---
src/utils/DMRoomMap.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/utils/DMRoomMap.js b/src/utils/DMRoomMap.js
index e0004ebc9d..bea6e702fa 100644
--- a/src/utils/DMRoomMap.js
+++ b/src/utils/DMRoomMap.js
@@ -119,7 +119,7 @@ export default class DMRoomMap {
getDMRoomsForUserId(userId) {
// Here, we return the empty list if there are no rooms,
// since the number of conversations you have with this user is zero.
- return this.userToRooms[userId] || [];
+ return this._getUserToRooms()[userId] || [];
}
getUserIdForRoomId(roomId) {
From dc14a4214851337bd8e809edd11a7eb1f0dff9f0 Mon Sep 17 00:00:00 2001
From: David Baker
Date: Tue, 4 Sep 2018 18:26:09 +0100
Subject: [PATCH 266/343] Correctly mark email as optional
Look at the flows to see if there is one we can complete without
an email address. Mark the email address as optional iff there is.
---
.../structures/login/Registration.js | 22 +++++++++++++++++--
.../views/login/RegistrationForm.js | 19 +++++++++++-----
2 files changed, 34 insertions(+), 7 deletions(-)
diff --git a/src/components/structures/login/Registration.js b/src/components/structures/login/Registration.js
index 1131218311..257818b95c 100644
--- a/src/components/structures/login/Registration.js
+++ b/src/components/structures/login/Registration.js
@@ -93,6 +93,7 @@ module.exports = React.createClass({
doingUIAuth: Boolean(this.props.sessionId),
hsUrl: this.props.customHsUrl,
isUrl: this.props.customIsUrl,
+ flows: null,
};
},
@@ -145,11 +146,27 @@ module.exports = React.createClass({
});
},
- _replaceClient: function() {
+ _replaceClient: async function() {
this._matrixClient = Matrix.createClient({
baseUrl: this.state.hsUrl,
idBaseUrl: this.state.isUrl,
});
+ try {
+ const result = await this._makeRegisterRequest({});
+ // This should never succeed since we specified an empty
+ // auth object.
+ console.log("Expecting 401 from register request but got success!");
+ } catch (e) {
+ if (e.httpStatus === 401) {
+ this.setState({
+ flows: e.data.flows,
+ });
+ } else {
+ this.setState({
+ errorText: _t("Unable to query for supported registration methods"),
+ });
+ }
+ }
},
onFormSubmit: function(formVals) {
@@ -378,7 +395,7 @@ module.exports = React.createClass({
poll={true}
/>
);
- } else if (this.state.busy || this.state.teamServerBusy) {
+ } else if (this.state.busy || this.state.teamServerBusy || !this.state.flows) {
registerBody = ;
} else {
let serverConfigSection;
@@ -408,6 +425,7 @@ module.exports = React.createClass({
onError={this.onFormValidationFailed}
onRegisterClick={this.onFormSubmit}
onTeamSelected={this.onTeamSelected}
+ flows={this.state.flows}
/>
{ serverConfigSection }
diff --git a/src/components/views/login/RegistrationForm.js b/src/components/views/login/RegistrationForm.js
index fff808cf22..56a2bcfee4 100644
--- a/src/components/views/login/RegistrationForm.js
+++ b/src/components/views/login/RegistrationForm.js
@@ -1,6 +1,7 @@
/*
Copyright 2015, 2016 OpenMarket Ltd
Copyright 2017 Vector Creations Ltd
+Copyright 2018 New Vector Ltd
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -49,7 +50,7 @@ module.exports = React.createClass({
teamsConfig: PropTypes.shape({
// Email address to request new teams
supportEmail: PropTypes.string,
- teams: PropTypes.arrayOf(React.PropTypes.shape({
+ teams: PropTypes.arrayOf(PropTypes.shape({
// The displayed name of the team
"name": PropTypes.string,
// The domain of team email addresses
@@ -60,6 +61,7 @@ module.exports = React.createClass({
minPasswordLength: PropTypes.number,
onError: PropTypes.func,
onRegisterClick: PropTypes.func.isRequired, // onRegisterClick(Object) => ?Promise
+ flows: PropTypes.arrayOf(PropTypes.object),
},
getDefaultProps: function() {
@@ -273,12 +275,18 @@ module.exports = React.createClass({
});
},
+ _authStepIsRequired(step) {
+ // A step is required if no flow exists which does not include that step
+ // (Notwithstanding setups like either email or msisdn being required)
+ return !this.props.flows.some((flow) => {
+ return !flow.stages.includes(step);
+ });
+ },
+
render: function() {
const self = this;
- const theme = SettingsStore.getValue("theme");
- // FIXME: remove hardcoded Status team tweaks at some point
- const emailPlaceholder = theme === 'status' ? _t("Email address") : _t("Email address (optional)");
+ const emailPlaceholder = this._authStepIsRequired('m.login.email.identity') ? _t("Email address") : _t("Email address (optional)");
const emailSection = (
Date: Tue, 4 Sep 2018 17:38:33 +0000
Subject: [PATCH 267/343] Translated using Weblate (Spanish)
Currently translated at 100.0% (1249 of 1249 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/es/
---
src/i18n/strings/es.json | 17 +++++++++++++++--
1 file changed, 15 insertions(+), 2 deletions(-)
diff --git a/src/i18n/strings/es.json b/src/i18n/strings/es.json
index c427bd54ec..a80390a54f 100644
--- a/src/i18n/strings/es.json
+++ b/src/i18n/strings/es.json
@@ -1239,7 +1239,20 @@
"Your message wasn't sent because this homeserver has exceeded a resource limit. Please contact your service administrator to continue using the service.": "Su mensaje no se envió porque este servidor doméstico ha excedido un límite de recursos. Por favor contacte con su administrador del servicio para continuar usando el servicio.",
"Please contact your service administrator to continue using this service.": "Por favor contacte con su administrador del servicio para continuar usando este servicio.",
"Increase performance by only loading room members on first view": "Incrementar el rendimiento cargando sólo los miembros de la sala en la primera vista",
- "Lazy loading members not supported": "La carga lenta de los miembros no está soportada",
+ "Lazy loading members not supported": "No se admite la carga diferida de miembros",
"Lazy loading is not supported by your current homeserver.": "La carga lenta no está soportada por su servidor doméstico actual.",
- "System Alerts": "Alertas de Sistema"
+ "System Alerts": "Alertas de Sistema",
+ "Forces the current outbound group session in an encrypted room to be discarded": "Obliga a que la sesión de salida grupal actual en una sala cifrada se descarte",
+ "Error Discarding Session": "Error al Descartar la Sesión",
+ "Sorry, your homeserver is too old to participate in this room.": "Lo sentimos, tu servidor doméstico es demasiado antiguo para participar en esta sala.",
+ "Please contact your homeserver administrator.": "Por favor contacta al administrador de tu servidor doméstico.",
+ "This room has been replaced and is no longer active.": "Esta sala ha sido reemplazada y ya no está activa.",
+ "The conversation continues here.": "La conversación continúa aquí.",
+ "Upgrade room to version %(ver)s": "Actualiza la sala a la versión %(ver)s",
+ "This room is a continuation of another conversation.": "Esta sala es la continuación de otra conversación.",
+ "Click here to see older messages.": "Haz clic aquí para ver mensajes más antiguos.",
+ "Failed to upgrade room": "No se pudo actualizar la sala",
+ "The room upgrade could not be completed": "La actualización de la sala no pudo ser completada",
+ "Upgrade this room to version %(version)s": "Actualiza esta sala a la versión %(version)s",
+ "Legal": "Legal"
}
From a07799879ccdddceaa7826031f8c7ede4d9f62a5 Mon Sep 17 00:00:00 2001
From: David Baker
Date: Tue, 4 Sep 2018 18:50:18 +0100
Subject: [PATCH 268/343] Fix tests
---
src/components/views/login/RegistrationForm.js | 2 +-
test/components/views/login/RegistrationForm-test.js | 5 +++++
2 files changed, 6 insertions(+), 1 deletion(-)
diff --git a/src/components/views/login/RegistrationForm.js b/src/components/views/login/RegistrationForm.js
index 56a2bcfee4..1a365277c1 100644
--- a/src/components/views/login/RegistrationForm.js
+++ b/src/components/views/login/RegistrationForm.js
@@ -61,7 +61,7 @@ module.exports = React.createClass({
minPasswordLength: PropTypes.number,
onError: PropTypes.func,
onRegisterClick: PropTypes.func.isRequired, // onRegisterClick(Object) => ?Promise
- flows: PropTypes.arrayOf(PropTypes.object),
+ flows: PropTypes.arrayOf(PropTypes.object).isRequired,
},
getDefaultProps: function() {
diff --git a/test/components/views/login/RegistrationForm-test.js b/test/components/views/login/RegistrationForm-test.js
index 81db5b487b..14a5d036b4 100644
--- a/test/components/views/login/RegistrationForm-test.js
+++ b/test/components/views/login/RegistrationForm-test.js
@@ -37,6 +37,11 @@ function doInputEmail(inputEmail, onTeamSelected) {
,
);
From 775d9950521aa35fbb838ea737c13353bb8c6b38 Mon Sep 17 00:00:00 2001
From: David Baker
Date: Tue, 4 Sep 2018 18:51:24 +0100
Subject: [PATCH 269/343] Lint
---
src/components/structures/login/Registration.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/components/structures/login/Registration.js b/src/components/structures/login/Registration.js
index 257818b95c..f3744b7235 100644
--- a/src/components/structures/login/Registration.js
+++ b/src/components/structures/login/Registration.js
@@ -152,7 +152,7 @@ module.exports = React.createClass({
idBaseUrl: this.state.isUrl,
});
try {
- const result = await this._makeRegisterRequest({});
+ await this._makeRegisterRequest({});
// This should never succeed since we specified an empty
// auth object.
console.log("Expecting 401 from register request but got success!");
From dc66c43fa18900d3852dfd86c734f70bd9980974 Mon Sep 17 00:00:00 2001
From: Matthew Hodgson
Date: Tue, 4 Sep 2018 20:33:04 +0100
Subject: [PATCH 270/343] downgraded parallelshell due to
https://github.com/darkguy2008/parallelshell/issues/57
---
package.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/package.json b/package.json
index fb8acbecf7..3fde5a240b 100644
--- a/package.json
+++ b/package.json
@@ -133,7 +133,7 @@
"matrix-mock-request": "^1.2.1",
"matrix-react-test-utils": "^0.1.1",
"mocha": "^5.0.5",
- "parallelshell": "^3.0.2",
+ "parallelshell": "3.0.1",
"react-addons-test-utils": "^15.4.0",
"require-json": "0.0.1",
"rimraf": "^2.4.3",
From 562cc32860013f773da771b084266a2d7c8a9a79 Mon Sep 17 00:00:00 2001
From: Milena Brum
Date: Tue, 4 Sep 2018 18:57:56 +0000
Subject: [PATCH 271/343] Translated using Weblate (Spanish)
Currently translated at 100.0% (1249 of 1249 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/es/
---
src/i18n/strings/es.json | 68 ++++++++++++++++++++--------------------
1 file changed, 34 insertions(+), 34 deletions(-)
diff --git a/src/i18n/strings/es.json b/src/i18n/strings/es.json
index a80390a54f..26672d6053 100644
--- a/src/i18n/strings/es.json
+++ b/src/i18n/strings/es.json
@@ -1,10 +1,10 @@
{
"A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "Un mensaje de texto ha sido enviado a +%(msisdn)s. Por favor ingrese el código de verificación que lo contiene",
- "%(targetName)s accepted an invitation.": "%(targetName)s ha aceptado una invitación.",
- "%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s ha aceptado la invitación para %(displayName)s.",
+ "%(targetName)s accepted an invitation.": "%(targetName)s aceptó una invitación.",
+ "%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s aceptó la invitación para %(displayName)s.",
"Account": "Cuenta",
"Access Token:": "Token de Acceso:",
- "Add email address": "Agregar correo eléctronico",
+ "Add email address": "Añadir dirección de correo electrónico",
"Add phone number": "Agregar número telefónico",
"Admin": "Administrador",
"Advanced": "Avanzado",
@@ -16,7 +16,7 @@
"and %(count)s others...|one": "y otro...",
"%(names)s and %(lastPerson)s are typing": "%(names)s y %(lastPerson)s están escribiendo",
"A new password must be entered.": "Una nueva clave debe ser ingresada.",
- "%(senderName)s answered the call.": "%(senderName)s atendió la llamada.",
+ "%(senderName)s answered the call.": "%(senderName)s contestó la llamada.",
"An error has occurred.": "Un error ha ocurrido.",
"Anyone who knows the room's link, apart from guests": "Cualquiera que sepa el enlace de la sala, salvo invitados",
"Anyone who knows the room's link, including guests": "Cualquiera que sepa del enlace de la sala, incluyendo los invitados",
@@ -24,7 +24,7 @@
"Are you sure you want to reject the invitation?": "¿Estás seguro que quieres rechazar la invitación?",
"Attachment": "Adjunto",
"Autoplay GIFs and videos": "Reproducir automáticamente GIFs y videos",
- "%(senderName)s banned %(targetName)s.": "%(senderName)s ha bloqueado a %(targetName)s.",
+ "%(senderName)s banned %(targetName)s.": "%(senderName)s vetó a %(targetName)s.",
"Ban": "Bloquear",
"Banned users": "Usuarios bloqueados",
"Bans user with given id": "Bloquear usuario por ID",
@@ -36,8 +36,8 @@
"Change Password": "Cambiar clave",
"%(senderName)s changed their profile picture.": "%(senderName)s ha cambiado su foto de perfil.",
"%(senderName)s changed the power level of %(powerLevelDiffText)s.": "%(senderName)s ha cambiado el nivel de acceso de %(powerLevelDiffText)s.",
- "%(senderDisplayName)s changed the room name to %(roomName)s.": "%(senderDisplayName)s ha cambiado el nombre de la sala a %(roomName)s.",
- "%(senderDisplayName)s changed the topic to \"%(topic)s\".": "%(senderDisplayName)s ha cambiado el tema de la sala a \"%(topic)s\".",
+ "%(senderDisplayName)s changed the room name to %(roomName)s.": "%(senderDisplayName)s cambió el nombre de la sala a %(roomName)s.",
+ "%(senderDisplayName)s changed the topic to \"%(topic)s\".": "%(senderDisplayName)s cambió el tema a \"%(topic)s\".",
"Changes to who can read history will only apply to future messages in this room": "Cambios para quien pueda leer el historial solo serán aplicados a futuros mensajes en la sala",
"Changes your display nickname": "Cambia la visualización de tu apodo",
"Changing password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "El cambio de contraseña restablecerá actualmente todas las claves de cifrado de extremo a extremo de todos los dispositivos, haciendo que el historial de chat cifrado sea ilegible, a menos que primero exporte las claves de la habitación y vuelva a importarlas después. En el futuro esto será mejorado.",
@@ -91,7 +91,7 @@
"Enable encryption": "Habilitar encriptación",
"Encrypted messages will not be visible on clients that do not yet implement encryption": "Los mensajes encriptados no serán visibles en navegadores que no han implementado aun la encriptación",
"Encrypted room": "Sala encriptada",
- "%(senderName)s ended the call.": "%(senderName)s terminó la llamada.",
+ "%(senderName)s ended the call.": "%(senderName)s finalizó la llamada.",
"End-to-end encryption information": "Información de encriptación de extremo a extremo",
"End-to-end encryption is in beta and may not be reliable": "El cifrado de extremo a extremo está en pruebas, podría no ser fiable",
"Enter Code": "Ingresar Código",
@@ -146,7 +146,7 @@
"Invalid address format": "Formato de dirección inválida",
"Invalid Email Address": "Dirección de correo electrónico inválida",
"Invalid file%(extra)s": "Archivo inválido %(extra)s",
- "%(senderName)s invited %(targetName)s.": "%(senderName)s ha invitado a %(targetName)s.",
+ "%(senderName)s invited %(targetName)s.": "%(senderName)s invitó a %(targetName)s.",
"Invite new room members": "Invitar nuevos miembros a la sala",
"Invites": "Invitar",
"Invites user with given id to current room": "Invitar a usuario con ID dado a esta sala",
@@ -155,14 +155,14 @@
"%(displayName)s is typing": "%(displayName)s está escribiendo",
"Sign in with": "Quiero iniciar sesión con",
"Join Room": "Unirte a la sala",
- "%(targetName)s joined the room.": "%(targetName)s se ha unido a la sala.",
+ "%(targetName)s joined the room.": "%(targetName)s se unió a la sala.",
"Joins room with given alias": "Unirse a la sala con el alias dado",
- "%(senderName)s kicked %(targetName)s.": "%(senderName)s ha expulsado a %(targetName)s.",
+ "%(senderName)s kicked %(targetName)s.": "%(senderName)s expulsó a %(targetName)s.",
"Kick": "Expulsar",
"Kicks user with given id": "Expulsar usuario con ID dado",
"Labs": "Laboratorios",
"Leave room": "Dejar sala",
- "%(targetName)s left the room.": "%(targetName)s ha dejado la sala.",
+ "%(targetName)s left the room.": "%(targetName)s salió de la sala.",
"Local addresses for this room:": "Direcciones locales para esta sala:",
"Logged in as:": "Sesión iniciada como:",
"Logout": "Cerrar Sesión",
@@ -191,7 +191,7 @@
"Device ID:": "ID del dispositivo:",
"device id: ": "id del dispositvo: ",
"Disable Notifications": "Desactivar notificaciones",
- "Email address (optional)": "Dirección e-mail (opcional)",
+ "Email address (optional)": "Dirección de correo electrónico (opcional)",
"Enable Notifications": "Activar notificaciones",
"Encrypted by a verified device": "Cifrado por un dispositivo verificado",
"Encrypted by an unverified device": "Cifrado por un dispositivo sin verificar",
@@ -212,11 +212,11 @@
"Jump to first unread message.": "Ir al primer mensaje sin leer.",
"Last seen": "Visto por última vez",
"Level:": "Nivel:",
- "%(senderName)s made future room history visible to all room members, from the point they are invited.": "%(senderName)s ha configurado el historial de la sala visible para Todos los miembros de la sala, desde el momento en que son invitados.",
- "%(senderName)s made future room history visible to all room members, from the point they joined.": "%(senderName)s ha configurado el historial de la sala visible para Todos los miembros de la sala, desde el momento en que se han unido.",
- "%(senderName)s made future room history visible to all room members.": "%(senderName)s ha configurado el historial de la sala visible para Todos los miembros de la sala.",
- "%(senderName)s made future room history visible to anyone.": "%(senderName)s ha configurado el historial de la sala visible para nadie.",
- "%(senderName)s made future room history visible to unknown (%(visibility)s).": "%(senderName)s ha configurado el historial de la sala visible para desconocido (%(visibility)s).",
+ "%(senderName)s made future room history visible to all room members, from the point they are invited.": "%(senderName)s hizo visible el historial futuro de la sala para todos los miembros de la sala, desde el momento en que son invitados.",
+ "%(senderName)s made future room history visible to all room members, from the point they joined.": "%(senderName)s hizo visible el historial futuro de la sala para todos los miembros de la sala, desde el momento en que se unieron.",
+ "%(senderName)s made future room history visible to all room members.": "%(senderName)s hizo visible el historial futuro de la sala para todos los miembros de la sala.",
+ "%(senderName)s made future room history visible to anyone.": "%(senderName)s hizo visible el historial futuro de la sala para cualquier persona.",
+ "%(senderName)s made future room history visible to unknown (%(visibility)s).": "%(senderName)s hizo visible el historial futuro de la sala para desconocido (%(visibility)s).",
"Something went wrong!": "¡Algo ha fallado!",
"Please select the destination room for this message": "Por favor, seleccione la sala destino para este mensaje",
"Create new room": "Crear nueva sala",
@@ -271,7 +271,7 @@
"Server unavailable, overloaded, or something else went wrong.": "Servidor saturado, desconectado, o alguien ha roto algo.",
"Session ID": "ID de sesión",
"%(senderName)s set a profile picture.": "%(senderName)s puso una foto de perfil.",
- "%(senderName)s set their display name to %(displayName)s.": "%(senderName)s cambió su nombre a %(displayName)s.",
+ "%(senderName)s set their display name to %(displayName)s.": "%(senderName)s estableció %(displayName)s como su nombre público.",
"Settings": "Configuración",
"Show panel": "Mostrar panel",
"Show Text Formatting Toolbar": "Mostrar la barra de formato de texto",
@@ -297,7 +297,7 @@
"Are you sure you want to leave the room '%(roomName)s'?": "¿Está seguro de que desea abandonar la sala '%(roomName)s'?",
"Are you sure you want to upload the following files?": "¿Está seguro que desea enviar los siguientes archivos?",
"Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "No se puede conectar al servidor - compruebe su conexión, asegúrese de que el certificado SSL del servidor es de confiaza, y compruebe que no hay extensiones del navegador bloqueando las peticiones.",
- "%(senderDisplayName)s removed the room name.": "%(senderDisplayName)s ha quitado el nombre de la sala.",
+ "%(senderDisplayName)s removed the room name.": "%(senderDisplayName)s eliminó el nombre de la sala.",
"Device key:": "Clave del dispositivo:",
"Drop File Here": "Deje el fichero aquí",
"Guest access is disabled on this Home Server.": "El acceso de invitados está desactivado en este servidor.",
@@ -357,16 +357,16 @@
"Revoke Moderator": "Eliminar Moderador",
"Refer a friend to Riot:": "Informar a un amigo sobre Riot:",
"Register": "Registro",
- "%(targetName)s rejected the invitation.": "%(targetName)s ha rechazado la invitación.",
+ "%(targetName)s rejected the invitation.": "%(targetName)s rechazó la invitación.",
"Reject invitation": "Rechazar invitación",
"Rejoin": "Volver a unirse",
"Remote addresses for this room:": "Dirección remota de esta sala:",
"Remove Contact Information?": "¿Eliminar información del contacto?",
- "%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName)s ha suprimido su nombre para mostar (%(oldDisplayName)s).",
+ "%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName)s eliminó su nombre público (%(oldDisplayName)s).",
"%(senderName)s removed their profile picture.": "%(senderName)s ha eliminado su foto de perfil.",
"Remove": "Eliminar",
"Remove %(threePid)s?": "¿Eliminar %(threePid)s?",
- "%(senderName)s requested a VoIP conference.": "%(senderName)s ha solicitado una conferencia Voz-IP.",
+ "%(senderName)s requested a VoIP conference.": "%(senderName)s solicitó una conferencia de vozIP.",
"Resetting password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Reiniciar la contraseña también reiniciará las claves de cifrado extremo-a-extremo, haciendo ilegible el historial de las conversaciones, salvo que exporte previamente las claves de sala, y las importe posteriormente. Esto será mejorado en futuras versiones.",
"Results from DuckDuckGo": "Resultados desde DuckDuckGo",
"Return to login screen": "Volver a la pantalla de inicio de sesión",
@@ -378,7 +378,7 @@
"Server may be unavailable or overloaded": "El servidor podría estar saturado o desconectado",
"Show timestamps in 12 hour format (e.g. 2:30pm)": "Mostrar el tiempo en formato 12h (am/pm)",
"The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.": "La clave de firma que usted ha proporcionado coincide con la recibida del dispositivo %(deviceId)s de %(userId)s. Dispositivo verificado.",
- "This email address is already in use": "Dirección e-mail en uso",
+ "This email address is already in use": "Esta dirección de correo electrónico ya está en uso",
"This email address was not found": "Esta dirección de correo electrónico no se encontró",
"The email address linked to your account must be entered.": "Debe introducir el e-mail asociado a su cuenta.",
"The file '%(fileName)s' exceeds this home server's size limit for uploads": "El fichero '%(fileName)s' supera el tamaño máximo permitido en este servidor",
@@ -427,7 +427,7 @@
"Tried to load a specific point in this room's timeline, but was unable to find it.": "Se ha intentado cargar cierto punto en la cronología de esta sala, pero no se ha podido encontrarlo.",
"Turn Markdown off": "Desactivar markdown",
"Turn Markdown on": "Activar markdown",
- "%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).": "%(senderName)s ha activado el cifrado de extremo-a-extremo (algorithm %(algorithm)s).",
+ "%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).": "%(senderName)s activó el cifrado de extremo a extremo (algoritmo %(algorithm)s).",
"Unable to add email address": "No se ha podido añadir la dirección de correo electrónico",
"Unable to create widget.": "No se ha podido crear el widget.",
"Unable to remove contact information": "No se ha podido eliminar la información de contacto",
@@ -470,8 +470,8 @@
"Verified key": "Clave verificada",
"Video call": "Llamada de vídeo",
"Voice call": "Llamada de voz",
- "VoIP conference finished.": "Conferencia VoIP terminada.",
- "VoIP conference started.": "Conferencia de VoIP iniciada.",
+ "VoIP conference finished.": "conferencia de vozIP finalizada.",
+ "VoIP conference started.": "conferencia de vozIP iniciada.",
"VoIP is unsupported": "No hay soporte para VoIP",
"(could not connect media)": "(no se ha podido conectar medio)",
"(no answer)": "(sin respuesta)",
@@ -483,7 +483,7 @@
"Who can read history?": "¿Quién puede leer el historial?",
"Who would you like to add to this room?": "¿A quién quiere añadir a esta sala?",
"Who would you like to communicate with?": "¿Con quién quiere comunicarse?",
- "%(senderName)s withdrew %(targetName)s's invitation.": "%(senderName)s ha retirado la invitación de %(targetName)s.",
+ "%(senderName)s withdrew %(targetName)s's invitation.": "%(senderName)s retiró la invitación de %(targetName)s.",
"Would you like to accept or decline this invitation?": "¿Quiere aceptar o rechazar esta invitación?",
"You already have existing direct chats with this user:": "Ya tiene chats directos con este usuario:",
"You are already in a call.": "Ya está participando en una llamada.",
@@ -502,7 +502,7 @@
"Revoke widget access": "Revocar acceso del widget",
"The maximum permitted number of widgets have already been added to this room.": "La cantidad máxima de widgets permitida ha sido alcanzada en esta sala.",
"To use it, just wait for autocomplete results to load and tab through them.": "Para usar, solo espere a que carguen los resultados de auto-completar y navegue entre ellos.",
- "%(senderName)s unbanned %(targetName)s.": "%(senderName)s levanto la suspensión de %(targetName)s.",
+ "%(senderName)s unbanned %(targetName)s.": "%(senderName)s le quitó el veto a %(targetName)s.",
"unencrypted": "no cifrado",
"Unmute": "desactivar el silencio",
"Unrecognised command:": "comando no reconocido:",
@@ -773,7 +773,7 @@
"You are no longer ignoring %(userId)s": "Ya no está ignorando a %(userId)s",
"Opens the Developer Tools dialog": "Abre el diálogo de Herramientas de Desarrollador",
"Verifies a user, device, and pubkey tuple": "Verifica a un usuario, dispositivo, y tupla de clave pública",
- "%(oldDisplayName)s changed their display name to %(displayName)s.": "%(oldDisplayName)s cambió su nombre visible a %(displayName)s.",
+ "%(oldDisplayName)s changed their display name to %(displayName)s.": "%(oldDisplayName)s cambió su nombre público a %(displayName)s.",
"%(senderName)s changed the pinned messages for the room.": "%(senderName)s cambió los mensajes con chincheta en la sala.",
"%(widgetName)s widget modified by %(senderName)s": "el widget %(widgetName)s fue modificado por %(senderName)s",
"%(widgetName)s widget added by %(senderName)s": "el widget %(widgetName)s fue agregado por %(senderName)s",
@@ -805,10 +805,10 @@
"Select devices": "Seleccionar dispositivos",
"Drop file here to upload": "Soltar aquí el fichero a subir",
" (unsupported)": " (no soportado)",
- "Ongoing conference call%(supportedText)s.": "Llamada de conferencia en curso%(supportedText)s",
+ "Ongoing conference call%(supportedText)s.": "Llamada de conferencia en curso%(supportedText)s.",
"This event could not be displayed": "No se pudo mostrar este evento",
"%(senderName)s sent an image": "%(senderName)s envió una imagen",
- "%(senderName)s sent a video": "%(senderName)s envió un video",
+ "%(senderName)s sent a video": "%(senderName)s envió un vídeo",
"%(senderName)s uploaded a file": "%(senderName)s subió un fichero",
"Your key share request has been sent - please check your other devices for key share requests.": "Se envió su solicitud para compartir la clave - por favor, compruebe sus otros dispositivos para solicitudes de compartir clave.",
"Key share requests are sent to your other devices automatically. If you rejected or dismissed the key share request on your other devices, click here to request the keys for this session again.": "Las solicitudes para compartir la clave se envían a sus otros dispositivos automáticamente. Si rechazó o descartó la solicitud en sus otros dispositivos, pulse aquí para solicitar otra vez las claves durante esta sesión.",
@@ -1130,7 +1130,7 @@
"Add a User": "Agregar un usuario",
"Failed to remove a user from the summary of %(groupId)s": "Falló la eliminación de un usuario del resumen de %(groupId)s",
"The user '%(displayName)s' could not be removed from the summary.": "No se pudo eliminar al usuario '%(displayName)s' del resumen.",
- "Failed to upload image": "Falló la subida de la imagen",
+ "Failed to upload image": "No se pudo cargar la imagen",
"Failed to update community": "Falló la actualización de la comunidad",
"Unable to accept invite": "No se pudo aceptar la invitación",
"Unable to join community": "No se pudo unir a comunidad",
@@ -1142,7 +1142,7 @@
"These rooms are displayed to community members on the community page. Community members can join the rooms by clicking on them.": "Estas salas se muestran a los miembros de la comunidad en la página de la misma. Los miembros pueden unirse a las salas pulsando sobre ellas.",
"Featured Rooms:": "Salas destacadas:",
"Featured Users:": "Usuarios destacados:",
- "%(inviter)s has invited you to join this community": "%(inviter)s le ha invitado a unirse a esta comunidad",
+ "%(inviter)s has invited you to join this community": "%(inviter)s te invitó a unirte a esta comunidad",
"Join this community": "Unirse a esta comunidad",
"Leave this community": "Abandonar esta comunidad",
"You are an administrator of this community": "Usted es un administrador de esta comunidad",
From 8500a7131fc8ab92efa71b90f9859cddefaff926 Mon Sep 17 00:00:00 2001
From: Bruno Windels
Date: Wed, 5 Sep 2018 15:25:08 +0200
Subject: [PATCH 272/343] avoid unneeded lookups in memberDict
have members be an array of RoomMember instead of userId, so
we can avoid multiple lookups when sorting, rendering, ...
---
src/components/views/rooms/MemberList.js | 49 +++++++++---------------
1 file changed, 19 insertions(+), 30 deletions(-)
diff --git a/src/components/views/rooms/MemberList.js b/src/components/views/rooms/MemberList.js
index d302bee832..acf2fa36f7 100644
--- a/src/components/views/rooms/MemberList.js
+++ b/src/components/views/rooms/MemberList.js
@@ -196,12 +196,12 @@ module.exports = React.createClass({
const all_members = room.currentState.members;
- Object.keys(all_members).map(function(userId) {
+ Object.values(all_members).forEach(function(member) {
// work around a race where you might have a room member object
// before the user object exists. This may or may not cause
// https://github.com/vector-im/vector-web/issues/186
- if (all_members[userId].user === null) {
- all_members[userId].user = MatrixClientPeg.get().getUser(userId);
+ if (member.user === null) {
+ member.user = cli.getUser(member.userId);
}
// XXX: this user may have no lastPresenceTs value!
@@ -212,26 +212,20 @@ module.exports = React.createClass({
},
roomMembers: function() {
- const all_members = this.memberDict || {};
- const all_user_ids = Object.keys(all_members);
const ConferenceHandler = CallHandler.getConferenceHandler();
- all_user_ids.sort(this.memberSort);
-
- const to_display = [];
- let count = 0;
- for (let i = 0; i < all_user_ids.length; ++i) {
- const user_id = all_user_ids[i];
- const m = all_members[user_id];
-
- if (m.membership === 'join' || m.membership === 'invite') {
- if ((ConferenceHandler && !ConferenceHandler.isConferenceUser(user_id)) || !ConferenceHandler) {
- to_display.push(user_id);
- ++count;
- }
- }
- }
- return to_display;
+ const allMembersDict = this.memberDict || {};
+ const allMembers = Object.values(allMembersDict);
+ const filteredAndSortedMembers = allMembers.filter((m) => {
+ return (
+ m.membership === 'join' || m.membership === 'invite'
+ ) && (
+ !ConferenceHandler ||
+ (ConferenceHandler && !ConferenceHandler.isConferenceUser(m.userId))
+ );
+ });
+ filteredAndSortedMembers.sort(this.memberSort);
+ return filteredAndSortedMembers;
},
_createOverflowTileJoined: function(overflowCount, totalCount) {
@@ -278,14 +272,12 @@ module.exports = React.createClass({
// returns negative if a comes before b,
// returns 0 if a and b are equivalent in ordering
// returns positive if a comes after b.
- memberSort: function(userIdA, userIdB) {
+ memberSort: function(memberA, memberB) {
// order by last active, with "active now" first.
// ...and then by power
// ...and then alphabetically.
// We could tiebreak instead by "last recently spoken in this room" if we wanted to.
- const memberA = this.memberDict[userIdA];
- const memberB = this.memberDict[userIdB];
const userA = memberA.user;
const userB = memberB.user;
@@ -335,9 +327,7 @@ module.exports = React.createClass({
},
_filterMembers: function(members, membership, query) {
- return members.filter((userId) => {
- const m = this.memberDict[userId];
-
+ return members.filter((m) => {
if (query) {
query = query.toLowerCase();
const matchesName = m.name.toLowerCase().indexOf(query) !== -1;
@@ -379,10 +369,9 @@ module.exports = React.createClass({
_makeMemberTiles: function(members, membership) {
const MemberTile = sdk.getComponent("rooms.MemberTile");
- const memberList = members.map((userId) => {
- const m = this.memberDict[userId];
+ const memberList = members.map((m) => {
return (
-
+
);
});
From a042f4d0af0c0e196b557e37089f05d92eae440c Mon Sep 17 00:00:00 2001
From: David Baker
Date: Wed, 5 Sep 2018 17:07:39 +0100
Subject: [PATCH 273/343] Do full registration if HS doesn't support ILAG
ILAG only works on HSes that allow registering without an email
address, so whenever we redirect to the ILAG flow, check what
registration flows the server supports, and if it doesn't offer one
that's ILAG-compatible, prompt the user to go through the full
registration process instead.
This doesn't change all the entry points into ILAG, I'll do that
in a separate commit.
---
src/Registration.js | 96 +++++++++++++++++++++++++
src/components/structures/MatrixChat.js | 9 ++-
src/i18n/strings/en_EN.json | 8 ++-
3 files changed, 108 insertions(+), 5 deletions(-)
create mode 100644 src/Registration.js
diff --git a/src/Registration.js b/src/Registration.js
new file mode 100644
index 0000000000..b3da7acb1e
--- /dev/null
+++ b/src/Registration.js
@@ -0,0 +1,96 @@
+/*
+Copyright 2018 New Vector Ltd
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+/**
+ * Utility code for registering with a homeserver
+ * Note that this is currently *not* used by the actual
+ * registration code.
+ */
+
+import dis from './dispatcher';
+import sdk from './index';
+import MatrixClientPeg from './MatrixClientPeg';
+import Modal from './Modal';
+import { _t } from './languageHandler';
+
+/**
+ * Starts either the ILAG or full registration flow, depending
+ * on what the HS supports
+ */
+export async function startAnyRegistrationFlow(options) {
+ if (options === undefined) options = {};
+ const flows = await _getRegistrationFlows();
+ // look for an ILAG compatible flow. We define this as one
+ // which has only dummy or recaptcha flows. In practice it
+ // would support any stage InteractiveAuth supports, just not
+ // ones like email & msisdn which require the user to supply
+ // the relevant details in advance. We err on the side of
+ // caution though.
+ let hasIlagFlow = false;
+ for (const flow of flows) {
+ let flowSuitable = true;
+ for (const stage of flow.stages) {
+ if (!['m.login.dummy', 'm.login.recaptcha'].includes(stage)) {
+ flowSuitable = false;
+ break;
+ }
+ }
+ if (flowSuitable) {
+ hasIlagFlow = true;
+ break;
+ }
+ }
+ if (hasIlagFlow) {
+ dis.dispatch({
+ action: 'view_set_mxid',
+ go_home_on_cancel: options.go_home_on_cancel,
+ });
+ } else {
+ const QuestionDialog = sdk.getComponent("dialogs.QuestionDialog");
+ Modal.createTrackedDialog('Registration required', '', QuestionDialog, {
+ title: _t("Registration Required"),
+ description: _t("You need to register to do this. Would you like to register now?"),
+ button: _t("Register"),
+ onFinished: (proceed) => {
+ if (proceed) {
+ dis.dispatch({action: 'start_registration'});
+ } else if (options.go_home_on_cancel) {
+ dis.dispatch({action: 'view_home_page'});
+ }
+ }
+ });
+ }
+}
+
+async function _getRegistrationFlows() {
+ try {
+ await MatrixClientPeg.get().register(
+ null,
+ null,
+ undefined,
+ {},
+ {},
+ );
+ console.log("Register request succeeded when it should have returned 401!");
+ } catch (e) {
+ if (e.httpStatus === 401) {
+ return e.data.flows;
+ }
+ throw e;
+ }
+ throw new Error("Register request succeeded when it should have returned 401!");
+}
+
diff --git a/src/components/structures/MatrixChat.js b/src/components/structures/MatrixChat.js
index 7a13067976..002e439454 100644
--- a/src/components/structures/MatrixChat.js
+++ b/src/components/structures/MatrixChat.js
@@ -45,6 +45,7 @@ import createRoom from "../../createRoom";
import KeyRequestHandler from '../../KeyRequestHandler';
import { _t, getCurrentLanguage } from '../../languageHandler';
import SettingsStore, {SettingLevel} from "../../settings/SettingsStore";
+import { startAnyRegistrationFlow } from "../../Registration.js";
/** constants for MatrixChat.state.view */
const VIEWS = {
@@ -471,7 +472,7 @@ export default React.createClass({
action: 'do_after_sync_prepared',
deferred_action: payload,
});
- dis.dispatch({action: 'view_set_mxid'});
+ dis.dispatch({action: 'require_registration'});
return;
}
@@ -479,7 +480,11 @@ export default React.createClass({
case 'logout':
Lifecycle.logout();
break;
+ case 'require_registration':
+ startAnyRegistrationFlow(payload);
+ break;
case 'start_registration':
+ // This starts the full registration flow
this._startRegistration(payload.params || {});
break;
case 'start_login':
@@ -945,7 +950,7 @@ export default React.createClass({
});
}
dis.dispatch({
- action: 'view_set_mxid',
+ action: 'require_registration',
// If the set_mxid dialog is cancelled, view /home because if the browser
// was pointing at /user/@someone:domain?action=chat, the URL needs to be
// reset so that they can revisit /user/.. // (and trigger
diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json
index 995614225a..d06b986474 100644
--- a/src/i18n/strings/en_EN.json
+++ b/src/i18n/strings/en_EN.json
@@ -87,6 +87,8 @@
"Unable to enable Notifications": "Unable to enable Notifications",
"This email address was not found": "This email address was not found",
"Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Your email address does not appear to be associated with a Matrix ID on this Homeserver.",
+ "Registration Required": "Registration Required",
+ "You need to register to do this. Would you like to register now?": "You need to register to do this. Would you like to register now?",
"Default": "Default",
"Restricted": "Restricted",
"Moderator": "Moderator",
@@ -146,7 +148,6 @@
"The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.": "The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.",
"Displays action": "Displays action",
"Forces the current outbound group session in an encrypted room to be discarded": "Forces the current outbound group session in an encrypted room to be discarded",
- "Error Discarding Session": "Error Discarding Session",
"Unrecognised command:": "Unrecognised command:",
"Reason": "Reason",
"%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s accepted the invitation for %(displayName)s.",
@@ -398,8 +399,6 @@
"At this time it is not possible to reply with a file so this will be sent without being a reply.": "At this time it is not possible to reply with a file so this will be sent without being a reply.",
"Upload Files": "Upload Files",
"Are you sure you want to upload the following files?": "Are you sure you want to upload the following files?",
- "This room has been replaced and is no longer active.": "This room has been replaced and is no longer active.",
- "The conversation continues here.": "The conversation continues here.",
"Encrypted room": "Encrypted room",
"Unencrypted room": "Unencrypted room",
"Hangup": "Hangup",
@@ -411,6 +410,8 @@
"Send a reply (unencrypted)…": "Send a reply (unencrypted)…",
"Send an encrypted message…": "Send an encrypted message…",
"Send a message (unencrypted)…": "Send a message (unencrypted)…",
+ "This room has been replaced and is no longer active.": "This room has been replaced and is no longer active.",
+ "The conversation continues here.": "The conversation continues here.",
"You do not have permission to post to this room": "You do not have permission to post to this room",
"Turn Markdown on": "Turn Markdown on",
"Turn Markdown off": "Turn Markdown off",
@@ -1201,6 +1202,7 @@
"Failed to fetch avatar URL": "Failed to fetch avatar URL",
"Set a display name:": "Set a display name:",
"Upload an avatar:": "Upload an avatar:",
+ "Unable to query for supported registration methods": "Unable to query for supported registration methods",
"This server does not support authentication with a phone number.": "This server does not support authentication with a phone number.",
"Missing password.": "Missing password.",
"Passwords don't match.": "Passwords don't match.",
From 34d27954cfd6049c993431bcf0673f1f3ba600d1 Mon Sep 17 00:00:00 2001
From: David Baker
Date: Wed, 5 Sep 2018 18:03:48 +0100
Subject: [PATCH 274/343] Revert "Don't rely on room members to query power
levels"
---
src/components/views/rooms/MessageComposer.js | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/components/views/rooms/MessageComposer.js b/src/components/views/rooms/MessageComposer.js
index ad4a1dfafe..dacd433e3e 100644
--- a/src/components/views/rooms/MessageComposer.js
+++ b/src/components/views/rooms/MessageComposer.js
@@ -309,8 +309,8 @@ export default class MessageComposer extends React.Component {
;
}
- const canSendMessages = !this.state.tombstone &&
- this.props.room.maySendMessage();
+ const canSendMessages = !this.state.tombstone && this.props.room.currentState.maySendMessage(
+ MatrixClientPeg.get().credentials.userId);
if (canSendMessages) {
// This also currently includes the call buttons. Really we should
From 27fa21e403a2a60477ae1ad073c27280246efd05 Mon Sep 17 00:00:00 2001
From: David Baker
Date: Wed, 5 Sep 2018 18:08:49 +0100
Subject: [PATCH 275/343] Replace view_set_mxid with require_registration
To put all the other flows through the to-ilag-or-not-to-ilag flow
---
src/components/structures/GroupView.js | 4 ++--
src/components/structures/MatrixChat.js | 2 +-
src/components/structures/RightPanel.js | 2 +-
src/components/structures/RoomDirectory.js | 2 +-
src/components/structures/RoomView.js | 4 ++--
src/components/views/room_settings/ColorSettings.js | 2 +-
src/components/views/rooms/MemberInfo.js | 2 +-
src/components/views/rooms/MessageComposer.js | 2 +-
src/createRoom.js | 2 +-
9 files changed, 11 insertions(+), 11 deletions(-)
diff --git a/src/components/structures/GroupView.js b/src/components/structures/GroupView.js
index 9498c2aa2a..d104019a01 100644
--- a/src/components/structures/GroupView.js
+++ b/src/components/structures/GroupView.js
@@ -480,7 +480,7 @@ export default React.createClass({
group_id: groupId,
},
});
- dis.dispatch({action: 'view_set_mxid'});
+ dis.dispatch({action: 'require_registration'});
willDoOnboarding = true;
}
this.setState({
@@ -724,7 +724,7 @@ export default React.createClass({
_onJoinClick: async function() {
if (this._matrixClient.isGuest()) {
- dis.dispatch({action: 'view_set_mxid'});
+ dis.dispatch({action: 'require_registration'});
return;
}
diff --git a/src/components/structures/MatrixChat.js b/src/components/structures/MatrixChat.js
index 002e439454..333e200e44 100644
--- a/src/components/structures/MatrixChat.js
+++ b/src/components/structures/MatrixChat.js
@@ -1428,7 +1428,7 @@ export default React.createClass({
} else if (screen == 'start') {
this.showScreen('home');
dis.dispatch({
- action: 'view_set_mxid',
+ action: 'require_registration',
});
} else if (screen == 'directory') {
dis.dispatch({
diff --git a/src/components/structures/RightPanel.js b/src/components/structures/RightPanel.js
index bd4ed722cb..47b3df65cb 100644
--- a/src/components/structures/RightPanel.js
+++ b/src/components/structures/RightPanel.js
@@ -160,7 +160,7 @@ module.exports = React.createClass({
onInviteButtonClick: function() {
if (this.context.matrixClient.isGuest()) {
- dis.dispatch({action: 'view_set_mxid'});
+ dis.dispatch({action: 'require_registration'});
return;
}
diff --git a/src/components/structures/RoomDirectory.js b/src/components/structures/RoomDirectory.js
index 76360383d6..f417932fd0 100644
--- a/src/components/structures/RoomDirectory.js
+++ b/src/components/structures/RoomDirectory.js
@@ -354,7 +354,7 @@ module.exports = React.createClass({
// to the directory.
if (MatrixClientPeg.get().isGuest()) {
if (!room.world_readable && !room.guest_can_join) {
- dis.dispatch({action: 'view_set_mxid'});
+ dis.dispatch({action: 'require_registration'});
return;
}
}
diff --git a/src/components/structures/RoomView.js b/src/components/structures/RoomView.js
index ca06243ed1..54f730de5d 100644
--- a/src/components/structures/RoomView.js
+++ b/src/components/structures/RoomView.js
@@ -915,7 +915,7 @@ module.exports = React.createClass({
dis.dispatch({action: 'focus_composer'});
if (MatrixClientPeg.get().isGuest()) {
- dis.dispatch({action: 'view_set_mxid'});
+ dis.dispatch({action: 'require_registration'});
return;
}
@@ -946,7 +946,7 @@ module.exports = React.createClass({
injectSticker: function(url, info, text) {
if (MatrixClientPeg.get().isGuest()) {
- dis.dispatch({action: 'view_set_mxid'});
+ dis.dispatch({action: 'require_registration'});
return;
}
diff --git a/src/components/views/room_settings/ColorSettings.js b/src/components/views/room_settings/ColorSettings.js
index e82d3ffb0a..30621f9c15 100644
--- a/src/components/views/room_settings/ColorSettings.js
+++ b/src/components/views/room_settings/ColorSettings.js
@@ -90,7 +90,7 @@ module.exports = React.createClass({
secondary_color: this.state.secondary_color,
}).catch(function(err) {
if (err.errcode === 'M_GUEST_ACCESS_FORBIDDEN') {
- dis.dispatch({action: 'view_set_mxid'});
+ dis.dispatch({action: 'require_registration'});
}
});
}
diff --git a/src/components/views/rooms/MemberInfo.js b/src/components/views/rooms/MemberInfo.js
index c635f09e2c..e6e6350083 100644
--- a/src/components/views/rooms/MemberInfo.js
+++ b/src/components/views/rooms/MemberInfo.js
@@ -429,7 +429,7 @@ module.exports = withMatrixClient(React.createClass({
console.log("Mod toggle success");
}, function(err) {
if (err.errcode === 'M_GUEST_ACCESS_FORBIDDEN') {
- dis.dispatch({action: 'view_set_mxid'});
+ dis.dispatch({action: 'require_registration'});
} else {
console.error("Toggle moderator error:" + err);
Modal.createTrackedDialog('Failed to toggle moderator status', '', ErrorDialog, {
diff --git a/src/components/views/rooms/MessageComposer.js b/src/components/views/rooms/MessageComposer.js
index dacd433e3e..642c939f83 100644
--- a/src/components/views/rooms/MessageComposer.js
+++ b/src/components/views/rooms/MessageComposer.js
@@ -131,7 +131,7 @@ export default class MessageComposer extends React.Component {
onUploadClick(ev) {
if (MatrixClientPeg.get().isGuest()) {
- dis.dispatch({action: 'view_set_mxid'});
+ dis.dispatch({action: 'require_registration'});
return;
}
diff --git a/src/createRoom.js b/src/createRoom.js
index a767d09288..8b4220fc85 100644
--- a/src/createRoom.js
+++ b/src/createRoom.js
@@ -42,7 +42,7 @@ function createRoom(opts) {
const client = MatrixClientPeg.get();
if (client.isGuest()) {
- dis.dispatch({action: 'view_set_mxid'});
+ dis.dispatch({action: 'require_registration'});
return Promise.resolve(null);
}
From c132b5b9fce1d39be28cfa181ef1254199173ee2 Mon Sep 17 00:00:00 2001
From: Milena Brum
Date: Wed, 5 Sep 2018 17:07:35 +0000
Subject: [PATCH 276/343] Translated using Weblate (Spanish)
Currently translated at 100.0% (1249 of 1249 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/es/
---
src/i18n/strings/es.json | 64 ++++++++++++++++++++--------------------
1 file changed, 32 insertions(+), 32 deletions(-)
diff --git a/src/i18n/strings/es.json b/src/i18n/strings/es.json
index 26672d6053..98c0574eb4 100644
--- a/src/i18n/strings/es.json
+++ b/src/i18n/strings/es.json
@@ -42,8 +42,8 @@
"Changes your display nickname": "Cambia la visualización de tu apodo",
"Changing password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "El cambio de contraseña restablecerá actualmente todas las claves de cifrado de extremo a extremo de todos los dispositivos, haciendo que el historial de chat cifrado sea ilegible, a menos que primero exporte las claves de la habitación y vuelva a importarlas después. En el futuro esto será mejorado.",
"Claimed Ed25519 fingerprint key": "Clave Ed25519 es necesaria",
- "Clear Cache and Reload": "Borrar caché y recargar",
- "Clear Cache": "Borrar caché",
+ "Clear Cache and Reload": "Borrar Caché y Recargar",
+ "Clear Cache": "Borrar Caché",
"Click here to fix": "Haz clic aquí para arreglar",
"Click to mute audio": "Haz clic para silenciar audio",
"Click to mute video": "Haz clic para silenciar video",
@@ -144,7 +144,7 @@
"Interface Language": "Idioma de la interfaz",
"Invalid alias format": "Formato de alias inválido",
"Invalid address format": "Formato de dirección inválida",
- "Invalid Email Address": "Dirección de correo electrónico inválida",
+ "Invalid Email Address": "Dirección de Correo Electrónico Inválida",
"Invalid file%(extra)s": "Archivo inválido %(extra)s",
"%(senderName)s invited %(targetName)s.": "%(senderName)s invitó a %(targetName)s.",
"Invite new room members": "Invitar nuevos miembros a la sala",
@@ -161,7 +161,7 @@
"Kick": "Expulsar",
"Kicks user with given id": "Expulsar usuario con ID dado",
"Labs": "Laboratorios",
- "Leave room": "Dejar sala",
+ "Leave room": "Salir de la sala",
"%(targetName)s left the room.": "%(targetName)s salió de la sala.",
"Local addresses for this room:": "Direcciones locales para esta sala:",
"Logged in as:": "Sesión iniciada como:",
@@ -206,7 +206,7 @@
"Import": "Importar",
"Incoming call from %(name)s": "Llamada de %(name)s",
"Incoming video call from %(name)s": "Video-llamada de %(name)s",
- "Incoming voice call from %(name)s": "Llamada telefónica de %(name)s",
+ "Incoming voice call from %(name)s": "Llamada de voz entrante de %(name)s",
"Incorrect username and/or password.": "Usuario o contraseña incorrectos.",
"Invited": "Invitado",
"Jump to first unread message.": "Ir al primer mensaje sin leer.",
@@ -258,9 +258,9 @@
"Search": "Búsqueda",
"Search failed": "Falló la búsqueda",
"Seen by %(userName)s at %(dateTime)s": "Visto por %(userName)s el %(dateTime)s",
- "Send anyway": "Enviar igualmente",
- "Sender device information": "Información del dispositivo del remitente",
- "Send Invites": "Enviar invitaciones",
+ "Send anyway": "Enviar de todos modos",
+ "Sender device information": "Información del dispositivo emisor",
+ "Send Invites": "Enviar Invitaciones",
"Send Reset Email": "Enviar e-mail de reinicio",
"%(senderDisplayName)s sent an image.": "%(senderDisplayName)s envió una imagen.",
"%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "%(senderName)s invitó a %(targetDisplayName)s a unirse a la sala.",
@@ -272,7 +272,7 @@
"Session ID": "ID de sesión",
"%(senderName)s set a profile picture.": "%(senderName)s puso una foto de perfil.",
"%(senderName)s set their display name to %(displayName)s.": "%(senderName)s estableció %(displayName)s como su nombre público.",
- "Settings": "Configuración",
+ "Settings": "Ajustes",
"Show panel": "Mostrar panel",
"Show Text Formatting Toolbar": "Mostrar la barra de formato de texto",
"Signed Out": "Desconectado",
@@ -301,7 +301,7 @@
"Device key:": "Clave del dispositivo:",
"Drop File Here": "Deje el fichero aquí",
"Guest access is disabled on this Home Server.": "El acceso de invitados está desactivado en este servidor.",
- "Join as voice or video.": "Conecte con voz o vídeo.",
+ "Join as voice or video.": "Unirse con voz o vídeo.",
"Manage Integrations": "Gestionar integraciones",
"Markdown is disabled": "Markdown está desactivado",
"Markdown is enabled": "Markdown está activado",
@@ -310,7 +310,7 @@
"Missing room_id in request": "Falta el ID de sala en la petición",
"Missing user_id in request": "Falta el ID de usuario en la petición",
"Mobile phone number": "Número de teléfono móvil",
- "Mobile phone number (optional)": "Número de teléfono móvil (opcional)",
+ "Mobile phone number (optional)": "Número telefónico móvil (opcional)",
"Moderator": "Moderador",
"Mute": "Silenciar",
"%(serverName)s Matrix ID": "%(serverName)s ID de Matrix",
@@ -428,10 +428,10 @@
"Turn Markdown off": "Desactivar markdown",
"Turn Markdown on": "Activar markdown",
"%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).": "%(senderName)s activó el cifrado de extremo a extremo (algoritmo %(algorithm)s).",
- "Unable to add email address": "No se ha podido añadir la dirección de correo electrónico",
+ "Unable to add email address": "No es posible añadir la dirección de correo electrónico",
"Unable to create widget.": "No se ha podido crear el widget.",
"Unable to remove contact information": "No se ha podido eliminar la información de contacto",
- "Unable to verify email address.": "No se ha podido verificar la dirección de correo electrónico.",
+ "Unable to verify email address.": "No es posible verificar la dirección de correo electrónico.",
"Unban": "Revocar bloqueo",
"Unbans user with given id": "Revoca el bloqueo del usuario con la identificación dada",
"Unable to ascertain that the address this invite was sent to matches one associated with your account.": "No se ha podido asegurar que la dirección a la que se envió esta invitación, coincide con una asociada a su cuenta.",
@@ -620,7 +620,7 @@
"Messages containing my display name": "Mensajes que contienen mi nombre",
"Messages in one-to-one chats": "Mensajes en chats uno a uno",
"Unavailable": "No disponible",
- "View Decrypted Source": "Ver fuente descifrada",
+ "View Decrypted Source": "Ver Fuente Descifrada",
"Failed to update keywords": "Error al actualizar las palabras clave",
"Notes:": "Notas:",
"remove %(name)s from the directory.": "retirar %(name)s del directorio.",
@@ -696,7 +696,7 @@
"All Rooms": "Todas las salas",
"You cannot delete this message. (%(code)s)": "No puedes eliminar este mensaje. (%(code)s)",
"Thursday": "Jueves",
- "Forward Message": "Reenviar mensaje",
+ "Forward Message": "Reenviar Mensaje",
"Logs sent": "Registros enviados",
"Back": "Atrás",
"Reply": "Responder",
@@ -729,7 +729,7 @@
"View Community": "Ver la comunidad",
"%(count)s Members|one": "%(count)s miembro",
"Developer Tools": "Herramientas de Desarrollo",
- "View Source": "Ver fuente",
+ "View Source": "Ver Fuente",
"Event Content": "Contenido del Evento",
"Unable to fetch notification target list": "No se puede obtener la lista de objetivos de notificación",
"Quote": "Citar",
@@ -800,8 +800,8 @@
"Enable URL previews by default for participants in this room": "Activar vista previa de URL por defecto para los participantes en esta sala",
"Enable widget screenshots on supported widgets": "Activar capturas de pantalla de widget en los widgets soportados",
"Show empty room list headings": "Mostrar encabezados de listas de sala vacíos",
- "Delete %(count)s devices|other": "Borrar %(count)s dispositivos",
- "Delete %(count)s devices|one": "Borrar dispositivo",
+ "Delete %(count)s devices|other": "Eliminar %(count)s dispositivos",
+ "Delete %(count)s devices|one": "Eliminar dispositivo",
"Select devices": "Seleccionar dispositivos",
"Drop file here to upload": "Soltar aquí el fichero a subir",
" (unsupported)": " (no soportado)",
@@ -834,7 +834,7 @@
"Make Moderator": "Convertir en Moderador",
"bold": "negrita",
"italic": "cursiva",
- "deleted": "borrado",
+ "deleted": "eliminado",
"underlined": "subrayado",
"inline-code": "código en línea",
"block-quote": "cita extensa",
@@ -872,7 +872,7 @@
"Drop here to tag direct chat": "Soltar aquí para etiquetar la conversación",
"Drop here to restore": "Soltar aquí para restaurar",
"Community Invites": "Invitaciones a comunidades",
- "You have no historical rooms": "No tiene salas en su historial",
+ "You have no historical rooms": "No tienes salas históricas",
"You have been kicked from this room by %(userName)s.": "Ha sido echado de esta sala por %(userName)s.",
"You have been banned from this room by %(userName)s.": "Ha sido proscrito de esta sala por %(userName)s.",
"You are trying to access a room.": "Está intentando acceder a una sala.",
@@ -976,7 +976,7 @@
"Yes, I want to help!": "¡Sí, quiero ayudar!",
"Unknown Address": "Dirección desconocida",
"Warning: This widget might use cookies.": "Advertencia: Este widget puede usar cookies.",
- "Delete Widget": "Borrar widget",
+ "Delete Widget": "Eliminar Componente",
"Deleting a widget removes it for all users in this room. Are you sure you want to delete this widget?": "Al borrar un widget se elimina para todos usuarios de la sala. ¿Está seguro?",
"Failed to remove widget": "Falló la eliminación del widget",
"An error ocurred whilst trying to remove the widget from the room": "Ocurrió un error mientras se intentaba eliminar el widget de la sala",
@@ -997,7 +997,7 @@
"%(severalUsers)sleft %(count)s times|other": "%(severalUsers)s se fueron %(count)s veces",
"%(severalUsers)sleft %(count)s times|one": "%(severalUsers)s se fueron",
"%(oneUser)sleft %(count)s times|other": "%(oneUser)s se fue %(count)s veces",
- "%(oneUser)sleft %(count)s times|one": "%(oneUser)s se fue",
+ "%(oneUser)sleft %(count)s times|one": "%(oneUser)s salió",
"%(severalUsers)sjoined and left %(count)s times|other": "%(severalUsers)s se unieron y fueron %(count)s veces",
"%(severalUsers)sjoined and left %(count)s times|one": "%(severalUsers)s se unieron y fueron",
"%(oneUser)sjoined and left %(count)s times|other": "%(oneUser)s se unió y fue %(count)s veces",
@@ -1070,7 +1070,7 @@
"Create": "Crear",
"Advanced options": "Opciones avanzadas",
"Block users on other matrix homeservers from joining this room": "Impedir que usuarios de otros homeservers se unan a esta sala",
- "This setting cannot be changed later!": "Este ajuste no se puede cambiar posteriormente",
+ "This setting cannot be changed later!": "¡Este ajuste no se puede cambiar más tarde!",
"Failed to indicate account erasure": "Falló la indicación de eliminado de la cuenta",
"This will make your account permanently unusable. You will not be able to log in, and no one will be able to re-register the same user ID. This will cause your account to leave all rooms it is participating in, and it will remove your account details from your identity server. This action is irreversible.": "Una vez realizada esta acción, la cuenta no será posible utilizarla de forma permanente. No podrá ingresar con ella, y nadie será capaz de volver a registrar el mismo ID de usuario. También abandonará todas las salas en las que participaba,y eliminará los detalles del servidor de identidad. Esta acción es irreversible.",
"Deactivating your account does not by default cause us to forget messages you have sent. If you would like us to forget your messages, please tick the box below.": "La desactivación de su cuenta no supone por defecto que los mensajes enviados se olviden. Si así lo desea, por favor, active la caja de selección inferior.",
@@ -1085,7 +1085,7 @@
"Loading device info...": "Cargando información del dispositivo...",
"Encryption key request": "Solicitud de clave de cifrado",
"Log out and remove encryption keys?": "¿Salir y eliminar claves de cifrado?",
- "Clear Storage and Sign Out": "Limpiar Almacenamiento y Desconectar",
+ "Clear Storage and Sign Out": "Borrar Almacenamiento y Cerrar Sesión",
"Send Logs": "Enviar Registros",
"Refresh": "Refrescar",
"We encountered an error trying to restore your previous session.": "Encontramos un error al intentar restaurar su sesión anterior.",
@@ -1134,17 +1134,17 @@
"Failed to update community": "Falló la actualización de la comunidad",
"Unable to accept invite": "No se pudo aceptar la invitación",
"Unable to join community": "No se pudo unir a comunidad",
- "Leave Community": "Abandonar Comunidad",
- "Leave %(groupName)s?": "¿Abandonar %(groupName)s?",
+ "Leave Community": "Salir de la Comunidad",
+ "Leave %(groupName)s?": "¿Salir de %(groupName)s?",
"Unable to leave community": "No se pudo abandonar la comunidad",
- "Community Settings": "Configuración de la comunidad",
+ "Community Settings": "Ajustes de Comunidad",
"Changes made to your community name and avatar might not be seen by other users for up to 30 minutes.": "Las modificaciones realizadas al nombre y avatar de la comunidad pueden no mostrarse a otros usuarios hasta dentro de 30 minutos.",
"These rooms are displayed to community members on the community page. Community members can join the rooms by clicking on them.": "Estas salas se muestran a los miembros de la comunidad en la página de la misma. Los miembros pueden unirse a las salas pulsando sobre ellas.",
"Featured Rooms:": "Salas destacadas:",
"Featured Users:": "Usuarios destacados:",
"%(inviter)s has invited you to join this community": "%(inviter)s te invitó a unirte a esta comunidad",
"Join this community": "Unirse a esta comunidad",
- "Leave this community": "Abandonar esta comunidad",
+ "Leave this community": "Salir de esta comunidad",
"You are an administrator of this community": "Usted es un administrador de esta comunidad",
"You are a member of this community": "Usted es un miembro de esta comunidad",
"Who can join this community?": "¿Quién puede unirse a esta comunidad?",
@@ -1169,18 +1169,18 @@
"Error whilst fetching joined communities": "Se produjo un error al recuperar las comunidades suscritas",
"Create a new community": "Crear una comunidad nueva",
"Create a community to group together users and rooms! Build a custom homepage to mark out your space in the Matrix universe.": "Crear una comunidad para agrupar usuarios y salas. Construye una página de inicio personalizada para destacarla.",
- "Show devices, send anyway or cancel.": "Mostrar dispositivos, enviar de todas formas o cancelar.",
+ "Show devices, send anyway or cancel.": "Mostrar dispositivos, enviar de todos modos o cancelar.",
"You can't send any messages until you review and agree to our terms and conditions.": "No puede enviar ningún mensaje hasta que revise y esté de acuerdo con nuestros términos y condiciones.",
"%(count)s of your messages have not been sent.|one": "No se envió su mensaje.",
"%(count)s Resend all or cancel all now. You can also select individual messages to resend or cancel.|other": "Reenviar todo o cancelar todo ahora. También puede seleccionar mensajes sueltos o reenviar o cancelar.",
- "%(count)s Resend all or cancel all now. You can also select individual messages to resend or cancel.|one": "Reemviar mensaje o cancelar mensaje ahora.",
+ "%(count)s Resend all or cancel all now. You can also select individual messages to resend or cancel.|one": "Reenviar mensaje o cancelar mensaje ahora.",
"Connectivity to the server has been lost.": "Se perdió la conexión con el servidor.",
"Sent messages will be stored until your connection has returned.": "Los mensajes enviados se almacenarán hasta que vuelva su conexión.",
"Active call": "Llamada activa",
"There's no one else here! Would you like to invite others or stop warning about the empty room?": "¡No hay nadie aquí! ¿Le gustaría invitar a otros o dejar de avisar de la sala vacía?",
"Room": "Sala",
- "Clear filter": "Limpiar filtro",
- "Light theme": "Tema ligero",
+ "Clear filter": "Borrar filtro",
+ "Light theme": "Tema claro",
"Dark theme": "Tema oscuro",
"Status.im theme": "Tema Status.im",
"Autocomplete Delay (ms):": "Retraso del completado automático (en ms):",
From eced58701dda46a1f6e24c1cfd02151645f8e543 Mon Sep 17 00:00:00 2001
From: David Baker
Date: Wed, 5 Sep 2018 20:34:03 +0100
Subject: [PATCH 277/343] Lint
---
src/Registration.js | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/src/Registration.js b/src/Registration.js
index b3da7acb1e..a24a2d87f6 100644
--- a/src/Registration.js
+++ b/src/Registration.js
@@ -29,6 +29,10 @@ import { _t } from './languageHandler';
/**
* Starts either the ILAG or full registration flow, depending
* on what the HS supports
+ *
+ * @param {object} options
+ * @param {bool} options.go_home_on_cancel If true, goes to
+ * the hame page if the user cancels the action
*/
export async function startAnyRegistrationFlow(options) {
if (options === undefined) options = {};
@@ -70,7 +74,7 @@ export async function startAnyRegistrationFlow(options) {
} else if (options.go_home_on_cancel) {
dis.dispatch({action: 'view_home_page'});
}
- }
+ },
});
}
}
From 9e64a22884521035f7ff722804eb8f5503323cda Mon Sep 17 00:00:00 2001
From: David Baker
Date: Thu, 6 Sep 2018 11:44:13 +0100
Subject: [PATCH 278/343] s/DidMount/WillMount/ in MessageComposerInput
This fixes the tests that broke with https://github.com/matrix-org/matrix-js-sdk/pull/717
This is because of https://github.com/vector-im/riot-web/blob/master/test/app-tests/joining.js#L63
which prevents the DOM nodes from actually ending up in the DOM, even though the react components
get rendered. This means that WillMount and WillUnmount are called, but not DidMount.
Using WillMount is more symmertrical anyway since the resulting teardown code must be in
WillUnmount (since there is no DidUnmount).
---
src/components/views/rooms/MessageComposerInput.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/components/views/rooms/MessageComposerInput.js b/src/components/views/rooms/MessageComposerInput.js
index 267db89e8c..d5e45386bd 100644
--- a/src/components/views/rooms/MessageComposerInput.js
+++ b/src/components/views/rooms/MessageComposerInput.js
@@ -336,7 +336,7 @@ export default class MessageComposerInput extends React.Component {
}
}
- componentDidMount() {
+ componentWillMount() {
this.dispatcherRef = dis.register(this.onAction);
this.historyManager = new ComposerHistoryManager(this.props.room.roomId, 'mx_slate_composer_history_');
}
From 4c8d2de563933faa80230b551c8ef92e81f9759d Mon Sep 17 00:00:00 2001
From: David Baker
Date: Thu, 6 Sep 2018 11:48:23 +0100
Subject: [PATCH 279/343] Revert "Revert "Don't rely on room members to query
power levels""
---
src/components/views/rooms/MessageComposer.js | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/components/views/rooms/MessageComposer.js b/src/components/views/rooms/MessageComposer.js
index dacd433e3e..ad4a1dfafe 100644
--- a/src/components/views/rooms/MessageComposer.js
+++ b/src/components/views/rooms/MessageComposer.js
@@ -309,8 +309,8 @@ export default class MessageComposer extends React.Component {
;
}
- const canSendMessages = !this.state.tombstone && this.props.room.currentState.maySendMessage(
- MatrixClientPeg.get().credentials.userId);
+ const canSendMessages = !this.state.tombstone &&
+ this.props.room.maySendMessage();
if (canSendMessages) {
// This also currently includes the call buttons. Really we should
From ee9ebf26d1c74d44587d69470b0dc5c0fadf7821 Mon Sep 17 00:00:00 2001
From: Osoitz
Date: Thu, 6 Sep 2018 12:20:26 +0000
Subject: [PATCH 280/343] Translated using Weblate (Basque)
Currently translated at 100.0% (1249 of 1249 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/eu/
---
src/i18n/strings/eu.json | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/i18n/strings/eu.json b/src/i18n/strings/eu.json
index 703602ea9f..888cf66e62 100644
--- a/src/i18n/strings/eu.json
+++ b/src/i18n/strings/eu.json
@@ -1264,5 +1264,7 @@
"Lazy loading members not supported": "Kideen karga alferrerako euskarririk ez",
"Lazy loading is not supported by your current homeserver.": "Zure hasiera zerbitzariak ez du onartzen karga alferra.",
"Legal": "Legezkoa",
- "Please contact your service administrator to continue using this service.": "Jarri kontaktuan zerbitzuaren administratzailearekin zerbitzu hau erabiltzen jarraitzeko."
+ "Please contact your service administrator to continue using this service.": "Jarri kontaktuan zerbitzuaren administratzailearekin zerbitzu hau erabiltzen jarraitzeko.",
+ "Forces the current outbound group session in an encrypted room to be discarded": "Uneko irteerako talde saioa zifratutako gela batean baztertzera behartzen du",
+ "Error Discarding Session": "Errorea saioa baztertzean"
}
From 33a24b9fb4f84c0c7ba0bb3bf39cfe39d16b9e6d Mon Sep 17 00:00:00 2001
From: Milena Brum
Date: Wed, 5 Sep 2018 20:12:01 +0000
Subject: [PATCH 281/343] Translated using Weblate (Spanish)
Currently translated at 100.0% (1249 of 1249 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/es/
---
src/i18n/strings/es.json | 136 +++++++++++++++++++--------------------
1 file changed, 68 insertions(+), 68 deletions(-)
diff --git a/src/i18n/strings/es.json b/src/i18n/strings/es.json
index 98c0574eb4..05d88264ee 100644
--- a/src/i18n/strings/es.json
+++ b/src/i18n/strings/es.json
@@ -15,7 +15,7 @@
"and %(count)s others...|other": "y %(count)s otros...",
"and %(count)s others...|one": "y otro...",
"%(names)s and %(lastPerson)s are typing": "%(names)s y %(lastPerson)s están escribiendo",
- "A new password must be entered.": "Una nueva clave debe ser ingresada.",
+ "A new password must be entered.": "Debes ingresar una nueva contraseña.",
"%(senderName)s answered the call.": "%(senderName)s contestó la llamada.",
"An error has occurred.": "Un error ha ocurrido.",
"Anyone who knows the room's link, apart from guests": "Cualquiera que sepa el enlace de la sala, salvo invitados",
@@ -33,7 +33,7 @@
"Call Timeout": "Tiempo de espera de la llamada",
"Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.": "No se puede conectar al servidor via HTTP, cuando es necesario un enlace HTTPS en la barra de direcciones de tu navegador. Ya sea usando HTTPS o habilitando los scripts inseguros.",
"Can't load user settings": "No se puede cargar las configuraciones del usuario",
- "Change Password": "Cambiar clave",
+ "Change Password": "Cambiar Contraseña",
"%(senderName)s changed their profile picture.": "%(senderName)s ha cambiado su foto de perfil.",
"%(senderName)s changed the power level of %(powerLevelDiffText)s.": "%(senderName)s ha cambiado el nivel de acceso de %(powerLevelDiffText)s.",
"%(senderDisplayName)s changed the room name to %(roomName)s.": "%(senderDisplayName)s cambió el nombre de la sala a %(roomName)s.",
@@ -56,8 +56,8 @@
"Conference calling is in development and may not be reliable.": "La llamada en conferencia está en desarrollo y puede no ser fiable.",
"Conference calls are not supported in encrypted rooms": "Las llamadas en conferencia no son soportadas en salas cifradas",
"Conference calls are not supported in this client": "Las llamadas en conferencia no están soportadas en este cliente",
- "Confirm password": "Confirmar clave",
- "Confirm your new password": "Confirma tu nueva clave",
+ "Confirm password": "Confirmar contraseña",
+ "Confirm your new password": "Confirma tu contraseña nueva",
"Continue": "Continuar",
"Could not connect to the integration server": "No se pudo conectar al servidor de integración",
"Create an account": "Crear una cuenta",
@@ -104,7 +104,7 @@
"Failed to change password. Is your password correct?": "No se pudo cambiar la contraseña. ¿Está usando la correcta?",
"Failed to change power level": "Falló al cambiar de nivel de acceso",
"Failed to forget room %(errCode)s": "Falló al olvidar la sala %(errCode)s",
- "Failed to join room": "Falló al unirse a la sala",
+ "Failed to join room": "No se pudo unir a la sala",
"Failed to kick": "Falló al expulsar",
"Failed to leave room": "Falló al dejar la sala",
"Failed to load timeline position": "Falló al cargar el historico",
@@ -120,7 +120,7 @@
"Failed to toggle moderator status": "Falló al cambiar estatus de moderador",
"Failed to unban": "Falló al desbloquear",
"Failed to upload file": "Error en el envío del fichero",
- "Failed to verify email address: make sure you clicked the link in the email": "Falló al verificar el correo electrónico: Asegúrese hacer clic en el enlace del correo",
+ "Failed to verify email address: make sure you clicked the link in the email": "No se pudo verificar la dirección de correo electrónico: asegúrate de hacer clic en el enlace del correo electrónico",
"Failure to create room": "Fallo al crear la sala",
"Favourite": "Favorito",
"Favourites": "Favoritos",
@@ -137,7 +137,7 @@
"Hide Text Formatting Toolbar": "Ocultar barra de herramientas de formato de texto",
"Historical": "Histórico",
"Homeserver is": "El servidor es",
- "Identity Server is": "La identidad del servidor es",
+ "Identity Server is": "El Servidor de Identidad es",
"I have verified my email address": "He verificado mi dirección de correo electrónico",
"Import E2E room keys": "Importar claves E2E de la sala",
"Incorrect verification code": "Verificación de código incorrecta",
@@ -148,13 +148,13 @@
"Invalid file%(extra)s": "Archivo inválido %(extra)s",
"%(senderName)s invited %(targetName)s.": "%(senderName)s invitó a %(targetName)s.",
"Invite new room members": "Invitar nuevos miembros a la sala",
- "Invites": "Invitar",
+ "Invites": "Invitaciones",
"Invites user with given id to current room": "Invitar a usuario con ID dado a esta sala",
"'%(alias)s' is not a valid format for an address": "'%(alias)s' no es un formato válido para una dirección",
"'%(alias)s' is not a valid format for an alias": "'%(alias)s' no es un formato válido para un alias",
"%(displayName)s is typing": "%(displayName)s está escribiendo",
"Sign in with": "Quiero iniciar sesión con",
- "Join Room": "Unirte a la sala",
+ "Join Room": "Unirse a la Sala",
"%(targetName)s joined the room.": "%(targetName)s se unió a la sala.",
"Joins room with given alias": "Unirse a la sala con el alias dado",
"%(senderName)s kicked %(targetName)s.": "%(senderName)s expulsó a %(targetName)s.",
@@ -166,7 +166,7 @@
"Local addresses for this room:": "Direcciones locales para esta sala:",
"Logged in as:": "Sesión iniciada como:",
"Logout": "Cerrar Sesión",
- "Low priority": "Baja prioridad",
+ "Low priority": "Prioridad baja",
"Accept": "Aceptar",
"Add": "Añadir",
"Admin Tools": "Herramientas de administración",
@@ -190,7 +190,7 @@
"Device already verified!": "¡El dispositivo ya ha sido verificado!",
"Device ID:": "ID del dispositivo:",
"device id: ": "id del dispositvo: ",
- "Disable Notifications": "Desactivar notificaciones",
+ "Disable Notifications": "Deshabilitar Notificaciones",
"Email address (optional)": "Dirección de correo electrónico (opcional)",
"Enable Notifications": "Activar notificaciones",
"Encrypted by a verified device": "Cifrado por un dispositivo verificado",
@@ -205,9 +205,9 @@
"Home": "Inicio",
"Import": "Importar",
"Incoming call from %(name)s": "Llamada de %(name)s",
- "Incoming video call from %(name)s": "Video-llamada de %(name)s",
+ "Incoming video call from %(name)s": "Llamada de vídeo entrante de %(name)s",
"Incoming voice call from %(name)s": "Llamada de voz entrante de %(name)s",
- "Incorrect username and/or password.": "Usuario o contraseña incorrectos.",
+ "Incorrect username and/or password.": "Nombre de usuario y/o contraseña incorrectos.",
"Invited": "Invitado",
"Jump to first unread message.": "Ir al primer mensaje sin leer.",
"Last seen": "Visto por última vez",
@@ -221,7 +221,7 @@
"Please select the destination room for this message": "Por favor, seleccione la sala destino para este mensaje",
"Create new room": "Crear nueva sala",
"Start chat": "Comenzar chat",
- "New Password": "Nueva contraseña",
+ "New Password": "Nueva Contraseña",
"Analytics": "Analíticas",
"Options": "Opciones",
"Passphrases must match": "Las contraseñas deben coincidir",
@@ -232,7 +232,7 @@
"File to import": "Fichero a importar",
"You must join the room to see its files": "Debe unirse a la sala para ver los ficheros",
"Reject all %(invitedRooms)s invites": "Rechazar todas las invitaciones a %(invitedRooms)s",
- "Start new chat": "Iniciar una nueva conversación",
+ "Start new chat": "Iniciar nueva conversación",
"Failed to invite": "Fallo en la invitación",
"Failed to invite user": "No se pudo invitar al usuario",
"Failed to invite the following users to the %(roomName)s room:": "No se pudo invitar a los siguientes usuarios a la sala %(roomName)s:",
@@ -255,13 +255,13 @@
"Save": "Guardar",
"Scroll to bottom of page": "Bajar al final de la página",
"Scroll to unread messages": "Ir al primer mensaje sin leer",
- "Search": "Búsqueda",
+ "Search": "Buscar",
"Search failed": "Falló la búsqueda",
"Seen by %(userName)s at %(dateTime)s": "Visto por %(userName)s el %(dateTime)s",
"Send anyway": "Enviar de todos modos",
"Sender device information": "Información del dispositivo emisor",
"Send Invites": "Enviar Invitaciones",
- "Send Reset Email": "Enviar e-mail de reinicio",
+ "Send Reset Email": "Enviar Correo Electrónico de Restauración",
"%(senderDisplayName)s sent an image.": "%(senderDisplayName)s envió una imagen.",
"%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "%(senderName)s invitó a %(targetDisplayName)s a unirse a la sala.",
"Server error": "Error del servidor",
@@ -277,7 +277,7 @@
"Show Text Formatting Toolbar": "Mostrar la barra de formato de texto",
"Signed Out": "Desconectado",
"Sign in": "Conectar",
- "Sign out": "Desconectar",
+ "Sign out": "Cerrar sesión",
"%(count)s of your messages have not been sent.|other": "Algunos de sus mensajes no han sido enviados.",
"Someone": "Alguien",
"Start a chat": "Iniciar una conversación",
@@ -300,10 +300,10 @@
"%(senderDisplayName)s removed the room name.": "%(senderDisplayName)s eliminó el nombre de la sala.",
"Device key:": "Clave del dispositivo:",
"Drop File Here": "Deje el fichero aquí",
- "Guest access is disabled on this Home Server.": "El acceso de invitados está desactivado en este servidor.",
+ "Guest access is disabled on this Home Server.": "El acceso de invitados está desactivado en este Servidor Doméstico.",
"Join as voice or video.": "Unirse con voz o vídeo.",
"Manage Integrations": "Gestionar integraciones",
- "Markdown is disabled": "Markdown está desactivado",
+ "Markdown is disabled": "Markdown está deshabilitado",
"Markdown is enabled": "Markdown está activado",
"matrix-react-sdk version:": "Versión de matrix-react-sdk:",
"Message not sent due to unknown devices being present": "Mensaje no enviado debido a la presencia de dispositivos desconocidos",
@@ -331,23 +331,23 @@
"No devices with registered encryption keys": "No hay dispositivos con claves de cifrado registradas",
"No display name": "Sin nombre para mostrar",
"No more results": "No hay más resultados",
- "No results": "Sin resultados",
+ "No results": "No hay resultados",
"No users have specific privileges in this room": "Ningún usuario tiene permisos específicos en esta sala",
"OK": "Correcto",
"olm version:": "versión de olm:",
"Once encryption is enabled for a room it cannot be turned off again (for now)": "Una vez se active el cifrado en esta sala, no podrá ser desactivado (por ahora)",
- "Only people who have been invited": "Sólo usuarios que han sido invitados",
+ "Only people who have been invited": "Solo personas que han sido invitadas",
"Operation failed": "Falló la operación",
"Password": "Contraseña",
"Password:": "Contraseña:",
"Passwords can't be empty": "Las contraseñas no pueden estar en blanco",
- "People": "Gente",
+ "People": "Personas",
"Permissions": "Permisos",
"Phone": "Teléfono",
"%(senderName)s placed a %(callType)s call.": "%(senderName)s ha hecho una llamada de tipo %(callType)s.",
"Please check your email and click on the link it contains. Once this is done, click continue.": "Por favor, compruebe su e-mail y pulse el enlace que contiene. Una vez esté hecho, pulse continuar.",
"Power level must be positive integer.": "El nivel debe ser un entero positivo.",
- "Privacy warning": "Alerta de privacidad",
+ "Privacy warning": "Advertencia de privacidad",
"Private Chat": "Conversación privada",
"Privileged Users": "Usuarios con privilegios",
"Profile": "Perfil",
@@ -356,7 +356,7 @@
"Reason: %(reasonText)s": "Razón: %(reasonText)s",
"Revoke Moderator": "Eliminar Moderador",
"Refer a friend to Riot:": "Informar a un amigo sobre Riot:",
- "Register": "Registro",
+ "Register": "Registrar",
"%(targetName)s rejected the invitation.": "%(targetName)s rechazó la invitación.",
"Reject invitation": "Rechazar invitación",
"Rejoin": "Volver a unirse",
@@ -369,7 +369,7 @@
"%(senderName)s requested a VoIP conference.": "%(senderName)s solicitó una conferencia de vozIP.",
"Resetting password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Reiniciar la contraseña también reiniciará las claves de cifrado extremo-a-extremo, haciendo ilegible el historial de las conversaciones, salvo que exporte previamente las claves de sala, y las importe posteriormente. Esto será mejorado en futuras versiones.",
"Results from DuckDuckGo": "Resultados desde DuckDuckGo",
- "Return to login screen": "Volver a la pantalla de inicio de sesión",
+ "Return to login screen": "Regresar a la pantalla de inicio de sesión",
"Riot does not have permission to send you notifications - please check your browser settings": "Riot no tiene permisos para enviarle notificaciones - por favor, revise la configuración del navegador",
"Riot was not given permission to send notifications - please try again": "Riot no pudo obtener permisos para enviar notificaciones - por favor, inténtelo de nuevo",
"riot-web version:": "versión riot-web:",
@@ -380,24 +380,24 @@
"The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.": "La clave de firma que usted ha proporcionado coincide con la recibida del dispositivo %(deviceId)s de %(userId)s. Dispositivo verificado.",
"This email address is already in use": "Esta dirección de correo electrónico ya está en uso",
"This email address was not found": "Esta dirección de correo electrónico no se encontró",
- "The email address linked to your account must be entered.": "Debe introducir el e-mail asociado a su cuenta.",
- "The file '%(fileName)s' exceeds this home server's size limit for uploads": "El fichero '%(fileName)s' supera el tamaño máximo permitido en este servidor",
+ "The email address linked to your account must be entered.": "Debes ingresar la dirección de correo electrónico vinculada a tu cuenta.",
+ "The file '%(fileName)s' exceeds this home server's size limit for uploads": "El fichero '%(fileName)s' supera el tamaño máximo permitido en este servidor doméstico",
"The file '%(fileName)s' failed to upload": "No se pudo subir '%(fileName)s'",
"The remote side failed to pick up": "El sitio remoto falló al sincronizar",
- "This Home Server does not support login using email address.": "Este servidor no permite identificarse con direcciones e-mail.",
+ "This Home Server does not support login using email address.": "Este Servidor Doméstico no permite identificarse con direcciones e-mail.",
"This invitation was sent to an email address which is not associated with this account:": "Se envió la invitación a un e-mail no asociado con esta cuenta:",
"This room has no local addresses": "Esta sala no tiene direcciones locales",
"This room is not recognised.": "Esta sala no se reconoce.",
"These are experimental features that may break in unexpected ways": "Estas son funcionalidades experimentales, podrían fallar de formas imprevistas",
"The visibility of existing history will be unchanged": "La visibilidad del historial previo no se verá afectada",
"This doesn't appear to be a valid email address": "Esto no parece un e-mail váido",
- "This is a preview of this room. Room interactions have been disabled": "Esto es una vista previa de la sala. Las interacciones con la sala están desactivadas",
+ "This is a preview of this room. Room interactions have been disabled": "Esto es una vista previa de la sala. Las interacciones con la sala están deshabilitadas",
"This phone number is already in use": "Este número de teléfono ya se está usando",
"This room": "Esta sala",
"This room is not accessible by remote Matrix servers": "Esta sala no es accesible por otros servidores Matrix",
"This room's internal ID is": "El ID interno de la sala es",
"To link to a room it must have an address.": "Para enlazar una sala, debe tener una dirección.",
- "To reset your password, enter the email address linked to your account": "Para reiniciar su contraseña, introduzca el e-mail asociado a su cuenta",
+ "To reset your password, enter the email address linked to your account": "Para restablecer tu contraseña, ingresa la dirección de correo electrónico vinculada a tu cuenta",
"Cancel": "Cancelar",
"Dismiss": "Omitir",
"powered by Matrix": "con el poder de Matrix",
@@ -405,7 +405,7 @@
"Custom Server Options": "Opciones de Servidor Personalizado",
"unknown error code": "Código de error desconocido",
"Start verification": "Comenzar la verificación",
- "Skip": "Saltar",
+ "Skip": "Omitir",
"To return to your account in future you need to set a password": "Para volver a usar su cuenta en el futuro es necesario que establezca una contraseña",
"Share without verifying": "Compartir sin verificar",
"Ignore request": "Ignorar la solicitud",
@@ -476,9 +476,9 @@
"(could not connect media)": "(no se ha podido conectar medio)",
"(no answer)": "(sin respuesta)",
"(unknown failure: %(reason)s)": "(error desconocido: %(reason)s)",
- "(warning: cannot be disabled again!)": "(aviso: ¡no se puede volver a desactivar!)",
+ "(warning: cannot be disabled again!)": "(advertencia: ¡no se puede volver a deshabilitar!)",
"Warning!": "¡Advertencia!",
- "WARNING: Device already verified, but keys do NOT MATCH!": "AVISO: Dispositivo ya verificado, ¡pero las claves NO COINCIDEN!",
+ "WARNING: Device already verified, but keys do NOT MATCH!": "ADVERTENCIA: Dispositivo ya verificado, ¡pero las claves NO COINCIDEN!",
"Who can access this room?": "¿Quién puede acceder a esta sala?",
"Who can read history?": "¿Quién puede leer el historial?",
"Who would you like to add to this room?": "¿A quién quiere añadir a esta sala?",
@@ -495,7 +495,7 @@
"Cannot add any more widgets": "no es posible agregar mas widgets",
"Do you want to load widget from URL:": "desea cargar widget desde URL:",
"Integrations Error": "error de integracion",
- "Publish this room to the public in %(domain)s's room directory?": "Desea publicar esta sala al publico en el directorio de sala de %(domain)s?",
+ "Publish this room to the public in %(domain)s's room directory?": "Desea publicar esta sala al publico en el directorio de salas de %(domain)s?",
"AM": "AM",
"PM": "PM",
"NOTE: Apps are not end-to-end encrypted": "NOTA: Las Apps no son cifradas de extremo a extremo",
@@ -508,13 +508,13 @@
"Unrecognised command:": "comando no reconocido:",
"Unrecognised room alias:": "alias de sala no reconocido:",
"%(userName)s (power %(powerLevelNumber)s)": "%(userName)s (nivel de permisos %(powerLevelNumber)s)",
- "WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and device %(deviceId)s is \"%(fprint)s\" which does not match the provided key \"%(fingerprint)s\". This could mean your communications are being intercepted!": "Atención: VERIFICACIÓN DE CLAVE FALLO\" La clave de firma para %(userId)s y el dispositivo %(deviceId)s es \"%(fprint)s\" la cual no concuerda con la clave provista por \"%(fingerprint)s\". Esto puede significar que sus comunicaciones están siendo interceptadas!",
+ "WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and device %(deviceId)s is \"%(fprint)s\" which does not match the provided key \"%(fingerprint)s\". This could mean your communications are being intercepted!": "ADVERTENCIA: VERIFICACIÓN DE CLAVE FALLO\" La clave de firma para %(userId)s y el dispositivo %(deviceId)s es \"%(fprint)s\" la cual no concuerda con la clave provista por \"%(fingerprint)s\". Esto puede significar que sus comunicaciones están siendo interceptadas!",
"You cannot place VoIP calls in this browser.": "No puede realizar llamadas VoIP en este navegador.",
"You do not have permission to post to this room": "no tiene permiso para publicar en esta sala",
"You have been banned from %(roomName)s by %(userName)s.": "Ha sido expulsado de %(roomName)s por %(userName)s.",
"You have been invited to join this room by %(inviterName)s": "Ha sido invitado a entrar a esta sala por %(inviterName)s",
"You have been kicked from %(roomName)s by %(userName)s.": "Ha sido removido de %(roomName)s por %(userName)s.",
- "You have been logged out of all devices and will no longer receive push notifications. To re-enable notifications, sign in again on each device": "Ha sido desconectado de todos los dispositivos y no continuara recibiendo notificaciones. Para volver a habilitar las notificaciones, vuelva a conectarse en cada dispositivo",
+ "You have been logged out of all devices and will no longer receive push notifications. To re-enable notifications, sign in again on each device": "Se ha cerrado sesión en todos tus dispositivos y ya no recibirás notificaciones push. Para volver a habilitar las notificaciones, vuelve a iniciar sesión en cada dispositivo",
"You have disabled URL previews by default.": "Ha deshabilitado la vista previa de URL por defecto.",
"You have enabled URL previews by default.": "Ha habilitado vista previa de URL por defecto.",
"You have no visible notifications": "No tiene notificaciones visibles",
@@ -524,13 +524,13 @@
"You need to be logged in.": "Necesita estar autenticado.",
"You need to enter a user name.": "Tiene que ingresar un nombre de usuario.",
"Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Su correo electrónico parece no estar asociado con una ID de Matrix en este Homeserver.",
- "Your password has been reset": "Su contraseña ha sido restablecida",
+ "Your password has been reset": "Tu contraseña fue restablecida",
"Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them": "Su contraseña a sido cambiada exitosamente. No recibirá notificaciones en otros dispositivos hasta que ingrese de nuevo en ellos",
"You seem to be in a call, are you sure you want to quit?": "Parece estar en medio de una llamada, ¿esta seguro que desea salir?",
"You seem to be uploading files, are you sure you want to quit?": "Parece estar cargando archivos, ¿esta seguro que desea salir?",
"You should not yet trust it to secure data": "No debería confiarle aun para asegurar su información",
"You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "No podrá revertir este cambio ya que esta promoviendo al usuario para tener el mismo nivel de autoridad que usted.",
- "Your home server does not support device management.": "Su servidor privado no suporta la gestión de dispositivos.",
+ "Your home server does not support device management.": "Tu servidor doméstico no suporta la gestión de dispositivos.",
"Sun": "Dom",
"Mon": "Lun",
"Tue": "Mar",
@@ -571,7 +571,7 @@
"Drop here to demote": "Suelta aquí para degradar",
"Whether or not you're using the Richtext mode of the Rich Text Editor": "Estés o no usando el modo Richtext del Editor de Texto Enriquecido",
"Who would you like to add to this community?": "¿A quién deseas añadir a esta comunidad?",
- "Warning: any person you add to a community will be publicly visible to anyone who knows the community ID": "Aviso: cualquier persona que añadas a una comunidad será públicamente visible a cualquiera que conozca el ID de la comunidad",
+ "Warning: any person you add to a community will be publicly visible to anyone who knows the community ID": "Advertencia: cualquier persona que añadas a una comunidad será públicamente visible a cualquiera que conozca el ID de la comunidad",
"Invite new community members": "Invita nuevos miembros a la comunidad",
"Name or matrix ID": "Nombre o ID de matrix",
"Invite to Community": "Invitar a la comunidad",
@@ -604,7 +604,7 @@
"Leave": "Salir",
"Uploaded on %(date)s by %(user)s": "Subido el %(date)s por %(user)s",
"Send Custom Event": "Enviar Evento Personalizado",
- "All notifications are currently disabled for all targets.": "Las notificaciones estan desactivadas para todos los objetivos.",
+ "All notifications are currently disabled for all targets.": "Las notificaciones están deshabilitadas para todos los objetivos.",
"Failed to send logs: ": "Error al enviar registros: ",
"delete the alias.": "borrar el alias.",
"To return to your account in future you need to set a password": "Para regresar a tu cuenta en el futuro debes establecer una contraseña",
@@ -614,7 +614,7 @@
"You cannot delete this image. (%(code)s)": "No puedes eliminar esta imagen. (%(code)s)",
"Cancel Sending": "Cancelar envío",
"This Room": "Esta sala",
- "The Home Server may be too old to support third party networks": "El Home Server puede ser demasiado antiguo para soportar redes de terceros",
+ "The Home Server may be too old to support third party networks": "El Servidor Doméstico puede ser demasiado antiguo para soportar redes de terceros",
"Resend": "Reenviar",
"Room not found": "Sala no encontrada",
"Messages containing my display name": "Mensajes que contienen mi nombre",
@@ -636,7 +636,7 @@
"Members": "Miembros",
"No update available.": "No hay actualizaciones disponibles.",
"Noisy": "Ruidoso",
- "Failed to get protocol list from Home Server": "Error al obtener la lista de protocolos desde el Home Server",
+ "Failed to get protocol list from Home Server": "Error al obtener la lista de protocolos desde el Servidor Doméstico",
"Collecting app version information": "Recolectando información de la versión de la aplicación",
"Delete the room alias %(alias)s and remove %(name)s from the directory?": "¿Borrar el alias de la sala %(alias)s y eliminar %(name)s del directorio?",
"This will allow you to return to your account after signing out, and sign in on other devices.": "Esto te permitirá regresar a tu cuenta después de cerrar sesión, así como iniciar sesión en otros dispositivos.",
@@ -693,7 +693,7 @@
"Notify for all other messages/rooms": "Notificar para todos los demás mensajes/salas",
"Unable to look up room ID from server": "No se puede buscar el ID de la sala desde el servidor",
"Couldn't find a matching Matrix room": "No se encontró una sala Matrix que coincida",
- "All Rooms": "Todas las salas",
+ "All Rooms": "Todas las Salas",
"You cannot delete this message. (%(code)s)": "No puedes eliminar este mensaje. (%(code)s)",
"Thursday": "Jueves",
"Forward Message": "Reenviar Mensaje",
@@ -710,7 +710,7 @@
"Yesterday": "Ayer",
"Error encountered (%(errorDetail)s).": "Error encontrado (%(errorDetail)s).",
"Login": "Iniciar sesión",
- "Low Priority": "Baja Prioridad",
+ "Low Priority": "Prioridad Baja",
"Riot does not know how to join a room on this network": "Riot no sabe cómo unirse a una sala en esta red",
"Set Password": "Establecer contraseña",
"Enable audible notifications in web client": "Habilitar notificaciones audibles en el cliente web",
@@ -722,7 +722,7 @@
"You can now return to your account after signing out, and sign in on other devices.": "Ahora puedes regresar a tu cuenta después de cerrar tu sesión, e iniciar sesión en otros dispositivos.",
"Enable email notifications": "Habilitar notificaciones por email",
"Event Type": "Tipo de Evento",
- "No rooms to show": "Sin salas para mostrar",
+ "No rooms to show": "No hay salas para mostrar",
"Download this file": "Descargar este archivo",
"Pin Message": "Marcar Mensaje",
"Failed to change settings": "Error al cambiar la configuración",
@@ -784,16 +784,16 @@
"Not a valid Riot keyfile": "No es un archivo de claves de Riot válido",
"Message Pinning": "Mensajes con chincheta",
"Jitsi Conference Calling": "Llamadas de conferencia Jitsi",
- "Disable Emoji suggestions while typing": "Desactivar sugerencias de Emoji mientras escribe",
+ "Disable Emoji suggestions while typing": "Deshabilitar sugerencias de Emoji mientras escribe",
"Hide avatar changes": "Ocultar cambios del avatar",
"Hide display name changes": "Ocultar cambios del nombre visible",
"Always show encryption icons": "Mostrar siempre iconos de cifrado",
"Hide avatars in user and room mentions": "Ocultar avatares en las menciones de usuarios y salas",
- "Disable big emoji in chat": "Desactivar emoji grande en la conversación",
+ "Disable big emoji in chat": "Deshabilitar emoji grande en la conversación",
"Automatically replace plain text Emoji": "Sustituir automáticamente Emojis de texto",
"Mirror local video feed": "Clonar transmisión de video local",
- "Disable Community Filter Panel": "Desactivar Panel de Filtro de la Comunidad",
- "Disable Peer-to-Peer for 1:1 calls": "Desactivar pares para llamadas 1:1",
+ "Disable Community Filter Panel": "Deshabilitar Panel de Filtro de la Comunidad",
+ "Disable Peer-to-Peer for 1:1 calls": "Deshabilitar pares para llamadas 1:1",
"Send analytics data": "Enviar información de estadísticas",
"Enable inline URL previews by default": "Activar vistas previas de las URLs por defecto",
"Enable URL previews for this room (only affects you)": "Activar vista previa de URL en esta sala (sólo le afecta a ud.)",
@@ -897,11 +897,11 @@
"Members only (since the point in time of selecting this option)": "Sólo miembros (desde el instante desde que se selecciona esta opción)",
"Members only (since they were invited)": "Sólo miembros (desde que fueron invitados)",
"Members only (since they joined)": "Sólo miembros (desde que se unieron)",
- "You don't currently have any stickerpacks enabled": "En este momento no tiene pegatinas activadas",
- "Add a stickerpack": "Añadir un lote de pegatinas",
- "Stickerpack": "Lote de pegatinas",
- "Hide Stickers": "Ocultar pegatinas",
- "Show Stickers": "Mostrar pegatinas",
+ "You don't currently have any stickerpacks enabled": "Actualmente no tienes ningún paquete de pegatinas habilitado",
+ "Add a stickerpack": "Añadir un paquete de pegatinas",
+ "Stickerpack": "Paquete de pegatinas",
+ "Hide Stickers": "Ocultar Pegatinas",
+ "Show Stickers": "Mostrar Pegatinas",
"Addresses": "Direcciones",
"Invalid community ID": "ID de comunidad no válido",
"'%(groupId)s' is not a valid community ID": "'%(groupId)s' no es un ID de comunidad válido",
@@ -928,13 +928,13 @@
"Message removed by %(userId)s": "Mensaje eliminado por %(userId)s",
"Message removed": "Mensaje eliminado",
"Robot check is currently unavailable on desktop - please use a web browser": "La comprobación de robot no está actualmente disponible en escritorio - por favor, use un navegador Web",
- "This Home Server would like to make sure you are not a robot": "A este Home Server le gustaría asegurarse de que no es un robot",
+ "This Home Server would like to make sure you are not a robot": "Este Servidor Doméstico quiere asegurarse de que no eres un robot",
"Sign in with CAS": "Ingresar con CAS",
- "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.": "Puede usar las opciones personalizadas del servidor para ingresar en otros servidores de Matrix especificando una URL del Home server diferente.",
- "This allows you to use this app with an existing Matrix account on a different home server.": "Esto le permite usar esta aplicación con una cuenta de Matrix ya existente en un home server diferente.",
+ "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.": "Puede usar las opciones personalizadas del servidor para ingresar en otros servidores de Matrix especificando una URL del Servidor Doméstico diferente.",
+ "This allows you to use this app with an existing Matrix account on a different home server.": "Esto le permite usar esta aplicación con una cuenta de Matrix ya existente en un servidor doméstico diferente.",
"You can also set a custom identity server but this will typically prevent interaction with users based on email address.": "Puede también usar un servidor de identidad personalizado, pero esto habitualmente evitará la interacción con usuarios mediante dirección de correo electrónico.",
"An email has been sent to %(emailAddress)s": "Se envió un correo electrónico a %(emailAddress)s",
- "Please check your email to continue registration.": "Por favor compruebe su correo electrónico para continuar con el registro.",
+ "Please check your email to continue registration.": "Por favor consulta tu correo electrónico para continuar con el registro.",
"Token incorrect": "Token incorrecto",
"A text message has been sent to %(msisdn)s": "Se envió un mensaje de texto a %(msisdn)s",
"Please enter the code it contains:": "Por favor introduzca el código que contiene:",
@@ -948,8 +948,8 @@
"You are registering with %(SelectedTeamName)s": "Está registrándose con %(SelectedTeamName)s",
"Default server": "Servidor por defecto",
"Custom server": "Servidor personalizado",
- "Home server URL": "URL del Home server",
- "Identity server URL": "URL del servidor de Identidad",
+ "Home server URL": "URL del servidor doméstico",
+ "Identity server URL": "URL del servidor de identidad",
"What does this mean?": "¿Qué significa esto?",
"Remove from community": "Eliminar de la comunidad",
"Disinvite this user from community?": "¿Quitar como invitado a este usuario de la comunidad?",
@@ -1084,14 +1084,14 @@
"Your unverified device '%(displayName)s' is requesting encryption keys.": "Su dispositivo sin verificar '%(displayName)s' está solicitando claves de cifrado.",
"Loading device info...": "Cargando información del dispositivo...",
"Encryption key request": "Solicitud de clave de cifrado",
- "Log out and remove encryption keys?": "¿Salir y eliminar claves de cifrado?",
+ "Log out and remove encryption keys?": "¿Cerrar sesión y eliminar claves de cifrado?",
"Clear Storage and Sign Out": "Borrar Almacenamiento y Cerrar Sesión",
"Send Logs": "Enviar Registros",
"Refresh": "Refrescar",
"We encountered an error trying to restore your previous session.": "Encontramos un error al intentar restaurar su sesión anterior.",
"If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.": "Si ha usado anteriormente una versión más reciente de Riot, su sesión puede ser incompatible con ésta. Cierre la ventana y vuelva a la versión más reciente.",
"Clearing your browser's storage may fix the problem, but will sign you out and cause any encrypted chat history to become unreadable.": "Limpiando el almacenamiento del navegador puede arreglar el problema, pero le desconectará y cualquier historial de conversación cifrado se volverá ilegible.",
- "User names may only contain letters, numbers, dots, hyphens and underscores.": "Los nombres de usuario pueden contener letras, números, punto, guiones y subrayado.",
+ "User names may only contain letters, numbers, dots, hyphens and underscores.": "Los nombres de usuario solo pueden contener letras, números, puntos, guiones y guiones bajos.",
"Username not available": "Nombre de usuario no disponible",
"An error occurred: %(error_string)s": "Ocurrió un error: %(error_string)s",
"Username available": "Nombre de usuario disponible",
@@ -1153,7 +1153,7 @@
"Long Description (HTML)": "Descripción Larga (HTML)",
"Description": "Descripción",
"Community %(groupId)s not found": "No se encontraron %(groupId)s de la comunidad",
- "This Home server does not support communities": "Este Home server no soporta comunidades",
+ "This Home server does not support communities": "Este Servidor Doméstico no soporta comunidades",
"Failed to load %(groupId)s": "Falló la carga de %(groupId)s",
"This room is not public. You will not be able to rejoin without an invite.": "Esta sala no es pública. No podrá volver a unirse sin una invitación.",
"Can't leave Server Notices room": "No puede abandonar la sala Avisos del Servidor",
@@ -1196,7 +1196,7 @@
"Start automatically after system login": "Iniciar automáticamente después de ingresar en el sistema",
"No Audio Outputs detected": "No se detectaron Salidas de Sonido",
"Audio Output": "Salida de Sonido",
- "An email has been sent to %(emailAddress)s. Once you've followed the link it contains, click below.": "Se envió un correo electrónico a %(emailAddress)s. Una vez haya seguido el enlace en él, pulse debajo.",
+ "An email has been sent to %(emailAddress)s. Once you've followed the link it contains, click below.": "Se envió un correo electrónico a %(emailAddress)s. Una vez hayas seguido el enlace que contiene, haz clic a continuación.",
"Please note you are logging into the %(hs)s server, not matrix.org.": "Por favor, tenga en cuenta que está ingresando en el servidor %(hs)s, no en matrix.org.",
"This homeserver doesn't offer any login flows which are supported by this client.": "Este homeserver no ofrece flujos de ingreso soportados por este cliente.",
"Try the app first": "Probar primero la app",
@@ -1206,9 +1206,9 @@
"This server does not support authentication with a phone number.": "Este servidor no soporta autenticación mediante número de teléfono.",
"Missing password.": "Falta la contraseña.",
"Passwords don't match.": "Las contraseñas no coinciden.",
- "Password too short (min %(MIN_PASSWORD_LENGTH)s).": "La contraseña es demasiado corta (mín %(MIN_PASSWORD_LENGTH)s).",
- "This doesn't look like a valid email address.": "Ésta no parece una dirección de correo electrónico válida.",
- "This doesn't look like a valid phone number.": "Éste no parece un número de teléfono válido.",
+ "Password too short (min %(MIN_PASSWORD_LENGTH)s).": "Contraseña demasiado corta (mínimo %(MIN_PASSWORD_LENGTH)s).",
+ "This doesn't look like a valid email address.": "Esto no parece ser una dirección de correo electrónico válida.",
+ "This doesn't look like a valid phone number.": "Esto no parece ser un número telefónico válido.",
"An unknown error occurred.": "Ocurrió un error desconocido.",
"I already have an account": "Ya tengo una cuenta",
"Notify the whole room": "Notificar a toda la sala",
From 32da44615eff23d8d48cd79887807a735741df47 Mon Sep 17 00:00:00 2001
From: David Baker
Date: Thu, 6 Sep 2018 15:50:41 +0100
Subject: [PATCH 282/343] Use some/every instead of doing it manually
---
src/Registration.js | 20 ++++++--------------
1 file changed, 6 insertions(+), 14 deletions(-)
diff --git a/src/Registration.js b/src/Registration.js
index a24a2d87f6..070178fecb 100644
--- a/src/Registration.js
+++ b/src/Registration.js
@@ -43,20 +43,12 @@ export async function startAnyRegistrationFlow(options) {
// ones like email & msisdn which require the user to supply
// the relevant details in advance. We err on the side of
// caution though.
- let hasIlagFlow = false;
- for (const flow of flows) {
- let flowSuitable = true;
- for (const stage of flow.stages) {
- if (!['m.login.dummy', 'm.login.recaptcha'].includes(stage)) {
- flowSuitable = false;
- break;
- }
- }
- if (flowSuitable) {
- hasIlagFlow = true;
- break;
- }
- }
+ const hasIlagFlow = flows.some((flow) => {
+ return flow.stages.every((stage) => {
+ return ['m.login.dummy', 'm.login.recaptcha'].includes(stage);
+ });
+ });
+
if (hasIlagFlow) {
dis.dispatch({
action: 'view_set_mxid',
From 755c13fcd8478b2d68641f6b8b650a0bf2820b55 Mon Sep 17 00:00:00 2001
From: random
Date: Thu, 6 Sep 2018 15:15:11 +0000
Subject: [PATCH 283/343] Translated using Weblate (Italian)
Currently translated at 100.0% (1249 of 1249 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/it/
---
src/i18n/strings/it.json | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)
diff --git a/src/i18n/strings/it.json b/src/i18n/strings/it.json
index 78ee961578..919d6794eb 100644
--- a/src/i18n/strings/it.json
+++ b/src/i18n/strings/it.json
@@ -1255,5 +1255,15 @@
"Please contact your homeserver administrator.": "Contatta l'amministratore del tuo homeserver.",
"Lazy loading members not supported": "Il caricamento lento dei membri non è supportato",
"Lazy loading is not supported by your current homeserver.": "Il caricamento lento non è supportato dal tuo attuale homeserver.",
- "Legal": "Informazioni legali"
+ "Legal": "Informazioni legali",
+ "Forces the current outbound group session in an encrypted room to be discarded": "Forza l'eliminazione dell'attuale sessione di gruppo in uscita in una stanza criptata",
+ "Error Discarding Session": "Errore nell'eliminazione della sessione",
+ "This room has been replaced and is no longer active.": "Questa stanza è stata sostituita e non è più attiva.",
+ "The conversation continues here.": "La conversazione continua qui.",
+ "Upgrade room to version %(ver)s": "Aggiorna la stanza alla versione %(ver)s",
+ "This room is a continuation of another conversation.": "Questa stanza è la continuazione di un'altra conversazione.",
+ "Click here to see older messages.": "Clicca qui per vedere i messaggi precedenti.",
+ "Failed to upgrade room": "Aggiornamento stanza fallito",
+ "The room upgrade could not be completed": "Non è stato possibile completare l'aggiornamento della stanza",
+ "Upgrade this room to version %(version)s": "Aggiorna questa stanza alla versione %(version)s"
}
From fce40aead131052534b922cae6bb889ff8917c9e Mon Sep 17 00:00:00 2001
From: Milena Brum
Date: Thu, 6 Sep 2018 15:12:47 +0000
Subject: [PATCH 284/343] Translated using Weblate (Spanish)
Currently translated at 100.0% (1249 of 1249 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/es/
---
src/i18n/strings/es.json | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/i18n/strings/es.json b/src/i18n/strings/es.json
index 05d88264ee..aabde22f1b 100644
--- a/src/i18n/strings/es.json
+++ b/src/i18n/strings/es.json
@@ -309,8 +309,8 @@
"Message not sent due to unknown devices being present": "Mensaje no enviado debido a la presencia de dispositivos desconocidos",
"Missing room_id in request": "Falta el ID de sala en la petición",
"Missing user_id in request": "Falta el ID de usuario en la petición",
- "Mobile phone number": "Número de teléfono móvil",
- "Mobile phone number (optional)": "Número telefónico móvil (opcional)",
+ "Mobile phone number": "Número telefónico de móvil",
+ "Mobile phone number (optional)": "Número telefónico de móvil (opcional)",
"Moderator": "Moderador",
"Mute": "Silenciar",
"%(serverName)s Matrix ID": "%(serverName)s ID de Matrix",
From b9a8d765bb7adcffd1bd6224355a140ff45f293b Mon Sep 17 00:00:00 2001
From: Jeff Huang
Date: Fri, 7 Sep 2018 01:13:59 +0000
Subject: [PATCH 285/343] Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (1251 of 1251 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/zh_Hant/
---
src/i18n/strings/zh_Hant.json | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/src/i18n/strings/zh_Hant.json b/src/i18n/strings/zh_Hant.json
index ffd623e6cf..ef2e1df135 100644
--- a/src/i18n/strings/zh_Hant.json
+++ b/src/i18n/strings/zh_Hant.json
@@ -1266,5 +1266,8 @@
"The room upgrade could not be completed": "聊天室升級可能不完整",
"Upgrade this room to version %(version)s": "升級此聊天室到版本 %(version)s",
"Forces the current outbound group session in an encrypted room to be discarded": "強制目前在已加密的聊天室中的外發群組工作階段丟棄",
- "Error Discarding Session": "丟棄工作階段錯誤"
+ "Error Discarding Session": "丟棄工作階段錯誤",
+ "Registration Required": "需要註冊",
+ "You need to register to do this. Would you like to register now?": "您必須註冊以繼續。您想要現在註冊嗎?",
+ "Unable to query for supported registration methods": "無法查詢支援的註冊方式"
}
From fec7d2ee5fcbb5353d06bd5ac6fb3e0d6361afba Mon Sep 17 00:00:00 2001
From: Bruno Windels
Date: Fri, 7 Sep 2018 12:00:19 +0200
Subject: [PATCH 286/343] avoid updating the memberlist while the spinner is
shown
the memberlist gets updated constantly while the LL members
are being added to the room state. this slows things down unneed, and is one of the
main cause of dropping frames when member arrive.
---
src/components/views/rooms/MemberList.js | 29 ++++++++++++++++--------
1 file changed, 20 insertions(+), 9 deletions(-)
diff --git a/src/components/views/rooms/MemberList.js b/src/components/views/rooms/MemberList.js
index d302bee832..5861348d98 100644
--- a/src/components/views/rooms/MemberList.js
+++ b/src/components/views/rooms/MemberList.js
@@ -33,6 +33,7 @@ module.exports = React.createClass({
getInitialState: function() {
this.memberDict = this.getMemberDict();
+ this._mounted = false;
const cli = MatrixClientPeg.get();
if (cli.hasLazyLoadMembersEnabled()) {
@@ -43,6 +44,19 @@ module.exports = React.createClass({
},
componentWillMount: function() {
+ const cli = MatrixClientPeg.get();
+ if (!cli.hasLazyLoadMembersEnabled()) {
+ this._listenForMembersChanges();
+ }
+ const enablePresenceByHsUrl = SdkConfig.get()["enable_presence_by_hs_url"];
+ const hsUrl = MatrixClientPeg.get().baseUrl;
+ this._showPresence = true;
+ if (enablePresenceByHsUrl && enablePresenceByHsUrl[hsUrl] !== undefined) {
+ this._showPresence = enablePresenceByHsUrl[hsUrl];
+ }
+ },
+
+ _listenForMembersChanges: function() {
const cli = MatrixClientPeg.get();
cli.on("RoomState.members", this.onRoomStateMember);
cli.on("RoomMember.name", this.onRoomMemberName);
@@ -53,25 +67,22 @@ module.exports = React.createClass({
// the information contained in presence events).
cli.on("User.lastPresenceTs", this.onUserLastPresenceTs);
// cli.on("Room.timeline", this.onRoomTimeline);
-
- const enablePresenceByHsUrl = SdkConfig.get()["enable_presence_by_hs_url"];
- const hsUrl = MatrixClientPeg.get().baseUrl;
-
- this._showPresence = true;
- if (enablePresenceByHsUrl && enablePresenceByHsUrl[hsUrl] !== undefined) {
- this._showPresence = enablePresenceByHsUrl[hsUrl];
- }
},
componentDidMount: async function() {
+ this._mounted = true;
const cli = MatrixClientPeg.get();
if (cli.hasLazyLoadMembersEnabled()) {
await this._waitForMembersToLoad();
- this.setState(this._getMembersState());
+ if (this._mounted) {
+ this.setState(this._getMembersState());
+ this._listenForMembersChanges();
+ }
}
},
componentWillUnmount: function() {
+ this._mounted = false;
const cli = MatrixClientPeg.get();
if (cli) {
cli.removeListener("RoomState.members", this.onRoomStateMember);
From fa669bf09651c72b803a36a5ed6638b41f3036e4 Mon Sep 17 00:00:00 2001
From: David Baker
Date: Fri, 7 Sep 2018 12:18:25 +0100
Subject: [PATCH 287/343] Error on splash screen if sync is failing
Display an error on the splash screen with the spinner if the sync
request is not working, rather than just sitting there with a spinner
as if nothing is wrong.
Fixes https://github.com/vector-im/riot-web/issues/7148
---
res/css/structures/_MatrixChat.scss | 12 ++++++++++
src/components/structures/MatrixChat.js | 19 +++++++++++++++-
src/i18n/strings/en_EN.json | 9 ++++----
src/utils/ErrorUtils.js | 30 ++++++++++++++++++++++++-
4 files changed, 64 insertions(+), 6 deletions(-)
diff --git a/res/css/structures/_MatrixChat.scss b/res/css/structures/_MatrixChat.scss
index 156b1709fe..eae1f56180 100644
--- a/res/css/structures/_MatrixChat.scss
+++ b/res/css/structures/_MatrixChat.scss
@@ -56,6 +56,18 @@ limitations under the License.
flex: 1;
}
+.mx_MatrixChat_syncError {
+ color: $accent-fg-color;
+ background-color: $warning-bg-color;
+ border-radius: 5px;
+ display: table;
+ padding: 30px;
+ position: absolute;
+ top: 100px;
+ left: 50%;
+ transform: translateX(-50%);
+}
+
.mx_MatrixChat .mx_LeftPanel {
order: 1;
diff --git a/src/components/structures/MatrixChat.js b/src/components/structures/MatrixChat.js
index 333e200e44..71e61cda22 100644
--- a/src/components/structures/MatrixChat.js
+++ b/src/components/structures/MatrixChat.js
@@ -46,6 +46,7 @@ import KeyRequestHandler from '../../KeyRequestHandler';
import { _t, getCurrentLanguage } from '../../languageHandler';
import SettingsStore, {SettingLevel} from "../../settings/SettingsStore";
import { startAnyRegistrationFlow } from "../../Registration.js";
+import { messageForSyncError } from '../../utils/ErrorUtils';
/** constants for MatrixChat.state.view */
const VIEWS = {
@@ -179,6 +180,8 @@ export default React.createClass({
// When showing Modal dialogs we need to set aria-hidden on the root app element
// and disable it when there are no dialogs
hideToSRUsers: false,
+
+ syncError: null, // If the current syncing status is ERROR, the error object, otherwise null.
};
return s;
},
@@ -1242,13 +1245,20 @@ export default React.createClass({
return self._loggedInView.child.canResetTimelineInRoom(roomId);
});
- cli.on('sync', function(state, prevState) {
+ cli.on('sync', function(state, prevState, data) {
// LifecycleStore and others cannot directly subscribe to matrix client for
// events because flux only allows store state changes during flux dispatches.
// So dispatch directly from here. Ideally we'd use a SyncStateStore that
// would do this dispatch and expose the sync state itself (by listening to
// its own dispatch).
dis.dispatch({action: 'sync_state', prevState, state});
+
+ if (state === "ERROR") {
+ self.setState({syncError: data.error});
+ } else if (self.state.syncError) {
+ self.setState({syncError: null});
+ }
+
self.updateStatusIndicator(state, prevState);
if (state === "SYNCING" && prevState === "SYNCING") {
return;
@@ -1744,8 +1754,15 @@ export default React.createClass({
} else {
// we think we are logged in, but are still waiting for the /sync to complete
const Spinner = sdk.getComponent('elements.Spinner');
+ let errorBox;
+ if (this.state.syncError) {
+ errorBox =
+ {_t("Unable to connect to Homeserver. Retrying...")}
+
;
+ }
+}
From 9cc9fbf924aad82929e3502d39f4a018d31c354e Mon Sep 17 00:00:00 2001
From: Bruno Windels
Date: Fri, 7 Sep 2018 14:05:26 +0200
Subject: [PATCH 288/343] avoid memberlist refresh for events related to rooms
other but the current
---
src/components/views/rooms/MemberList.js | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/src/components/views/rooms/MemberList.js b/src/components/views/rooms/MemberList.js
index d302bee832..6522dc2e2d 100644
--- a/src/components/views/rooms/MemberList.js
+++ b/src/components/views/rooms/MemberList.js
@@ -163,15 +163,22 @@ module.exports = React.createClass({
},
onRoomStateMember: function(ev, state, member) {
+ if (member.roomId !== this.props.roomId) {
+ return;
+ }
this._updateList();
},
onRoomMemberName: function(ev, member) {
+ if (member.roomId !== this.props.roomId) {
+ return;
+ }
this._updateList();
},
onRoomStateEvent: function(event, state) {
- if (event.getType() === "m.room.third_party_invite") {
+ if (event.getRoomId() === this.props.roomId &&
+ event.getType() === "m.room.third_party_invite") {
this._updateList();
}
},
From 101dad83aaeaec1a3a7456832d918abe63d8e60f Mon Sep 17 00:00:00 2001
From: Bruno Windels
Date: Fri, 7 Sep 2018 14:16:26 +0200
Subject: [PATCH 289/343] same for right panel
---
src/components/structures/RightPanel.js | 3 +++
1 file changed, 3 insertions(+)
diff --git a/src/components/structures/RightPanel.js b/src/components/structures/RightPanel.js
index 47b3df65cb..86870718e8 100644
--- a/src/components/structures/RightPanel.js
+++ b/src/components/structures/RightPanel.js
@@ -186,6 +186,9 @@ module.exports = React.createClass({
},
onRoomStateMember: function(ev, state, member) {
+ if (member.roomId !== this.props.roomId) {
+ return;
+ }
// redraw the badge on the membership list
if (this.state.phase === this.Phase.RoomMemberList && member.roomId === this.props.roomId) {
this._delayedUpdate();
From 55271c858e703c22a9205dde6aa46fe313f416ce Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?K=C3=A9vin=20C?=
Date: Thu, 6 Sep 2018 19:49:47 +0000
Subject: [PATCH 290/343] Translated using Weblate (French)
Currently translated at 100.0% (1251 of 1251 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/fr/
---
src/i18n/strings/fr.json | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/src/i18n/strings/fr.json b/src/i18n/strings/fr.json
index c4efb76e55..9d950f2ef1 100644
--- a/src/i18n/strings/fr.json
+++ b/src/i18n/strings/fr.json
@@ -1266,5 +1266,8 @@
"The room upgrade could not be completed": "La mise à niveau du salon n'a pas pu être effectuée",
"Upgrade this room to version %(version)s": "Mettre à niveau ce salon vers la version %(version)s",
"Forces the current outbound group session in an encrypted room to be discarded": "Force la session de groupe sortante actuelle dans un salon chiffré à être rejetée",
- "Error Discarding Session": "Erreur lors du rejet de la session"
+ "Error Discarding Session": "Erreur lors du rejet de la session",
+ "Registration Required": "Enregistrement nécessaire",
+ "You need to register to do this. Would you like to register now?": "Vous devez vous enregistrer pour faire cela. Voulez-vous créer un compte maintenant ?",
+ "Unable to query for supported registration methods": "Impossible de demander les méthodes d'enregistrement prises en charge"
}
From f8cc510542f6578d73bd065f89c21eba43b7ee1f Mon Sep 17 00:00:00 2001
From: Szimszon
Date: Fri, 7 Sep 2018 06:48:22 +0000
Subject: [PATCH 291/343] Translated using Weblate (Hungarian)
Currently translated at 100.0% (1251 of 1251 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/hu/
---
src/i18n/strings/hu.json | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/src/i18n/strings/hu.json b/src/i18n/strings/hu.json
index c2c367f106..a88dc6cc28 100644
--- a/src/i18n/strings/hu.json
+++ b/src/i18n/strings/hu.json
@@ -1266,5 +1266,8 @@
"The room upgrade could not be completed": "A szoba frissítését nem sikerült befejezni",
"Upgrade this room to version %(version)s": "A szoba frissítése %(version)s verzióra",
"Error Discarding Session": "Hiba a munkamenet törlésénél",
- "Forces the current outbound group session in an encrypted room to be discarded": "A jelenlegi csoport munkamenet törlését kikényszeríti a titkosított szobában"
+ "Forces the current outbound group session in an encrypted room to be discarded": "A jelenlegi csoport munkamenet törlését kikényszeríti a titkosított szobában",
+ "Registration Required": "Regisztrációt igényel",
+ "You need to register to do this. Would you like to register now?": "Hogy ezt megtedd regisztrálnod kell. Szeretnél regisztrálni?",
+ "Unable to query for supported registration methods": "A támogatott regisztrációs folyamatok listáját nem sikerült lekérdezni"
}
From 69f2f06468c4652d60124cd58f66bddd716176aa Mon Sep 17 00:00:00 2001
From: Milena Brum
Date: Thu, 6 Sep 2018 17:36:29 +0000
Subject: [PATCH 292/343] Translated using Weblate (Spanish)
Currently translated at 99.7% (1248 of 1251 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/es/
---
src/i18n/strings/es.json | 92 ++++++++++++++++++++--------------------
1 file changed, 46 insertions(+), 46 deletions(-)
diff --git a/src/i18n/strings/es.json b/src/i18n/strings/es.json
index aabde22f1b..24044b5c74 100644
--- a/src/i18n/strings/es.json
+++ b/src/i18n/strings/es.json
@@ -25,9 +25,9 @@
"Attachment": "Adjunto",
"Autoplay GIFs and videos": "Reproducir automáticamente GIFs y videos",
"%(senderName)s banned %(targetName)s.": "%(senderName)s vetó a %(targetName)s.",
- "Ban": "Bloquear",
- "Banned users": "Usuarios bloqueados",
- "Bans user with given id": "Bloquear usuario por ID",
+ "Ban": "Vetar",
+ "Banned users": "Usuarios vetados",
+ "Bans user with given id": "Veta al usuario con la ID dada",
"Blacklisted": "En lista negra",
"Bulk Options": "Opciones masivas",
"Call Timeout": "Tiempo de espera de la llamada",
@@ -75,7 +75,7 @@
"Default": "Por defecto",
"Device ID": "ID del dispositivo",
"Devices": "Dispositivos",
- "Devices will not yet be able to decrypt history from before they joined the room": "Los dispositivos aun no serán capaces de descifrar el historial antes de haberse unido a la sala",
+ "Devices will not yet be able to decrypt history from before they joined the room": "Los dispositivos todavía no podrán descifrar el historial desde antes de unirse a la sala",
"Direct chats": "Conversaciones directas",
"Disinvite": "Deshacer invitación",
"Display name": "Nombre para mostrar",
@@ -88,12 +88,12 @@
"Email address": "Dirección de correo electrónico",
"Email, name or matrix ID": "Correo electrónico, nombre o Matrix ID",
"Emoji": "Emoticones",
- "Enable encryption": "Habilitar encriptación",
- "Encrypted messages will not be visible on clients that do not yet implement encryption": "Los mensajes encriptados no serán visibles en navegadores que no han implementado aun la encriptación",
+ "Enable encryption": "Habilitar cifrado",
+ "Encrypted messages will not be visible on clients that do not yet implement encryption": "Los mensajes cifrados no serán visibles en los clientes que aún no implementen el cifrado",
"Encrypted room": "Sala encriptada",
"%(senderName)s ended the call.": "%(senderName)s finalizó la llamada.",
"End-to-end encryption information": "Información de encriptación de extremo a extremo",
- "End-to-end encryption is in beta and may not be reliable": "El cifrado de extremo a extremo está en pruebas, podría no ser fiable",
+ "End-to-end encryption is in beta and may not be reliable": "El cifrado de extremo a extremo está en beta y puede no ser confiable",
"Enter Code": "Ingresar Código",
"Error": "Error",
"Error decrypting attachment": "Error al descifrar adjunto",
@@ -106,7 +106,7 @@
"Failed to forget room %(errCode)s": "Falló al olvidar la sala %(errCode)s",
"Failed to join room": "No se pudo unir a la sala",
"Failed to kick": "Falló al expulsar",
- "Failed to leave room": "Falló al dejar la sala",
+ "Failed to leave room": "No se pudo salir de la sala",
"Failed to load timeline position": "Falló al cargar el historico",
"Failed to mute user": "Falló al silenciar el usuario",
"Failed to reject invite": "Falló al rechazar invitación",
@@ -176,10 +176,10 @@
"Default Device": "Dispositivo por defecto",
"Microphone": "Micrófono",
"Camera": "Cámara",
- "Hide removed messages": "Ocultar mensajes borrados",
+ "Hide removed messages": "Ocultar mensajes eliminados",
"Alias (optional)": "Alias (opcional)",
"Anyone": "Cualquiera",
- "Click here to join the discussion!": "¡Pulse aquí para unirse a la conversación!",
+ "Click here to join the discussion!": "¡Haz clic aquí para unirte a la discusión!",
"Close": "Cerrar",
"%(count)s new messages|one": "%(count)s mensaje nuevo",
"%(count)s new messages|other": "%(count)s mensajes nuevos",
@@ -195,8 +195,8 @@
"Enable Notifications": "Activar notificaciones",
"Encrypted by a verified device": "Cifrado por un dispositivo verificado",
"Encrypted by an unverified device": "Cifrado por un dispositivo sin verificar",
- "Encryption is enabled in this room": "Cifrado activo en esta sala",
- "Encryption is not enabled in this room": "Cifrado desactivado en esta sala",
+ "Encryption is enabled in this room": "El cifrado está habilitado en esta sala",
+ "Encryption is not enabled in this room": "El cifrado no está habilitado en esta sala",
"Enter passphrase": "Introduzca contraseña",
"Error: Problem communicating with the given homeserver.": "Error: No es posible comunicar con el servidor indicado.",
"Export": "Exportar",
@@ -204,12 +204,12 @@
"Failed to upload profile picture!": "¡Fallo al enviar la foto de perfil!",
"Home": "Inicio",
"Import": "Importar",
- "Incoming call from %(name)s": "Llamada de %(name)s",
+ "Incoming call from %(name)s": "Llamada entrante de %(name)s",
"Incoming video call from %(name)s": "Llamada de vídeo entrante de %(name)s",
"Incoming voice call from %(name)s": "Llamada de voz entrante de %(name)s",
"Incorrect username and/or password.": "Nombre de usuario y/o contraseña incorrectos.",
"Invited": "Invitado",
- "Jump to first unread message.": "Ir al primer mensaje sin leer.",
+ "Jump to first unread message.": "Ir al primer mensaje no leído.",
"Last seen": "Visto por última vez",
"Level:": "Nivel:",
"%(senderName)s made future room history visible to all room members, from the point they are invited.": "%(senderName)s hizo visible el historial futuro de la sala para todos los miembros de la sala, desde el momento en que son invitados.",
@@ -335,7 +335,7 @@
"No users have specific privileges in this room": "Ningún usuario tiene permisos específicos en esta sala",
"OK": "Correcto",
"olm version:": "versión de olm:",
- "Once encryption is enabled for a room it cannot be turned off again (for now)": "Una vez se active el cifrado en esta sala, no podrá ser desactivado (por ahora)",
+ "Once encryption is enabled for a room it cannot be turned off again (for now)": "Una vez que se habilita el cifrado en una sala no se puede volver a desactivar (por ahora)",
"Only people who have been invited": "Solo personas que han sido invitadas",
"Operation failed": "Falló la operación",
"Password": "Contraseña",
@@ -383,15 +383,15 @@
"The email address linked to your account must be entered.": "Debes ingresar la dirección de correo electrónico vinculada a tu cuenta.",
"The file '%(fileName)s' exceeds this home server's size limit for uploads": "El fichero '%(fileName)s' supera el tamaño máximo permitido en este servidor doméstico",
"The file '%(fileName)s' failed to upload": "No se pudo subir '%(fileName)s'",
- "The remote side failed to pick up": "El sitio remoto falló al sincronizar",
+ "The remote side failed to pick up": "El lado remoto no contestó",
"This Home Server does not support login using email address.": "Este Servidor Doméstico no permite identificarse con direcciones e-mail.",
- "This invitation was sent to an email address which is not associated with this account:": "Se envió la invitación a un e-mail no asociado con esta cuenta:",
+ "This invitation was sent to an email address which is not associated with this account:": "Esta invitación fue enviada a una dirección de correo electrónico que no está asociada a esta cuenta:",
"This room has no local addresses": "Esta sala no tiene direcciones locales",
"This room is not recognised.": "Esta sala no se reconoce.",
"These are experimental features that may break in unexpected ways": "Estas son funcionalidades experimentales, podrían fallar de formas imprevistas",
"The visibility of existing history will be unchanged": "La visibilidad del historial previo no se verá afectada",
"This doesn't appear to be a valid email address": "Esto no parece un e-mail váido",
- "This is a preview of this room. Room interactions have been disabled": "Esto es una vista previa de la sala. Las interacciones con la sala están deshabilitadas",
+ "This is a preview of this room. Room interactions have been disabled": "Esta es una vista previa de esta sala. Las interacciones dentro de la sala se han deshabilitado",
"This phone number is already in use": "Este número de teléfono ya se está usando",
"This room": "Esta sala",
"This room is not accessible by remote Matrix servers": "Esta sala no es accesible por otros servidores Matrix",
@@ -432,8 +432,8 @@
"Unable to create widget.": "No se ha podido crear el widget.",
"Unable to remove contact information": "No se ha podido eliminar la información de contacto",
"Unable to verify email address.": "No es posible verificar la dirección de correo electrónico.",
- "Unban": "Revocar bloqueo",
- "Unbans user with given id": "Revoca el bloqueo del usuario con la identificación dada",
+ "Unban": "Quitar Veto",
+ "Unbans user with given id": "Quita el veto al usuario con la ID dada",
"Unable to ascertain that the address this invite was sent to matches one associated with your account.": "No se ha podido asegurar que la dirección a la que se envió esta invitación, coincide con una asociada a su cuenta.",
"Unable to capture screen": "No se ha podido capturar la pantalla",
"Unable to enable Notifications": "No se ha podido activar las notificaciones",
@@ -485,12 +485,12 @@
"Who would you like to communicate with?": "¿Con quién quiere comunicarse?",
"%(senderName)s withdrew %(targetName)s's invitation.": "%(senderName)s retiró la invitación de %(targetName)s.",
"Would you like to accept or decline this invitation?": "¿Quiere aceptar o rechazar esta invitación?",
- "You already have existing direct chats with this user:": "Ya tiene chats directos con este usuario:",
+ "You already have existing direct chats with this user:": "Ya tiene conversaciones directas con este usuario:",
"You are already in a call.": "Ya está participando en una llamada.",
"You are not in this room.": "Usted no está en esta sala.",
"You do not have permission to do that in this room.": "No tiene permiso para hacer esto en esta sala.",
"You're not in any rooms yet! Press to make a room or to browse the directory": "¡Todavía no participa en ninguna sala! Pulsa para crear una sala o para explorar el directorio",
- "You are trying to access %(roomName)s.": "Está tratando de acceder a %(roomName)s.",
+ "You are trying to access %(roomName)s.": "Estás intentando acceder a %(roomName)s.",
"You cannot place a call with yourself.": "No puede iniciar una llamada con usted mismo.",
"Cannot add any more widgets": "no es posible agregar mas widgets",
"Do you want to load widget from URL:": "desea cargar widget desde URL:",
@@ -512,13 +512,13 @@
"You cannot place VoIP calls in this browser.": "No puede realizar llamadas VoIP en este navegador.",
"You do not have permission to post to this room": "no tiene permiso para publicar en esta sala",
"You have been banned from %(roomName)s by %(userName)s.": "Ha sido expulsado de %(roomName)s por %(userName)s.",
- "You have been invited to join this room by %(inviterName)s": "Ha sido invitado a entrar a esta sala por %(inviterName)s",
+ "You have been invited to join this room by %(inviterName)s": "Ha sido invitado por %(inviterName)s a unirte a esta sala",
"You have been kicked from %(roomName)s by %(userName)s.": "Ha sido removido de %(roomName)s por %(userName)s.",
"You have been logged out of all devices and will no longer receive push notifications. To re-enable notifications, sign in again on each device": "Se ha cerrado sesión en todos tus dispositivos y ya no recibirás notificaciones push. Para volver a habilitar las notificaciones, vuelve a iniciar sesión en cada dispositivo",
"You have disabled URL previews by default.": "Ha deshabilitado la vista previa de URL por defecto.",
"You have enabled URL previews by default.": "Ha habilitado vista previa de URL por defecto.",
"You have no visible notifications": "No tiene notificaciones visibles",
- "You may wish to login with a different account, or add this email to this account.": "Puede ingresar con una cuenta diferente, o agregar este e-mail a esta cuenta.",
+ "You may wish to login with a different account, or add this email to this account.": "Quizás quieras iniciar sesión con otra cuenta, o añadir este correo electrónico a esta cuenta.",
"You must register to use this functionality": "Usted debe ser un registrar para usar esta funcionalidad",
"You need to be able to invite users to do that.": "Usted debe ser capaz de invitar usuarios para hacer eso.",
"You need to be logged in.": "Necesita estar autenticado.",
@@ -528,7 +528,7 @@
"Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them": "Su contraseña a sido cambiada exitosamente. No recibirá notificaciones en otros dispositivos hasta que ingrese de nuevo en ellos",
"You seem to be in a call, are you sure you want to quit?": "Parece estar en medio de una llamada, ¿esta seguro que desea salir?",
"You seem to be uploading files, are you sure you want to quit?": "Parece estar cargando archivos, ¿esta seguro que desea salir?",
- "You should not yet trust it to secure data": "No debería confiarle aun para asegurar su información",
+ "You should not yet trust it to secure data": "Aún no deberías confiar en él para proteger tus datos",
"You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "No podrá revertir este cambio ya que esta promoviendo al usuario para tener el mismo nivel de autoridad que usted.",
"Your home server does not support device management.": "Tu servidor doméstico no suporta la gestión de dispositivos.",
"Sun": "Dom",
@@ -559,7 +559,7 @@
"Dec": "Dic",
"Warning": "Advertencia",
"Unpin Message": "Desmarcar Mensaje",
- "Online": "Conectado",
+ "Online": "En línea",
"Submit debug logs": "Enviar registros de depuración",
"The platform you're on": "La plataforma en la que te encuentras",
"The version of Riot.im": "La versión de Riot.im",
@@ -606,7 +606,7 @@
"Send Custom Event": "Enviar Evento Personalizado",
"All notifications are currently disabled for all targets.": "Las notificaciones están deshabilitadas para todos los objetivos.",
"Failed to send logs: ": "Error al enviar registros: ",
- "delete the alias.": "borrar el alias.",
+ "delete the alias.": "eliminar el alias.",
"To return to your account in future you need to set a password": "Para regresar a tu cuenta en el futuro debes establecer una contraseña",
"Forget": "Olvidar",
"World readable": "Legible por todo el mundo",
@@ -623,7 +623,7 @@
"View Decrypted Source": "Ver Fuente Descifrada",
"Failed to update keywords": "Error al actualizar las palabras clave",
"Notes:": "Notas:",
- "remove %(name)s from the directory.": "retirar %(name)s del directorio.",
+ "remove %(name)s from the directory.": "eliminar a %(name)s del directorio.",
"Notifications on the following keywords follow rules which can’t be displayed here:": "Las notificaciones de las siguientes palabras clave siguen reglas que no se pueden mostrar aquí:",
"Safari and Opera work too.": "Safari y Opera también funcionan.",
"Please set a password!": "¡Por favor establece una contraseña!",
@@ -644,21 +644,21 @@
"Enable notifications for this account": "Habilitar notificaciones para esta cuenta",
"Directory": "Directorio",
"Invite to this community": "Invitar a esta comunidad",
- "Search for a room": "Buscar sala",
+ "Search for a room": "Buscar una sala",
"Messages containing keywords": "Mensajes que contienen palabras clave",
"Error saving email notification preferences": "Error al guardar las preferencias de notificación por email",
"Tuesday": "Martes",
"Enter keywords separated by a comma:": "Introduzca palabras clave separadas por una coma:",
"Search…": "Buscar…",
"You have successfully set a password and an email address!": "¡Has establecido una nueva contraseña y dirección de correo electrónico!",
- "Remove %(name)s from the directory?": "¿Retirar %(name)s del directorio?",
+ "Remove %(name)s from the directory?": "¿Eliminar a %(name)s del directorio?",
"Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Riot usa muchas características avanzadas del navegador, algunas de las cuales no están disponibles en su navegador actual.",
"Event sent!": "Evento enviado!",
"Preparing to send logs": "Preparando para enviar registros",
"Enable desktop notifications": "Habilitar notificaciones de escritorio",
"Unnamed room": "Sala sin nombre",
"Explore Account Data": "Explorar Datos de la Cuenta",
- "Remove from Directory": "Retirar del Directorio",
+ "Remove from Directory": "Eliminar del Directorio",
"Saturday": "Sábado",
"Remember, you can always set an email address in user settings if you change your mind.": "Recuerda que si es necesario puedes establecer una dirección de email en las preferencias de usuario.",
"Direct Chat": "Conversación directa",
@@ -702,7 +702,7 @@
"Reply": "Responder",
"Show message in desktop notification": "Mostrar mensaje en la notificación del escritorio",
"Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited and the usernames of other users. They do not contain messages.": "Los registros de depuración contienen datos de uso de la aplicación como nombre de usuario, ID o alias de las salas o grupos que hayas visitado (y nombres de usuario de otros usuarios). No contienen mensajes.",
- "Unhide Preview": "Mostrar vista previa",
+ "Unhide Preview": "Mostrar Vista Previa",
"Unable to join network": "No se puede unir a la red",
"You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "Es posible que los hayas configurado en un cliente que no sea Riot. No puedes ajustarlos en Riot, pero todavía se aplican",
"Sorry, your browser is not able to run Riot.": "¡Lo sentimos! Su navegador no puede ejecutar Riot.",
@@ -814,13 +814,13 @@
"Key share requests are sent to your other devices automatically. If you rejected or dismissed the key share request on your other devices, click here to request the keys for this session again.": "Las solicitudes para compartir la clave se envían a sus otros dispositivos automáticamente. Si rechazó o descartó la solicitud en sus otros dispositivos, pulse aquí para solicitar otra vez las claves durante esta sesión.",
"If your other devices do not have the key for this message you will not be able to decrypt them.": "Si sus otros dispositivos no tienen la clave para este mensaje no podrá descifrarlos.",
"Key request sent.": "Solicitud de clave enviada.",
- "Re-request encryption keys from your other devices.": "Volver a solicitar claves de cifrado de sus otros dispositivos.",
+ "Re-request encryption keys from your other devices.": "Volver a solicitar las claves de cifrado de tus otros dispositivos.",
"Encrypting": "Cifrando",
"Encrypted, not sent": "Cifrado, no enviado",
"Disinvite this user?": "¿Dejar de invitar a este usuario?",
"Kick this user?": "¿Echar a este usuario?",
"Unban this user?": "¿Dejar de bloquear a este usuario?",
- "Ban this user?": "¿Proscribir a este usuario?",
+ "Ban this user?": "¿Vetar a este usuario?",
"Demote yourself?": "¿Degradarse a ud mismo?",
"You will not be able to undo this change as you are demoting yourself, if you are the last privileged user in the room it will be impossible to regain privileges.": "No podrá deshacer este cambio ya que está degradándose a usted mismo, si es el usuario con menos privilegios de la sala le resultará imposible recuperarlos.",
"Demote": "Degradar",
@@ -855,7 +855,7 @@
"%(duration)sm": "%(duration)sm",
"%(duration)sh": "%(duration)sh",
"%(duration)sd": "%(duration)sd",
- "Online for %(duration)s": "En línea para %(duration)s",
+ "Online for %(duration)s": "En línea durante %(duration)s",
"Idle for %(duration)s": "En reposo durante %(duration)s",
"Offline for %(duration)s": "Desconectado durante %(duration)s",
"Unknown for %(duration)s": "Desconocido durante %(duration)s",
@@ -875,7 +875,7 @@
"You have no historical rooms": "No tienes salas históricas",
"You have been kicked from this room by %(userName)s.": "Ha sido echado de esta sala por %(userName)s.",
"You have been banned from this room by %(userName)s.": "Ha sido proscrito de esta sala por %(userName)s.",
- "You are trying to access a room.": "Está intentando acceder a una sala.",
+ "You are trying to access a room.": "Estás intentando acceder a una sala.",
"To change the room's avatar, you must be a": "Para cambiar el avatar de la sala, debe ser un",
"To change the room's name, you must be a": "Para cambiar el nombre de la sala, debe ser un",
"To change the room's main address, you must be a": "Para cambiar la dirección principal de la sala, debe ser un",
@@ -883,7 +883,7 @@
"To change the permissions in the room, you must be a": "Para cambiar los permisos de la sala, debe ser un",
"To change the topic, you must be a": "Para cambiar el tema, debe ser un",
"To modify widgets in the room, you must be a": "Para modificar los widgets de la sala, debe ser un",
- "Banned by %(displayName)s": "Proscrito por %(displayName)s",
+ "Banned by %(displayName)s": "Vetado por %(displayName)s",
"To send messages, you must be a": "Para cambiar mensajes, debe ser un",
"To invite users into the room, you must be a": "Para cambiar usuarios a la sala, debe ser un",
"To configure the room, you must be a": "Para configurar la sala, debe ser un",
@@ -959,7 +959,7 @@
"Filter community members": "Filtrar miembros de la comunidad",
"Flair will appear if enabled in room settings": "La insignia aparecerá si se activa en la configuración de la sala",
"Flair will not appear": "La insignia no aparecerá",
- "Are you sure you want to remove '%(roomName)s' from %(groupId)s?": "¿Está seguro de querer eliminar '%(roomName)s' de %(groupId)s?",
+ "Are you sure you want to remove '%(roomName)s' from %(groupId)s?": "¿Seguro que quieres eliminar a '%(roomName)s' de %(groupId)s?",
"Removing a room from the community will also remove it from the community page.": "Al eliminar una sala de la comunidad también se eliminará de su página.",
"Failed to remove room from community": "Falló la eliminación de la sala de la comunidad",
"Failed to remove '%(roomName)s' from %(groupId)s": "Falló la eliminación de '%(roomName)s' de %(groupId)s",
@@ -1019,13 +1019,13 @@
"was invited %(count)s times|other": "fue invitado %(count)s veces",
"was invited %(count)s times|one": "fue invitado",
"were banned %(count)s times|other": "fue proscrito %(count)s veces",
- "were banned %(count)s times|one": "fueron proscritos",
- "was banned %(count)s times|other": "fue proscrito %(count)s veces",
- "was banned %(count)s times|one": "fue proscrito",
- "were unbanned %(count)s times|other": "fueron proscritos %(count)s veces",
- "were unbanned %(count)s times|one": "dejaron de ser proscritos",
- "was unbanned %(count)s times|other": "dejaron de ser proscritos %(count)s veces",
- "was unbanned %(count)s times|one": "dejó de ser proscrito",
+ "were banned %(count)s times|one": "fueron vetados",
+ "was banned %(count)s times|other": "fue vetado %(count)s veces",
+ "was banned %(count)s times|one": "fue vetado",
+ "were unbanned %(count)s times|other": "les quitaron el veto %(count)s veces",
+ "were unbanned %(count)s times|one": "les quitaron el veto",
+ "was unbanned %(count)s times|other": "se le quitó el veto %(count)s veces",
+ "was unbanned %(count)s times|one": "se le quitó el veto",
"were kicked %(count)s times|other": "fueron echados %(count)s veces",
"were kicked %(count)s times|one": "fueron echados",
"was kicked %(count)s times|other": "fue echado %(count)s veces",
@@ -1121,7 +1121,7 @@
"Which rooms would you like to add to this summary?": "¿Cuáles salas desea agregar a este resumen?",
"Add to summary": "Agregar a resumen",
"Failed to add the following rooms to the summary of %(groupId)s:": "Falló la agregación de las salas siguientes al resumen de %(groupId)s:",
- "Add a Room": "Agregar una sala",
+ "Add a Room": "Agregar una Sala",
"Failed to remove the room from the summary of %(groupId)s": "Falló la eliminación de la sala del resumen de %(groupId)s",
"The room '%(roomName)s' could not be removed from the summary.": "La sala '%(roomName)s' no se pudo eliminar del resumen.",
"Add users to the community summary": "Agregar usuario al resumen de la comunidad",
From 6e795a2d08c46f440493dd7d32df8513fefb5060 Mon Sep 17 00:00:00 2001
From: Kenneth Larsson
Date: Fri, 7 Sep 2018 08:16:17 +0000
Subject: [PATCH 293/343] Translated using Weblate (Swedish)
Currently translated at 99.6% (1247 of 1251 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/sv/
---
src/i18n/strings/sv.json | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/i18n/strings/sv.json b/src/i18n/strings/sv.json
index da167bb4e3..032a50cec6 100644
--- a/src/i18n/strings/sv.json
+++ b/src/i18n/strings/sv.json
@@ -1003,8 +1003,8 @@
"%(oneUser)schanged their name %(count)s times|one": "%(oneUser)sbytte namn",
"%(severalUsers)schanged their avatar %(count)s times|other": "%(severalUsers)sändrade sin avatar %(count)s gånger",
"%(severalUsers)schanged their avatar %(count)s times|one": "%(severalUsers)sändrade sin avatar",
- "%(oneUser)schanged their avatar %(count)s times|other": "%(oneUser)ssändrade sin avatar %(count)s gånger",
- "%(oneUser)schanged their avatar %(count)s times|one": "%(oneUser)ssändrade sin avatar",
+ "%(oneUser)schanged their avatar %(count)s times|other": "%(oneUser)sändrade sin avatar %(count)s gånger",
+ "%(oneUser)schanged their avatar %(count)s times|one": "%(oneUser)sändrade sin avatar",
"%(items)s and %(count)s others|other": "%(items)s och %(count)s andra",
"%(items)s and %(count)s others|one": "%(items)s och en annan",
"collapse": "fäll ihop",
From 603fe4f92b996c73db5a1ee5f1d6a7d2042b588f Mon Sep 17 00:00:00 2001
From: Jeff Huang
Date: Fri, 7 Sep 2018 01:14:20 +0000
Subject: [PATCH 294/343] Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (1252 of 1252 strings)
Translation: Riot Web/matrix-react-sdk
Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/zh_Hant/
---
src/i18n/strings/zh_Hant.json | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/i18n/strings/zh_Hant.json b/src/i18n/strings/zh_Hant.json
index ef2e1df135..a80039de52 100644
--- a/src/i18n/strings/zh_Hant.json
+++ b/src/i18n/strings/zh_Hant.json
@@ -1269,5 +1269,6 @@
"Error Discarding Session": "丟棄工作階段錯誤",
"Registration Required": "需要註冊",
"You need to register to do this. Would you like to register now?": "您必須註冊以繼續。您想要現在註冊嗎?",
- "Unable to query for supported registration methods": "無法查詢支援的註冊方式"
+ "Unable to query for supported registration methods": "無法查詢支援的註冊方式",
+ "Unable to connect to Homeserver. Retrying...": "無法連線到家伺服器。正在重試……"
}
From 73c28f3aaee234106bc76afa2f54a7c97ebc2809 Mon Sep 17 00:00:00 2001
From: David Baker
Date: Fri, 7 Sep 2018 14:23:26 +0100
Subject: [PATCH 295/343] Merge translations from #2157 to release
---
src/i18n/strings/de_DE.json | 4 +-
src/i18n/strings/es.json | 377 ++++++++++++++++++----------------
src/i18n/strings/eu.json | 4 +-
src/i18n/strings/fr.json | 7 +-
src/i18n/strings/hu.json | 7 +-
src/i18n/strings/id.json | 2 +-
src/i18n/strings/it.json | 12 +-
src/i18n/strings/lt.json | 113 +++++++++-
src/i18n/strings/nn.json | 76 +++----
src/i18n/strings/sk.json | 8 +-
src/i18n/strings/sv.json | 4 +-
src/i18n/strings/zh_Hant.json | 8 +-
12 files changed, 391 insertions(+), 231 deletions(-)
diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json
index f50c1180f8..9c4ec3519b 100644
--- a/src/i18n/strings/de_DE.json
+++ b/src/i18n/strings/de_DE.json
@@ -1264,5 +1264,7 @@
"Click here to see older messages.": "Klicke hier um ältere Nachrichten zu sehen.",
"Failed to upgrade room": "Konnte Raum nicht aufrüsten",
"The room upgrade could not be completed": "Die Raum-Aufrüstung konnte nicht fertiggestellt werden",
- "Upgrade this room to version %(version)s": "Diesen Raum zur Version %(version)s aufrüsten"
+ "Upgrade this room to version %(version)s": "Diesen Raum zur Version %(version)s aufrüsten",
+ "Forces the current outbound group session in an encrypted room to be discarded": "Erzwingt, dass die aktuell ausgehende Gruppen-Sitzung in einem verschlüsseltem Raum verworfen wird",
+ "Error Discarding Session": "Sitzung konnte nicht verworfen werden"
}
diff --git a/src/i18n/strings/es.json b/src/i18n/strings/es.json
index 9a23a8368b..24044b5c74 100644
--- a/src/i18n/strings/es.json
+++ b/src/i18n/strings/es.json
@@ -1,10 +1,10 @@
{
"A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "Un mensaje de texto ha sido enviado a +%(msisdn)s. Por favor ingrese el código de verificación que lo contiene",
- "%(targetName)s accepted an invitation.": "%(targetName)s ha aceptado una invitación.",
- "%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s ha aceptado la invitación para %(displayName)s.",
+ "%(targetName)s accepted an invitation.": "%(targetName)s aceptó una invitación.",
+ "%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s aceptó la invitación para %(displayName)s.",
"Account": "Cuenta",
"Access Token:": "Token de Acceso:",
- "Add email address": "Agregar correo eléctronico",
+ "Add email address": "Añadir dirección de correo electrónico",
"Add phone number": "Agregar número telefónico",
"Admin": "Administrador",
"Advanced": "Avanzado",
@@ -15,8 +15,8 @@
"and %(count)s others...|other": "y %(count)s otros...",
"and %(count)s others...|one": "y otro...",
"%(names)s and %(lastPerson)s are typing": "%(names)s y %(lastPerson)s están escribiendo",
- "A new password must be entered.": "Una nueva clave debe ser ingresada.",
- "%(senderName)s answered the call.": "%(senderName)s atendió la llamada.",
+ "A new password must be entered.": "Debes ingresar una nueva contraseña.",
+ "%(senderName)s answered the call.": "%(senderName)s contestó la llamada.",
"An error has occurred.": "Un error ha ocurrido.",
"Anyone who knows the room's link, apart from guests": "Cualquiera que sepa el enlace de la sala, salvo invitados",
"Anyone who knows the room's link, including guests": "Cualquiera que sepa del enlace de la sala, incluyendo los invitados",
@@ -24,26 +24,26 @@
"Are you sure you want to reject the invitation?": "¿Estás seguro que quieres rechazar la invitación?",
"Attachment": "Adjunto",
"Autoplay GIFs and videos": "Reproducir automáticamente GIFs y videos",
- "%(senderName)s banned %(targetName)s.": "%(senderName)s ha bloqueado a %(targetName)s.",
- "Ban": "Bloquear",
- "Banned users": "Usuarios bloqueados",
- "Bans user with given id": "Bloquear usuario por ID",
+ "%(senderName)s banned %(targetName)s.": "%(senderName)s vetó a %(targetName)s.",
+ "Ban": "Vetar",
+ "Banned users": "Usuarios vetados",
+ "Bans user with given id": "Veta al usuario con la ID dada",
"Blacklisted": "En lista negra",
"Bulk Options": "Opciones masivas",
"Call Timeout": "Tiempo de espera de la llamada",
"Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.": "No se puede conectar al servidor via HTTP, cuando es necesario un enlace HTTPS en la barra de direcciones de tu navegador. Ya sea usando HTTPS o habilitando los scripts inseguros.",
"Can't load user settings": "No se puede cargar las configuraciones del usuario",
- "Change Password": "Cambiar clave",
+ "Change Password": "Cambiar Contraseña",
"%(senderName)s changed their profile picture.": "%(senderName)s ha cambiado su foto de perfil.",
"%(senderName)s changed the power level of %(powerLevelDiffText)s.": "%(senderName)s ha cambiado el nivel de acceso de %(powerLevelDiffText)s.",
- "%(senderDisplayName)s changed the room name to %(roomName)s.": "%(senderDisplayName)s ha cambiado el nombre de la sala a %(roomName)s.",
- "%(senderDisplayName)s changed the topic to \"%(topic)s\".": "%(senderDisplayName)s ha cambiado el tema de la sala a \"%(topic)s\".",
+ "%(senderDisplayName)s changed the room name to %(roomName)s.": "%(senderDisplayName)s cambió el nombre de la sala a %(roomName)s.",
+ "%(senderDisplayName)s changed the topic to \"%(topic)s\".": "%(senderDisplayName)s cambió el tema a \"%(topic)s\".",
"Changes to who can read history will only apply to future messages in this room": "Cambios para quien pueda leer el historial solo serán aplicados a futuros mensajes en la sala",
"Changes your display nickname": "Cambia la visualización de tu apodo",
"Changing password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "El cambio de contraseña restablecerá actualmente todas las claves de cifrado de extremo a extremo de todos los dispositivos, haciendo que el historial de chat cifrado sea ilegible, a menos que primero exporte las claves de la habitación y vuelva a importarlas después. En el futuro esto será mejorado.",
"Claimed Ed25519 fingerprint key": "Clave Ed25519 es necesaria",
- "Clear Cache and Reload": "Borrar caché y recargar",
- "Clear Cache": "Borrar caché",
+ "Clear Cache and Reload": "Borrar Caché y Recargar",
+ "Clear Cache": "Borrar Caché",
"Click here to fix": "Haz clic aquí para arreglar",
"Click to mute audio": "Haz clic para silenciar audio",
"Click to mute video": "Haz clic para silenciar video",
@@ -56,8 +56,8 @@
"Conference calling is in development and may not be reliable.": "La llamada en conferencia está en desarrollo y puede no ser fiable.",
"Conference calls are not supported in encrypted rooms": "Las llamadas en conferencia no son soportadas en salas cifradas",
"Conference calls are not supported in this client": "Las llamadas en conferencia no están soportadas en este cliente",
- "Confirm password": "Confirmar clave",
- "Confirm your new password": "Confirma tu nueva clave",
+ "Confirm password": "Confirmar contraseña",
+ "Confirm your new password": "Confirma tu contraseña nueva",
"Continue": "Continuar",
"Could not connect to the integration server": "No se pudo conectar al servidor de integración",
"Create an account": "Crear una cuenta",
@@ -75,7 +75,7 @@
"Default": "Por defecto",
"Device ID": "ID del dispositivo",
"Devices": "Dispositivos",
- "Devices will not yet be able to decrypt history from before they joined the room": "Los dispositivos aun no serán capaces de descifrar el historial antes de haberse unido a la sala",
+ "Devices will not yet be able to decrypt history from before they joined the room": "Los dispositivos todavía no podrán descifrar el historial desde antes de unirse a la sala",
"Direct chats": "Conversaciones directas",
"Disinvite": "Deshacer invitación",
"Display name": "Nombre para mostrar",
@@ -88,12 +88,12 @@
"Email address": "Dirección de correo electrónico",
"Email, name or matrix ID": "Correo electrónico, nombre o Matrix ID",
"Emoji": "Emoticones",
- "Enable encryption": "Habilitar encriptación",
- "Encrypted messages will not be visible on clients that do not yet implement encryption": "Los mensajes encriptados no serán visibles en navegadores que no han implementado aun la encriptación",
+ "Enable encryption": "Habilitar cifrado",
+ "Encrypted messages will not be visible on clients that do not yet implement encryption": "Los mensajes cifrados no serán visibles en los clientes que aún no implementen el cifrado",
"Encrypted room": "Sala encriptada",
- "%(senderName)s ended the call.": "%(senderName)s terminó la llamada.",
+ "%(senderName)s ended the call.": "%(senderName)s finalizó la llamada.",
"End-to-end encryption information": "Información de encriptación de extremo a extremo",
- "End-to-end encryption is in beta and may not be reliable": "El cifrado de extremo a extremo está en pruebas, podría no ser fiable",
+ "End-to-end encryption is in beta and may not be reliable": "El cifrado de extremo a extremo está en beta y puede no ser confiable",
"Enter Code": "Ingresar Código",
"Error": "Error",
"Error decrypting attachment": "Error al descifrar adjunto",
@@ -104,9 +104,9 @@
"Failed to change password. Is your password correct?": "No se pudo cambiar la contraseña. ¿Está usando la correcta?",
"Failed to change power level": "Falló al cambiar de nivel de acceso",
"Failed to forget room %(errCode)s": "Falló al olvidar la sala %(errCode)s",
- "Failed to join room": "Falló al unirse a la sala",
+ "Failed to join room": "No se pudo unir a la sala",
"Failed to kick": "Falló al expulsar",
- "Failed to leave room": "Falló al dejar la sala",
+ "Failed to leave room": "No se pudo salir de la sala",
"Failed to load timeline position": "Falló al cargar el historico",
"Failed to mute user": "Falló al silenciar el usuario",
"Failed to reject invite": "Falló al rechazar invitación",
@@ -120,7 +120,7 @@
"Failed to toggle moderator status": "Falló al cambiar estatus de moderador",
"Failed to unban": "Falló al desbloquear",
"Failed to upload file": "Error en el envío del fichero",
- "Failed to verify email address: make sure you clicked the link in the email": "Falló al verificar el correo electrónico: Asegúrese hacer clic en el enlace del correo",
+ "Failed to verify email address: make sure you clicked the link in the email": "No se pudo verificar la dirección de correo electrónico: asegúrate de hacer clic en el enlace del correo electrónico",
"Failure to create room": "Fallo al crear la sala",
"Favourite": "Favorito",
"Favourites": "Favoritos",
@@ -137,36 +137,36 @@
"Hide Text Formatting Toolbar": "Ocultar barra de herramientas de formato de texto",
"Historical": "Histórico",
"Homeserver is": "El servidor es",
- "Identity Server is": "La identidad del servidor es",
+ "Identity Server is": "El Servidor de Identidad es",
"I have verified my email address": "He verificado mi dirección de correo electrónico",
"Import E2E room keys": "Importar claves E2E de la sala",
"Incorrect verification code": "Verificación de código incorrecta",
"Interface Language": "Idioma de la interfaz",
"Invalid alias format": "Formato de alias inválido",
"Invalid address format": "Formato de dirección inválida",
- "Invalid Email Address": "Dirección de correo electrónico inválida",
+ "Invalid Email Address": "Dirección de Correo Electrónico Inválida",
"Invalid file%(extra)s": "Archivo inválido %(extra)s",
- "%(senderName)s invited %(targetName)s.": "%(senderName)s ha invitado a %(targetName)s.",
+ "%(senderName)s invited %(targetName)s.": "%(senderName)s invitó a %(targetName)s.",
"Invite new room members": "Invitar nuevos miembros a la sala",
- "Invites": "Invitar",
+ "Invites": "Invitaciones",
"Invites user with given id to current room": "Invitar a usuario con ID dado a esta sala",
"'%(alias)s' is not a valid format for an address": "'%(alias)s' no es un formato válido para una dirección",
"'%(alias)s' is not a valid format for an alias": "'%(alias)s' no es un formato válido para un alias",
"%(displayName)s is typing": "%(displayName)s está escribiendo",
"Sign in with": "Quiero iniciar sesión con",
- "Join Room": "Unirte a la sala",
- "%(targetName)s joined the room.": "%(targetName)s se ha unido a la sala.",
+ "Join Room": "Unirse a la Sala",
+ "%(targetName)s joined the room.": "%(targetName)s se unió a la sala.",
"Joins room with given alias": "Unirse a la sala con el alias dado",
- "%(senderName)s kicked %(targetName)s.": "%(senderName)s ha expulsado a %(targetName)s.",
+ "%(senderName)s kicked %(targetName)s.": "%(senderName)s expulsó a %(targetName)s.",
"Kick": "Expulsar",
"Kicks user with given id": "Expulsar usuario con ID dado",
"Labs": "Laboratorios",
- "Leave room": "Dejar sala",
- "%(targetName)s left the room.": "%(targetName)s ha dejado la sala.",
+ "Leave room": "Salir de la sala",
+ "%(targetName)s left the room.": "%(targetName)s salió de la sala.",
"Local addresses for this room:": "Direcciones locales para esta sala:",
"Logged in as:": "Sesión iniciada como:",
"Logout": "Cerrar Sesión",
- "Low priority": "Baja prioridad",
+ "Low priority": "Prioridad baja",
"Accept": "Aceptar",
"Add": "Añadir",
"Admin Tools": "Herramientas de administración",
@@ -176,10 +176,10 @@
"Default Device": "Dispositivo por defecto",
"Microphone": "Micrófono",
"Camera": "Cámara",
- "Hide removed messages": "Ocultar mensajes borrados",
+ "Hide removed messages": "Ocultar mensajes eliminados",
"Alias (optional)": "Alias (opcional)",
"Anyone": "Cualquiera",
- "Click here to join the discussion!": "¡Pulse aquí para unirse a la conversación!",
+ "Click here to join the discussion!": "¡Haz clic aquí para unirte a la discusión!",
"Close": "Cerrar",
"%(count)s new messages|one": "%(count)s mensaje nuevo",
"%(count)s new messages|other": "%(count)s mensajes nuevos",
@@ -190,13 +190,13 @@
"Device already verified!": "¡El dispositivo ya ha sido verificado!",
"Device ID:": "ID del dispositivo:",
"device id: ": "id del dispositvo: ",
- "Disable Notifications": "Desactivar notificaciones",
- "Email address (optional)": "Dirección e-mail (opcional)",
+ "Disable Notifications": "Deshabilitar Notificaciones",
+ "Email address (optional)": "Dirección de correo electrónico (opcional)",
"Enable Notifications": "Activar notificaciones",
"Encrypted by a verified device": "Cifrado por un dispositivo verificado",
"Encrypted by an unverified device": "Cifrado por un dispositivo sin verificar",
- "Encryption is enabled in this room": "Cifrado activo en esta sala",
- "Encryption is not enabled in this room": "Cifrado desactivado en esta sala",
+ "Encryption is enabled in this room": "El cifrado está habilitado en esta sala",
+ "Encryption is not enabled in this room": "El cifrado no está habilitado en esta sala",
"Enter passphrase": "Introduzca contraseña",
"Error: Problem communicating with the given homeserver.": "Error: No es posible comunicar con el servidor indicado.",
"Export": "Exportar",
@@ -204,24 +204,24 @@
"Failed to upload profile picture!": "¡Fallo al enviar la foto de perfil!",
"Home": "Inicio",
"Import": "Importar",
- "Incoming call from %(name)s": "Llamada de %(name)s",
- "Incoming video call from %(name)s": "Video-llamada de %(name)s",
- "Incoming voice call from %(name)s": "Llamada telefónica de %(name)s",
- "Incorrect username and/or password.": "Usuario o contraseña incorrectos.",
+ "Incoming call from %(name)s": "Llamada entrante de %(name)s",
+ "Incoming video call from %(name)s": "Llamada de vídeo entrante de %(name)s",
+ "Incoming voice call from %(name)s": "Llamada de voz entrante de %(name)s",
+ "Incorrect username and/or password.": "Nombre de usuario y/o contraseña incorrectos.",
"Invited": "Invitado",
- "Jump to first unread message.": "Ir al primer mensaje sin leer.",
+ "Jump to first unread message.": "Ir al primer mensaje no leído.",
"Last seen": "Visto por última vez",
"Level:": "Nivel:",
- "%(senderName)s made future room history visible to all room members, from the point they are invited.": "%(senderName)s ha configurado el historial de la sala visible para Todos los miembros de la sala, desde el momento en que son invitados.",
- "%(senderName)s made future room history visible to all room members, from the point they joined.": "%(senderName)s ha configurado el historial de la sala visible para Todos los miembros de la sala, desde el momento en que se han unido.",
- "%(senderName)s made future room history visible to all room members.": "%(senderName)s ha configurado el historial de la sala visible para Todos los miembros de la sala.",
- "%(senderName)s made future room history visible to anyone.": "%(senderName)s ha configurado el historial de la sala visible para nadie.",
- "%(senderName)s made future room history visible to unknown (%(visibility)s).": "%(senderName)s ha configurado el historial de la sala visible para desconocido (%(visibility)s).",
+ "%(senderName)s made future room history visible to all room members, from the point they are invited.": "%(senderName)s hizo visible el historial futuro de la sala para todos los miembros de la sala, desde el momento en que son invitados.",
+ "%(senderName)s made future room history visible to all room members, from the point they joined.": "%(senderName)s hizo visible el historial futuro de la sala para todos los miembros de la sala, desde el momento en que se unieron.",
+ "%(senderName)s made future room history visible to all room members.": "%(senderName)s hizo visible el historial futuro de la sala para todos los miembros de la sala.",
+ "%(senderName)s made future room history visible to anyone.": "%(senderName)s hizo visible el historial futuro de la sala para cualquier persona.",
+ "%(senderName)s made future room history visible to unknown (%(visibility)s).": "%(senderName)s hizo visible el historial futuro de la sala para desconocido (%(visibility)s).",
"Something went wrong!": "¡Algo ha fallado!",
"Please select the destination room for this message": "Por favor, seleccione la sala destino para este mensaje",
"Create new room": "Crear nueva sala",
"Start chat": "Comenzar chat",
- "New Password": "Nueva contraseña",
+ "New Password": "Nueva Contraseña",
"Analytics": "Analíticas",
"Options": "Opciones",
"Passphrases must match": "Las contraseñas deben coincidir",
@@ -232,7 +232,7 @@
"File to import": "Fichero a importar",
"You must join the room to see its files": "Debe unirse a la sala para ver los ficheros",
"Reject all %(invitedRooms)s invites": "Rechazar todas las invitaciones a %(invitedRooms)s",
- "Start new chat": "Iniciar una nueva conversación",
+ "Start new chat": "Iniciar nueva conversación",
"Failed to invite": "Fallo en la invitación",
"Failed to invite user": "No se pudo invitar al usuario",
"Failed to invite the following users to the %(roomName)s room:": "No se pudo invitar a los siguientes usuarios a la sala %(roomName)s:",
@@ -255,13 +255,13 @@
"Save": "Guardar",
"Scroll to bottom of page": "Bajar al final de la página",
"Scroll to unread messages": "Ir al primer mensaje sin leer",
- "Search": "Búsqueda",
+ "Search": "Buscar",
"Search failed": "Falló la búsqueda",
"Seen by %(userName)s at %(dateTime)s": "Visto por %(userName)s el %(dateTime)s",
- "Send anyway": "Enviar igualmente",
- "Sender device information": "Información del dispositivo del remitente",
- "Send Invites": "Enviar invitaciones",
- "Send Reset Email": "Enviar e-mail de reinicio",
+ "Send anyway": "Enviar de todos modos",
+ "Sender device information": "Información del dispositivo emisor",
+ "Send Invites": "Enviar Invitaciones",
+ "Send Reset Email": "Enviar Correo Electrónico de Restauración",
"%(senderDisplayName)s sent an image.": "%(senderDisplayName)s envió una imagen.",
"%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "%(senderName)s invitó a %(targetDisplayName)s a unirse a la sala.",
"Server error": "Error del servidor",
@@ -271,13 +271,13 @@
"Server unavailable, overloaded, or something else went wrong.": "Servidor saturado, desconectado, o alguien ha roto algo.",
"Session ID": "ID de sesión",
"%(senderName)s set a profile picture.": "%(senderName)s puso una foto de perfil.",
- "%(senderName)s set their display name to %(displayName)s.": "%(senderName)s cambió su nombre a %(displayName)s.",
- "Settings": "Configuración",
+ "%(senderName)s set their display name to %(displayName)s.": "%(senderName)s estableció %(displayName)s como su nombre público.",
+ "Settings": "Ajustes",
"Show panel": "Mostrar panel",
"Show Text Formatting Toolbar": "Mostrar la barra de formato de texto",
"Signed Out": "Desconectado",
"Sign in": "Conectar",
- "Sign out": "Desconectar",
+ "Sign out": "Cerrar sesión",
"%(count)s of your messages have not been sent.|other": "Algunos de sus mensajes no han sido enviados.",
"Someone": "Alguien",
"Start a chat": "Iniciar una conversación",
@@ -297,20 +297,20 @@
"Are you sure you want to leave the room '%(roomName)s'?": "¿Está seguro de que desea abandonar la sala '%(roomName)s'?",
"Are you sure you want to upload the following files?": "¿Está seguro que desea enviar los siguientes archivos?",
"Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "No se puede conectar al servidor - compruebe su conexión, asegúrese de que el certificado SSL del servidor es de confiaza, y compruebe que no hay extensiones del navegador bloqueando las peticiones.",
- "%(senderDisplayName)s removed the room name.": "%(senderDisplayName)s ha quitado el nombre de la sala.",
+ "%(senderDisplayName)s removed the room name.": "%(senderDisplayName)s eliminó el nombre de la sala.",
"Device key:": "Clave del dispositivo:",
"Drop File Here": "Deje el fichero aquí",
- "Guest access is disabled on this Home Server.": "El acceso de invitados está desactivado en este servidor.",
- "Join as voice or video.": "Conecte con voz o vídeo.",
+ "Guest access is disabled on this Home Server.": "El acceso de invitados está desactivado en este Servidor Doméstico.",
+ "Join as voice or video.": "Unirse con voz o vídeo.",
"Manage Integrations": "Gestionar integraciones",
- "Markdown is disabled": "Markdown está desactivado",
+ "Markdown is disabled": "Markdown está deshabilitado",
"Markdown is enabled": "Markdown está activado",
"matrix-react-sdk version:": "Versión de matrix-react-sdk:",
"Message not sent due to unknown devices being present": "Mensaje no enviado debido a la presencia de dispositivos desconocidos",
"Missing room_id in request": "Falta el ID de sala en la petición",
"Missing user_id in request": "Falta el ID de usuario en la petición",
- "Mobile phone number": "Número de teléfono móvil",
- "Mobile phone number (optional)": "Número de teléfono móvil (opcional)",
+ "Mobile phone number": "Número telefónico de móvil",
+ "Mobile phone number (optional)": "Número telefónico de móvil (opcional)",
"Moderator": "Moderador",
"Mute": "Silenciar",
"%(serverName)s Matrix ID": "%(serverName)s ID de Matrix",
@@ -331,23 +331,23 @@
"No devices with registered encryption keys": "No hay dispositivos con claves de cifrado registradas",
"No display name": "Sin nombre para mostrar",
"No more results": "No hay más resultados",
- "No results": "Sin resultados",
+ "No results": "No hay resultados",
"No users have specific privileges in this room": "Ningún usuario tiene permisos específicos en esta sala",
"OK": "Correcto",
"olm version:": "versión de olm:",
- "Once encryption is enabled for a room it cannot be turned off again (for now)": "Una vez se active el cifrado en esta sala, no podrá ser desactivado (por ahora)",
- "Only people who have been invited": "Sólo usuarios que han sido invitados",
+ "Once encryption is enabled for a room it cannot be turned off again (for now)": "Una vez que se habilita el cifrado en una sala no se puede volver a desactivar (por ahora)",
+ "Only people who have been invited": "Solo personas que han sido invitadas",
"Operation failed": "Falló la operación",
"Password": "Contraseña",
"Password:": "Contraseña:",
"Passwords can't be empty": "Las contraseñas no pueden estar en blanco",
- "People": "Gente",
+ "People": "Personas",
"Permissions": "Permisos",
"Phone": "Teléfono",
"%(senderName)s placed a %(callType)s call.": "%(senderName)s ha hecho una llamada de tipo %(callType)s.",
"Please check your email and click on the link it contains. Once this is done, click continue.": "Por favor, compruebe su e-mail y pulse el enlace que contiene. Una vez esté hecho, pulse continuar.",
"Power level must be positive integer.": "El nivel debe ser un entero positivo.",
- "Privacy warning": "Alerta de privacidad",
+ "Privacy warning": "Advertencia de privacidad",
"Private Chat": "Conversación privada",
"Privileged Users": "Usuarios con privilegios",
"Profile": "Perfil",
@@ -356,20 +356,20 @@
"Reason: %(reasonText)s": "Razón: %(reasonText)s",
"Revoke Moderator": "Eliminar Moderador",
"Refer a friend to Riot:": "Informar a un amigo sobre Riot:",
- "Register": "Registro",
- "%(targetName)s rejected the invitation.": "%(targetName)s ha rechazado la invitación.",
+ "Register": "Registrar",
+ "%(targetName)s rejected the invitation.": "%(targetName)s rechazó la invitación.",
"Reject invitation": "Rechazar invitación",
"Rejoin": "Volver a unirse",
"Remote addresses for this room:": "Dirección remota de esta sala:",
"Remove Contact Information?": "¿Eliminar información del contacto?",
- "%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName)s ha suprimido su nombre para mostar (%(oldDisplayName)s).",
+ "%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName)s eliminó su nombre público (%(oldDisplayName)s).",
"%(senderName)s removed their profile picture.": "%(senderName)s ha eliminado su foto de perfil.",
"Remove": "Eliminar",
"Remove %(threePid)s?": "¿Eliminar %(threePid)s?",
- "%(senderName)s requested a VoIP conference.": "%(senderName)s ha solicitado una conferencia Voz-IP.",
+ "%(senderName)s requested a VoIP conference.": "%(senderName)s solicitó una conferencia de vozIP.",
"Resetting password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Reiniciar la contraseña también reiniciará las claves de cifrado extremo-a-extremo, haciendo ilegible el historial de las conversaciones, salvo que exporte previamente las claves de sala, y las importe posteriormente. Esto será mejorado en futuras versiones.",
"Results from DuckDuckGo": "Resultados desde DuckDuckGo",
- "Return to login screen": "Volver a la pantalla de inicio de sesión",
+ "Return to login screen": "Regresar a la pantalla de inicio de sesión",
"Riot does not have permission to send you notifications - please check your browser settings": "Riot no tiene permisos para enviarle notificaciones - por favor, revise la configuración del navegador",
"Riot was not given permission to send notifications - please try again": "Riot no pudo obtener permisos para enviar notificaciones - por favor, inténtelo de nuevo",
"riot-web version:": "versión riot-web:",
@@ -378,26 +378,26 @@
"Server may be unavailable or overloaded": "El servidor podría estar saturado o desconectado",
"Show timestamps in 12 hour format (e.g. 2:30pm)": "Mostrar el tiempo en formato 12h (am/pm)",
"The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.": "La clave de firma que usted ha proporcionado coincide con la recibida del dispositivo %(deviceId)s de %(userId)s. Dispositivo verificado.",
- "This email address is already in use": "Dirección e-mail en uso",
+ "This email address is already in use": "Esta dirección de correo electrónico ya está en uso",
"This email address was not found": "Esta dirección de correo electrónico no se encontró",
- "The email address linked to your account must be entered.": "Debe introducir el e-mail asociado a su cuenta.",
- "The file '%(fileName)s' exceeds this home server's size limit for uploads": "El fichero '%(fileName)s' supera el tamaño máximo permitido en este servidor",
+ "The email address linked to your account must be entered.": "Debes ingresar la dirección de correo electrónico vinculada a tu cuenta.",
+ "The file '%(fileName)s' exceeds this home server's size limit for uploads": "El fichero '%(fileName)s' supera el tamaño máximo permitido en este servidor doméstico",
"The file '%(fileName)s' failed to upload": "No se pudo subir '%(fileName)s'",
- "The remote side failed to pick up": "El sitio remoto falló al sincronizar",
- "This Home Server does not support login using email address.": "Este servidor no permite identificarse con direcciones e-mail.",
- "This invitation was sent to an email address which is not associated with this account:": "Se envió la invitación a un e-mail no asociado con esta cuenta:",
+ "The remote side failed to pick up": "El lado remoto no contestó",
+ "This Home Server does not support login using email address.": "Este Servidor Doméstico no permite identificarse con direcciones e-mail.",
+ "This invitation was sent to an email address which is not associated with this account:": "Esta invitación fue enviada a una dirección de correo electrónico que no está asociada a esta cuenta:",
"This room has no local addresses": "Esta sala no tiene direcciones locales",
"This room is not recognised.": "Esta sala no se reconoce.",
"These are experimental features that may break in unexpected ways": "Estas son funcionalidades experimentales, podrían fallar de formas imprevistas",
"The visibility of existing history will be unchanged": "La visibilidad del historial previo no se verá afectada",
"This doesn't appear to be a valid email address": "Esto no parece un e-mail váido",
- "This is a preview of this room. Room interactions have been disabled": "Esto es una vista previa de la sala. Las interacciones con la sala están desactivadas",
+ "This is a preview of this room. Room interactions have been disabled": "Esta es una vista previa de esta sala. Las interacciones dentro de la sala se han deshabilitado",
"This phone number is already in use": "Este número de teléfono ya se está usando",
"This room": "Esta sala",
"This room is not accessible by remote Matrix servers": "Esta sala no es accesible por otros servidores Matrix",
"This room's internal ID is": "El ID interno de la sala es",
"To link to a room it must have an address.": "Para enlazar una sala, debe tener una dirección.",
- "To reset your password, enter the email address linked to your account": "Para reiniciar su contraseña, introduzca el e-mail asociado a su cuenta",
+ "To reset your password, enter the email address linked to your account": "Para restablecer tu contraseña, ingresa la dirección de correo electrónico vinculada a tu cuenta",
"Cancel": "Cancelar",
"Dismiss": "Omitir",
"powered by Matrix": "con el poder de Matrix",
@@ -405,7 +405,7 @@
"Custom Server Options": "Opciones de Servidor Personalizado",
"unknown error code": "Código de error desconocido",
"Start verification": "Comenzar la verificación",
- "Skip": "Saltar",
+ "Skip": "Omitir",
"To return to your account in future you need to set a password": "Para volver a usar su cuenta en el futuro es necesario que establezca una contraseña",
"Share without verifying": "Compartir sin verificar",
"Ignore request": "Ignorar la solicitud",
@@ -427,13 +427,13 @@
"Tried to load a specific point in this room's timeline, but was unable to find it.": "Se ha intentado cargar cierto punto en la cronología de esta sala, pero no se ha podido encontrarlo.",
"Turn Markdown off": "Desactivar markdown",
"Turn Markdown on": "Activar markdown",
- "%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).": "%(senderName)s ha activado el cifrado de extremo-a-extremo (algorithm %(algorithm)s).",
- "Unable to add email address": "No se ha podido añadir la dirección de correo electrónico",
+ "%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).": "%(senderName)s activó el cifrado de extremo a extremo (algoritmo %(algorithm)s).",
+ "Unable to add email address": "No es posible añadir la dirección de correo electrónico",
"Unable to create widget.": "No se ha podido crear el widget.",
"Unable to remove contact information": "No se ha podido eliminar la información de contacto",
- "Unable to verify email address.": "No se ha podido verificar la dirección de correo electrónico.",
- "Unban": "Revocar bloqueo",
- "Unbans user with given id": "Revoca el bloqueo del usuario con la identificación dada",
+ "Unable to verify email address.": "No es posible verificar la dirección de correo electrónico.",
+ "Unban": "Quitar Veto",
+ "Unbans user with given id": "Quita el veto al usuario con la ID dada",
"Unable to ascertain that the address this invite was sent to matches one associated with your account.": "No se ha podido asegurar que la dirección a la que se envió esta invitación, coincide con una asociada a su cuenta.",
"Unable to capture screen": "No se ha podido capturar la pantalla",
"Unable to enable Notifications": "No se ha podido activar las notificaciones",
@@ -470,67 +470,67 @@
"Verified key": "Clave verificada",
"Video call": "Llamada de vídeo",
"Voice call": "Llamada de voz",
- "VoIP conference finished.": "Conferencia VoIP terminada.",
- "VoIP conference started.": "Conferencia de VoIP iniciada.",
+ "VoIP conference finished.": "conferencia de vozIP finalizada.",
+ "VoIP conference started.": "conferencia de vozIP iniciada.",
"VoIP is unsupported": "No hay soporte para VoIP",
"(could not connect media)": "(no se ha podido conectar medio)",
"(no answer)": "(sin respuesta)",
"(unknown failure: %(reason)s)": "(error desconocido: %(reason)s)",
- "(warning: cannot be disabled again!)": "(aviso: ¡no se puede volver a desactivar!)",
+ "(warning: cannot be disabled again!)": "(advertencia: ¡no se puede volver a deshabilitar!)",
"Warning!": "¡Advertencia!",
- "WARNING: Device already verified, but keys do NOT MATCH!": "AVISO: Dispositivo ya verificado, ¡pero las claves NO COINCIDEN!",
+ "WARNING: Device already verified, but keys do NOT MATCH!": "ADVERTENCIA: Dispositivo ya verificado, ¡pero las claves NO COINCIDEN!",
"Who can access this room?": "¿Quién puede acceder a esta sala?",
"Who can read history?": "¿Quién puede leer el historial?",
"Who would you like to add to this room?": "¿A quién quiere añadir a esta sala?",
"Who would you like to communicate with?": "¿Con quién quiere comunicarse?",
- "%(senderName)s withdrew %(targetName)s's invitation.": "%(senderName)s ha retirado la invitación de %(targetName)s.",
+ "%(senderName)s withdrew %(targetName)s's invitation.": "%(senderName)s retiró la invitación de %(targetName)s.",
"Would you like to accept or decline this invitation?": "¿Quiere aceptar o rechazar esta invitación?",
- "You already have existing direct chats with this user:": "Ya tiene chats directos con este usuario:",
+ "You already have existing direct chats with this user:": "Ya tiene conversaciones directas con este usuario:",
"You are already in a call.": "Ya está participando en una llamada.",
"You are not in this room.": "Usted no está en esta sala.",
"You do not have permission to do that in this room.": "No tiene permiso para hacer esto en esta sala.",
"You're not in any rooms yet! Press to make a room or to browse the directory": "¡Todavía no participa en ninguna sala! Pulsa para crear una sala o para explorar el directorio",
- "You are trying to access %(roomName)s.": "Está tratando de acceder a %(roomName)s.",
+ "You are trying to access %(roomName)s.": "Estás intentando acceder a %(roomName)s.",
"You cannot place a call with yourself.": "No puede iniciar una llamada con usted mismo.",
"Cannot add any more widgets": "no es posible agregar mas widgets",
"Do you want to load widget from URL:": "desea cargar widget desde URL:",
"Integrations Error": "error de integracion",
- "Publish this room to the public in %(domain)s's room directory?": "Desea publicar esta sala al publico en el directorio de sala de %(domain)s?",
+ "Publish this room to the public in %(domain)s's room directory?": "Desea publicar esta sala al publico en el directorio de salas de %(domain)s?",
"AM": "AM",
"PM": "PM",
"NOTE: Apps are not end-to-end encrypted": "NOTA: Las Apps no son cifradas de extremo a extremo",
"Revoke widget access": "Revocar acceso del widget",
"The maximum permitted number of widgets have already been added to this room.": "La cantidad máxima de widgets permitida ha sido alcanzada en esta sala.",
"To use it, just wait for autocomplete results to load and tab through them.": "Para usar, solo espere a que carguen los resultados de auto-completar y navegue entre ellos.",
- "%(senderName)s unbanned %(targetName)s.": "%(senderName)s levanto la suspensión de %(targetName)s.",
+ "%(senderName)s unbanned %(targetName)s.": "%(senderName)s le quitó el veto a %(targetName)s.",
"unencrypted": "no cifrado",
"Unmute": "desactivar el silencio",
"Unrecognised command:": "comando no reconocido:",
"Unrecognised room alias:": "alias de sala no reconocido:",
"%(userName)s (power %(powerLevelNumber)s)": "%(userName)s (nivel de permisos %(powerLevelNumber)s)",
- "WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and device %(deviceId)s is \"%(fprint)s\" which does not match the provided key \"%(fingerprint)s\". This could mean your communications are being intercepted!": "Atención: VERIFICACIÓN DE CLAVE FALLO\" La clave de firma para %(userId)s y el dispositivo %(deviceId)s es \"%(fprint)s\" la cual no concuerda con la clave provista por \"%(fingerprint)s\". Esto puede significar que sus comunicaciones están siendo interceptadas!",
+ "WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and device %(deviceId)s is \"%(fprint)s\" which does not match the provided key \"%(fingerprint)s\". This could mean your communications are being intercepted!": "ADVERTENCIA: VERIFICACIÓN DE CLAVE FALLO\" La clave de firma para %(userId)s y el dispositivo %(deviceId)s es \"%(fprint)s\" la cual no concuerda con la clave provista por \"%(fingerprint)s\". Esto puede significar que sus comunicaciones están siendo interceptadas!",
"You cannot place VoIP calls in this browser.": "No puede realizar llamadas VoIP en este navegador.",
"You do not have permission to post to this room": "no tiene permiso para publicar en esta sala",
"You have been banned from %(roomName)s by %(userName)s.": "Ha sido expulsado de %(roomName)s por %(userName)s.",
- "You have been invited to join this room by %(inviterName)s": "Ha sido invitado a entrar a esta sala por %(inviterName)s",
+ "You have been invited to join this room by %(inviterName)s": "Ha sido invitado por %(inviterName)s a unirte a esta sala",
"You have been kicked from %(roomName)s by %(userName)s.": "Ha sido removido de %(roomName)s por %(userName)s.",
- "You have been logged out of all devices and will no longer receive push notifications. To re-enable notifications, sign in again on each device": "Ha sido desconectado de todos los dispositivos y no continuara recibiendo notificaciones. Para volver a habilitar las notificaciones, vuelva a conectarse en cada dispositivo",
+ "You have been logged out of all devices and will no longer receive push notifications. To re-enable notifications, sign in again on each device": "Se ha cerrado sesión en todos tus dispositivos y ya no recibirás notificaciones push. Para volver a habilitar las notificaciones, vuelve a iniciar sesión en cada dispositivo",
"You have disabled URL previews by default.": "Ha deshabilitado la vista previa de URL por defecto.",
"You have enabled URL previews by default.": "Ha habilitado vista previa de URL por defecto.",
"You have no visible notifications": "No tiene notificaciones visibles",
- "You may wish to login with a different account, or add this email to this account.": "Puede ingresar con una cuenta diferente, o agregar este e-mail a esta cuenta.",
+ "You may wish to login with a different account, or add this email to this account.": "Quizás quieras iniciar sesión con otra cuenta, o añadir este correo electrónico a esta cuenta.",
"You must register to use this functionality": "Usted debe ser un registrar para usar esta funcionalidad",
"You need to be able to invite users to do that.": "Usted debe ser capaz de invitar usuarios para hacer eso.",
"You need to be logged in.": "Necesita estar autenticado.",
"You need to enter a user name.": "Tiene que ingresar un nombre de usuario.",
"Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Su correo electrónico parece no estar asociado con una ID de Matrix en este Homeserver.",
- "Your password has been reset": "Su contraseña ha sido restablecida",
+ "Your password has been reset": "Tu contraseña fue restablecida",
"Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them": "Su contraseña a sido cambiada exitosamente. No recibirá notificaciones en otros dispositivos hasta que ingrese de nuevo en ellos",
"You seem to be in a call, are you sure you want to quit?": "Parece estar en medio de una llamada, ¿esta seguro que desea salir?",
"You seem to be uploading files, are you sure you want to quit?": "Parece estar cargando archivos, ¿esta seguro que desea salir?",
- "You should not yet trust it to secure data": "No debería confiarle aun para asegurar su información",
+ "You should not yet trust it to secure data": "Aún no deberías confiar en él para proteger tus datos",
"You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "No podrá revertir este cambio ya que esta promoviendo al usuario para tener el mismo nivel de autoridad que usted.",
- "Your home server does not support device management.": "Su servidor privado no suporta la gestión de dispositivos.",
+ "Your home server does not support device management.": "Tu servidor doméstico no suporta la gestión de dispositivos.",
"Sun": "Dom",
"Mon": "Lun",
"Tue": "Mar",
@@ -559,7 +559,7 @@
"Dec": "Dic",
"Warning": "Advertencia",
"Unpin Message": "Desmarcar Mensaje",
- "Online": "Conectado",
+ "Online": "En línea",
"Submit debug logs": "Enviar registros de depuración",
"The platform you're on": "La plataforma en la que te encuentras",
"The version of Riot.im": "La versión de Riot.im",
@@ -571,7 +571,7 @@
"Drop here to demote": "Suelta aquí para degradar",
"Whether or not you're using the Richtext mode of the Rich Text Editor": "Estés o no usando el modo Richtext del Editor de Texto Enriquecido",
"Who would you like to add to this community?": "¿A quién deseas añadir a esta comunidad?",
- "Warning: any person you add to a community will be publicly visible to anyone who knows the community ID": "Aviso: cualquier persona que añadas a una comunidad será públicamente visible a cualquiera que conozca el ID de la comunidad",
+ "Warning: any person you add to a community will be publicly visible to anyone who knows the community ID": "Advertencia: cualquier persona que añadas a una comunidad será públicamente visible a cualquiera que conozca el ID de la comunidad",
"Invite new community members": "Invita nuevos miembros a la comunidad",
"Name or matrix ID": "Nombre o ID de matrix",
"Invite to Community": "Invitar a la comunidad",
@@ -604,9 +604,9 @@
"Leave": "Salir",
"Uploaded on %(date)s by %(user)s": "Subido el %(date)s por %(user)s",
"Send Custom Event": "Enviar Evento Personalizado",
- "All notifications are currently disabled for all targets.": "Las notificaciones estan desactivadas para todos los objetivos.",
+ "All notifications are currently disabled for all targets.": "Las notificaciones están deshabilitadas para todos los objetivos.",
"Failed to send logs: ": "Error al enviar registros: ",
- "delete the alias.": "borrar el alias.",
+ "delete the alias.": "eliminar el alias.",
"To return to your account in future you need to set a password": "Para regresar a tu cuenta en el futuro debes establecer una contraseña",
"Forget": "Olvidar",
"World readable": "Legible por todo el mundo",
@@ -614,7 +614,7 @@
"You cannot delete this image. (%(code)s)": "No puedes eliminar esta imagen. (%(code)s)",
"Cancel Sending": "Cancelar envío",
"This Room": "Esta sala",
- "The Home Server may be too old to support third party networks": "El Home Server puede ser demasiado antiguo para soportar redes de terceros",
+ "The Home Server may be too old to support third party networks": "El Servidor Doméstico puede ser demasiado antiguo para soportar redes de terceros",
"Resend": "Reenviar",
"Room not found": "Sala no encontrada",
"Messages containing my display name": "Mensajes que contienen mi nombre",
@@ -623,7 +623,7 @@
"View Decrypted Source": "Ver Fuente Descifrada",
"Failed to update keywords": "Error al actualizar las palabras clave",
"Notes:": "Notas:",
- "remove %(name)s from the directory.": "retirar %(name)s del directorio.",
+ "remove %(name)s from the directory.": "eliminar a %(name)s del directorio.",
"Notifications on the following keywords follow rules which can’t be displayed here:": "Las notificaciones de las siguientes palabras clave siguen reglas que no se pueden mostrar aquí:",
"Safari and Opera work too.": "Safari y Opera también funcionan.",
"Please set a password!": "¡Por favor establece una contraseña!",
@@ -636,7 +636,7 @@
"Members": "Miembros",
"No update available.": "No hay actualizaciones disponibles.",
"Noisy": "Ruidoso",
- "Failed to get protocol list from Home Server": "Error al obtener la lista de protocolos desde el Home Server",
+ "Failed to get protocol list from Home Server": "Error al obtener la lista de protocolos desde el Servidor Doméstico",
"Collecting app version information": "Recolectando información de la versión de la aplicación",
"Delete the room alias %(alias)s and remove %(name)s from the directory?": "¿Borrar el alias de la sala %(alias)s y eliminar %(name)s del directorio?",
"This will allow you to return to your account after signing out, and sign in on other devices.": "Esto te permitirá regresar a tu cuenta después de cerrar sesión, así como iniciar sesión en otros dispositivos.",
@@ -644,21 +644,21 @@
"Enable notifications for this account": "Habilitar notificaciones para esta cuenta",
"Directory": "Directorio",
"Invite to this community": "Invitar a esta comunidad",
- "Search for a room": "Buscar sala",
+ "Search for a room": "Buscar una sala",
"Messages containing keywords": "Mensajes que contienen palabras clave",
"Error saving email notification preferences": "Error al guardar las preferencias de notificación por email",
"Tuesday": "Martes",
"Enter keywords separated by a comma:": "Introduzca palabras clave separadas por una coma:",
"Search…": "Buscar…",
"You have successfully set a password and an email address!": "¡Has establecido una nueva contraseña y dirección de correo electrónico!",
- "Remove %(name)s from the directory?": "¿Retirar %(name)s del directorio?",
+ "Remove %(name)s from the directory?": "¿Eliminar a %(name)s del directorio?",
"Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Riot usa muchas características avanzadas del navegador, algunas de las cuales no están disponibles en su navegador actual.",
"Event sent!": "Evento enviado!",
"Preparing to send logs": "Preparando para enviar registros",
"Enable desktop notifications": "Habilitar notificaciones de escritorio",
"Unnamed room": "Sala sin nombre",
"Explore Account Data": "Explorar Datos de la Cuenta",
- "Remove from Directory": "Retirar del Directorio",
+ "Remove from Directory": "Eliminar del Directorio",
"Saturday": "Sábado",
"Remember, you can always set an email address in user settings if you change your mind.": "Recuerda que si es necesario puedes establecer una dirección de email en las preferencias de usuario.",
"Direct Chat": "Conversación directa",
@@ -693,10 +693,10 @@
"Notify for all other messages/rooms": "Notificar para todos los demás mensajes/salas",
"Unable to look up room ID from server": "No se puede buscar el ID de la sala desde el servidor",
"Couldn't find a matching Matrix room": "No se encontró una sala Matrix que coincida",
- "All Rooms": "Todas las salas",
+ "All Rooms": "Todas las Salas",
"You cannot delete this message. (%(code)s)": "No puedes eliminar este mensaje. (%(code)s)",
"Thursday": "Jueves",
- "Forward Message": "Reenviar mensaje",
+ "Forward Message": "Reenviar Mensaje",
"Logs sent": "Registros enviados",
"Back": "Atrás",
"Reply": "Responder",
@@ -710,7 +710,7 @@
"Yesterday": "Ayer",
"Error encountered (%(errorDetail)s).": "Error encontrado (%(errorDetail)s).",
"Login": "Iniciar sesión",
- "Low Priority": "Baja Prioridad",
+ "Low Priority": "Prioridad Baja",
"Riot does not know how to join a room on this network": "Riot no sabe cómo unirse a una sala en esta red",
"Set Password": "Establecer contraseña",
"Enable audible notifications in web client": "Habilitar notificaciones audibles en el cliente web",
@@ -722,7 +722,7 @@
"You can now return to your account after signing out, and sign in on other devices.": "Ahora puedes regresar a tu cuenta después de cerrar tu sesión, e iniciar sesión en otros dispositivos.",
"Enable email notifications": "Habilitar notificaciones por email",
"Event Type": "Tipo de Evento",
- "No rooms to show": "Sin salas para mostrar",
+ "No rooms to show": "No hay salas para mostrar",
"Download this file": "Descargar este archivo",
"Pin Message": "Marcar Mensaje",
"Failed to change settings": "Error al cambiar la configuración",
@@ -773,7 +773,7 @@
"You are no longer ignoring %(userId)s": "Ya no está ignorando a %(userId)s",
"Opens the Developer Tools dialog": "Abre el diálogo de Herramientas de Desarrollador",
"Verifies a user, device, and pubkey tuple": "Verifica a un usuario, dispositivo, y tupla de clave pública",
- "%(oldDisplayName)s changed their display name to %(displayName)s.": "%(oldDisplayName)s cambió su nombre visible a %(displayName)s.",
+ "%(oldDisplayName)s changed their display name to %(displayName)s.": "%(oldDisplayName)s cambió su nombre público a %(displayName)s.",
"%(senderName)s changed the pinned messages for the room.": "%(senderName)s cambió los mensajes con chincheta en la sala.",
"%(widgetName)s widget modified by %(senderName)s": "el widget %(widgetName)s fue modificado por %(senderName)s",
"%(widgetName)s widget added by %(senderName)s": "el widget %(widgetName)s fue agregado por %(senderName)s",
@@ -784,43 +784,43 @@
"Not a valid Riot keyfile": "No es un archivo de claves de Riot válido",
"Message Pinning": "Mensajes con chincheta",
"Jitsi Conference Calling": "Llamadas de conferencia Jitsi",
- "Disable Emoji suggestions while typing": "Desactivar sugerencias de Emoji mientras escribe",
+ "Disable Emoji suggestions while typing": "Deshabilitar sugerencias de Emoji mientras escribe",
"Hide avatar changes": "Ocultar cambios del avatar",
"Hide display name changes": "Ocultar cambios del nombre visible",
"Always show encryption icons": "Mostrar siempre iconos de cifrado",
"Hide avatars in user and room mentions": "Ocultar avatares en las menciones de usuarios y salas",
- "Disable big emoji in chat": "Desactivar emoji grande en la conversación",
+ "Disable big emoji in chat": "Deshabilitar emoji grande en la conversación",
"Automatically replace plain text Emoji": "Sustituir automáticamente Emojis de texto",
"Mirror local video feed": "Clonar transmisión de video local",
- "Disable Community Filter Panel": "Desactivar Panel de Filtro de la Comunidad",
- "Disable Peer-to-Peer for 1:1 calls": "Desactivar pares para llamadas 1:1",
+ "Disable Community Filter Panel": "Deshabilitar Panel de Filtro de la Comunidad",
+ "Disable Peer-to-Peer for 1:1 calls": "Deshabilitar pares para llamadas 1:1",
"Send analytics data": "Enviar información de estadísticas",
"Enable inline URL previews by default": "Activar vistas previas de las URLs por defecto",
"Enable URL previews for this room (only affects you)": "Activar vista previa de URL en esta sala (sólo le afecta a ud.)",
"Enable URL previews by default for participants in this room": "Activar vista previa de URL por defecto para los participantes en esta sala",
"Enable widget screenshots on supported widgets": "Activar capturas de pantalla de widget en los widgets soportados",
"Show empty room list headings": "Mostrar encabezados de listas de sala vacíos",
- "Delete %(count)s devices|other": "Borrar %(count)s dispositivos",
- "Delete %(count)s devices|one": "Borrar dispositivo",
+ "Delete %(count)s devices|other": "Eliminar %(count)s dispositivos",
+ "Delete %(count)s devices|one": "Eliminar dispositivo",
"Select devices": "Seleccionar dispositivos",
"Drop file here to upload": "Soltar aquí el fichero a subir",
" (unsupported)": " (no soportado)",
- "Ongoing conference call%(supportedText)s.": "Llamada de conferencia en curso%(supportedText)s",
+ "Ongoing conference call%(supportedText)s.": "Llamada de conferencia en curso%(supportedText)s.",
"This event could not be displayed": "No se pudo mostrar este evento",
"%(senderName)s sent an image": "%(senderName)s envió una imagen",
- "%(senderName)s sent a video": "%(senderName)s envió un video",
+ "%(senderName)s sent a video": "%(senderName)s envió un vídeo",
"%(senderName)s uploaded a file": "%(senderName)s subió un fichero",
"Your key share request has been sent - please check your other devices for key share requests.": "Se envió su solicitud para compartir la clave - por favor, compruebe sus otros dispositivos para solicitudes de compartir clave.",
"Key share requests are sent to your other devices automatically. If you rejected or dismissed the key share request on your other devices, click here to request the keys for this session again.": "Las solicitudes para compartir la clave se envían a sus otros dispositivos automáticamente. Si rechazó o descartó la solicitud en sus otros dispositivos, pulse aquí para solicitar otra vez las claves durante esta sesión.",
"If your other devices do not have the key for this message you will not be able to decrypt them.": "Si sus otros dispositivos no tienen la clave para este mensaje no podrá descifrarlos.",
"Key request sent.": "Solicitud de clave enviada.",
- "Re-request encryption keys from your other devices.": "Volver a solicitar claves de cifrado de sus otros dispositivos.",
+ "Re-request encryption keys from your other devices.": "Volver a solicitar las claves de cifrado de tus otros dispositivos.",
"Encrypting": "Cifrando",
"Encrypted, not sent": "Cifrado, no enviado",
"Disinvite this user?": "¿Dejar de invitar a este usuario?",
"Kick this user?": "¿Echar a este usuario?",
"Unban this user?": "¿Dejar de bloquear a este usuario?",
- "Ban this user?": "¿Proscribir a este usuario?",
+ "Ban this user?": "¿Vetar a este usuario?",
"Demote yourself?": "¿Degradarse a ud mismo?",
"You will not be able to undo this change as you are demoting yourself, if you are the last privileged user in the room it will be impossible to regain privileges.": "No podrá deshacer este cambio ya que está degradándose a usted mismo, si es el usuario con menos privilegios de la sala le resultará imposible recuperarlos.",
"Demote": "Degradar",
@@ -834,7 +834,7 @@
"Make Moderator": "Convertir en Moderador",
"bold": "negrita",
"italic": "cursiva",
- "deleted": "borrado",
+ "deleted": "eliminado",
"underlined": "subrayado",
"inline-code": "código en línea",
"block-quote": "cita extensa",
@@ -855,7 +855,7 @@
"%(duration)sm": "%(duration)sm",
"%(duration)sh": "%(duration)sh",
"%(duration)sd": "%(duration)sd",
- "Online for %(duration)s": "En línea para %(duration)s",
+ "Online for %(duration)s": "En línea durante %(duration)s",
"Idle for %(duration)s": "En reposo durante %(duration)s",
"Offline for %(duration)s": "Desconectado durante %(duration)s",
"Unknown for %(duration)s": "Desconocido durante %(duration)s",
@@ -872,10 +872,10 @@
"Drop here to tag direct chat": "Soltar aquí para etiquetar la conversación",
"Drop here to restore": "Soltar aquí para restaurar",
"Community Invites": "Invitaciones a comunidades",
- "You have no historical rooms": "No tiene salas en su historial",
+ "You have no historical rooms": "No tienes salas históricas",
"You have been kicked from this room by %(userName)s.": "Ha sido echado de esta sala por %(userName)s.",
"You have been banned from this room by %(userName)s.": "Ha sido proscrito de esta sala por %(userName)s.",
- "You are trying to access a room.": "Está intentando acceder a una sala.",
+ "You are trying to access a room.": "Estás intentando acceder a una sala.",
"To change the room's avatar, you must be a": "Para cambiar el avatar de la sala, debe ser un",
"To change the room's name, you must be a": "Para cambiar el nombre de la sala, debe ser un",
"To change the room's main address, you must be a": "Para cambiar la dirección principal de la sala, debe ser un",
@@ -883,7 +883,7 @@
"To change the permissions in the room, you must be a": "Para cambiar los permisos de la sala, debe ser un",
"To change the topic, you must be a": "Para cambiar el tema, debe ser un",
"To modify widgets in the room, you must be a": "Para modificar los widgets de la sala, debe ser un",
- "Banned by %(displayName)s": "Proscrito por %(displayName)s",
+ "Banned by %(displayName)s": "Vetado por %(displayName)s",
"To send messages, you must be a": "Para cambiar mensajes, debe ser un",
"To invite users into the room, you must be a": "Para cambiar usuarios a la sala, debe ser un",
"To configure the room, you must be a": "Para configurar la sala, debe ser un",
@@ -897,11 +897,11 @@
"Members only (since the point in time of selecting this option)": "Sólo miembros (desde el instante desde que se selecciona esta opción)",
"Members only (since they were invited)": "Sólo miembros (desde que fueron invitados)",
"Members only (since they joined)": "Sólo miembros (desde que se unieron)",
- "You don't currently have any stickerpacks enabled": "En este momento no tiene pegatinas activadas",
- "Add a stickerpack": "Añadir un lote de pegatinas",
- "Stickerpack": "Lote de pegatinas",
- "Hide Stickers": "Ocultar pegatinas",
- "Show Stickers": "Mostrar pegatinas",
+ "You don't currently have any stickerpacks enabled": "Actualmente no tienes ningún paquete de pegatinas habilitado",
+ "Add a stickerpack": "Añadir un paquete de pegatinas",
+ "Stickerpack": "Paquete de pegatinas",
+ "Hide Stickers": "Ocultar Pegatinas",
+ "Show Stickers": "Mostrar Pegatinas",
"Addresses": "Direcciones",
"Invalid community ID": "ID de comunidad no válido",
"'%(groupId)s' is not a valid community ID": "'%(groupId)s' no es un ID de comunidad válido",
@@ -928,13 +928,13 @@
"Message removed by %(userId)s": "Mensaje eliminado por %(userId)s",
"Message removed": "Mensaje eliminado",
"Robot check is currently unavailable on desktop - please use a web browser": "La comprobación de robot no está actualmente disponible en escritorio - por favor, use un navegador Web",
- "This Home Server would like to make sure you are not a robot": "A este Home Server le gustaría asegurarse de que no es un robot",
+ "This Home Server would like to make sure you are not a robot": "Este Servidor Doméstico quiere asegurarse de que no eres un robot",
"Sign in with CAS": "Ingresar con CAS",
- "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.": "Puede usar las opciones personalizadas del servidor para ingresar en otros servidores de Matrix especificando una URL del Home server diferente.",
- "This allows you to use this app with an existing Matrix account on a different home server.": "Esto le permite usar esta aplicación con una cuenta de Matrix ya existente en un home server diferente.",
+ "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.": "Puede usar las opciones personalizadas del servidor para ingresar en otros servidores de Matrix especificando una URL del Servidor Doméstico diferente.",
+ "This allows you to use this app with an existing Matrix account on a different home server.": "Esto le permite usar esta aplicación con una cuenta de Matrix ya existente en un servidor doméstico diferente.",
"You can also set a custom identity server but this will typically prevent interaction with users based on email address.": "Puede también usar un servidor de identidad personalizado, pero esto habitualmente evitará la interacción con usuarios mediante dirección de correo electrónico.",
"An email has been sent to %(emailAddress)s": "Se envió un correo electrónico a %(emailAddress)s",
- "Please check your email to continue registration.": "Por favor compruebe su correo electrónico para continuar con el registro.",
+ "Please check your email to continue registration.": "Por favor consulta tu correo electrónico para continuar con el registro.",
"Token incorrect": "Token incorrecto",
"A text message has been sent to %(msisdn)s": "Se envió un mensaje de texto a %(msisdn)s",
"Please enter the code it contains:": "Por favor introduzca el código que contiene:",
@@ -948,8 +948,8 @@
"You are registering with %(SelectedTeamName)s": "Está registrándose con %(SelectedTeamName)s",
"Default server": "Servidor por defecto",
"Custom server": "Servidor personalizado",
- "Home server URL": "URL del Home server",
- "Identity server URL": "URL del servidor de Identidad",
+ "Home server URL": "URL del servidor doméstico",
+ "Identity server URL": "URL del servidor de identidad",
"What does this mean?": "¿Qué significa esto?",
"Remove from community": "Eliminar de la comunidad",
"Disinvite this user from community?": "¿Quitar como invitado a este usuario de la comunidad?",
@@ -959,7 +959,7 @@
"Filter community members": "Filtrar miembros de la comunidad",
"Flair will appear if enabled in room settings": "La insignia aparecerá si se activa en la configuración de la sala",
"Flair will not appear": "La insignia no aparecerá",
- "Are you sure you want to remove '%(roomName)s' from %(groupId)s?": "¿Está seguro de querer eliminar '%(roomName)s' de %(groupId)s?",
+ "Are you sure you want to remove '%(roomName)s' from %(groupId)s?": "¿Seguro que quieres eliminar a '%(roomName)s' de %(groupId)s?",
"Removing a room from the community will also remove it from the community page.": "Al eliminar una sala de la comunidad también se eliminará de su página.",
"Failed to remove room from community": "Falló la eliminación de la sala de la comunidad",
"Failed to remove '%(roomName)s' from %(groupId)s": "Falló la eliminación de '%(roomName)s' de %(groupId)s",
@@ -976,7 +976,7 @@
"Yes, I want to help!": "¡Sí, quiero ayudar!",
"Unknown Address": "Dirección desconocida",
"Warning: This widget might use cookies.": "Advertencia: Este widget puede usar cookies.",
- "Delete Widget": "Borrar widget",
+ "Delete Widget": "Eliminar Componente",
"Deleting a widget removes it for all users in this room. Are you sure you want to delete this widget?": "Al borrar un widget se elimina para todos usuarios de la sala. ¿Está seguro?",
"Failed to remove widget": "Falló la eliminación del widget",
"An error ocurred whilst trying to remove the widget from the room": "Ocurrió un error mientras se intentaba eliminar el widget de la sala",
@@ -997,7 +997,7 @@
"%(severalUsers)sleft %(count)s times|other": "%(severalUsers)s se fueron %(count)s veces",
"%(severalUsers)sleft %(count)s times|one": "%(severalUsers)s se fueron",
"%(oneUser)sleft %(count)s times|other": "%(oneUser)s se fue %(count)s veces",
- "%(oneUser)sleft %(count)s times|one": "%(oneUser)s se fue",
+ "%(oneUser)sleft %(count)s times|one": "%(oneUser)s salió",
"%(severalUsers)sjoined and left %(count)s times|other": "%(severalUsers)s se unieron y fueron %(count)s veces",
"%(severalUsers)sjoined and left %(count)s times|one": "%(severalUsers)s se unieron y fueron",
"%(oneUser)sjoined and left %(count)s times|other": "%(oneUser)s se unió y fue %(count)s veces",
@@ -1019,13 +1019,13 @@
"was invited %(count)s times|other": "fue invitado %(count)s veces",
"was invited %(count)s times|one": "fue invitado",
"were banned %(count)s times|other": "fue proscrito %(count)s veces",
- "were banned %(count)s times|one": "fueron proscritos",
- "was banned %(count)s times|other": "fue proscrito %(count)s veces",
- "was banned %(count)s times|one": "fue proscrito",
- "were unbanned %(count)s times|other": "fueron proscritos %(count)s veces",
- "were unbanned %(count)s times|one": "dejaron de ser proscritos",
- "was unbanned %(count)s times|other": "dejaron de ser proscritos %(count)s veces",
- "was unbanned %(count)s times|one": "dejó de ser proscrito",
+ "were banned %(count)s times|one": "fueron vetados",
+ "was banned %(count)s times|other": "fue vetado %(count)s veces",
+ "was banned %(count)s times|one": "fue vetado",
+ "were unbanned %(count)s times|other": "les quitaron el veto %(count)s veces",
+ "were unbanned %(count)s times|one": "les quitaron el veto",
+ "was unbanned %(count)s times|other": "se le quitó el veto %(count)s veces",
+ "was unbanned %(count)s times|one": "se le quitó el veto",
"were kicked %(count)s times|other": "fueron echados %(count)s veces",
"were kicked %(count)s times|one": "fueron echados",
"was kicked %(count)s times|other": "fue echado %(count)s veces",
@@ -1070,7 +1070,7 @@
"Create": "Crear",
"Advanced options": "Opciones avanzadas",
"Block users on other matrix homeservers from joining this room": "Impedir que usuarios de otros homeservers se unan a esta sala",
- "This setting cannot be changed later!": "Este ajuste no se puede cambiar posteriormente",
+ "This setting cannot be changed later!": "¡Este ajuste no se puede cambiar más tarde!",
"Failed to indicate account erasure": "Falló la indicación de eliminado de la cuenta",
"This will make your account permanently unusable. You will not be able to log in, and no one will be able to re-register the same user ID. This will cause your account to leave all rooms it is participating in, and it will remove your account details from your identity server. This action is irreversible.": "Una vez realizada esta acción, la cuenta no será posible utilizarla de forma permanente. No podrá ingresar con ella, y nadie será capaz de volver a registrar el mismo ID de usuario. También abandonará todas las salas en las que participaba,y eliminará los detalles del servidor de identidad. Esta acción es irreversible.",
"Deactivating your account does not by default cause us to forget messages you have sent. If you would like us to forget your messages, please tick the box below.": "La desactivación de su cuenta no supone por defecto que los mensajes enviados se olviden. Si así lo desea, por favor, active la caja de selección inferior.",
@@ -1084,14 +1084,14 @@
"Your unverified device '%(displayName)s' is requesting encryption keys.": "Su dispositivo sin verificar '%(displayName)s' está solicitando claves de cifrado.",
"Loading device info...": "Cargando información del dispositivo...",
"Encryption key request": "Solicitud de clave de cifrado",
- "Log out and remove encryption keys?": "¿Salir y eliminar claves de cifrado?",
- "Clear Storage and Sign Out": "Limpiar Almacenamiento y Desconectar",
+ "Log out and remove encryption keys?": "¿Cerrar sesión y eliminar claves de cifrado?",
+ "Clear Storage and Sign Out": "Borrar Almacenamiento y Cerrar Sesión",
"Send Logs": "Enviar Registros",
"Refresh": "Refrescar",
"We encountered an error trying to restore your previous session.": "Encontramos un error al intentar restaurar su sesión anterior.",
"If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.": "Si ha usado anteriormente una versión más reciente de Riot, su sesión puede ser incompatible con ésta. Cierre la ventana y vuelva a la versión más reciente.",
"Clearing your browser's storage may fix the problem, but will sign you out and cause any encrypted chat history to become unreadable.": "Limpiando el almacenamiento del navegador puede arreglar el problema, pero le desconectará y cualquier historial de conversación cifrado se volverá ilegible.",
- "User names may only contain letters, numbers, dots, hyphens and underscores.": "Los nombres de usuario pueden contener letras, números, punto, guiones y subrayado.",
+ "User names may only contain letters, numbers, dots, hyphens and underscores.": "Los nombres de usuario solo pueden contener letras, números, puntos, guiones y guiones bajos.",
"Username not available": "Nombre de usuario no disponible",
"An error occurred: %(error_string)s": "Ocurrió un error: %(error_string)s",
"Username available": "Nombre de usuario disponible",
@@ -1109,7 +1109,7 @@
"\"%(RoomName)s\" contains devices that you haven't seen before.": "\"%(RoomName)s\" contiene dispositivos que no ha visto antes.",
"Unknown devices": "Dispositivos desconocidos",
"Unable to reject invite": "No se pudo rechazar la invitación",
- "Share Message": "Compartir Mensaje",
+ "Share Message": "Compartir mensaje",
"Collapse Reply Thread": "Colapsar Hilo de Respuestas",
"Topic": "Tema",
"Make this room private": "Hacer privada esta sala",
@@ -1127,24 +1127,24 @@
"Add users to the community summary": "Agregar usuario al resumen de la comunidad",
"Who would you like to add to this summary?": "¿A quién le gustaría agregar a este resumen?",
"Failed to add the following users to the summary of %(groupId)s:": "Falló la adición de los usuarios siguientes al resumen de %(groupId)s:",
- "Add a User": "Agregar un Usuario",
+ "Add a User": "Agregar un usuario",
"Failed to remove a user from the summary of %(groupId)s": "Falló la eliminación de un usuario del resumen de %(groupId)s",
"The user '%(displayName)s' could not be removed from the summary.": "No se pudo eliminar al usuario '%(displayName)s' del resumen.",
- "Failed to upload image": "Falló la subida de la imagen",
+ "Failed to upload image": "No se pudo cargar la imagen",
"Failed to update community": "Falló la actualización de la comunidad",
"Unable to accept invite": "No se pudo aceptar la invitación",
"Unable to join community": "No se pudo unir a comunidad",
- "Leave Community": "Abandonar Comunidad",
- "Leave %(groupName)s?": "¿Abandonar %(groupName)s?",
+ "Leave Community": "Salir de la Comunidad",
+ "Leave %(groupName)s?": "¿Salir de %(groupName)s?",
"Unable to leave community": "No se pudo abandonar la comunidad",
- "Community Settings": "Configuración de la Comunidad",
+ "Community Settings": "Ajustes de Comunidad",
"Changes made to your community name and avatar might not be seen by other users for up to 30 minutes.": "Las modificaciones realizadas al nombre y avatar de la comunidad pueden no mostrarse a otros usuarios hasta dentro de 30 minutos.",
"These rooms are displayed to community members on the community page. Community members can join the rooms by clicking on them.": "Estas salas se muestran a los miembros de la comunidad en la página de la misma. Los miembros pueden unirse a las salas pulsando sobre ellas.",
- "Featured Rooms:": "Salas Destacadas:",
- "Featured Users:": "Usuarios Destacados:",
- "%(inviter)s has invited you to join this community": "%(inviter)s le ha invitado a unirse a esta comunidad",
+ "Featured Rooms:": "Salas destacadas:",
+ "Featured Users:": "Usuarios destacados:",
+ "%(inviter)s has invited you to join this community": "%(inviter)s te invitó a unirte a esta comunidad",
"Join this community": "Unirse a esta comunidad",
- "Leave this community": "Abandonar esta comunidad",
+ "Leave this community": "Salir de esta comunidad",
"You are an administrator of this community": "Usted es un administrador de esta comunidad",
"You are a member of this community": "Usted es un miembro de esta comunidad",
"Who can join this community?": "¿Quién puede unirse a esta comunidad?",
@@ -1153,7 +1153,7 @@
"Long Description (HTML)": "Descripción Larga (HTML)",
"Description": "Descripción",
"Community %(groupId)s not found": "No se encontraron %(groupId)s de la comunidad",
- "This Home server does not support communities": "Este Home server no soporta comunidades",
+ "This Home server does not support communities": "Este Servidor Doméstico no soporta comunidades",
"Failed to load %(groupId)s": "Falló la carga de %(groupId)s",
"This room is not public. You will not be able to rejoin without an invite.": "Esta sala no es pública. No podrá volver a unirse sin una invitación.",
"Can't leave Server Notices room": "No puede abandonar la sala Avisos del Servidor",
@@ -1169,18 +1169,18 @@
"Error whilst fetching joined communities": "Se produjo un error al recuperar las comunidades suscritas",
"Create a new community": "Crear una comunidad nueva",
"Create a community to group together users and rooms! Build a custom homepage to mark out your space in the Matrix universe.": "Crear una comunidad para agrupar usuarios y salas. Construye una página de inicio personalizada para destacarla.",
- "Show devices, send anyway or cancel.": "Mostrar dispositivos, enviar de todas formas o cancelar.",
+ "Show devices, send anyway or cancel.": "Mostrar dispositivos, enviar de todos modos o cancelar.",
"You can't send any messages until you review and agree to our terms and conditions.": "No puede enviar ningún mensaje hasta que revise y esté de acuerdo con nuestros términos y condiciones.",
"%(count)s of your messages have not been sent.|one": "No se envió su mensaje.",
"%(count)s Resend all or cancel all now. You can also select individual messages to resend or cancel.|other": "Reenviar todo o cancelar todo ahora. También puede seleccionar mensajes sueltos o reenviar o cancelar.",
- "%(count)s Resend all or cancel all now. You can also select individual messages to resend or cancel.|one": "Reemviar mensaje o cancelar mensaje ahora.",
+ "%(count)s Resend all or cancel all now. You can also select individual messages to resend or cancel.|one": "Reenviar mensaje o cancelar mensaje ahora.",
"Connectivity to the server has been lost.": "Se perdió la conexión con el servidor.",
"Sent messages will be stored until your connection has returned.": "Los mensajes enviados se almacenarán hasta que vuelva su conexión.",
"Active call": "Llamada activa",
"There's no one else here! Would you like to invite others or stop warning about the empty room?": "¡No hay nadie aquí! ¿Le gustaría invitar a otros o dejar de avisar de la sala vacía?",
"Room": "Sala",
- "Clear filter": "Limpiar filtro",
- "Light theme": "Tema ligero",
+ "Clear filter": "Borrar filtro",
+ "Light theme": "Tema claro",
"Dark theme": "Tema oscuro",
"Status.im theme": "Tema Status.im",
"Autocomplete Delay (ms):": "Retraso del completado automático (en ms):",
@@ -1196,7 +1196,7 @@
"Start automatically after system login": "Iniciar automáticamente después de ingresar en el sistema",
"No Audio Outputs detected": "No se detectaron Salidas de Sonido",
"Audio Output": "Salida de Sonido",
- "An email has been sent to %(emailAddress)s. Once you've followed the link it contains, click below.": "Se envió un correo electrónico a %(emailAddress)s. Una vez haya seguido el enlace en él, pulse debajo.",
+ "An email has been sent to %(emailAddress)s. Once you've followed the link it contains, click below.": "Se envió un correo electrónico a %(emailAddress)s. Una vez hayas seguido el enlace que contiene, haz clic a continuación.",
"Please note you are logging into the %(hs)s server, not matrix.org.": "Por favor, tenga en cuenta que está ingresando en el servidor %(hs)s, no en matrix.org.",
"This homeserver doesn't offer any login flows which are supported by this client.": "Este homeserver no ofrece flujos de ingreso soportados por este cliente.",
"Try the app first": "Probar primero la app",
@@ -1206,9 +1206,9 @@
"This server does not support authentication with a phone number.": "Este servidor no soporta autenticación mediante número de teléfono.",
"Missing password.": "Falta la contraseña.",
"Passwords don't match.": "Las contraseñas no coinciden.",
- "Password too short (min %(MIN_PASSWORD_LENGTH)s).": "La contraseña es demasiado corta (mín %(MIN_PASSWORD_LENGTH)s).",
- "This doesn't look like a valid email address.": "Ésta no parece una dirección de correo electrónico válida.",
- "This doesn't look like a valid phone number.": "Éste no parece un número de teléfono válido.",
+ "Password too short (min %(MIN_PASSWORD_LENGTH)s).": "Contraseña demasiado corta (mínimo %(MIN_PASSWORD_LENGTH)s).",
+ "This doesn't look like a valid email address.": "Esto no parece ser una dirección de correo electrónico válida.",
+ "This doesn't look like a valid phone number.": "Esto no parece ser un número telefónico válido.",
"An unknown error occurred.": "Ocurrió un error desconocido.",
"I already have an account": "Ya tengo una cuenta",
"Notify the whole room": "Notificar a toda la sala",
@@ -1239,7 +1239,20 @@
"Your message wasn't sent because this homeserver has exceeded a resource limit. Please contact your service administrator to continue using the service.": "Su mensaje no se envió porque este servidor doméstico ha excedido un límite de recursos. Por favor contacte con su administrador del servicio para continuar usando el servicio.",
"Please contact your service administrator to continue using this service.": "Por favor contacte con su administrador del servicio para continuar usando este servicio.",
"Increase performance by only loading room members on first view": "Incrementar el rendimiento cargando sólo los miembros de la sala en la primera vista",
- "Lazy loading members not supported": "La carga lenta de los miembros no está soportada",
+ "Lazy loading members not supported": "No se admite la carga diferida de miembros",
"Lazy loading is not supported by your current homeserver.": "La carga lenta no está soportada por su servidor doméstico actual.",
- "System Alerts": "Alertas de Sistema"
+ "System Alerts": "Alertas de Sistema",
+ "Forces the current outbound group session in an encrypted room to be discarded": "Obliga a que la sesión de salida grupal actual en una sala cifrada se descarte",
+ "Error Discarding Session": "Error al Descartar la Sesión",
+ "Sorry, your homeserver is too old to participate in this room.": "Lo sentimos, tu servidor doméstico es demasiado antiguo para participar en esta sala.",
+ "Please contact your homeserver administrator.": "Por favor contacta al administrador de tu servidor doméstico.",
+ "This room has been replaced and is no longer active.": "Esta sala ha sido reemplazada y ya no está activa.",
+ "The conversation continues here.": "La conversación continúa aquí.",
+ "Upgrade room to version %(ver)s": "Actualiza la sala a la versión %(ver)s",
+ "This room is a continuation of another conversation.": "Esta sala es la continuación de otra conversación.",
+ "Click here to see older messages.": "Haz clic aquí para ver mensajes más antiguos.",
+ "Failed to upgrade room": "No se pudo actualizar la sala",
+ "The room upgrade could not be completed": "La actualización de la sala no pudo ser completada",
+ "Upgrade this room to version %(version)s": "Actualiza esta sala a la versión %(version)s",
+ "Legal": "Legal"
}
diff --git a/src/i18n/strings/eu.json b/src/i18n/strings/eu.json
index 703602ea9f..888cf66e62 100644
--- a/src/i18n/strings/eu.json
+++ b/src/i18n/strings/eu.json
@@ -1264,5 +1264,7 @@
"Lazy loading members not supported": "Kideen karga alferrerako euskarririk ez",
"Lazy loading is not supported by your current homeserver.": "Zure hasiera zerbitzariak ez du onartzen karga alferra.",
"Legal": "Legezkoa",
- "Please contact your service administrator to continue using this service.": "Jarri kontaktuan zerbitzuaren administratzailearekin zerbitzu hau erabiltzen jarraitzeko."
+ "Please contact your service administrator to continue using this service.": "Jarri kontaktuan zerbitzuaren administratzailearekin zerbitzu hau erabiltzen jarraitzeko.",
+ "Forces the current outbound group session in an encrypted room to be discarded": "Uneko irteerako talde saioa zifratutako gela batean baztertzera behartzen du",
+ "Error Discarding Session": "Errorea saioa baztertzean"
}
diff --git a/src/i18n/strings/fr.json b/src/i18n/strings/fr.json
index 22a61d214c..9d950f2ef1 100644
--- a/src/i18n/strings/fr.json
+++ b/src/i18n/strings/fr.json
@@ -1264,5 +1264,10 @@
"Click here to see older messages.": "Cliquer ici pour voir les vieux messages.",
"Failed to upgrade room": "Échec de la mise à niveau du salon",
"The room upgrade could not be completed": "La mise à niveau du salon n'a pas pu être effectuée",
- "Upgrade this room to version %(version)s": "Mettre à niveau ce salon vers la version %(version)s"
+ "Upgrade this room to version %(version)s": "Mettre à niveau ce salon vers la version %(version)s",
+ "Forces the current outbound group session in an encrypted room to be discarded": "Force la session de groupe sortante actuelle dans un salon chiffré à être rejetée",
+ "Error Discarding Session": "Erreur lors du rejet de la session",
+ "Registration Required": "Enregistrement nécessaire",
+ "You need to register to do this. Would you like to register now?": "Vous devez vous enregistrer pour faire cela. Voulez-vous créer un compte maintenant ?",
+ "Unable to query for supported registration methods": "Impossible de demander les méthodes d'enregistrement prises en charge"
}
diff --git a/src/i18n/strings/hu.json b/src/i18n/strings/hu.json
index 888ad80e17..a88dc6cc28 100644
--- a/src/i18n/strings/hu.json
+++ b/src/i18n/strings/hu.json
@@ -1264,5 +1264,10 @@
"Click here to see older messages.": "Ide kattintva megnézheted a régi üzeneteket.",
"Failed to upgrade room": "A szoba frissítése sikertelen",
"The room upgrade could not be completed": "A szoba frissítését nem sikerült befejezni",
- "Upgrade this room to version %(version)s": "A szoba frissítése %(version)s verzióra"
+ "Upgrade this room to version %(version)s": "A szoba frissítése %(version)s verzióra",
+ "Error Discarding Session": "Hiba a munkamenet törlésénél",
+ "Forces the current outbound group session in an encrypted room to be discarded": "A jelenlegi csoport munkamenet törlését kikényszeríti a titkosított szobában",
+ "Registration Required": "Regisztrációt igényel",
+ "You need to register to do this. Would you like to register now?": "Hogy ezt megtedd regisztrálnod kell. Szeretnél regisztrálni?",
+ "Unable to query for supported registration methods": "A támogatott regisztrációs folyamatok listáját nem sikerült lekérdezni"
}
diff --git a/src/i18n/strings/id.json b/src/i18n/strings/id.json
index 86605c1d41..0c6ee2afe7 100644
--- a/src/i18n/strings/id.json
+++ b/src/i18n/strings/id.json
@@ -151,7 +151,7 @@
"Access Token:": "Token Akses:",
"Active call (%(roomName)s)": "Panggilan aktif (%(roomName)s)",
"Admin": "Admin",
- "Admin Tools": "Alat admin",
+ "Admin Tools": "Peralatan Admin",
"VoIP": "VoIP",
"Missing Media Permissions, click here to request.": "Tidak ada Izin Media, klik disini untuk meminta.",
"No Webcams detected": "Tidak ada Webcam terdeteksi",
diff --git a/src/i18n/strings/it.json b/src/i18n/strings/it.json
index 78ee961578..919d6794eb 100644
--- a/src/i18n/strings/it.json
+++ b/src/i18n/strings/it.json
@@ -1255,5 +1255,15 @@
"Please contact your homeserver administrator.": "Contatta l'amministratore del tuo homeserver.",
"Lazy loading members not supported": "Il caricamento lento dei membri non è supportato",
"Lazy loading is not supported by your current homeserver.": "Il caricamento lento non è supportato dal tuo attuale homeserver.",
- "Legal": "Informazioni legali"
+ "Legal": "Informazioni legali",
+ "Forces the current outbound group session in an encrypted room to be discarded": "Forza l'eliminazione dell'attuale sessione di gruppo in uscita in una stanza criptata",
+ "Error Discarding Session": "Errore nell'eliminazione della sessione",
+ "This room has been replaced and is no longer active.": "Questa stanza è stata sostituita e non è più attiva.",
+ "The conversation continues here.": "La conversazione continua qui.",
+ "Upgrade room to version %(ver)s": "Aggiorna la stanza alla versione %(ver)s",
+ "This room is a continuation of another conversation.": "Questa stanza è la continuazione di un'altra conversazione.",
+ "Click here to see older messages.": "Clicca qui per vedere i messaggi precedenti.",
+ "Failed to upgrade room": "Aggiornamento stanza fallito",
+ "The room upgrade could not be completed": "Non è stato possibile completare l'aggiornamento della stanza",
+ "Upgrade this room to version %(version)s": "Aggiorna questa stanza alla versione %(version)s"
}
diff --git a/src/i18n/strings/lt.json b/src/i18n/strings/lt.json
index 9657109608..b911458438 100644
--- a/src/i18n/strings/lt.json
+++ b/src/i18n/strings/lt.json
@@ -671,5 +671,116 @@
"Offline": "Atsijungęs",
"Failed to set avatar.": "Nepavyko nustatyti avataro.",
"Forget room": "Pamiršti kambarį",
- "Share room": "Bendrinti kambarį"
+ "Share room": "Bendrinti kambarį",
+ "There are unknown devices in this room: if you proceed without verifying them, it will be possible for someone to eavesdrop on your call.": "Šiame kambaryje yra nepatvirtintų įrenginių: jeigu tęsite jų nepatvirtinę, tuomet kas nors galės slapta klausytis jūsų skambučio.",
+ "Usage": "Naudojimas",
+ "Searches DuckDuckGo for results": "Atlieka rezultatų paiešką sistemoje DuckDuckGo",
+ "To use it, just wait for autocomplete results to load and tab through them.": "Norėdami tai naudoti, tiesiog, palaukite, kol bus įkelti automatiškai užbaigti rezultatai, o tuomet, pereikite per juos naudodami Tab klavišą.",
+ "%(targetName)s left the room.": "%(targetName)s išėjo iš kambario.",
+ "%(senderName)s changed the pinned messages for the room.": "%(senderName)s pakeitė prisegtas kambario žinutes.",
+ "Sorry, your homeserver is too old to participate in this room.": "Atleiskite, jūsų namų serveris yra per senas dalyvauti šiame kambaryje.",
+ "Please contact your homeserver administrator.": "Prašome susisiekti su savo namų serverio administratoriumi.",
+ "Enable inline URL previews by default": "Įjungti tiesiogines URL nuorodų peržiūras pagal numatymą",
+ "Enable URL previews for this room (only affects you)": "Įjungti URL nuorodų peržiūras šiame kambaryje (įtakoja tik jus)",
+ "Enable URL previews by default for participants in this room": "Įjungti URL nuorodų peržiūras pagal numatymą dalyviams šiame kambaryje",
+ "Confirm password": "Pakartokite slaptažodį",
+ "Demote yourself?": "Pažeminti save?",
+ "Demote": "Pažeminti",
+ "Share Link to User": "Bendrinti nuorodą su naudotoju",
+ "Direct chats": "Tiesioginiai pokalbiai",
+ "The conversation continues here.": "Pokalbis tęsiasi čia.",
+ "Jump to message": "Pereiti prie žinutės",
+ "Drop here to demote": "Vilkite čia, norėdami pažeminti",
+ "Favourites": "Mėgstami",
+ "This invitation was sent to an email address which is not associated with this account:": "Šis pakvietimas buvo išsiųstas į el. pašto adresą, kuris nėra susietas su šia paskyra:",
+ "You may wish to login with a different account, or add this email to this account.": "Jūs galite pageidauti prisijungti, naudojant kitą paskyrą, arba pridėti šį el. paštą į šią paskyrą.",
+ "You have been kicked from %(roomName)s by %(userName)s.": "%(userName)s išmetė jus iš %(roomName)s.",
+ "You have been kicked from this room by %(userName)s.": "%(userName)s išmetė jus iš šio kambario.",
+ "You have been banned from %(roomName)s by %(userName)s.": "%(userName)s užblokavo jus kambaryje %(roomName)s.",
+ "You have been banned from this room by %(userName)s.": "%(userName)s užblokavo jus šiame kambaryje.",
+ "To change the room's name, you must be a": "Norėdami pakeisti kambario pavadinimą, privalote būti",
+ "To change the room's main address, you must be a": "Norėdami pakeisti pagrindinį kambario adresą, privalote būti",
+ "To change the room's history visibility, you must be a": "Norėdami pakeisti kambario istorijos matomumą, privalote būti",
+ "To change the permissions in the room, you must be a": "Norėdami pakeisti leidimus kambaryje, privalote būti",
+ "To modify widgets in the room, you must be a": "Norėdami modifikuoti valdiklius šiame kambaryje, privalote būti",
+ "The visibility of existing history will be unchanged": "Esamos istorijos matomumas išliks nepakeistas",
+ "End-to-end encryption is in beta and may not be reliable": "Ištisinis šifravimas yra beta versijoje ir gali būti nepatikimas",
+ "You should not yet trust it to secure data": "Kol kas neturėtumėte pasitikėti, kad jis apsaugos jūsų duomenis",
+ "Encryption is enabled in this room": "Šifravimas šiame kambaryje yra įjungtas",
+ "Encryption is not enabled in this room": "Šifravimas šiame kambaryje nėra įjungtas",
+ "To kick users, you must be a": "Norėdami išmesti naudotojus, privalote būti",
+ "To ban users, you must be a": "Norėdami užblokuoti naudotojus, privalote būti",
+ "Banned users": "Užblokuoti naudotojai",
+ "This room is not accessible by remote Matrix servers": "Šis kambarys nėra pasiekiamas nuotoliniams Matrix serveriams",
+ "Who can read history?": "Kas gali skaityti istoriją?",
+ "Room version number: ": "Kambario versijos numeris: ",
+ "There is a known vulnerability affecting this room.": "Yra žinomas pažeidžiamumas, kuris paveikia šį kambarį.",
+ "Only room administrators will see this warning": "Šį įspėjimą matys tik kambario administratoriai",
+ "Remote addresses for this room:": "Nuotoliniai šio kambario adresai:",
+ "You have enabled URL previews by default.": "Jūs esate įjungę URL nuorodų peržiūras pagal numatymą.",
+ "You have disabled URL previews by default.": "Jūs esate išjungę URL nuorodų peržiūras pagal numatymą.",
+ "URL previews are enabled by default for participants in this room.": "URL nuorodų peržiūros yra įjungtos pagal numatymą šio kambario dalyviams.",
+ "URL previews are disabled by default for participants in this room.": "URL nuorodų peržiūros yra išjungtos pagal numatymą šio kambario dalyviams.",
+ "Invalid file%(extra)s": "Neteisingas failas %(extra)s",
+ "This room is a continuation of another conversation.": "Šis kambarys yra kito pokalbio pratęsimas.",
+ "Click here to see older messages.": "Spustelėkite čia, norėdami matyti senesnes žinutes.",
+ "This Home Server would like to make sure you are not a robot": "Šis namų serveris norėtų įsitikinti, kad nesate robotas",
+ "Token incorrect": "Neteisingas prieigos raktas",
+ "Sign in with": "Prisijungti naudojant",
+ "Sign in": "Prisijungti",
+ "If you don't specify an email address, you won't be able to reset your password. Are you sure?": "Jeigu nenurodysite savo el. pašto adreso, negalėsite atstatyti savo slaptažodį. Ar esate tikri?",
+ "Home server URL": "Namų serverio URL",
+ "Identity server URL": "Tapatybės serverio URL",
+ "Please contact your service administrator to continue using the service.": "Norėdami tęsti naudotis paslauga, susisiekite su savo paslaugos administratoriumi.",
+ "Reload widget": "Įkelti valdiklį iš naujo",
+ "Picture": "Paveikslas",
+ "Create new room": "Sukurti naują kambarį",
+ "No results": "Jokių rezultatų",
+ "Delete": "Ištrinti",
+ "%(nameList)s %(transitionList)s": "%(nameList)s %(transitionList)s",
+ "%(oneUser)schanged their name %(count)s times|one": "%(oneUser)s pasikeitė savo vardą",
+ "%(severalUsers)schanged their avatar %(count)s times|one": "%(severalUsers)s pasikeitė savo avatarą",
+ "%(oneUser)schanged their avatar %(count)s times|one": "%(oneUser)s pasikeitė savo avatarą",
+ "collapse": "suskleisti",
+ "expand": "išskleisti",
+ "Room directory": "Kambarių katalogas",
+ "Start chat": "Pradėti pokalbį",
+ "ex. @bob:example.com": "pvz., @jonas:example.com",
+ "Add User": "Pridėti naudotoją",
+ "Matrix ID": "Matrix ID",
+ "email address": "el. pašto adresas",
+ "You have entered an invalid address.": "Įvedėte neteisingą adresą.",
+ "Try using one of the following valid address types: %(validTypesList)s.": "Pabandykite naudoti vieną iš šių teisingų adreso tipų: %(validTypesList)s.",
+ "Logs sent": "Žurnalai išsiųsti",
+ "Failed to send logs: ": "Nepavyko išsiųsti žurnalų: ",
+ "Submit debug logs": "Pateikti derinimo žurnalus",
+ "Start new chat": "Pradėti naują pokalbį",
+ "Click on the button below to start chatting!": "Norėdami pradėti bendravimą, paspauskite ant žemiau esančio mygtuko!",
+ "Create Community": "Sukurti bendruomenę",
+ "Community Name": "Bendruomenės pavadinimas",
+ "Example": "Pavyzdys",
+ "Community ID": "Bendruomenės ID",
+ "example": "pavyzdys",
+ "Create": "Sukurti",
+ "Create Room": "Sukurti kambarį",
+ "Room name (optional)": "Kambario pavadinimas (nebūtina)",
+ "Advanced options": "Išplėstiniai parametrai",
+ "This setting cannot be changed later!": "Šio nustatymo vėliau nebeįmanoma bus pakeisti!",
+ "Unknown error": "Nežinoma klaida",
+ "Incorrect password": "Neteisingas slaptažodis",
+ "To continue, please enter your password:": "Norėdami tęsti, įveskite savo slaptažodį:",
+ "password": "slaptažodis",
+ "Device name": "Įrenginio pavadinimas",
+ "Device key": "Įrenginio raktas",
+ "An error has occurred.": "Įvyko klaida.",
+ "Ignore request": "Nepaisyti užklausos",
+ "Loading device info...": "Įkeliama įrenginio informacija...",
+ "Failed to upgrade room": "Nepavyko atnaujinti kambarį",
+ "The room upgrade could not be completed": "Nepavyko užbaigti kambario naujinimo",
+ "Sign out": "Atsijungti",
+ "Log out and remove encryption keys?": "Atsijungti ir pašalinti šifravimo raktus?",
+ "Send Logs": "Siųsti žurnalus",
+ "Refresh": "Įkelti iš naujo",
+ "Unable to restore session": "Nepavyko atkurti seanso",
+ "Invalid Email Address": "Neteisingas el. pašto adresas"
}
diff --git a/src/i18n/strings/nn.json b/src/i18n/strings/nn.json
index c1174dcd5a..dcbdb9977c 100644
--- a/src/i18n/strings/nn.json
+++ b/src/i18n/strings/nn.json
@@ -69,15 +69,15 @@
"Riot does not have permission to send you notifications - please check your browser settings": "Riot har ikkje tillating til å senda deg varsel - ver venleg og sjekk nettlesarinnstillingane dine",
"Riot was not given permission to send notifications - please try again": "Riot fekk ikkje tillating til å senda varsel - ver venleg og prøv igjen",
"Unable to enable Notifications": "Klarte ikkje å skru på Varsel",
- "This email address was not found": "Denne emailadressa var ikkje funne",
- "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Emailadressa di ser ikkje ut til å vera tilknytta ein Matrix-ID på denne heimtenaren.",
+ "This email address was not found": "Denne epostadressa var ikkje funnen",
+ "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Epostadressa di ser ikkje ut til å vera tilknytta ein Matrix-ID på denne heimtenaren.",
"Default": "Utgangspunktinnstilling",
"Restricted": "Avgrensa",
"Moderator": "Moderator",
"Admin": "Administrator",
"Start a chat": "Start ei samtale",
"Who would you like to communicate with?": "Kven vil du koma i kontakt med?",
- "Email, name or matrix ID": "Email, namn eller Matrix-ID",
+ "Email, name or matrix ID": "Epost, namn eller Matrix-ID",
"Start Chat": "Start ei Samtale",
"Invite new room members": "Byd nye rommedlemer inn",
"Who would you like to add to this room?": "Kven vil du leggja til i rommet?",
@@ -120,9 +120,9 @@
"Unignored user": "Avoversedd brukar",
"You are no longer ignoring %(userId)s": "Du overser ikkje %(userId)s no lenger",
"Define the power level of a user": "Set ein brukar si makthøgd",
- "This email address is already in use": "Denne emailadressa er allereie i bruk",
+ "This email address is already in use": "Denne epostadressa er allereie i bruk",
"The platform you're on": "Platformen du er på",
- "Failed to verify email address: make sure you clicked the link in the email": "Fekk ikkje til å stadfesta emailadressa: sjå til at du klikka på den rette lenkja i emailen",
+ "Failed to verify email address: make sure you clicked the link in the email": "Fekk ikkje til å stadfesta epostadressa: sjå til at du klikka på den rette lenkja i eposten",
"Your identity server's URL": "Din identitetstenar si nettadresse",
"Every page you use in the app": "Alle sider du brukar i æppen",
"e.g. ": "t.d. ",
@@ -262,7 +262,7 @@
"Passwords can't be empty": "Passordsfelta kan ikkje vera tomme",
"Warning!": "Åtvaring!",
"Continue": "Gå fram",
- "Do you want to set an email address?": "Vil du setja ei emailadresse?",
+ "Do you want to set an email address?": "Vil du setja ei epostadresse?",
"Current password": "Noverande passord",
"Password": "Passord",
"New Password": "Nytt Passord",
@@ -278,8 +278,8 @@
"Last seen": "Sist sedd",
"Select devices": "Vel einingar",
"Failed to set display name": "Fekk ikkje til å setja visingsnamn",
- "Error saving email notification preferences": "Klarte ikkje å lagra foretrukne emailvarselinnstillingar",
- "An error occurred whilst saving your email notification preferences.": "Noko gjekk gale med lagringa av dine foretrukne emailvarselinstillingar.",
+ "Error saving email notification preferences": "Klarte ikkje å lagra foretrukne epostvarselinnstillingar",
+ "An error occurred whilst saving your email notification preferences.": "Noko gjekk gale med lagringa av dine foretrukne epostvarselinstillingar.",
"Keywords": "Nykelord",
"Enter keywords separated by a comma:": "Skriv inn nykelord med komma imellom:",
"OK": "Greitt",
@@ -291,8 +291,8 @@
"Notify me for anything else": "Varsl meg for kva som helst anna",
"Enable notifications for this account": "Skru varsel på for denne brukaren",
"All notifications are currently disabled for all targets.": "Alle varsel er for augeblunket skrudd av for alle mål.",
- "Add an email address above to configure email notifications": "Legg til ein emailadresse i feltet over for å endra emailvarselinnstillingar",
- "Enable email notifications": "Skru emailvarsel på",
+ "Add an email address above to configure email notifications": "Legg til ein epostadresse i feltet over for å endra epostvarselinnstillingar",
+ "Enable email notifications": "Skru epostvarsel på",
"Notifications on the following keywords follow rules which can’t be displayed here:": "Varsel på fylgjande nykelord følgjer reglar som ikkje kan visast her:",
"Unable to fetch notification target list": "Klarte ikkje å henta varselmållista",
"Notification targets": "Varselmål",
@@ -451,8 +451,8 @@
"You have no historical rooms": "Du har inkje historiske rom",
"Historical": "Historiske",
"Unable to ascertain that the address this invite was sent to matches one associated with your account.": "Klarte ikkje å forsikra at adressa som denne innbydinga er send til samsvarar med den som er tilknytta brukaren din.",
- "This invitation was sent to an email address which is not associated with this account:": "Denne invitasjonen er send til ei emailadressa som ikkje er tilknytta denne brukaren:",
- "You may wish to login with a different account, or add this email to this account.": "Kanskje du ynskjer å logga inn med ein anna brukar, eller leggja til denne emailen til denne brukaren.",
+ "This invitation was sent to an email address which is not associated with this account:": "Denne invitasjonen er send til ei epostadressa som ikkje er tilknytta denne brukaren:",
+ "You may wish to login with a different account, or add this email to this account.": "Kanskje du ynskjer å logga inn med ein annan brukar, eller leggja til denne eposten til denne brukaren.",
"You have been invited to join this room by %(inviterName)s": "Du vart boden inn i dette rommet av %(inviterName)s",
"Would you like to accept or decline this invitation?": "Vil du seia ja eller nei til denne innbydinga?",
"Reason: %(reasonText)s": "Grunnlag: %(reasonText)s",
@@ -587,18 +587,18 @@
"This Home Server would like to make sure you are not a robot": "Denne heimtenaren ynskjer å forsikra seg om at du ikkje er ein robot",
"Sign in with CAS": "Logg inn med CAS",
"This allows you to use this app with an existing Matrix account on a different home server.": "Dette tillèt deg å bruka denne æppen med ein Matrixbrukar som allereie finst på ein annan heimtenar.",
- "You can also set a custom identity server but this will typically prevent interaction with users based on email address.": "Du kan i tillegg setja ein eigen identitetstenar, men dette hindrar som regel samhandling med brukarar som brukar emailadresse.",
+ "You can also set a custom identity server but this will typically prevent interaction with users based on email address.": "Du kan i tillegg setja ein eigen identitetstenar, men dette hindrar som regel samhandling med brukarar som brukar epostadresse.",
"Dismiss": "Avvis",
"To continue, please enter your password.": "For å gå fram, ver venleg og skriv passordet ditt inn.",
"Password:": "Passord:",
- "An email has been sent to %(emailAddress)s": "En email vart send til %(emailAddress)s",
- "Please check your email to continue registration.": "Ver venleg og sjekk emailen din for å gå vidare med påmeldinga.",
+ "An email has been sent to %(emailAddress)s": "En epost vart send til %(emailAddress)s",
+ "Please check your email to continue registration.": "Ver venleg og sjekk eposten din for å gå vidare med påmeldinga.",
"A text message has been sent to %(msisdn)s": "Ei tekstmelding vart send til %(msisdn)s",
"Please enter the code it contains:": "Ver venleg og skriv koden den inneheld inn:",
"Code": "Kode",
"Start authentication": "Byrj godkjenning",
"powered by Matrix": "Matrixdriven",
- "The email field must not be blank.": "Emailfeltet kan ikkje vera tomt.",
+ "The email field must not be blank.": "Epostfeltet kan ikkje vera tomt.",
"The user name field must not be blank.": "Brukarnamnfeltet kan ikkje vera tomt.",
"The phone number field must not be blank.": "Telefonnummerfeltet kan ikkje vera tomt.",
"The password field must not be blank.": "Passordfeltet kan ikkje vera tomt.",
@@ -608,10 +608,10 @@
"Forgot your password?": "Gløymt passordet ditt?",
"%(serverName)s Matrix ID": "%(serverName)s Matrix-ID",
"Sign in with": "Logg inn med",
- "Email address": "Emailadresse",
+ "Email address": "Epostadresse",
"Sign in": "Logg inn",
- "If you don't specify an email address, you won't be able to reset your password. Are you sure?": "Viss du ikkje seier kva emailadresse du vil bruka vil du ikkje kunna attendestille passordet ditt. Er du sikker?",
- "Email address (optional)": "Emailadresse (valfritt)",
+ "If you don't specify an email address, you won't be able to reset your password. Are you sure?": "Viss du ikkje seier kva epostadresse du vil bruka vil du ikkje kunna attendestille passordet ditt. Er du sikker?",
+ "Email address (optional)": "Epostadresse (valfritt)",
"You are registering with %(SelectedTeamName)s": "Du melder deg inn med %(SelectedTeamName)s",
"Mobile phone number (optional)": "Mobiltelefonnummer (valfritt)",
"Register": "Meld deg inn",
@@ -738,7 +738,7 @@
"Add User": "Legg Brukar til",
"Matrix ID": "Matrix-ID",
"Matrix Room ID": "Matrixrom-ID",
- "email address": "emailadresse",
+ "email address": "epostadresse",
"You have entered an invalid address.": "Du har skrive ei ugangbar adresse inn.",
"Try using one of the following valid address types: %(validTypesList)s.": "Prøv å bruka ein av dei fylgjande gangbare adressesortane: %(validTypesList)s.",
"Preparing to send logs": "Førebur loggsending",
@@ -781,7 +781,7 @@
"This will make your account permanently unusable. You will not be able to log in, and no one will be able to re-register the same user ID. This will cause your account to leave all rooms it is participating in, and it will remove your account details from your identity server. This action is irreversible.": "Dette gjer at brukaren din vert ubrukeleg til evig tid. Du kjem ikkje til å kunna logga inn, og ingen andre kjem til å kunna melde seg inn med den gamle brukar-IDen din. Brukaren din forlét òg alle rom han er i, og brukardetaljane dine vil verta fjerna frå identitetstenaren. Denne handlinga kan ikkje gjerast om.",
"Deactivate Account": "Avliv Brukaren",
"Deactivating your account does not by default cause us to forget messages you have sent. If you would like us to forget your messages, please tick the box below.": "Å avliva brukaren din gjer i utgangspunktet ikkje at vi gløymer meldingane du har send. Viss du vil at vi skal gløyma meldingane dine, ver venleg og kryss av i firkanten under.",
- "Message visibility in Matrix is similar to email. Our forgetting your messages means that messages you have sent will not be shared with any new or unregistered users, but registered users who already have access to these messages will still have access to their copy.": "Meldingssynlegheit på Matrix liknar på email. At vi gløymer meldingane dine tyder at meldingar du har send ikkje vil verta delt med nye, ikkje-innmeldte brukarar, men brukare som er meldt på som allereie har tilgang til desse meldingane vil fortsatt kunne sjå kopien deira.",
+ "Message visibility in Matrix is similar to email. Our forgetting your messages means that messages you have sent will not be shared with any new or unregistered users, but registered users who already have access to these messages will still have access to their copy.": "Meldingssynlegheit på Matrix liknar på epost. At vi gløymer meldingane dine tyder at meldingar du har send ikkje vil verta delt med nye, ikkje-innmeldte brukarar, men brukare som er meldt på som allereie har tilgang til desse meldingane vil fortsatt kunne sjå kopien deira.",
"Please forget all messages I have sent when my account is deactivated (Warning: this will cause future users to see an incomplete view of conversations)": "Ver venleg og gløym alle meldingane eg har send når brukaren min vert avliven (Åtvaring: dette gjer at framtidige brukarar ikkje fær eit fullstendig oversyn av samtalene)",
"To continue, please enter your password:": "For å gå fram, ver venleg og skriv passordet ditt inn:",
"password": "passord",
@@ -817,12 +817,12 @@
"We encountered an error trying to restore your previous session.": "Noko gjekk gale med framhentinga av den førre øykta di.",
"If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.": "Viss du har bruka ei nyare utgåve av Riot før, kan det henda at øykta di ikkje passar inn i denne utgåva. Lukk dette vindauget og gå attende til den nyare utgåva.",
"Clearing your browser's storage may fix the problem, but will sign you out and cause any encrypted chat history to become unreadable.": "Det kan henda at å tømma nettlesarlageret rettar opp i det, men det loggar deg ut og kan gjera den krypterte pratehistoria uleseleg.",
- "Invalid Email Address": "Ugangbar Emailadresse",
- "This doesn't appear to be a valid email address": "Det ser ikkje ut til at emailadressa er gangbar",
+ "Invalid Email Address": "Ugangbar Epostadresse",
+ "This doesn't appear to be a valid email address": "Det ser ikkje ut til at epostadressa er gangbar",
"Verification Pending": "Ventar på Godkjenning",
- "Please check your email and click on the link it contains. Once this is done, click continue.": "Ver venleg og sjekk emailen din og klikk på lenkja du har fått. Når det er gjort, klikk gå fram.",
- "Unable to add email address": "Klarte ikkje å leggja emailadressa til",
- "Unable to verify email address.": "Klarte ikkje å stadfesta emailadressa.",
+ "Please check your email and click on the link it contains. Once this is done, click continue.": "Ver venleg og sjekk eposten din og klikk på lenkja du har fått. Når det er gjort, klikk gå fram.",
+ "Unable to add email address": "Klarte ikkje å leggja epostadressa til",
+ "Unable to verify email address.": "Klarte ikkje å stadfesta epostadressa.",
"This will allow you to reset your password and receive notifications.": "Dette tillèt deg å attendestilla passordet ditt og å få varsel.",
"Skip": "Hopp over",
"User names may only contain letters, numbers, dots, hyphens and underscores.": "Brukarnamn kan berre innehalda bokstavar, tal, prikkar, bindestrek og understrek.",
@@ -834,9 +834,9 @@
"This will be your account name on the homeserver, or you can pick a different server.": "Dette vert brukarnamnet ditt på heimtenaren, elles so kan du velja ein annan tenar.",
"If you already have a Matrix account you can log in instead.": "Viss du har ein Matrixbrukar allereie kan du logga på i staden.",
"You have successfully set a password!": "Du sette passordet ditt!",
- "You have successfully set a password and an email address!": "Du sette passordet og emailadressa di!",
+ "You have successfully set a password and an email address!": "Du sette passordet og epostadressa di!",
"You can now return to your account after signing out, and sign in on other devices.": "Du kan no gå attende til brukaren din etter å ha logga ut, og logga inn på andre einingar.",
- "Remember, you can always set an email address in user settings if you change your mind.": "Hugs at du alltid kan setja ei emailadresse i brukarinnstillingar viss du skiftar meining.",
+ "Remember, you can always set an email address in user settings if you change your mind.": "Hugs at du alltid kan setja ei epostadresse i brukarinnstillingar viss du skiftar meining.",
"Failed to change password. Is your password correct?": "Fekk ikkje til å skifta passord. Er passordet rett?",
"(HTTP status %(httpStatus)s)": "(HTTP-tilstand %(httpStatus)s)",
"Please set a password!": "Ver venleg og set eit passord!",
@@ -1059,8 +1059,8 @@
"Microphone": "Ljodopptaking",
"Camera": "Kamera",
"VoIP": "VoIP",
- "Email": "Email",
- "Add email address": "Legg emailadresse til",
+ "Email": "Epost",
+ "Add email address": "Legg epostadresse til",
"Display name": "Visingsnamn",
"Account": "Brukar",
"To return to your account in future you need to set a password": "For å kunna koma attende til brukaren din i framtida må du setja eit passord",
@@ -1071,21 +1071,21 @@
"matrix-react-sdk version:": "matrix-react-sdk-utgåve:",
"riot-web version:": "riot-web-utgåve:",
"olm version:": "olm-utgåve:",
- "Failed to send email": "Fekk ikkje til å senda emailen",
- "The email address linked to your account must be entered.": "Du må skriva emailadressa som er tilknytta brukaren din inn.",
+ "Failed to send email": "Fekk ikkje til å senda eposten",
+ "The email address linked to your account must be entered.": "Du må skriva epostadressa som er tilknytta brukaren din inn.",
"A new password must be entered.": "Du må skriva eit nytt passord inn.",
"New passwords must match each other.": "Dei nye passorda må vera like.",
- "An email has been sent to %(emailAddress)s. Once you've followed the link it contains, click below.": "Ein email vert send til %(emailAddress)s. Når du har far fylgd lenkja i den, klikk under.",
- "I have verified my email address": "Eg har godkjend emailadressa mi",
+ "An email has been sent to %(emailAddress)s. Once you've followed the link it contains, click below.": "Ein epost vart send til %(emailAddress)s. Når du har far fylgd lenkja i den, klikk under.",
+ "I have verified my email address": "Eg har godkjend epostadressa mi",
"Your password has been reset": "Passordet ditt vart attendesett",
"You have been logged out of all devices and will no longer receive push notifications. To re-enable notifications, sign in again on each device": "Du vart logga av alle einingar og får ikkje lenger pushvarsel. For å skru varsel på att, logg inn igjen på kvar eining",
"Return to login screen": "Gå attende til innlogging",
- "To reset your password, enter the email address linked to your account": "For å attendestilla passordet ditt, skriv emailadressa som er lenkja til brukaren din inn",
+ "To reset your password, enter the email address linked to your account": "For å attendestilla passordet ditt, skriv epostadressa som er lenkja til brukaren din inn",
"New password": "Nytt passord",
"Confirm your new password": "Stadfest det nye passordet ditt",
- "Send Reset Email": "Send attendestillingsemail",
+ "Send Reset Email": "Send attendestillingsepost",
"Create an account": "Lag ein brukar",
- "This Home Server does not support login using email address.": "Denne Heimtenaren støttar ikkje innlogging med email.",
+ "This Home Server does not support login using email address.": "Denne Heimtenaren støttar ikkje innlogging med epost.",
"Please contact your service administrator to continue using this service.": "Ver venleg og kontakt din tenesteadministrator for å halda fram med å bruka tenesten.",
"Incorrect username and/or password.": "Urett brukarnamn og/eller passord.",
"Please note you are logging into the %(hs)s server, not matrix.org.": "Merk deg at du loggar inn på %(hs)s-tenaren, ikkje matrix.org.",
@@ -1103,7 +1103,7 @@
"Missing password.": "Vantande passord.",
"Passwords don't match.": "Passorda er ikkje like.",
"Password too short (min %(MIN_PASSWORD_LENGTH)s).": "Passordet er for kort (i det minste %(MIN_PASSWORD_LENGTH)s).",
- "This doesn't look like a valid email address.": "Dette ser ikkje ut som ei gangbar emailadresse.",
+ "This doesn't look like a valid email address.": "Dette ser ikkje ut som ei gangbar epostadresse.",
"This doesn't look like a valid phone number.": "Dette ser ikkje ut som eit gangbart telefonnummer.",
"You need to enter a user name.": "Du må skriva eit brukarnamn inn.",
"An unknown error occurred.": "Noko ukjend gjekk gale.",
diff --git a/src/i18n/strings/sk.json b/src/i18n/strings/sk.json
index 8137be265b..05c102d516 100644
--- a/src/i18n/strings/sk.json
+++ b/src/i18n/strings/sk.json
@@ -1251,5 +1251,11 @@
"Click here to see older messages.": "Kliknutím sem zobrazíte staršie správy.",
"Failed to upgrade room": "Nepodarilo sa aktualizovať miestnosť",
"The room upgrade could not be completed": "Nie je možné dokončiť aktualizáciu miestnosti na jej najnovšiu verziu",
- "Upgrade this room to version %(version)s": "Aktualizácia tejto miestnosti na verziu %(version)s"
+ "Upgrade this room to version %(version)s": "Aktualizácia tejto miestnosti na verziu %(version)s",
+ "Upgrade Room Version": "Aktualizovať verziu miestnosti",
+ "Upgrading this room requires closing down the current instance of the room and creating a new room it its place. To give room members the best possible experience, we will:": "Aktualizácia verzii tejto miestnosti si vyžaduje jej uzatvorenie a vytvorenie novej miestnosti na jej pôvodnom mieste. Aby bol prechod pre členov miestnosti čo najplynulejší, nasledovné kroky sa vykonajú automaticky:",
+ "Create a new room with the same name, description and avatar": "Vznikne nová miestnosť s rovnakým názvom, témou a obrázkom",
+ "Update any local room aliases to point to the new room": "Všetky lokálne aliasy pôvodnej miestnosti sa aktualizujú tak, aby ukazovali na novú miestnosť",
+ "Stop users from speaking in the old version of the room, and post a message advising users to move to the new room": "V pôvodnej miestnosti bude zverejnené odporúčanie prejsť do novej miestnosti a posielanie do pôvodnej miestnosti bude zakázané pre všetkých používateľov",
+ "Put a link back to the old room at the start of the new room so people can see old messages": "História novej miestnosti sa začne odkazom do pôvodnej miestnosti, aby si členovia vedeli zobraziť staršie správy"
}
diff --git a/src/i18n/strings/sv.json b/src/i18n/strings/sv.json
index da167bb4e3..032a50cec6 100644
--- a/src/i18n/strings/sv.json
+++ b/src/i18n/strings/sv.json
@@ -1003,8 +1003,8 @@
"%(oneUser)schanged their name %(count)s times|one": "%(oneUser)sbytte namn",
"%(severalUsers)schanged their avatar %(count)s times|other": "%(severalUsers)sändrade sin avatar %(count)s gånger",
"%(severalUsers)schanged their avatar %(count)s times|one": "%(severalUsers)sändrade sin avatar",
- "%(oneUser)schanged their avatar %(count)s times|other": "%(oneUser)ssändrade sin avatar %(count)s gånger",
- "%(oneUser)schanged their avatar %(count)s times|one": "%(oneUser)ssändrade sin avatar",
+ "%(oneUser)schanged their avatar %(count)s times|other": "%(oneUser)sändrade sin avatar %(count)s gånger",
+ "%(oneUser)schanged their avatar %(count)s times|one": "%(oneUser)sändrade sin avatar",
"%(items)s and %(count)s others|other": "%(items)s och %(count)s andra",
"%(items)s and %(count)s others|one": "%(items)s och en annan",
"collapse": "fäll ihop",
diff --git a/src/i18n/strings/zh_Hant.json b/src/i18n/strings/zh_Hant.json
index 536628c3b1..a80039de52 100644
--- a/src/i18n/strings/zh_Hant.json
+++ b/src/i18n/strings/zh_Hant.json
@@ -1264,5 +1264,11 @@
"Click here to see older messages.": "點選這裡以檢視較舊的訊息。",
"Failed to upgrade room": "升級聊天室失敗",
"The room upgrade could not be completed": "聊天室升級可能不完整",
- "Upgrade this room to version %(version)s": "升級此聊天室到版本 %(version)s"
+ "Upgrade this room to version %(version)s": "升級此聊天室到版本 %(version)s",
+ "Forces the current outbound group session in an encrypted room to be discarded": "強制目前在已加密的聊天室中的外發群組工作階段丟棄",
+ "Error Discarding Session": "丟棄工作階段錯誤",
+ "Registration Required": "需要註冊",
+ "You need to register to do this. Would you like to register now?": "您必須註冊以繼續。您想要現在註冊嗎?",
+ "Unable to query for supported registration methods": "無法查詢支援的註冊方式",
+ "Unable to connect to Homeserver. Retrying...": "無法連線到家伺服器。正在重試……"
}
From 2380f2cb1f76d3e2035f124d766a6ca0e3c88283 Mon Sep 17 00:00:00 2001
From: David Baker
Date: Fri, 7 Sep 2018 14:31:45 +0100
Subject: [PATCH 296/343] js-sdk rc.1
---
package.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/package.json b/package.json
index fb8acbecf7..dfbaf4e20c 100644
--- a/package.json
+++ b/package.json
@@ -73,7 +73,7 @@
"linkifyjs": "^2.1.6",
"lodash": "^4.13.1",
"lolex": "2.3.2",
- "matrix-js-sdk": "0.10.9",
+ "matrix-js-sdk": "0.11.0-rc.1",
"optimist": "^0.6.1",
"pako": "^1.0.5",
"prop-types": "^15.5.8",
From 1cab61f56055e14cd330532201e47a556f255e56 Mon Sep 17 00:00:00 2001
From: David Baker
Date: Fri, 7 Sep 2018 14:35:44 +0100
Subject: [PATCH 297/343] Prepare changelog for v0.13.4-rc.1
---
CHANGELOG.md | 31 +++++++++++++++++++++++++++++++
1 file changed, 31 insertions(+)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 5298e1cd63..7bcd68e1e6 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,34 @@
+Changes in [0.13.4-rc.1](https://github.com/matrix-org/matrix-react-sdk/releases/tag/v0.13.4-rc.1) (2018-09-07)
+===============================================================================================================
+[Full Changelog](https://github.com/matrix-org/matrix-react-sdk/compare/v0.13.3...v0.13.4-rc.1)
+
+ * Error on splash screen if sync is failing
+ [\#2155](https://github.com/matrix-org/matrix-react-sdk/pull/2155)
+ * Do full registration if HS doesn't support ILAG
+ [\#2150](https://github.com/matrix-org/matrix-react-sdk/pull/2150)
+ * Re-apply "Don't rely on room members to query power levels"
+ [\#2152](https://github.com/matrix-org/matrix-react-sdk/pull/2152)
+ * s/DidMount/WillMount/ in MessageComposerInput
+ [\#2151](https://github.com/matrix-org/matrix-react-sdk/pull/2151)
+ * Revert "Don't rely on room members to query power levels"
+ [\#2149](https://github.com/matrix-org/matrix-react-sdk/pull/2149)
+ * Don't rely on room members to query power levels
+ [\#2145](https://github.com/matrix-org/matrix-react-sdk/pull/2145)
+ * Correctly mark email as optional
+ [\#2148](https://github.com/matrix-org/matrix-react-sdk/pull/2148)
+ * guests trying to join communities should fire the ILAG flow.
+ [\#2059](https://github.com/matrix-org/matrix-react-sdk/pull/2059)
+ * Fix DM avatars, part 3
+ [\#2146](https://github.com/matrix-org/matrix-react-sdk/pull/2146)
+ * Fix: show spinner again while recovering from connection error
+ [\#2143](https://github.com/matrix-org/matrix-react-sdk/pull/2143)
+ * Fix: infinite spinner on trying to create welcomeUserId room without consent
+ [\#2147](https://github.com/matrix-org/matrix-react-sdk/pull/2147)
+ * Show spinner in member list while loading members
+ [\#2139](https://github.com/matrix-org/matrix-react-sdk/pull/2139)
+ * Slash command to discard megolm session
+ [\#2140](https://github.com/matrix-org/matrix-react-sdk/pull/2140)
+
Changes in [0.13.3](https://github.com/matrix-org/matrix-react-sdk/releases/tag/v0.13.3) (2018-09-03)
=====================================================================================================
[Full Changelog](https://github.com/matrix-org/matrix-react-sdk/compare/v0.13.3-rc.2...v0.13.3)
From 830edeb9ca7424001357e1d3288fd274265c97c3 Mon Sep 17 00:00:00 2001
From: David Baker
Date: Fri, 7 Sep 2018 14:35:44 +0100
Subject: [PATCH 298/343] v0.13.4-rc.1
---
package.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/package.json b/package.json
index dfbaf4e20c..06fbd51a1c 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "matrix-react-sdk",
- "version": "0.13.3",
+ "version": "0.13.4-rc.1",
"description": "SDK for matrix.org using React",
"author": "matrix.org",
"repository": {
From 9a3717a274103cc259f448baa201e1b5f0855121 Mon Sep 17 00:00:00 2001
From: Bruno Windels
Date: Fri, 7 Sep 2018 19:53:01 +0200
Subject: [PATCH 299/343] only dispatch an action for self-membership
as everything listens to the dispatcher, dispatching an action can be quite slow,
especially when only matched in one listener, and the rest all having to be called
to just say "no, thanks". This is especially the case for the RoomMember.membership
event being put on the dispatcher, as there can be thousands of these events
when the room members are loading.
Since the RoomMember.membership action is only used on one place,
and only for the syncing user, change it to just that and only dispatch
in that case. This saves 100-300ms when setting the OOB members in
a big room (7000k members)
Maybe later on we can back this by room.getMyMembership() and avoid the
listener even...
---
src/actions/MatrixActionCreators.js | 19 ++++++++++++-------
src/stores/RoomListStore.js | 3 +--
2 files changed, 13 insertions(+), 9 deletions(-)
diff --git a/src/actions/MatrixActionCreators.js b/src/actions/MatrixActionCreators.js
index 6e1d52a88f..893564b325 100644
--- a/src/actions/MatrixActionCreators.js
+++ b/src/actions/MatrixActionCreators.js
@@ -149,9 +149,9 @@ function createRoomTimelineAction(matrixClient, timelineEvent, room, toStartOfTi
*/
/**
- * Create a MatrixActions.RoomMember.membership action that represents
- * a MatrixClient `RoomMember.membership` matrix event, emitted when a
- * member's membership is updated.
+ * Create a MatrixActions.Room.selfMembership action that represents
+ * a MatrixClient `RoomMember.membership` matrix event for the syncing user,
+ * emitted when the member's membership is updated.
*
* @param {MatrixClient} matrixClient the matrix client.
* @param {MatrixEvent} membershipEvent the m.room.member event.
@@ -159,8 +159,10 @@ function createRoomTimelineAction(matrixClient, timelineEvent, room, toStartOfTi
* @param {string} oldMembership the member's previous membership.
* @returns {RoomMembershipAction} an action of type `MatrixActions.RoomMember.membership`.
*/
-function createRoomMembershipAction(matrixClient, membershipEvent, member, oldMembership) {
- return { action: 'MatrixActions.RoomMember.membership', member };
+function createSelfRoomMembershipAction(matrixClient, membershipEvent, member, oldMembership) {
+ if (member.userId === matrixClient.getUserId()) {
+ return { action: 'MatrixActions.Room.selfMembership', member };
+ }
}
/**
@@ -202,7 +204,7 @@ export default {
this._addMatrixClientListener(matrixClient, 'Room', createRoomAction);
this._addMatrixClientListener(matrixClient, 'Room.tags', createRoomTagsAction);
this._addMatrixClientListener(matrixClient, 'Room.timeline', createRoomTimelineAction);
- this._addMatrixClientListener(matrixClient, 'RoomMember.membership', createRoomMembershipAction);
+ this._addMatrixClientListener(matrixClient, 'RoomMember.membership', createSelfRoomMembershipAction);
this._addMatrixClientListener(matrixClient, 'Event.decrypted', createEventDecryptedAction);
},
@@ -217,7 +219,10 @@ export default {
*/
_addMatrixClientListener(matrixClient, eventName, actionCreator) {
const listener = (...args) => {
- dis.dispatch(actionCreator(matrixClient, ...args), true);
+ const payload = actionCreator(matrixClient, ...args);
+ if (payload) {
+ dis.dispatch(payload, true);
+ }
};
matrixClient.on(eventName, listener);
this._matrixClientListenersStop.push(() => {
diff --git a/src/stores/RoomListStore.js b/src/stores/RoomListStore.js
index 6571e1590f..02d728ff2e 100644
--- a/src/stores/RoomListStore.js
+++ b/src/stores/RoomListStore.js
@@ -120,8 +120,7 @@ class RoomListStore extends Store {
this._generateRoomLists();
}
break;
- case 'MatrixActions.RoomMember.membership': {
- if (!this._matrixClient || payload.member.userId !== this._matrixClient.credentials.userId) break;
+ case 'MatrixActions.Room.selfMembership': {
this._generateRoomLists();
}
break;
From 0cd222ef0be30a7842ac02c29acddc71a745c989 Mon Sep 17 00:00:00 2001
From: Bruno Windels
Date: Fri, 7 Sep 2018 23:44:20 +0200
Subject: [PATCH 300/343] make users available in member by requesting them
from client right before
before this was already foreseen, but memberDict wasn't being refreshed
as it's only used in roomMembers(), I got rid of memberDict as well
---
src/components/views/rooms/MemberList.js | 16 ++++++----------
1 file changed, 6 insertions(+), 10 deletions(-)
diff --git a/src/components/views/rooms/MemberList.js b/src/components/views/rooms/MemberList.js
index 6ef448f0fd..87758fa922 100644
--- a/src/components/views/rooms/MemberList.js
+++ b/src/components/views/rooms/MemberList.js
@@ -32,7 +32,6 @@ module.exports = React.createClass({
displayName: 'MemberList',
getInitialState: function() {
- this.memberDict = this.getMemberDict();
this._mounted = false;
const cli = MatrixClientPeg.get();
@@ -196,8 +195,6 @@ module.exports = React.createClass({
_updateList: new rate_limited_func(function() {
// console.log("Updating memberlist");
- this.memberDict = this.getMemberDict();
-
const newState = {
members: this.roomMembers(),
};
@@ -206,15 +203,15 @@ module.exports = React.createClass({
this.setState(newState);
}, 500),
- getMemberDict: function() {
- if (!this.props.roomId) return {};
+ getMembersWithUser: function() {
+ if (!this.props.roomId) return [];
const cli = MatrixClientPeg.get();
const room = cli.getRoom(this.props.roomId);
if (!room) return {};
- const all_members = room.currentState.members;
+ const allMembers = Object.values(room.currentState.members);
- Object.values(all_members).forEach(function(member) {
+ allMembers.forEach(function(member) {
// work around a race where you might have a room member object
// before the user object exists. This may or may not cause
// https://github.com/vector-im/vector-web/issues/186
@@ -226,14 +223,13 @@ module.exports = React.createClass({
// the right solution here is to fix the race rather than leave it as 0
});
- return all_members;
+ return allMembers;
},
roomMembers: function() {
const ConferenceHandler = CallHandler.getConferenceHandler();
- const allMembersDict = this.memberDict || {};
- const allMembers = Object.values(allMembersDict);
+ const allMembers = this.getMembersWithUser();
const filteredAndSortedMembers = allMembers.filter((m) => {
return (
m.membership === 'join' || m.membership === 'invite'
From b8bfed13084ff5c4b3517932b241c53b3429e2e0 Mon Sep 17 00:00:00 2001
From: Matthew Hodgson
Date: Sun, 9 Sep 2018 10:26:16 +0100
Subject: [PATCH 301/343] point deps at #develop to unbreak npm i
---
package.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/package.json b/package.json
index fb8acbecf7..9410535aae 100644
--- a/package.json
+++ b/package.json
@@ -73,7 +73,7 @@
"linkifyjs": "^2.1.6",
"lodash": "^4.13.1",
"lolex": "2.3.2",
- "matrix-js-sdk": "0.10.9",
+ "matrix-js-sdk": "matrix-org/matrix-js-sdk#develop",
"optimist": "^0.6.1",
"pako": "^1.0.5",
"prop-types": "^15.5.8",
From 86c92ee56dd53ea1642118313e4ba37dea9c7e1a Mon Sep 17 00:00:00 2001
From: Matthew Hodgson
Date: Tue, 4 Sep 2018 20:33:04 +0100
Subject: [PATCH 302/343] downgraded parallelshell due to
https://github.com/darkguy2008/parallelshell/issues/57
---
package.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/package.json b/package.json
index 9410535aae..71d1aa5448 100644
--- a/package.json
+++ b/package.json
@@ -133,7 +133,7 @@
"matrix-mock-request": "^1.2.1",
"matrix-react-test-utils": "^0.1.1",
"mocha": "^5.0.5",
- "parallelshell": "^3.0.2",
+ "parallelshell": "3.0.1",
"react-addons-test-utils": "^15.4.0",
"require-json": "0.0.1",
"rimraf": "^2.4.3",
From ef20813f2e1d45c7e0ba66e30d58815d27c94ec6 Mon Sep 17 00:00:00 2001
From: Matthew Hodgson
Date: Sun, 9 Sep 2018 18:38:21 +0100
Subject: [PATCH 303/343] remove layering warnings
---
README.md | 23 +++++++----------------
1 file changed, 7 insertions(+), 16 deletions(-)
diff --git a/README.md b/README.md
index c3106ccec7..ac45497dd4 100644
--- a/README.md
+++ b/README.md
@@ -11,16 +11,8 @@ a 'skin'. A skin provides:
* The containing application
* Zero or more 'modules' containing non-UI functionality
-**WARNING: As of July 2016, the skinning abstraction is broken due to rapid
-development of `matrix-react-sdk` to meet the needs of Riot (codenamed Vector), the first app
-to be built on top of the SDK** (https://github.com/vector-im/riot-web).
-Right now `matrix-react-sdk` depends on some functionality from `riot-web`
-(e.g. CSS), and `matrix-react-sdk` contains some Riot specific behaviour
-(grep for 'vector'). This layering will be fixed asap once Riot development
-has stabilised, but for now we do not advise trying to create new skins for
-matrix-react-sdk until the layers are clearly separated again.
-
-In the interim, `vector-im/riot-web` and `matrix-org/matrix-react-sdk` should
+As of Aug 2018, the only skin that exists is `vector-im/riot-web`; it and
+`matrix-org/matrix-react-sdk` should effectively
be considered as a single project (for instance, matrix-react-sdk bugs
are currently filed against vector-im/riot-web rather than this project).
@@ -48,15 +40,14 @@ https://github.com/matrix-org/synapse/tree/master/CONTRIBUTING.rst
Please follow the Matrix JS/React code style as per:
https://github.com/matrix-org/matrix-react-sdk/blob/master/code_style.md
-Whilst the layering separation between matrix-react-sdk and Riot is broken
-(as of July 2016), code should be committed as follows:
+Code should be committed as follows:
* All new components: https://github.com/matrix-org/matrix-react-sdk/tree/master/src/components
* Riot-specific components: https://github.com/vector-im/riot-web/tree/master/src/components
* In practice, `matrix-react-sdk` is still evolving so fast that the maintenance
burden of customising and overriding these components for Riot can seriously
impede development. So right now, there should be very few (if any) customisations for Riot.
- * CSS for Matrix SDK components: https://github.com/vector-im/riot-web/tree/master/src/skins/vector/css/matrix-react-sdk
- * CSS for Riot-specific overrides and components: https://github.com/vector-im/riot-web/tree/master/src/skins/vector/css/riot-web
+ * CSS: https://github.com/vector-im/riot-web/tree/master/src/skins/vector/css/matrix-react-sdk
+ * Theme specific CSS & resources: https://github.com/matrix-org/matrix-react-sdk/tree/master/res/themes
React components in matrix-react-sdk are come in two different flavours:
'structures' and 'views'. Structures are stateful components which handle the
@@ -84,6 +75,7 @@ practices that anyone working with the SDK needs to be be aware of and uphold:
* Per-view CSS is optional - it could choose to inherit all its styling from
the context of the rest of the app, although this is unusual for any but
+ * Theme specific CSS & resources: https://github.com/matrix-org/matrix-react-sdk/tree/master/res/themes
structural components (lacking presentation logic) and the simplest view
components.
@@ -139,8 +131,7 @@ for now.
OUTDATED: To Create Your Own Skin
=================================
-**This is ALL LIES currently, as skinning is currently broken - see the WARNING
-section at the top of this readme.**
+**This is ALL LIES currently, and needs to be updated**
Skins are modules are exported from such a package in the `lib` directory.
`lib/skins` contains one directory per-skin, named after the skin, and the
From f99aef8edea4c20d6dae236f4942f30d6d88b152 Mon Sep 17 00:00:00 2001
From: David Baker
Date: Mon, 10 Sep 2018 11:36:06 +0100
Subject: [PATCH 304/343] js-sdk v0.11.0
---
package.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/package.json b/package.json
index 06fbd51a1c..ebdf9b9cd6 100644
--- a/package.json
+++ b/package.json
@@ -73,7 +73,7 @@
"linkifyjs": "^2.1.6",
"lodash": "^4.13.1",
"lolex": "2.3.2",
- "matrix-js-sdk": "0.11.0-rc.1",
+ "matrix-js-sdk": "0.11.0",
"optimist": "^0.6.1",
"pako": "^1.0.5",
"prop-types": "^15.5.8",
From bb37e36e71029b95f379c5749da21b4b4b106ece Mon Sep 17 00:00:00 2001
From: David Baker
Date: Mon, 10 Sep 2018 11:38:52 +0100
Subject: [PATCH 305/343] Prepare changelog for v0.13.4
---
CHANGELOG.md | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 7bcd68e1e6..390b90a41e 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,9 @@
+Changes in [0.13.4](https://github.com/matrix-org/matrix-react-sdk/releases/tag/v0.13.4) (2018-09-10)
+=====================================================================================================
+[Full Changelog](https://github.com/matrix-org/matrix-react-sdk/compare/v0.13.4-rc.1...v0.13.4)
+
+ * No changes since rc.1
+
Changes in [0.13.4-rc.1](https://github.com/matrix-org/matrix-react-sdk/releases/tag/v0.13.4-rc.1) (2018-09-07)
===============================================================================================================
[Full Changelog](https://github.com/matrix-org/matrix-react-sdk/compare/v0.13.3...v0.13.4-rc.1)
From 405f0bcf983bdb7c04c701cec3d00131189062a8 Mon Sep 17 00:00:00 2001
From: David Baker
Date: Mon, 10 Sep 2018 11:38:53 +0100
Subject: [PATCH 306/343] v0.13.4
---
package.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/package.json b/package.json
index ebdf9b9cd6..182dfecb5b 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "matrix-react-sdk",
- "version": "0.13.4-rc.1",
+ "version": "0.13.4",
"description": "SDK for matrix.org using React",
"author": "matrix.org",
"repository": {
From 5044d4f2d63d2eb46ea940948ea2de32533ebb15 Mon Sep 17 00:00:00 2001
From: Bruno Windels
Date: Mon, 10 Sep 2018 14:56:10 +0200
Subject: [PATCH 307/343] dont keep the spinner in the memberlist when fetching
/members fails
---
src/components/views/rooms/MemberList.js | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/components/views/rooms/MemberList.js b/src/components/views/rooms/MemberList.js
index 223c555fbb..623bdaa821 100644
--- a/src/components/views/rooms/MemberList.js
+++ b/src/components/views/rooms/MemberList.js
@@ -91,7 +91,9 @@ module.exports = React.createClass({
const cli = MatrixClientPeg.get();
const room = cli.getRoom(this.props.roomId);
if (room) {
- await room.loadMembersIfNeeded();
+ try {
+ await room.loadMembersIfNeeded();
+ } catch(ex) {/* already logged in RoomView */}
}
},
From dcc8a45aa119b26d4caa37ea47feee3f26b37cd4 Mon Sep 17 00:00:00 2001
From: Bruno Windels
Date: Mon, 10 Sep 2018 16:55:24 +0200
Subject: [PATCH 308/343] add final return for clarity
---
src/actions/MatrixActionCreators.js | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/actions/MatrixActionCreators.js b/src/actions/MatrixActionCreators.js
index 893564b325..17be9a5e0f 100644
--- a/src/actions/MatrixActionCreators.js
+++ b/src/actions/MatrixActionCreators.js
@@ -163,6 +163,7 @@ function createSelfRoomMembershipAction(matrixClient, membershipEvent, member, o
if (member.userId === matrixClient.getUserId()) {
return { action: 'MatrixActions.Room.selfMembership', member };
}
+ return null;
}
/**
From 92f7e29132136992c92f21bbaa4035e0f609a939 Mon Sep 17 00:00:00 2001
From: Bruno Windels
Date: Mon, 10 Sep 2018 17:32:40 +0200
Subject: [PATCH 309/343] missed one {} -> [], fix e2e tests
---
src/components/views/rooms/MemberList.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/components/views/rooms/MemberList.js b/src/components/views/rooms/MemberList.js
index 87758fa922..3672196506 100644
--- a/src/components/views/rooms/MemberList.js
+++ b/src/components/views/rooms/MemberList.js
@@ -207,7 +207,7 @@ module.exports = React.createClass({
if (!this.props.roomId) return [];
const cli = MatrixClientPeg.get();
const room = cli.getRoom(this.props.roomId);
- if (!room) return {};
+ if (!room) return [];
const allMembers = Object.values(room.currentState.members);
From 2aaf3e6b89ce9d7a781baf1acc4720603caded17 Mon Sep 17 00:00:00 2001
From: Bruno Windels
Date: Mon, 10 Sep 2018 17:39:03 +0200
Subject: [PATCH 310/343] dont assign member in getInitialState
---
src/components/views/rooms/MemberList.js | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/src/components/views/rooms/MemberList.js b/src/components/views/rooms/MemberList.js
index 3672196506..4a22df8451 100644
--- a/src/components/views/rooms/MemberList.js
+++ b/src/components/views/rooms/MemberList.js
@@ -32,8 +32,6 @@ module.exports = React.createClass({
displayName: 'MemberList',
getInitialState: function() {
- this._mounted = false;
-
const cli = MatrixClientPeg.get();
if (cli.hasLazyLoadMembersEnabled()) {
return {loading: true};
@@ -43,6 +41,7 @@ module.exports = React.createClass({
},
componentWillMount: function() {
+ this._mounted = false;
const cli = MatrixClientPeg.get();
if (!cli.hasLazyLoadMembersEnabled()) {
this._listenForMembersChanges();
From 694ee5a2c87931833a1818082f064d1e1bd0eea7 Mon Sep 17 00:00:00 2001
From: Bruno Windels
Date: Mon, 10 Sep 2018 18:09:11 +0200
Subject: [PATCH 311/343] fix logging room id when LL members fail
---
src/components/structures/RoomView.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/components/structures/RoomView.js b/src/components/structures/RoomView.js
index 54f730de5d..c6bd285b49 100644
--- a/src/components/structures/RoomView.js
+++ b/src/components/structures/RoomView.js
@@ -318,7 +318,7 @@ module.exports = React.createClass({
// lazy load members if enabled
if (SettingsStore.isFeatureEnabled('feature_lazyloading')) {
room.loadMembersIfNeeded().catch((err) => {
- const errorMessage = `Fetching room members for ${this.roomId} failed.` +
+ const errorMessage = `Fetching room members for ${roomId} failed.` +
" Room members will appear incomplete.";
console.error(errorMessage);
console.error(err);
From deaad4bcb17d30a89df394b71d7419bb4d5e3f94 Mon Sep 17 00:00:00 2001
From: Bruno Windels
Date: Mon, 10 Sep 2018 18:11:08 +0200
Subject: [PATCH 312/343] even better as the method called is on room
---
src/components/structures/RoomView.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/components/structures/RoomView.js b/src/components/structures/RoomView.js
index c6bd285b49..88c1d153eb 100644
--- a/src/components/structures/RoomView.js
+++ b/src/components/structures/RoomView.js
@@ -318,7 +318,7 @@ module.exports = React.createClass({
// lazy load members if enabled
if (SettingsStore.isFeatureEnabled('feature_lazyloading')) {
room.loadMembersIfNeeded().catch((err) => {
- const errorMessage = `Fetching room members for ${roomId} failed.` +
+ const errorMessage = `Fetching room members for ${room.roomId} failed.` +
" Room members will appear incomplete.";
console.error(errorMessage);
console.error(err);
From d3038ea76586c654140a8787862b2744ab159d41 Mon Sep 17 00:00:00 2001
From: David Baker
Date: Tue, 11 Sep 2018 11:31:24 +0100
Subject: [PATCH 313/343] Don't try to exit fullscreen if not fullscreen
This was causing annoying exceptions on latest Chrome. Use
document.fullScreenElement to detect if we're fullscreen and don't
try to exit if we aren't.
---
src/components/views/voip/VideoView.js | 16 +++++++++++-----
1 file changed, 11 insertions(+), 5 deletions(-)
diff --git a/src/components/views/voip/VideoView.js b/src/components/views/voip/VideoView.js
index 1820514129..d9843042ef 100644
--- a/src/components/views/voip/VideoView.js
+++ b/src/components/views/voip/VideoView.js
@@ -26,6 +26,15 @@ import dis from '../../../dispatcher';
import SettingsStore from "../../../settings/SettingsStore";
+function getFullScreenElement() {
+ return (
+ document.fullscreenElement ||
+ document.mozFullScreenElement ||
+ document.webkitFullscreenElement ||
+ document.msFullscreenElement
+ );
+}
+
module.exports = React.createClass({
displayName: 'VideoView',
@@ -88,7 +97,7 @@ module.exports = React.createClass({
element.msRequestFullscreen
);
requestMethod.call(element);
- } else {
+ } else if (getFullScreenElement()) {
const exitMethod = (
document.exitFullscreen ||
document.mozCancelFullScreen ||
@@ -108,10 +117,7 @@ module.exports = React.createClass({
const VideoFeed = sdk.getComponent('voip.VideoFeed');
// if we're fullscreen, we don't want to set a maxHeight on the video element.
- const fullscreenElement = (document.fullscreenElement ||
- document.mozFullScreenElement ||
- document.webkitFullscreenElement);
- const maxVideoHeight = fullscreenElement ? null : this.props.maxHeight;
+ const maxVideoHeight = getFullScreenElement() ? null : this.props.maxHeight;
const localVideoFeedClasses = classNames("mx_VideoView_localVideoFeed",
{ "mx_VideoView_localVideoFeed_flipped":
SettingsStore.getValue('VideoView.flipVideoHorizontally'),
From f194f323f4c0ae98dfb8fc9e558516d92e132ada Mon Sep 17 00:00:00 2001
From: Bruno Windels
Date: Thu, 13 Sep 2018 18:43:24 +0200
Subject: [PATCH 314/343] postpone loading the members until the user joined
the room
when peeking, the members weren't being loaded at all because
the room wasn't available yet,
and the need for loading the members was never re-evaluated after that.
This only loads the members once the user has joined the room,
which also helps to avoid load all the members before an invite
is accepted.
---
src/components/structures/RoomView.js | 28 +++++++-----
src/components/views/rooms/MemberList.js | 56 ++++++++++++++++--------
2 files changed, 56 insertions(+), 28 deletions(-)
diff --git a/src/components/structures/RoomView.js b/src/components/structures/RoomView.js
index 88c1d153eb..3a2a80f06a 100644
--- a/src/components/structures/RoomView.js
+++ b/src/components/structures/RoomView.js
@@ -314,16 +314,6 @@ module.exports = React.createClass({
// Stop peeking because we have joined this room previously
MatrixClientPeg.get().stopPeeking();
this.setState({isPeeking: false});
-
- // lazy load members if enabled
- if (SettingsStore.isFeatureEnabled('feature_lazyloading')) {
- room.loadMembersIfNeeded().catch((err) => {
- const errorMessage = `Fetching room members for ${room.roomId} failed.` +
- " Room members will appear incomplete.";
- console.error(errorMessage);
- console.error(err);
- });
- }
}
}
},
@@ -592,6 +582,23 @@ module.exports = React.createClass({
this._warnAboutEncryption(room);
this._calculatePeekRules(room);
this._updatePreviewUrlVisibility(room);
+ this._loadMembersIfJoined();
+ },
+
+ _loadMembersIfJoined: function() {
+ // lazy load members if enabled
+ if (SettingsStore.isFeatureEnabled('feature_lazyloading')) {
+ const cli = MatrixClientPeg.get();
+ const room = cli.getRoom(this.state.roomId);
+ if (room && room.getMyMembership() === 'join') {
+ room.loadMembersIfNeeded().catch((err) => {
+ const errorMessage = `Fetching room members for ${room.roomId} failed.` +
+ " Room members will appear incomplete.";
+ console.error(errorMessage);
+ console.error(err);
+ });
+ }
+ }
},
_warnAboutEncryption: function(room) {
@@ -705,6 +712,7 @@ module.exports = React.createClass({
onRoomMemberMembership: function(ev, member, oldMembership) {
if (member.userId == MatrixClientPeg.get().credentials.userId) {
+ this._loadMembersIfJoined();
this.forceUpdate();
}
},
diff --git a/src/components/views/rooms/MemberList.js b/src/components/views/rooms/MemberList.js
index 8d12a8187e..d1eacf5396 100644
--- a/src/components/views/rooms/MemberList.js
+++ b/src/components/views/rooms/MemberList.js
@@ -46,6 +46,8 @@ module.exports = React.createClass({
if (!cli.hasLazyLoadMembersEnabled()) {
this._listenForMembersChanges();
}
+ cli.on("Room", this.onRoom); // invites & joining after peek
+ cli.on("RoomMember.membership", this.onRoomMembership); // update when accepting an invite
const enablePresenceByHsUrl = SdkConfig.get()["enable_presence_by_hs_url"];
const hsUrl = MatrixClientPeg.get().baseUrl;
this._showPresence = true;
@@ -59,7 +61,6 @@ module.exports = React.createClass({
cli.on("RoomState.members", this.onRoomStateMember);
cli.on("RoomMember.name", this.onRoomMemberName);
cli.on("RoomState.events", this.onRoomStateEvent);
- cli.on("Room", this.onRoom); // invites
// We listen for changes to the lastPresenceTs which is essentially
// listening for all presence events (we display most of not all of
// the information contained in presence events).
@@ -69,14 +70,7 @@ module.exports = React.createClass({
componentDidMount: async function() {
this._mounted = true;
- const cli = MatrixClientPeg.get();
- if (cli.hasLazyLoadMembersEnabled()) {
- await this._waitForMembersToLoad();
- if (this._mounted) {
- this.setState(this._getMembersState());
- this._listenForMembersChanges();
- }
- }
+ this._loadMembersIfNeeded(true);
},
componentWillUnmount: function() {
@@ -85,6 +79,7 @@ module.exports = React.createClass({
if (cli) {
cli.removeListener("RoomState.members", this.onRoomStateMember);
cli.removeListener("RoomMember.name", this.onRoomMemberName);
+ cli.removeListener("RoomMember.membership", this.onRoomMembership);
cli.removeListener("RoomState.events", this.onRoomStateEvent);
cli.removeListener("Room", this.onRoom);
cli.removeListener("User.lastPresenceTs", this.onUserLastPresenceTs);
@@ -95,14 +90,24 @@ module.exports = React.createClass({
this._updateList.cancelPendingCall();
},
- _waitForMembersToLoad: async function() {
- if (!this.props.roomId) return {};
+ _loadMembersIfNeeded: async function(initial) {
const cli = MatrixClientPeg.get();
- const room = cli.getRoom(this.props.roomId);
- if (room) {
- try {
- await room.loadMembersIfNeeded();
- } catch(ex) {/* already logged in RoomView */}
+ if (cli.hasLazyLoadMembersEnabled()) {
+ const cli = MatrixClientPeg.get();
+ const room = cli.getRoom(this.props.roomId);
+ if (room && room.getMyMembership() === 'join') {
+ this.setState({loading: true});
+ try {
+ await room.loadMembersIfNeeded();
+ } catch(ex) {/* already logged in RoomView */}
+ if (this._mounted) {
+ this.setState(this._getMembersState());
+ this._listenForMembersChanges();
+ }
+ } else if(initial) {
+ // show the members we've got
+ this.setState(this._getMembersState());
+ }
}
},
@@ -163,14 +168,28 @@ module.exports = React.createClass({
}
},
- onRoom: function(room) {
+ onRoom: async function(room) {
if (room.roomId !== this.props.roomId) {
return;
}
// We listen for room events because when we accept an invite
// we need to wait till the room is fully populated with state
// before refreshing the member list else we get a stale list.
- this._updateList();
+
+ // also when peeking, we need to await the members being loaded
+ // before showing them.
+
+ this._loadMembersIfNeeded();
+ },
+
+ onRoomMembership: async function(ev, member, oldMembership) {
+ const cli = MatrixClientPeg.get();
+ const myId = cli.getUserId();
+ if (member.userId === myId && oldMembership !== "join" && member.membership === "join") {
+ // once we've joined, no need to listen for membership anymore
+ cli.removeListener("RoomMember.membership", this.onRoomMembership);
+ this._loadMembersIfNeeded();
+ }
},
onRoomStateMember: function(ev, state, member) {
@@ -197,6 +216,7 @@ module.exports = React.createClass({
_updateList: new rate_limited_func(function() {
// console.log("Updating memberlist");
const newState = {
+ loading: false,
members: this.roomMembers(),
};
newState.filteredJoinedMembers = this._filterMembers(newState.members, 'join', this.state.searchQuery);
From fe734b944e6b94804db58a82f91a3ff45f9e2431 Mon Sep 17 00:00:00 2001
From: Bruno Windels
Date: Thu, 13 Sep 2018 18:45:38 +0200
Subject: [PATCH 315/343] remove obsolete warning as peeking will cause the
membership to be null
---
src/stores/RoomListStore.js | 2 --
1 file changed, 2 deletions(-)
diff --git a/src/stores/RoomListStore.js b/src/stores/RoomListStore.js
index 02d728ff2e..5a041f52ac 100644
--- a/src/stores/RoomListStore.js
+++ b/src/stores/RoomListStore.js
@@ -214,8 +214,6 @@ class RoomListStore extends Store {
}
} else if (membership === "leave") {
lists["im.vector.fake.archived"].push(room);
- } else {
- console.error("unrecognised membership: " + membership + " - this should never happen");
}
});
From 27c496aecb87ce28654e0d0a4a2936e449049885 Mon Sep 17 00:00:00 2001
From: Bruno Windels
Date: Fri, 14 Sep 2018 13:55:47 +0200
Subject: [PATCH 316/343] remove unneeded async keywords
---
src/components/views/rooms/MemberList.js | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/components/views/rooms/MemberList.js b/src/components/views/rooms/MemberList.js
index d1eacf5396..6a00c88d37 100644
--- a/src/components/views/rooms/MemberList.js
+++ b/src/components/views/rooms/MemberList.js
@@ -168,7 +168,7 @@ module.exports = React.createClass({
}
},
- onRoom: async function(room) {
+ onRoom: function(room) {
if (room.roomId !== this.props.roomId) {
return;
}
@@ -182,7 +182,7 @@ module.exports = React.createClass({
this._loadMembersIfNeeded();
},
- onRoomMembership: async function(ev, member, oldMembership) {
+ onRoomMembership: function(ev, member, oldMembership) {
const cli = MatrixClientPeg.get();
const myId = cli.getUserId();
if (member.userId === myId && oldMembership !== "join" && member.membership === "join") {
From e1394d592a69f7a250e1748a5841e49c1e175162 Mon Sep 17 00:00:00 2001
From: David Baker
Date: Fri, 14 Sep 2018 14:11:59 +0100
Subject: [PATCH 317/343] Allow translation tags object to be a variable
Don't try to validate the translation tags if it's not an object literal.
---
scripts/gen-i18n.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/scripts/gen-i18n.js b/scripts/gen-i18n.js
index fa9ccc8ed7..c35cd3466a 100755
--- a/scripts/gen-i18n.js
+++ b/scripts/gen-i18n.js
@@ -143,7 +143,7 @@ function getTranslationsJs(file) {
// Validate tag replacements
if (node.arguments.length > 2) {
const tagMap = node.arguments[2];
- for (const prop of tagMap.properties) {
+ for (const prop of tagMap.properties || []) {
if (prop.key.type === 'Literal') {
const tag = prop.key.value;
// RegExp same as in src/languageHandler.js
From 86cbe34181c3705953e83dcfe3e67a49bce836e5 Mon Sep 17 00:00:00 2001
From: Bruno Windels
Date: Fri, 14 Sep 2018 18:35:16 +0200
Subject: [PATCH 318/343] rerender after members are loaded so pills and RR get
rerendered
---
src/components/structures/RoomView.js | 11 ++++++++---
1 file changed, 8 insertions(+), 3 deletions(-)
diff --git a/src/components/structures/RoomView.js b/src/components/structures/RoomView.js
index 3a2a80f06a..2715a5698d 100644
--- a/src/components/structures/RoomView.js
+++ b/src/components/structures/RoomView.js
@@ -585,18 +585,23 @@ module.exports = React.createClass({
this._loadMembersIfJoined();
},
- _loadMembersIfJoined: function() {
+ _loadMembersIfJoined: async function() {
// lazy load members if enabled
if (SettingsStore.isFeatureEnabled('feature_lazyloading')) {
const cli = MatrixClientPeg.get();
const room = cli.getRoom(this.state.roomId);
if (room && room.getMyMembership() === 'join') {
- room.loadMembersIfNeeded().catch((err) => {
+ try {
+ await room.loadMembersIfNeeded();
+ if (!this.unmounted) {
+ this.forceUpdate();
+ }
+ } catch(err) {
const errorMessage = `Fetching room members for ${room.roomId} failed.` +
" Room members will appear incomplete.";
console.error(errorMessage);
console.error(err);
- });
+ }
}
}
},
From 599697ca2f83a0564ab346cc1f3da87a80284872 Mon Sep 17 00:00:00 2001
From: Matthew Hodgson
Date: Sun, 16 Sep 2018 19:08:31 +0100
Subject: [PATCH 319/343] fix merge on i18n
---
src/i18n/strings/en_EN.json | 411 ------------------------------------
1 file changed, 411 deletions(-)
diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json
index 70e6f80f96..6c42b0a005 100644
--- a/src/i18n/strings/en_EN.json
+++ b/src/i18n/strings/en_EN.json
@@ -973,417 +973,6 @@
"Share message history with new users": "Share message history with new users",
"Encrypt room": "Encrypt room",
"You must register to use this functionality": "You must register to use this functionality",
- "You must join the room to see its files": "You must join the room to see its files",
- "There are no visible files in this room": "There are no visible files in this room",
- "
HTML for your community's page
\n
\n Use the long description to introduce new members to the community, or distribute\n some important links\n
\n
\n You can even use 'img' tags\n
\n": "
HTML for your community's page
\n
\n Use the long description to introduce new members to the community, or distribute\n some important links\n
\n
\n You can even use 'img' tags\n
\n",
- "Add rooms to the community summary": "Add rooms to the community summary",
- "Which rooms would you like to add to this summary?": "Which rooms would you like to add to this summary?",
- "Add to summary": "Add to summary",
- "Failed to add the following rooms to the summary of %(groupId)s:": "Failed to add the following rooms to the summary of %(groupId)s:",
- "Add a Room": "Add a Room",
- "Failed to remove the room from the summary of %(groupId)s": "Failed to remove the room from the summary of %(groupId)s",
- "The room '%(roomName)s' could not be removed from the summary.": "The room '%(roomName)s' could not be removed from the summary.",
- "Add users to the community summary": "Add users to the community summary",
- "Who would you like to add to this summary?": "Who would you like to add to this summary?",
- "Failed to add the following users to the summary of %(groupId)s:": "Failed to add the following users to the summary of %(groupId)s:",
- "Add a User": "Add a User",
- "Failed to remove a user from the summary of %(groupId)s": "Failed to remove a user from the summary of %(groupId)s",
- "The user '%(displayName)s' could not be removed from the summary.": "The user '%(displayName)s' could not be removed from the summary.",
- "Failed to upload image": "Failed to upload image",
- "Failed to update community": "Failed to update community",
- "Unable to accept invite": "Unable to accept invite",
- "Unable to join community": "Unable to join community",
- "Leave Community": "Leave Community",
- "Leave %(groupName)s?": "Leave %(groupName)s?",
- "Unable to leave community": "Unable to leave community",
- "Community Settings": "Community Settings",
- "Changes made to your community name and avatar might not be seen by other users for up to 30 minutes.": "Changes made to your community name and avatar might not be seen by other users for up to 30 minutes.",
- "These rooms are displayed to community members on the community page. Community members can join the rooms by clicking on them.": "These rooms are displayed to community members on the community page. Community members can join the rooms by clicking on them.",
- "Add rooms to this community": "Add rooms to this community",
- "Featured Rooms:": "Featured Rooms:",
- "Featured Users:": "Featured Users:",
- "%(inviter)s has invited you to join this community": "%(inviter)s has invited you to join this community",
- "Join this community": "Join this community",
- "Leave this community": "Leave this community",
- "You are an administrator of this community": "You are an administrator of this community",
- "You are a member of this community": "You are a member of this community",
- "Who can join this community?": "Who can join this community?",
- "Everyone": "Everyone",
- "Your community hasn't got a Long Description, a HTML page to show to community members. Click here to open settings and give it one!": "Your community hasn't got a Long Description, a HTML page to show to community members. Click here to open settings and give it one!",
- "Long Description (HTML)": "Long Description (HTML)",
- "Description": "Description",
- "Community %(groupId)s not found": "Community %(groupId)s not found",
- "This Home server does not support communities": "This Home server does not support communities",
- "Failed to load %(groupId)s": "Failed to load %(groupId)s",
- "Couldn't load home page": "Couldn't load home page",
- "Login": "Login",
- "Failed to reject invitation": "Failed to reject invitation",
- "This room is not public. You will not be able to rejoin without an invite.": "This room is not public. You will not be able to rejoin without an invite.",
- "Are you sure you want to leave the room '%(roomName)s'?": "Are you sure you want to leave the room '%(roomName)s'?",
- "Failed to leave room": "Failed to leave room",
- "Can't leave Server Notices room": "Can't leave Server Notices room",
- "This room is used for important messages from the Homeserver, so you cannot leave it.": "This room is used for important messages from the Homeserver, so you cannot leave it.",
- "Signed Out": "Signed Out",
- "For security, this session has been signed out. Please sign in again.": "For security, this session has been signed out. Please sign in again.",
- "Terms and Conditions": "Terms and Conditions",
- "To continue using the %(homeserverDomain)s homeserver you must review and agree to our terms and conditions.": "To continue using the %(homeserverDomain)s homeserver you must review and agree to our terms and conditions.",
- "Review terms and conditions": "Review terms and conditions",
- "Old cryptography data detected": "Old cryptography data detected",
- "Data from an older version of Riot has been detected. This will have caused end-to-end cryptography to malfunction in the older version. End-to-end encrypted messages exchanged recently whilst using the older version may not be decryptable in this version. This may also cause messages exchanged with this version to fail. If you experience problems, log out and back in again. To retain message history, export and re-import your keys.": "Data from an older version of Riot has been detected. This will have caused end-to-end cryptography to malfunction in the older version. End-to-end encrypted messages exchanged recently whilst using the older version may not be decryptable in this version. This may also cause messages exchanged with this version to fail. If you experience problems, log out and back in again. To retain message history, export and re-import your keys.",
- "Logout": "Logout",
- "Your Communities": "Your Communities",
- "Did you know: you can use communities to filter your Riot.im experience!": "Did you know: you can use communities to filter your Riot.im experience!",
- "To set up a filter, drag a community avatar over to the filter panel on the far left hand side of the screen. You can click on an avatar in the filter panel at any time to see only the rooms and people associated with that community.": "To set up a filter, drag a community avatar over to the filter panel on the far left hand side of the screen. You can click on an avatar in the filter panel at any time to see only the rooms and people associated with that community.",
- "Error whilst fetching joined communities": "Error whilst fetching joined communities",
- "Create a new community": "Create a new community",
- "Create a community to group together users and rooms! Build a custom homepage to mark out your space in the Matrix universe.": "Create a community to group together users and rooms! Build a custom homepage to mark out your space in the Matrix universe.",
- "You have no visible notifications": "You have no visible notifications",
- "Members": "Members",
- "%(count)s Members|other": "%(count)s Members",
- "%(count)s Members|one": "%(count)s Member",
- "Invite to this room": "Invite to this room",
- "Files": "Files",
- "Notifications": "Notifications",
- "Hide panel": "Hide panel",
- "Invite to this community": "Invite to this community",
- "Failed to get protocol list from Home Server": "Failed to get protocol list from Home Server",
- "The Home Server may be too old to support third party networks": "The Home Server may be too old to support third party networks",
- "Failed to get public room list": "Failed to get public room list",
- "The server may be unavailable or overloaded": "The server may be unavailable or overloaded",
- "Delete the room alias %(alias)s and remove %(name)s from the directory?": "Delete the room alias %(alias)s and remove %(name)s from the directory?",
- "Remove %(name)s from the directory?": "Remove %(name)s from the directory?",
- "Remove from Directory": "Remove from Directory",
- "remove %(name)s from the directory.": "remove %(name)s from the directory.",
- "delete the alias.": "delete the alias.",
- "Unable to join network": "Unable to join network",
- "Riot does not know how to join a room on this network": "Riot does not know how to join a room on this network",
- "Room not found": "Room not found",
- "Couldn't find a matching Matrix room": "Couldn't find a matching Matrix room",
- "Fetching third party location failed": "Fetching third party location failed",
- "Unable to look up room ID from server": "Unable to look up room ID from server",
- "Directory": "Directory",
- "Search for a room": "Search for a room",
- "#example": "#example",
- "Scroll to bottom of page": "Scroll to bottom of page",
- "Message not sent due to unknown devices being present": "Message not sent due to unknown devices being present",
- "Show devices, send anyway or cancel.": "Show devices, send anyway or cancel.",
- "You can't send any messages until you review and agree to our terms and conditions.": "You can't send any messages until you review and agree to our terms and conditions.",
- "Your message wasn't sent because this homeserver has hit its Monthly Active User Limit. Please contact your service administrator to continue using the service.": "Your message wasn't sent because this homeserver has hit its Monthly Active User Limit. Please contact your service administrator to continue using the service.",
- "Your message wasn't sent because this homeserver has exceeded a resource limit. Please contact your service administrator to continue using the service.": "Your message wasn't sent because this homeserver has exceeded a resource limit. Please contact your service administrator to continue using the service.",
- "%(count)s of your messages have not been sent.|other": "Some of your messages have not been sent.",
- "%(count)s of your messages have not been sent.|one": "Your message was not sent.",
- "%(count)s Resend all or cancel all now. You can also select individual messages to resend or cancel.|other": "Resend all or cancel all now. You can also select individual messages to resend or cancel.",
- "%(count)s Resend all or cancel all now. You can also select individual messages to resend or cancel.|one": "Resend message or cancel message now.",
- "Connectivity to the server has been lost.": "Connectivity to the server has been lost.",
- "Sent messages will be stored until your connection has returned.": "Sent messages will be stored until your connection has returned.",
- "%(count)s new messages|other": "%(count)s new messages",
- "%(count)s new messages|one": "%(count)s new message",
- "Active call": "Active call",
- "There's no one else here! Would you like to invite others or stop warning about the empty room?": "There's no one else here! Would you like to invite others or stop warning about the empty room?",
- "more": "more",
- "You seem to be uploading files, are you sure you want to quit?": "You seem to be uploading files, are you sure you want to quit?",
- "You seem to be in a call, are you sure you want to quit?": "You seem to be in a call, are you sure you want to quit?",
- "Failed to upload file": "Failed to upload file",
- "Server may be unavailable, overloaded, or the file too big": "Server may be unavailable, overloaded, or the file too big",
- "Search failed": "Search failed",
- "Server may be unavailable, overloaded, or search timed out :(": "Server may be unavailable, overloaded, or search timed out :(",
- "No more results": "No more results",
- "Unknown room %(roomId)s": "Unknown room %(roomId)s",
- "Room": "Room",
- "Failed to save settings": "Failed to save settings",
- "Failed to reject invite": "Failed to reject invite",
- "Fill screen": "Fill screen",
- "Click to unmute video": "Click to unmute video",
- "Click to mute video": "Click to mute video",
- "Click to unmute audio": "Click to unmute audio",
- "Click to mute audio": "Click to mute audio",
- "Expand panel": "Expand panel",
- "Collapse panel": "Collapse panel",
- "Filter room names": "Filter room names",
- "Clear filter": "Clear filter",
- "Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.",
- "Tried to load a specific point in this room's timeline, but was unable to find it.": "Tried to load a specific point in this room's timeline, but was unable to find it.",
- "Failed to load timeline position": "Failed to load timeline position",
- "Uploading %(filename)s and %(count)s others|other": "Uploading %(filename)s and %(count)s others",
- "Uploading %(filename)s and %(count)s others|zero": "Uploading %(filename)s",
- "Uploading %(filename)s and %(count)s others|one": "Uploading %(filename)s and %(count)s other",
- "Light theme": "Light theme",
- "Dark theme": "Dark theme",
- "Status.im theme": "Status.im theme",
- "Can't load user settings": "Can't load user settings",
- "Server may be unavailable or overloaded": "Server may be unavailable or overloaded",
- "For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.": "For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.",
- "Success": "Success",
- "Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them": "Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them",
- "Remove Contact Information?": "Remove Contact Information?",
- "Remove %(threePid)s?": "Remove %(threePid)s?",
- "Unable to remove contact information": "Unable to remove contact information",
- "Refer a friend to Riot:": "Refer a friend to Riot:",
- "Interface Language": "Interface Language",
- "User Interface": "User Interface",
- "Autocomplete Delay (ms):": "Autocomplete Delay (ms):",
- "": "",
- "Import E2E room keys": "Import E2E room keys",
- "Cryptography": "Cryptography",
- "Device ID:": "Device ID:",
- "Device key:": "Device key:",
- "Ignored Users": "Ignored Users",
- "Debug Logs Submission": "Debug Logs Submission",
- "If you've submitted a bug via GitHub, debug logs can help us track down the problem. Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited and the usernames of other users. They do not contain messages.": "If you've submitted a bug via GitHub, debug logs can help us track down the problem. Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited and the usernames of other users. They do not contain messages.",
- "Riot collects anonymous analytics to allow us to improve the application.": "Riot collects anonymous analytics to allow us to improve the application.",
- "Privacy is important to us, so we don't collect any personal or identifiable data for our analytics.": "Privacy is important to us, so we don't collect any personal or identifiable data for our analytics.",
- "Learn more about how we use analytics.": "Learn more about how we use analytics.",
- "Labs": "Labs",
- "These are experimental features that may break in unexpected ways": "These are experimental features that may break in unexpected ways",
- "Use with caution": "Use with caution",
- "Lazy loading members not supported": "Lazy loading members not supported",
- "Lazy loading is not supported by your current homeserver.": "Lazy loading is not supported by your current homeserver.",
- "Deactivate my account": "Deactivate my account",
- "Legal": "Legal",
- "Clear Cache": "Clear Cache",
- "Clear Cache and Reload": "Clear Cache and Reload",
- "Updates": "Updates",
- "Check for update": "Check for update",
- "Reject all %(invitedRooms)s invites": "Reject all %(invitedRooms)s invites",
- "Bulk Options": "Bulk Options",
- "Desktop specific": "Desktop specific",
- "Start automatically after system login": "Start automatically after system login",
- "No media permissions": "No media permissions",
- "You may need to manually permit Riot to access your microphone/webcam": "You may need to manually permit Riot to access your microphone/webcam",
- "Missing Media Permissions, click here to request.": "Missing Media Permissions, click here to request.",
- "No Audio Outputs detected": "No Audio Outputs detected",
- "No Microphones detected": "No Microphones detected",
- "No Webcams detected": "No Webcams detected",
- "Default Device": "Default Device",
- "Audio Output": "Audio Output",
- "Microphone": "Microphone",
- "Camera": "Camera",
- "VoIP": "VoIP",
- "Email": "Email",
- "Add email address": "Add email address",
- "Profile": "Profile",
- "Display name": "Display name",
- "Account": "Account",
- "To return to your account in future you need to set a password": "To return to your account in future you need to set a password",
- "Logged in as:": "Logged in as:",
- "Access Token:": "Access Token:",
- "click to reveal": "click to reveal",
- "Homeserver is": "Homeserver is",
- "Identity Server is": "Identity Server is",
- "matrix-react-sdk version:": "matrix-react-sdk version:",
- "riot-web version:": "riot-web version:",
- "olm version:": "olm version:",
- "Failed to send email": "Failed to send email",
- "The email address linked to your account must be entered.": "The email address linked to your account must be entered.",
- "A new password must be entered.": "A new password must be entered.",
- "New passwords must match each other.": "New passwords must match each other.",
- "Resetting password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Resetting password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.",
- "An email has been sent to %(emailAddress)s. Once you've followed the link it contains, click below.": "An email has been sent to %(emailAddress)s. Once you've followed the link it contains, click below.",
- "I have verified my email address": "I have verified my email address",
- "Your password has been reset": "Your password has been reset",
- "You have been logged out of all devices and will no longer receive push notifications. To re-enable notifications, sign in again on each device": "You have been logged out of all devices and will no longer receive push notifications. To re-enable notifications, sign in again on each device",
- "Return to login screen": "Return to login screen",
- "To reset your password, enter the email address linked to your account": "To reset your password, enter the email address linked to your account",
- "New password": "New password",
- "Confirm your new password": "Confirm your new password",
- "Send Reset Email": "Send Reset Email",
- "Create an account": "Create an account",
- "This Home Server does not support login using email address.": "This Home Server does not support login using email address.",
- "Please contact your service administrator to continue using this service.": "Please contact your service administrator to continue using this service.",
- "Incorrect username and/or password.": "Incorrect username and/or password.",
- "Please note you are logging into the %(hs)s server, not matrix.org.": "Please note you are logging into the %(hs)s server, not matrix.org.",
- "Guest access is disabled on this Home Server.": "Guest access is disabled on this Home Server.",
- "The phone number entered looks invalid": "The phone number entered looks invalid",
- "This homeserver doesn't offer any login flows which are supported by this client.": "This homeserver doesn't offer any login flows which are supported by this client.",
- "Error: Problem communicating with the given homeserver.": "Error: Problem communicating with the given homeserver.",
- "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.": "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.",
- "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.",
- "Try the app first": "Try the app first",
- "Sign in to get started": "Sign in to get started",
- "Failed to fetch avatar URL": "Failed to fetch avatar URL",
- "Set a display name:": "Set a display name:",
- "Upload an avatar:": "Upload an avatar:",
- "Unable to query for supported registration methods": "Unable to query for supported registration methods",
- "This server does not support authentication with a phone number.": "This server does not support authentication with a phone number.",
- "Missing password.": "Missing password.",
- "Passwords don't match.": "Passwords don't match.",
- "Password too short (min %(MIN_PASSWORD_LENGTH)s).": "Password too short (min %(MIN_PASSWORD_LENGTH)s).",
- "This doesn't look like a valid email address.": "This doesn't look like a valid email address.",
- "This doesn't look like a valid phone number.": "This doesn't look like a valid phone number.",
- "You need to enter a user name.": "You need to enter a user name.",
- "An unknown error occurred.": "An unknown error occurred.",
- "I already have an account": "I already have an account",
- "Commands": "Commands",
- "Results from DuckDuckGo": "Results from DuckDuckGo",
- "Emoji": "Emoji",
- "Notify the whole room": "Notify the whole room",
- "Room Notification": "Room Notification",
- "Users": "Users",
- "unknown device": "unknown device",
- "NOT verified": "NOT verified",
- "verified": "verified",
- "Verification": "Verification",
- "Ed25519 fingerprint": "Ed25519 fingerprint",
- "User ID": "User ID",
- "Curve25519 identity key": "Curve25519 identity key",
- "none": "none",
- "Claimed Ed25519 fingerprint key": "Claimed Ed25519 fingerprint key",
- "Algorithm": "Algorithm",
- "unencrypted": "unencrypted",
- "Decryption error": "Decryption error",
- "Session ID": "Session ID",
- "End-to-end encryption information": "End-to-end encryption information",
- "Event information": "Event information",
- "Sender device information": "Sender device information",
- "Passphrases must match": "Passphrases must match",
- "Passphrase must not be empty": "Passphrase must not be empty",
- "Export room keys": "Export room keys",
- "This process allows you to export the keys for messages you have received in encrypted rooms to a local file. You will then be able to import the file into another Matrix client in the future, so that client will also be able to decrypt these messages.": "This process allows you to export the keys for messages you have received in encrypted rooms to a local file. You will then be able to import the file into another Matrix client in the future, so that client will also be able to decrypt these messages.",
- "The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a passphrase below, which will be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.": "The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a passphrase below, which will be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.",
- "Enter passphrase": "Enter passphrase",
- "Confirm passphrase": "Confirm passphrase",
- "Export": "Export",
- "Import room keys": "Import room keys",
- "This process allows you to import encryption keys that you had previously exported from another Matrix client. You will then be able to decrypt any messages that the other client could decrypt.": "This process allows you to import encryption keys that you had previously exported from another Matrix client. You will then be able to decrypt any messages that the other client could decrypt.",
- "The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.": "The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.",
- "You must join the room to see its files": "You must join the room to see its files",
- "Reject all %(invitedRooms)s invites": "Reject all %(invitedRooms)s invites",
- "Start new chat": "Start new chat",
- "Guest users can't invite users. Please register.": "Guest users can't invite users. Please register.",
- "Failed to invite": "Failed to invite",
- "Failed to invite user": "Failed to invite user",
- "Failed to invite the following users to the %(roomName)s room:": "Failed to invite the following users to the %(roomName)s room:",
- "Confirm Removal": "Confirm Removal",
- "Are you sure you wish to remove (delete) this event? Note that if you delete a room name or topic change, it could undo the change.": "Are you sure you wish to remove (delete) this event? Note that if you delete a room name or topic change, it could undo the change.",
- "Unknown error": "Unknown error",
- "Incorrect password": "Incorrect password",
- "This will make your account permanently unusable. You will not be able to re-register the same user ID.": "This will make your account permanently unusable. You will not be able to re-register the same user ID.",
- "This action is irreversible.": "This action is irreversible.",
- "To continue, please enter your password.": "To continue, please enter your password.",
- "To verify that this device can be trusted, please contact its owner using some other means (e.g. in person or a phone call) and ask them whether the key they see in their User Settings for this device matches the key below:": "To verify that this device can be trusted, please contact its owner using some other means (e.g. in person or a phone call) and ask them whether the key they see in their User Settings for this device matches the key below:",
- "Device name": "Device name",
- "Device Name": "Device Name",
- "Device key": "Device key",
- "If it matches, press the verify button below. If it doesn't, then someone else is intercepting this device and you probably want to press the blacklist button instead.": "If it matches, press the verify button below. If it doesn't, then someone else is intercepting this device and you probably want to press the blacklist button instead.",
- "In future this verification process will be more sophisticated.": "In future this verification process will be more sophisticated.",
- "Verify device": "Verify device",
- "Verifies a user, device, and pubkey tuple": "Verifies a user, device, and pubkey tuple",
- "I verify that the keys match": "I verify that the keys match",
- "We encountered an error trying to restore your previous session. If you continue, you will need to log in again, and encrypted chat history will be unreadable.": "We encountered an error trying to restore your previous session. If you continue, you will need to log in again, and encrypted chat history will be unreadable.",
- "Unable to restore session": "Unable to restore session",
- "If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.": "If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.",
- "Continue anyway": "Continue anyway",
- "Your display name is how you'll appear to others when you speak in rooms. What would you like it to be?": "Your display name is how you'll appear to others when you speak in rooms. What would you like it to be?",
- "You are currently blacklisting unverified devices; to send messages to these devices you must verify them.": "You are currently blacklisting unverified devices; to send messages to these devices you must verify them.",
- "We recommend you go through the verification process for each device to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.": "We recommend you go through the verification process for each device to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.",
- "\"%(RoomName)s\" contains devices that you haven't seen before.": "\"%(RoomName)s\" contains devices that you haven't seen before.",
- "Unknown devices": "Unknown devices",
- "Unknown Address": "Unknown Address",
- "Unblacklist": "Unblacklist",
- "Blacklist": "Blacklist",
- "Unverify": "Unverify",
- "Verify...": "Verify...",
- "ex. @bob:example.com": "ex. @bob:example.com",
- "Add User": "Add User",
- "This Home Server would like to make sure you are not a robot": "This Home Server would like to make sure you are not a robot",
- "Sign in with CAS": "Sign in with CAS",
- "Custom Server Options": "Custom Server Options",
- "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.": "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.",
- "This allows you to use this app with an existing Matrix account on a different home server.": "This allows you to use this app with an existing Matrix account on a different home server.",
- "You can also set a custom identity server but this will typically prevent interaction with users based on email address.": "You can also set a custom identity server but this will typically prevent interaction with users based on email address.",
- "Dismiss": "Dismiss",
- "Please check your email to continue registration.": "Please check your email to continue registration.",
- "Token incorrect": "Token incorrect",
- "A text message has been sent to": "A text message has been sent to",
- "Please enter the code it contains:": "Please enter the code it contains:",
- "powered by Matrix": "powered by Matrix",
- "If you don't specify an email address, you won't be able to reset your password. Are you sure?": "If you don't specify an email address, you won't be able to reset your password. Are you sure?",
- "You are registering with %(SelectedTeamName)s": "You are registering with %(SelectedTeamName)s",
- "Default server": "Default server",
- "Custom server": "Custom server",
- "Home server URL": "Home server URL",
- "Identity server URL": "Identity server URL",
- "What does this mean?": "What does this mean?",
- "Error decrypting audio": "Error decrypting audio",
- "Error decrypting image": "Error decrypting image",
- "Image '%(Body)s' cannot be displayed.": "Image '%(Body)s' cannot be displayed.",
- "This image cannot be displayed.": "This image cannot be displayed.",
- "Error decrypting video": "Error decrypting video",
- "Add an Integration": "Add an Integration",
- "You are about to be taken to a third-party site so you can authenticate your account for use with %(integrationsUrl)s. Do you wish to continue?": "You are about to be taken to a third-party site so you can authenticate your account for use with %(integrationsUrl)s. Do you wish to continue?",
- "Removed or unknown message type": "Removed or unknown message type",
- "Disable URL previews by default for participants in this room": "Disable URL previews by default for participants in this room",
- "Disable URL previews for this room (affects only you)": "Disable URL previews for this room (affects only you)",
- "URL previews are %(globalDisableUrlPreview)s by default for participants in this room.": "URL previews are %(globalDisableUrlPreview)s by default for participants in this room.",
- "URL Previews": "URL Previews",
- "Enable URL previews for this room (affects only you)": "Enable URL previews for this room (affects only you)",
- "Drop file here to upload": "Drop file here to upload",
- " (unsupported)": " (unsupported)",
- "Ongoing conference call%(supportedText)s.": "Ongoing conference call%(supportedText)s.",
- "for %(amount)ss": "for %(amount)ss",
- "for %(amount)sm": "for %(amount)sm",
- "for %(amount)sh": "for %(amount)sh",
- "for %(amount)sd": "for %(amount)sd",
- "Online": "Online",
- "Idle": "Idle",
- "Offline": "Offline",
- "Updates": "Updates",
- "Check for update": "Check for update",
- "Start chatting": "Start chatting",
- "Start Chatting": "Start Chatting",
- "Click on the button below to start chatting!": "Click on the button below to start chatting!",
- "$senderDisplayName changed the room avatar to ": "$senderDisplayName changed the room avatar to ",
- "%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s removed the room avatar.",
- "%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s changed the avatar for %(roomName)s",
- "Username available": "Username available",
- "Username not available": "Username not available",
- "Something went wrong!": "Something went wrong!",
- "This will be your account name on the homeserver, or you can pick a different server.": "This will be your account name on the homeserver, or you can pick a different server.",
- "If you already have a Matrix account you can log in instead.": "If you already have a Matrix account you can log in instead.",
- "Your browser does not support the required cryptography extensions": "Your browser does not support the required cryptography extensions",
- "Not a valid Riot keyfile": "Not a valid Riot keyfile",
- "Authentication check failed: incorrect password?": "Authentication check failed: incorrect password?",
- "Disable Peer-to-Peer for 1:1 calls": "Disable Peer-to-Peer for 1:1 calls",
- "Do you want to set an email address?": "Do you want to set an email address?",
- "This will allow you to reset your password and receive notifications.": "This will allow you to reset your password and receive notifications.",
- "To return to your account in future you need to set a password": "To return to your account in future you need to set a password",
- "Skip": "Skip",
- "Start verification": "Start verification",
- "Share without verifying": "Share without verifying",
- "Ignore request": "Ignore request",
- "You added a new device '%(displayName)s', which is requesting encryption keys.": "You added a new device '%(displayName)s', which is requesting encryption keys.",
- "Your unverified device '%(displayName)s' is requesting encryption keys.": "Your unverified device '%(displayName)s' is requesting encryption keys.",
- "Encryption key request": "Encryption key request",
- "Autocomplete Delay (ms):": "Autocomplete Delay (ms):",
- "This Home server does not support groups": "This Home server does not support groups",
- "Loading device info...": "Loading device info...",
- "Groups": "Groups",
- "Create a new group": "Create a new group",
- "Create Group": "Create Group",
- "Group Name": "Group Name",
- "Example": "Example",
- "Create": "Create",
- "Group ID": "Group ID",
- "+example:%(domain)s": "+example:%(domain)s",
- "Group IDs must be of the form +localpart:%(domain)s": "Group IDs must be of the form +localpart:%(domain)s",
- "It is currently only possible to create groups on your own home server: use a group ID ending with %(domain)s": "It is currently only possible to create groups on your own home server: use a group ID ending with %(domain)s",
- "Room creation failed": "Room creation failed",
- "You are a member of these groups:": "You are a member of these groups:",
- "Create a group to represent your community! Define a set of rooms and your own custom homepage to mark out your space in the Matrix universe.": "Create a group to represent your community! Define a set of rooms and your own custom homepage to mark out your space in the Matrix universe.",
- "Join an existing group": "Join an existing group",
- "To join an existing group you'll have to know its group identifier; this will look something like +example:matrix.org.": "To join an existing group you'll have to know its group identifier; this will look something like +example:matrix.org.",
- "Featured Rooms:": "Featured Rooms:",
- "Error whilst fetching joined groups": "Error whilst fetching joined groups",
- "Featured Users:": "Featured Users:",
- "Edit Group": "Edit Group",
- "Automatically replace plain text Emoji": "Automatically replace plain text Emoji",
- "Failed to upload image": "Failed to upload image",
- "Failed to update group": "Failed to update group",
- "Hide avatars in user and room mentions": "Hide avatars in user and room mentions",
- "%(widgetName)s widget added by %(senderName)s": "%(widgetName)s widget added by %(senderName)s",
- "%(widgetName)s widget removed by %(senderName)s": "%(widgetName)s widget removed by %(senderName)s",
- "%(widgetName)s widget modified by %(senderName)s": "%(widgetName)s widget modified by %(senderName)s",
- "Robot check is currently unavailable on desktop - please use a web browser": "Robot check is currently unavailable on desktop - please use a web browser",
"%(senderName)s added %(count)s %(addedAddresses)s as an address for this room.|one": "%(senderName)s added %(addedAddresses)s as an address for this room.",
"%(senderName)s added %(count)s %(addedAddresses)s as addresses for this room.|other": "%(senderName)s added %(addedAddresses)s as addresses for this room.",
"%(senderName)s removed %(count)s %(removedAddresses)s as an address for this room.|one": "%(senderName)s removed %(removedAddresses)s as an address for this room.",
From a4b7348703e6a7cfb9463b64dddb1bcf7052c4f6 Mon Sep 17 00:00:00 2001
From: Matthew Hodgson
Date: Sun, 16 Sep 2018 19:11:11 +0100
Subject: [PATCH 320/343] fix merge on i18n again
---
src/i18n/strings/en_EN.json | 273 ++++++++++++++++++++++++++++++++++++
1 file changed, 273 insertions(+)
diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json
index 6c42b0a005..6b51a0122a 100644
--- a/src/i18n/strings/en_EN.json
+++ b/src/i18n/strings/en_EN.json
@@ -973,6 +973,279 @@
"Share message history with new users": "Share message history with new users",
"Encrypt room": "Encrypt room",
"You must register to use this functionality": "You must register to use this functionality",
+ "You must join the room to see its files": "You must join the room to see its files",
+ "There are no visible files in this room": "There are no visible files in this room",
+ "
HTML for your community's page
\n
\n Use the long description to introduce new members to the community, or distribute\n some important links\n
\n
\n You can even use 'img' tags\n
\n": "
HTML for your community's page
\n
\n Use the long description to introduce new members to the community, or distribute\n some important links\n
\n
\n You can even use 'img' tags\n
\n",
+ "Add rooms to the community summary": "Add rooms to the community summary",
+ "Which rooms would you like to add to this summary?": "Which rooms would you like to add to this summary?",
+ "Add to summary": "Add to summary",
+ "Failed to add the following rooms to the summary of %(groupId)s:": "Failed to add the following rooms to the summary of %(groupId)s:",
+ "Add a Room": "Add a Room",
+ "Failed to remove the room from the summary of %(groupId)s": "Failed to remove the room from the summary of %(groupId)s",
+ "The room '%(roomName)s' could not be removed from the summary.": "The room '%(roomName)s' could not be removed from the summary.",
+ "Add users to the community summary": "Add users to the community summary",
+ "Who would you like to add to this summary?": "Who would you like to add to this summary?",
+ "Failed to add the following users to the summary of %(groupId)s:": "Failed to add the following users to the summary of %(groupId)s:",
+ "Add a User": "Add a User",
+ "Failed to remove a user from the summary of %(groupId)s": "Failed to remove a user from the summary of %(groupId)s",
+ "The user '%(displayName)s' could not be removed from the summary.": "The user '%(displayName)s' could not be removed from the summary.",
+ "Failed to upload image": "Failed to upload image",
+ "Failed to update community": "Failed to update community",
+ "Unable to accept invite": "Unable to accept invite",
+ "Unable to join community": "Unable to join community",
+ "Leave Community": "Leave Community",
+ "Leave %(groupName)s?": "Leave %(groupName)s?",
+ "Unable to leave community": "Unable to leave community",
+ "Community Settings": "Community Settings",
+ "Changes made to your community name and avatar might not be seen by other users for up to 30 minutes.": "Changes made to your community name and avatar might not be seen by other users for up to 30 minutes.",
+ "These rooms are displayed to community members on the community page. Community members can join the rooms by clicking on them.": "These rooms are displayed to community members on the community page. Community members can join the rooms by clicking on them.",
+ "Add rooms to this community": "Add rooms to this community",
+ "Featured Rooms:": "Featured Rooms:",
+ "Featured Users:": "Featured Users:",
+ "%(inviter)s has invited you to join this community": "%(inviter)s has invited you to join this community",
+ "Join this community": "Join this community",
+ "Leave this community": "Leave this community",
+ "You are an administrator of this community": "You are an administrator of this community",
+ "You are a member of this community": "You are a member of this community",
+ "Who can join this community?": "Who can join this community?",
+ "Everyone": "Everyone",
+ "Your community hasn't got a Long Description, a HTML page to show to community members. Click here to open settings and give it one!": "Your community hasn't got a Long Description, a HTML page to show to community members. Click here to open settings and give it one!",
+ "Long Description (HTML)": "Long Description (HTML)",
+ "Description": "Description",
+ "Community %(groupId)s not found": "Community %(groupId)s not found",
+ "This Home server does not support communities": "This Home server does not support communities",
+ "Failed to load %(groupId)s": "Failed to load %(groupId)s",
+ "Couldn't load home page": "Couldn't load home page",
+ "Login": "Login",
+ "Failed to reject invitation": "Failed to reject invitation",
+ "This room is not public. You will not be able to rejoin without an invite.": "This room is not public. You will not be able to rejoin without an invite.",
+ "Are you sure you want to leave the room '%(roomName)s'?": "Are you sure you want to leave the room '%(roomName)s'?",
+ "Failed to leave room": "Failed to leave room",
+ "Can't leave Server Notices room": "Can't leave Server Notices room",
+ "This room is used for important messages from the Homeserver, so you cannot leave it.": "This room is used for important messages from the Homeserver, so you cannot leave it.",
+ "Signed Out": "Signed Out",
+ "For security, this session has been signed out. Please sign in again.": "For security, this session has been signed out. Please sign in again.",
+ "Terms and Conditions": "Terms and Conditions",
+ "To continue using the %(homeserverDomain)s homeserver you must review and agree to our terms and conditions.": "To continue using the %(homeserverDomain)s homeserver you must review and agree to our terms and conditions.",
+ "Review terms and conditions": "Review terms and conditions",
+ "Old cryptography data detected": "Old cryptography data detected",
+ "Data from an older version of Riot has been detected. This will have caused end-to-end cryptography to malfunction in the older version. End-to-end encrypted messages exchanged recently whilst using the older version may not be decryptable in this version. This may also cause messages exchanged with this version to fail. If you experience problems, log out and back in again. To retain message history, export and re-import your keys.": "Data from an older version of Riot has been detected. This will have caused end-to-end cryptography to malfunction in the older version. End-to-end encrypted messages exchanged recently whilst using the older version may not be decryptable in this version. This may also cause messages exchanged with this version to fail. If you experience problems, log out and back in again. To retain message history, export and re-import your keys.",
+ "Logout": "Logout",
+ "Your Communities": "Your Communities",
+ "Did you know: you can use communities to filter your Riot.im experience!": "Did you know: you can use communities to filter your Riot.im experience!",
+ "To set up a filter, drag a community avatar over to the filter panel on the far left hand side of the screen. You can click on an avatar in the filter panel at any time to see only the rooms and people associated with that community.": "To set up a filter, drag a community avatar over to the filter panel on the far left hand side of the screen. You can click on an avatar in the filter panel at any time to see only the rooms and people associated with that community.",
+ "Error whilst fetching joined communities": "Error whilst fetching joined communities",
+ "Create a new community": "Create a new community",
+ "Create a community to group together users and rooms! Build a custom homepage to mark out your space in the Matrix universe.": "Create a community to group together users and rooms! Build a custom homepage to mark out your space in the Matrix universe.",
+ "You have no visible notifications": "You have no visible notifications",
+ "Members": "Members",
+ "%(count)s Members|other": "%(count)s Members",
+ "%(count)s Members|one": "%(count)s Member",
+ "Invite to this room": "Invite to this room",
+ "Files": "Files",
+ "Notifications": "Notifications",
+ "Hide panel": "Hide panel",
+ "Invite to this community": "Invite to this community",
+ "Failed to get protocol list from Home Server": "Failed to get protocol list from Home Server",
+ "The Home Server may be too old to support third party networks": "The Home Server may be too old to support third party networks",
+ "Failed to get public room list": "Failed to get public room list",
+ "The server may be unavailable or overloaded": "The server may be unavailable or overloaded",
+ "Delete the room alias %(alias)s and remove %(name)s from the directory?": "Delete the room alias %(alias)s and remove %(name)s from the directory?",
+ "Remove %(name)s from the directory?": "Remove %(name)s from the directory?",
+ "Remove from Directory": "Remove from Directory",
+ "remove %(name)s from the directory.": "remove %(name)s from the directory.",
+ "delete the alias.": "delete the alias.",
+ "Unable to join network": "Unable to join network",
+ "Riot does not know how to join a room on this network": "Riot does not know how to join a room on this network",
+ "Room not found": "Room not found",
+ "Couldn't find a matching Matrix room": "Couldn't find a matching Matrix room",
+ "Fetching third party location failed": "Fetching third party location failed",
+ "Unable to look up room ID from server": "Unable to look up room ID from server",
+ "Directory": "Directory",
+ "Search for a room": "Search for a room",
+ "#example": "#example",
+ "Scroll to bottom of page": "Scroll to bottom of page",
+ "Message not sent due to unknown devices being present": "Message not sent due to unknown devices being present",
+ "Show devices, send anyway or cancel.": "Show devices, send anyway or cancel.",
+ "You can't send any messages until you review and agree to our terms and conditions.": "You can't send any messages until you review and agree to our terms and conditions.",
+ "Your message wasn't sent because this homeserver has hit its Monthly Active User Limit. Please contact your service administrator to continue using the service.": "Your message wasn't sent because this homeserver has hit its Monthly Active User Limit. Please contact your service administrator to continue using the service.",
+ "Your message wasn't sent because this homeserver has exceeded a resource limit. Please contact your service administrator to continue using the service.": "Your message wasn't sent because this homeserver has exceeded a resource limit. Please contact your service administrator to continue using the service.",
+ "%(count)s of your messages have not been sent.|other": "Some of your messages have not been sent.",
+ "%(count)s of your messages have not been sent.|one": "Your message was not sent.",
+ "%(count)s Resend all or cancel all now. You can also select individual messages to resend or cancel.|other": "Resend all or cancel all now. You can also select individual messages to resend or cancel.",
+ "%(count)s Resend all or cancel all now. You can also select individual messages to resend or cancel.|one": "Resend message or cancel message now.",
+ "Connectivity to the server has been lost.": "Connectivity to the server has been lost.",
+ "Sent messages will be stored until your connection has returned.": "Sent messages will be stored until your connection has returned.",
+ "%(count)s new messages|other": "%(count)s new messages",
+ "%(count)s new messages|one": "%(count)s new message",
+ "Active call": "Active call",
+ "There's no one else here! Would you like to invite others or stop warning about the empty room?": "There's no one else here! Would you like to invite others or stop warning about the empty room?",
+ "more": "more",
+ "You seem to be uploading files, are you sure you want to quit?": "You seem to be uploading files, are you sure you want to quit?",
+ "You seem to be in a call, are you sure you want to quit?": "You seem to be in a call, are you sure you want to quit?",
+ "Failed to upload file": "Failed to upload file",
+ "Server may be unavailable, overloaded, or the file too big": "Server may be unavailable, overloaded, or the file too big",
+ "Search failed": "Search failed",
+ "Server may be unavailable, overloaded, or search timed out :(": "Server may be unavailable, overloaded, or search timed out :(",
+ "No more results": "No more results",
+ "Unknown room %(roomId)s": "Unknown room %(roomId)s",
+ "Room": "Room",
+ "Failed to save settings": "Failed to save settings",
+ "Failed to reject invite": "Failed to reject invite",
+ "Fill screen": "Fill screen",
+ "Click to unmute video": "Click to unmute video",
+ "Click to mute video": "Click to mute video",
+ "Click to unmute audio": "Click to unmute audio",
+ "Click to mute audio": "Click to mute audio",
+ "Expand panel": "Expand panel",
+ "Collapse panel": "Collapse panel",
+ "Filter room names": "Filter room names",
+ "Clear filter": "Clear filter",
+ "Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.",
+ "Tried to load a specific point in this room's timeline, but was unable to find it.": "Tried to load a specific point in this room's timeline, but was unable to find it.",
+ "Failed to load timeline position": "Failed to load timeline position",
+ "Uploading %(filename)s and %(count)s others|other": "Uploading %(filename)s and %(count)s others",
+ "Uploading %(filename)s and %(count)s others|zero": "Uploading %(filename)s",
+ "Uploading %(filename)s and %(count)s others|one": "Uploading %(filename)s and %(count)s other",
+ "Light theme": "Light theme",
+ "Dark theme": "Dark theme",
+ "Status.im theme": "Status.im theme",
+ "Can't load user settings": "Can't load user settings",
+ "Server may be unavailable or overloaded": "Server may be unavailable or overloaded",
+ "For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.": "For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.",
+ "Success": "Success",
+ "Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them": "Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them",
+ "Remove Contact Information?": "Remove Contact Information?",
+ "Remove %(threePid)s?": "Remove %(threePid)s?",
+ "Unable to remove contact information": "Unable to remove contact information",
+ "Refer a friend to Riot:": "Refer a friend to Riot:",
+ "Interface Language": "Interface Language",
+ "User Interface": "User Interface",
+ "Autocomplete Delay (ms):": "Autocomplete Delay (ms):",
+ "": "",
+ "Import E2E room keys": "Import E2E room keys",
+ "Cryptography": "Cryptography",
+ "Device ID:": "Device ID:",
+ "Device key:": "Device key:",
+ "Ignored Users": "Ignored Users",
+ "Debug Logs Submission": "Debug Logs Submission",
+ "If you've submitted a bug via GitHub, debug logs can help us track down the problem. Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited and the usernames of other users. They do not contain messages.": "If you've submitted a bug via GitHub, debug logs can help us track down the problem. Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited and the usernames of other users. They do not contain messages.",
+ "Riot collects anonymous analytics to allow us to improve the application.": "Riot collects anonymous analytics to allow us to improve the application.",
+ "Privacy is important to us, so we don't collect any personal or identifiable data for our analytics.": "Privacy is important to us, so we don't collect any personal or identifiable data for our analytics.",
+ "Learn more about how we use analytics.": "Learn more about how we use analytics.",
+ "Labs": "Labs",
+ "These are experimental features that may break in unexpected ways": "These are experimental features that may break in unexpected ways",
+ "Use with caution": "Use with caution",
+ "Lazy loading members not supported": "Lazy loading members not supported",
+ "Lazy loading is not supported by your current homeserver.": "Lazy loading is not supported by your current homeserver.",
+ "Deactivate my account": "Deactivate my account",
+ "Legal": "Legal",
+ "Clear Cache": "Clear Cache",
+ "Clear Cache and Reload": "Clear Cache and Reload",
+ "Updates": "Updates",
+ "Check for update": "Check for update",
+ "Reject all %(invitedRooms)s invites": "Reject all %(invitedRooms)s invites",
+ "Bulk Options": "Bulk Options",
+ "Desktop specific": "Desktop specific",
+ "Start automatically after system login": "Start automatically after system login",
+ "No media permissions": "No media permissions",
+ "You may need to manually permit Riot to access your microphone/webcam": "You may need to manually permit Riot to access your microphone/webcam",
+ "Missing Media Permissions, click here to request.": "Missing Media Permissions, click here to request.",
+ "No Audio Outputs detected": "No Audio Outputs detected",
+ "No Microphones detected": "No Microphones detected",
+ "No Webcams detected": "No Webcams detected",
+ "Default Device": "Default Device",
+ "Audio Output": "Audio Output",
+ "Microphone": "Microphone",
+ "Camera": "Camera",
+ "VoIP": "VoIP",
+ "Email": "Email",
+ "Add email address": "Add email address",
+ "Profile": "Profile",
+ "Display name": "Display name",
+ "Account": "Account",
+ "To return to your account in future you need to set a password": "To return to your account in future you need to set a password",
+ "Logged in as:": "Logged in as:",
+ "Access Token:": "Access Token:",
+ "click to reveal": "click to reveal",
+ "Homeserver is": "Homeserver is",
+ "Identity Server is": "Identity Server is",
+ "matrix-react-sdk version:": "matrix-react-sdk version:",
+ "riot-web version:": "riot-web version:",
+ "olm version:": "olm version:",
+ "Failed to send email": "Failed to send email",
+ "The email address linked to your account must be entered.": "The email address linked to your account must be entered.",
+ "A new password must be entered.": "A new password must be entered.",
+ "New passwords must match each other.": "New passwords must match each other.",
+ "Resetting password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Resetting password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.",
+ "An email has been sent to %(emailAddress)s. Once you've followed the link it contains, click below.": "An email has been sent to %(emailAddress)s. Once you've followed the link it contains, click below.",
+ "I have verified my email address": "I have verified my email address",
+ "Your password has been reset": "Your password has been reset",
+ "You have been logged out of all devices and will no longer receive push notifications. To re-enable notifications, sign in again on each device": "You have been logged out of all devices and will no longer receive push notifications. To re-enable notifications, sign in again on each device",
+ "Return to login screen": "Return to login screen",
+ "To reset your password, enter the email address linked to your account": "To reset your password, enter the email address linked to your account",
+ "New password": "New password",
+ "Confirm your new password": "Confirm your new password",
+ "Send Reset Email": "Send Reset Email",
+ "Create an account": "Create an account",
+ "This Home Server does not support login using email address.": "This Home Server does not support login using email address.",
+ "Please contact your service administrator to continue using this service.": "Please contact your service administrator to continue using this service.",
+ "Incorrect username and/or password.": "Incorrect username and/or password.",
+ "Please note you are logging into the %(hs)s server, not matrix.org.": "Please note you are logging into the %(hs)s server, not matrix.org.",
+ "Guest access is disabled on this Home Server.": "Guest access is disabled on this Home Server.",
+ "The phone number entered looks invalid": "The phone number entered looks invalid",
+ "This homeserver doesn't offer any login flows which are supported by this client.": "This homeserver doesn't offer any login flows which are supported by this client.",
+ "Error: Problem communicating with the given homeserver.": "Error: Problem communicating with the given homeserver.",
+ "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.": "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.",
+ "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.",
+ "Try the app first": "Try the app first",
+ "Sign in to get started": "Sign in to get started",
+ "Failed to fetch avatar URL": "Failed to fetch avatar URL",
+ "Set a display name:": "Set a display name:",
+ "Upload an avatar:": "Upload an avatar:",
+ "Unable to query for supported registration methods": "Unable to query for supported registration methods",
+ "This server does not support authentication with a phone number.": "This server does not support authentication with a phone number.",
+ "Missing password.": "Missing password.",
+ "Passwords don't match.": "Passwords don't match.",
+ "Password too short (min %(MIN_PASSWORD_LENGTH)s).": "Password too short (min %(MIN_PASSWORD_LENGTH)s).",
+ "This doesn't look like a valid email address.": "This doesn't look like a valid email address.",
+ "This doesn't look like a valid phone number.": "This doesn't look like a valid phone number.",
+ "You need to enter a user name.": "You need to enter a user name.",
+ "An unknown error occurred.": "An unknown error occurred.",
+ "I already have an account": "I already have an account",
+ "Commands": "Commands",
+ "Results from DuckDuckGo": "Results from DuckDuckGo",
+ "Emoji": "Emoji",
+ "Notify the whole room": "Notify the whole room",
+ "Room Notification": "Room Notification",
+ "Users": "Users",
+ "unknown device": "unknown device",
+ "NOT verified": "NOT verified",
+ "verified": "verified",
+ "Verification": "Verification",
+ "Ed25519 fingerprint": "Ed25519 fingerprint",
+ "User ID": "User ID",
+ "Curve25519 identity key": "Curve25519 identity key",
+ "none": "none",
+ "Claimed Ed25519 fingerprint key": "Claimed Ed25519 fingerprint key",
+ "Algorithm": "Algorithm",
+ "unencrypted": "unencrypted",
+ "Decryption error": "Decryption error",
+ "Session ID": "Session ID",
+ "End-to-end encryption information": "End-to-end encryption information",
+ "Event information": "Event information",
+ "Sender device information": "Sender device information",
+ "Passphrases must match": "Passphrases must match",
+ "Passphrase must not be empty": "Passphrase must not be empty",
+ "Export room keys": "Export room keys",
+ "This process allows you to export the keys for messages you have received in encrypted rooms to a local file. You will then be able to import the file into another Matrix client in the future, so that client will also be able to decrypt these messages.": "This process allows you to export the keys for messages you have received in encrypted rooms to a local file. You will then be able to import the file into another Matrix client in the future, so that client will also be able to decrypt these messages.",
+ "The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a passphrase below, which will be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.": "The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a passphrase below, which will be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.",
+ "Enter passphrase": "Enter passphrase",
+ "Confirm passphrase": "Confirm passphrase",
+ "Export": "Export",
+ "Import room keys": "Import room keys",
+ "This process allows you to import encryption keys that you had previously exported from another Matrix client. You will then be able to decrypt any messages that the other client could decrypt.": "This process allows you to import encryption keys that you had previously exported from another Matrix client. You will then be able to decrypt any messages that the other client could decrypt.",
+ "The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.": "The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.",
"%(senderName)s added %(count)s %(addedAddresses)s as an address for this room.|one": "%(senderName)s added %(addedAddresses)s as an address for this room.",
"%(senderName)s added %(count)s %(addedAddresses)s as addresses for this room.|other": "%(senderName)s added %(addedAddresses)s as addresses for this room.",
"%(senderName)s removed %(count)s %(removedAddresses)s as an address for this room.|one": "%(senderName)s removed %(removedAddresses)s as an address for this room.",
From 003083d9fc54161547f0e64cbd4a8781f4d53a92 Mon Sep 17 00:00:00 2001
From: Matthew Hodgson
Date: Sun, 16 Sep 2018 20:19:02 +0100
Subject: [PATCH 321/343] fix plurals
---
src/i18n/strings/en_EN.json | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json
index 6b51a0122a..3de0f2d5c1 100644
--- a/src/i18n/strings/en_EN.json
+++ b/src/i18n/strings/en_EN.json
@@ -1246,9 +1246,9 @@
"Import room keys": "Import room keys",
"This process allows you to import encryption keys that you had previously exported from another Matrix client. You will then be able to decrypt any messages that the other client could decrypt.": "This process allows you to import encryption keys that you had previously exported from another Matrix client. You will then be able to decrypt any messages that the other client could decrypt.",
"The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.": "The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.",
- "%(senderName)s added %(count)s %(addedAddresses)s as an address for this room.|one": "%(senderName)s added %(addedAddresses)s as an address for this room.",
+ "%(senderName)s added %(count)s %(addedAddresses)s as addresses for this room.|one": "%(senderName)s added %(addedAddresses)s as an address for this room.",
"%(senderName)s added %(count)s %(addedAddresses)s as addresses for this room.|other": "%(senderName)s added %(addedAddresses)s as addresses for this room.",
- "%(senderName)s removed %(count)s %(removedAddresses)s as an address for this room.|one": "%(senderName)s removed %(removedAddresses)s as an address for this room.",
+ "%(senderName)s removed %(count)s %(removedAddresses)s as addresses for this room.|one": "%(senderName)s removed %(removedAddresses)s as an address for this room.",
"%(senderName)s removed %(count)s %(removedAddresses)s as addresses for this room.|other": "%(senderName)s removed %(removedAddresses)s as addresses for this room.",
"%(senderName)s changed the addresses of this room.": "%(senderName)s changed the addresses of this room.",
"File to import": "File to import",
From 2ed414494f24435e459e5da0b2ff64e46b0bd254 Mon Sep 17 00:00:00 2001
From: Bruno Windels
Date: Mon, 17 Sep 2018 19:14:52 +0200
Subject: [PATCH 322/343] use Room.myMembership event instead of
RoomMember.membership for me
This is more reliable with LL enabled as the syncing user is
only known when it was active in the current timeline
or when the members have been loaded
---
src/actions/MatrixActionCreators.js | 11 ++++-------
src/components/structures/RoomView.js | 10 +++++-----
src/components/views/rooms/MemberList.js | 17 ++++++++---------
src/stores/RoomListStore.js | 2 +-
4 files changed, 18 insertions(+), 22 deletions(-)
diff --git a/src/actions/MatrixActionCreators.js b/src/actions/MatrixActionCreators.js
index 17be9a5e0f..a18dc77551 100644
--- a/src/actions/MatrixActionCreators.js
+++ b/src/actions/MatrixActionCreators.js
@@ -149,7 +149,7 @@ function createRoomTimelineAction(matrixClient, timelineEvent, room, toStartOfTi
*/
/**
- * Create a MatrixActions.Room.selfMembership action that represents
+ * Create a MatrixActions.Room.myMembership action that represents
* a MatrixClient `RoomMember.membership` matrix event for the syncing user,
* emitted when the member's membership is updated.
*
@@ -159,11 +159,8 @@ function createRoomTimelineAction(matrixClient, timelineEvent, room, toStartOfTi
* @param {string} oldMembership the member's previous membership.
* @returns {RoomMembershipAction} an action of type `MatrixActions.RoomMember.membership`.
*/
-function createSelfRoomMembershipAction(matrixClient, membershipEvent, member, oldMembership) {
- if (member.userId === matrixClient.getUserId()) {
- return { action: 'MatrixActions.Room.selfMembership', member };
- }
- return null;
+function createSelfMembershipAction(matrixClient, room, membership, oldMembership) {
+ return { action: 'MatrixActions.Room.myMembership', room, membership, oldMembership};
}
/**
@@ -205,7 +202,7 @@ export default {
this._addMatrixClientListener(matrixClient, 'Room', createRoomAction);
this._addMatrixClientListener(matrixClient, 'Room.tags', createRoomTagsAction);
this._addMatrixClientListener(matrixClient, 'Room.timeline', createRoomTimelineAction);
- this._addMatrixClientListener(matrixClient, 'RoomMember.membership', createSelfRoomMembershipAction);
+ this._addMatrixClientListener(matrixClient, 'Room.myMembership', createSelfMembershipAction);
this._addMatrixClientListener(matrixClient, 'Event.decrypted', createEventDecryptedAction);
},
diff --git a/src/components/structures/RoomView.js b/src/components/structures/RoomView.js
index 2715a5698d..cf99bb9fc3 100644
--- a/src/components/structures/RoomView.js
+++ b/src/components/structures/RoomView.js
@@ -148,7 +148,7 @@ module.exports = React.createClass({
MatrixClientPeg.get().on("Room.name", this.onRoomName);
MatrixClientPeg.get().on("Room.accountData", this.onRoomAccountData);
MatrixClientPeg.get().on("RoomState.members", this.onRoomStateMember);
- MatrixClientPeg.get().on("RoomMember.membership", this.onRoomMemberMembership);
+ MatrixClientPeg.get().on("Room.myMembership", this.onMyMembership);
MatrixClientPeg.get().on("accountData", this.onAccountData);
// Start listening for RoomViewStore updates
@@ -412,8 +412,8 @@ module.exports = React.createClass({
MatrixClientPeg.get().removeListener("Room.timeline", this.onRoomTimeline);
MatrixClientPeg.get().removeListener("Room.name", this.onRoomName);
MatrixClientPeg.get().removeListener("Room.accountData", this.onRoomAccountData);
+ MatrixClientPeg.get().removeListener("Room.myMembership", this.onMyMembership);
MatrixClientPeg.get().removeListener("RoomState.members", this.onRoomStateMember);
- MatrixClientPeg.get().removeListener("RoomMember.membership", this.onRoomMemberMembership);
MatrixClientPeg.get().removeListener("accountData", this.onAccountData);
}
@@ -715,10 +715,10 @@ module.exports = React.createClass({
this._updateRoomMembers();
},
- onRoomMemberMembership: function(ev, member, oldMembership) {
- if (member.userId == MatrixClientPeg.get().credentials.userId) {
- this._loadMembersIfJoined();
+ onMyMembership: function(room, membership, oldMembership) {
+ if (room.roomId === this.state.roomId) {
this.forceUpdate();
+ this._loadMembersIfJoined(room);
}
},
diff --git a/src/components/views/rooms/MemberList.js b/src/components/views/rooms/MemberList.js
index 6a00c88d37..854bd20c30 100644
--- a/src/components/views/rooms/MemberList.js
+++ b/src/components/views/rooms/MemberList.js
@@ -43,11 +43,14 @@ module.exports = React.createClass({
componentWillMount: function() {
this._mounted = false;
const cli = MatrixClientPeg.get();
- if (!cli.hasLazyLoadMembersEnabled()) {
+ if (cli.hasLazyLoadMembersEnabled()) {
+ // true means will not show a spinner but the
+ // known members so far if not joined
+ cli.on("Room.myMembership", this.onMyMembership);
+ } else {
this._listenForMembersChanges();
}
cli.on("Room", this.onRoom); // invites & joining after peek
- cli.on("RoomMember.membership", this.onRoomMembership); // update when accepting an invite
const enablePresenceByHsUrl = SdkConfig.get()["enable_presence_by_hs_url"];
const hsUrl = MatrixClientPeg.get().baseUrl;
this._showPresence = true;
@@ -79,7 +82,7 @@ module.exports = React.createClass({
if (cli) {
cli.removeListener("RoomState.members", this.onRoomStateMember);
cli.removeListener("RoomMember.name", this.onRoomMemberName);
- cli.removeListener("RoomMember.membership", this.onRoomMembership);
+ cli.removeListener("Room.myMembership", this.onMyMembership);
cli.removeListener("RoomState.events", this.onRoomStateEvent);
cli.removeListener("Room", this.onRoom);
cli.removeListener("User.lastPresenceTs", this.onUserLastPresenceTs);
@@ -182,12 +185,8 @@ module.exports = React.createClass({
this._loadMembersIfNeeded();
},
- onRoomMembership: function(ev, member, oldMembership) {
- const cli = MatrixClientPeg.get();
- const myId = cli.getUserId();
- if (member.userId === myId && oldMembership !== "join" && member.membership === "join") {
- // once we've joined, no need to listen for membership anymore
- cli.removeListener("RoomMember.membership", this.onRoomMembership);
+ onMyMembership: function(room, membership, oldMembership) {
+ if (room.roomId === this.props.roomId && membership === "join") {
this._loadMembersIfNeeded();
}
},
diff --git a/src/stores/RoomListStore.js b/src/stores/RoomListStore.js
index 5a041f52ac..67c0c13be7 100644
--- a/src/stores/RoomListStore.js
+++ b/src/stores/RoomListStore.js
@@ -120,7 +120,7 @@ class RoomListStore extends Store {
this._generateRoomLists();
}
break;
- case 'MatrixActions.Room.selfMembership': {
+ case 'MatrixActions.Room.myMembership': {
this._generateRoomLists();
}
break;
From c3914d34931877a38433802c5bb73007d2cc146a Mon Sep 17 00:00:00 2001
From: Bruno Windels
Date: Mon, 17 Sep 2018 19:18:55 +0200
Subject: [PATCH 323/343] show empty list as initial state instead of spinner
the spinner should only be shown when joined
---
src/components/views/rooms/MemberList.js | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/src/components/views/rooms/MemberList.js b/src/components/views/rooms/MemberList.js
index 854bd20c30..3a2dba9054 100644
--- a/src/components/views/rooms/MemberList.js
+++ b/src/components/views/rooms/MemberList.js
@@ -34,9 +34,10 @@ module.exports = React.createClass({
getInitialState: function() {
const cli = MatrixClientPeg.get();
if (cli.hasLazyLoadMembersEnabled()) {
- return {loading: true};
+ // show an empty list
+ return this._getMembersState([]);
} else {
- return this._getMembersState();
+ return this._getMembersState(this.roomMembers());
}
},
@@ -46,6 +47,7 @@ module.exports = React.createClass({
if (cli.hasLazyLoadMembersEnabled()) {
// true means will not show a spinner but the
// known members so far if not joined
+ this._loadMembersIfNeeded(true);
cli.on("Room.myMembership", this.onMyMembership);
} else {
this._listenForMembersChanges();
@@ -73,7 +75,6 @@ module.exports = React.createClass({
componentDidMount: async function() {
this._mounted = true;
- this._loadMembersIfNeeded(true);
},
componentWillUnmount: function() {
@@ -104,18 +105,17 @@ module.exports = React.createClass({
await room.loadMembersIfNeeded();
} catch(ex) {/* already logged in RoomView */}
if (this._mounted) {
- this.setState(this._getMembersState());
+ this.setState(this._getMembersState(this.roomMembers()));
this._listenForMembersChanges();
}
} else if(initial) {
// show the members we've got
- this.setState(this._getMembersState());
+ this.setState(this._getMembersState(this.roomMembers()));
}
}
},
- _getMembersState: function() {
- const members = this.roomMembers();
+ _getMembersState: function(members) {
// set the state after determining _showPresence to make sure it's
// taken into account while rerendering
return {
From d276b17c2afa70b72ebbef6446fc74668217f9d0 Mon Sep 17 00:00:00 2001
From: Bruno Windels
Date: Mon, 17 Sep 2018 19:19:07 +0200
Subject: [PATCH 324/343] remove dead code
---
src/components/views/rooms/MemberList.js | 29 ------------------------
1 file changed, 29 deletions(-)
diff --git a/src/components/views/rooms/MemberList.js b/src/components/views/rooms/MemberList.js
index 3a2dba9054..2d3bc69ced 100644
--- a/src/components/views/rooms/MemberList.js
+++ b/src/components/views/rooms/MemberList.js
@@ -87,7 +87,6 @@ module.exports = React.createClass({
cli.removeListener("RoomState.events", this.onRoomStateEvent);
cli.removeListener("Room", this.onRoom);
cli.removeListener("User.lastPresenceTs", this.onUserLastPresenceTs);
- // cli.removeListener("Room.timeline", this.onRoomTimeline);
}
// cancel any pending calls to the rate_limited_funcs
@@ -132,34 +131,6 @@ module.exports = React.createClass({
};
},
-/*
- onRoomTimeline: function(ev, room, toStartOfTimeline, removed, data) {
- // ignore anything but real-time updates at the end of the room:
- // updates from pagination will happen when the paginate completes.
- if (toStartOfTimeline || !data || !data.liveEvent) return;
-
- // treat any activity from a user as implicit presence to update the
- // ordering of the list whenever someone says something.
- // Except right now we're not tiebreaking "active now" users in this way
- // so don't bother for now.
- if (ev.getSender()) {
- // console.log("implicit presence from " + ev.getSender());
-
- var tile = this.refs[ev.getSender()];
- if (tile) {
- // work around a race where you might have a room member object
- // before the user object exists. XXX: why does this ever happen?
- var all_members = room.currentState.members;
- var userId = ev.getSender();
- if (all_members[userId].user === null) {
- all_members[userId].user = MatrixClientPeg.get().getUser(userId);
- }
- this._updateList(); // reorder the membership list
- }
- }
- },
-*/
-
onUserLastPresenceTs(event, user) {
// Attach a SINGLE listener for global presence changes then locate the
// member tile and re-render it. This is more efficient than every tile
From dc7212ec2bd12e1917233ed7153b3e0ef529a135 Mon Sep 17 00:00:00 2001
From: Matthew Hodgson
Date: Mon, 17 Sep 2018 18:20:12 +0100
Subject: [PATCH 325/343] switch back to simple TextForEvent
I haven't found anyone who can justify to me why we need
more complicated plurals for i18n (even in Polish) for
%(senderName)s added %(addedAddresses)s and removed %(removedAddresses)s as addresses for this room.
---
package.json | 6 ++---
src/TextForEvent.js | 21 ++++++----------
.../views/messages/RoomAliasesEvent.js | 24 ++++++++++++++-----
src/components/views/rooms/EventTile.js | 7 ++++--
src/i18n/strings/en_EN.json | 3 +++
5 files changed, 36 insertions(+), 25 deletions(-)
diff --git a/package.json b/package.json
index 2cbdb98c2e..effa135d72 100644
--- a/package.json
+++ b/package.json
@@ -85,15 +85,15 @@
"react-dom": "^15.6.0",
"react-gemini-scrollbar": "matrix-org/react-gemini-scrollbar#5e97aef",
"resize-observer-polyfill": "^1.5.0",
+ "sanitize-html": "^1.18.4",
"slate": "0.34.7",
- "slate-react": "^0.12.4",
"slate-html-serializer": "^0.6.1",
"slate-md-serializer": "matrix-org/slate-md-serializer#f7c4ad3",
- "sanitize-html": "^1.18.4",
+ "slate-react": "^0.12.4",
"text-encoding-utf-8": "^1.0.1",
"url": "^0.11.0",
"velocity-vector": "vector-im/velocity#059e3b2",
- "whatwg-fetch": "^1.0.0"
+ "whatwg-fetch": "^1.1.1"
},
"devDependencies": {
"babel-cli": "^6.5.2",
diff --git a/src/TextForEvent.js b/src/TextForEvent.js
index 91ae5d0d70..a17bd7838e 100644
--- a/src/TextForEvent.js
+++ b/src/TextForEvent.js
@@ -199,7 +199,7 @@ function textForMessageEvent(ev) {
}
function textForRoomAliasesEvent(ev) {
- const senderName = event.sender ? event.sender.name : event.getSender();
+ const senderName = ev.sender && ev.sender.name ? ev.sender.name : ev.getSender();
const oldAliases = ev.getPrevContent().aliases || [];
const newAliases = ev.getContent().aliases || [];
@@ -211,13 +211,13 @@ function textForRoomAliasesEvent(ev) {
}
if (addedAliases.length && !removedAliases.length) {
- return _t('%(senderName)s added %(addedAddresses)s as addresses for this room.', {
+ return _t('%(senderName)s added %(count)s %(addedAddresses)s as addresses for this room.', {
senderName: senderName,
count: addedAliases.length,
addedAddresses: addedAliases.join(', '),
});
} else if (!addedAliases.length && removedAliases.length) {
- return _t('%(senderName)s removed %(removedAddresses)s as addresses for this room.', {
+ return _t('%(senderName)s removed %(count)s %(removedAddresses)s as addresses for this room.', {
senderName: senderName,
count: removedAliases.length,
removedAddresses: removedAliases.join(', '),
@@ -228,17 +228,10 @@ function textForRoomAliasesEvent(ev) {
addedAddresses: addedAliases.join(', '),
removedAddresses: removedAliases.join(', '),
};
- /* eslint-disable max-len */
- if (addedAliases.length === 1 && removedAliases.length === 1) {
- return _t('%(senderName)s added %(addedAddresses)s and removed %(removedAddresses)s as addresses for this room.|one,one', args);
- } else if (addedAliases.length !== 1 && removedAliases.length === 1) {
- return _t('%(senderName)s added %(addedAddresses)s and removed %(removedAddresses)s as addresses for this room.|other,one', args);
- } else if (addedAliases.length === 1 && removedAliases.length !== 1) {
- return _t('%(senderName)s added %(addedAddresses)s and removed %(removedAddresses)s as addresses for this room.|one,other', args);
- } else {
- return _t('%(senderName)s added %(addedAddresses)s and removed %(removedAddresses)s as addresses for this room.|other,other', args);
- }
- /* eslint-enable max-len */
+ return _t(
+ '%(senderName)s added %(addedAddresses)s and removed %(removedAddresses)s as addresses for this room.',
+ args,
+ );
}
}
diff --git a/src/components/views/messages/RoomAliasesEvent.js b/src/components/views/messages/RoomAliasesEvent.js
index 7d9b2e6795..f15c5caf49 100644
--- a/src/components/views/messages/RoomAliasesEvent.js
+++ b/src/components/views/messages/RoomAliasesEvent.js
@@ -14,6 +14,16 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
+/****************************************************************
+ ** **
+ ** THIS CLASS IS NOT USED TO RENDER ALIAS CHANGES, IN ORDER **
+ ** TO TRY TO KEEP THINGS SIMPLE AND JUST USE TextualEvent. **
+ ** **
+ ** The code is kept here for ease of reference in future **
+ ** should we need the GenericEventListSummary stuff **
+ ** **
+ ****************************************************************/
+
'use strict';
import React from 'react';
@@ -69,10 +79,8 @@ export class GenericEventListSummary extends React.Component {
let summaryContainer = null;
if (showSummary) {
summaryContainer = (
-
);
});
const summary = _t('%(senderName)s changed the addresses of this room.', {senderName});
diff --git a/src/components/views/rooms/EventTile.js b/src/components/views/rooms/EventTile.js
index 50e74bc6e4..dd93171e90 100644
--- a/src/components/views/rooms/EventTile.js
+++ b/src/components/views/rooms/EventTile.js
@@ -47,7 +47,8 @@ const eventTileTypes = {
};
const stateEventTileTypes = {
- 'm.room.aliases': 'messages.RoomAliasesEvent',
+ 'm.room.aliases': 'messages.TextualEvent',
+ // 'm.room.aliases': 'messages.RoomAliasesEvent', // too complex
'm.room.create': 'messages.RoomCreate',
'm.room.member': 'messages.TextualEvent',
'm.room.name': 'messages.TextualEvent',
@@ -484,7 +485,9 @@ module.exports = withMatrixClient(React.createClass({
const eventType = this.props.mxEvent.getType();
// Info messages are basically information about commands processed on a room
- const isInfoMessage = (eventType !== 'm.room.message' && eventType !== 'm.sticker' && eventType != 'm.room.create');
+ const isInfoMessage = (
+ eventType !== 'm.room.message' && eventType !== 'm.sticker' && eventType != 'm.room.create'
+ );
const tileHandler = getHandlerTile(this.props.mxEvent);
// This shouldn't happen: the caller should check we support this type
diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json
index 3de0f2d5c1..bb48e0325e 100644
--- a/src/i18n/strings/en_EN.json
+++ b/src/i18n/strings/en_EN.json
@@ -1250,7 +1250,10 @@
"%(senderName)s added %(count)s %(addedAddresses)s as addresses for this room.|other": "%(senderName)s added %(addedAddresses)s as addresses for this room.",
"%(senderName)s removed %(count)s %(removedAddresses)s as addresses for this room.|one": "%(senderName)s removed %(removedAddresses)s as an address for this room.",
"%(senderName)s removed %(count)s %(removedAddresses)s as addresses for this room.|other": "%(senderName)s removed %(removedAddresses)s as addresses for this room.",
+ "%(senderName)s added %(addedAddresses)s and removed %(removedAddresses)s as addresses for this room.": "%(senderName)s added %(addedAddresses)s and removed %(removedAddresses)s as addresses for this room.",
"%(senderName)s changed the addresses of this room.": "%(senderName)s changed the addresses of this room.",
+ "%(senderName)s added %(addedAddresses)s": "%(senderName)s added %(addedAddresses)s",
+ "%(senderName)s removed %(addedAddresses)s": "%(senderName)s removed %(addedAddresses)s",
"File to import": "File to import",
"Import": "Import",
"Failed to set direct chat tag": "Failed to set direct chat tag",
From e1b9aa9626c26a157d26bb19315788ab8e2da4c0 Mon Sep 17 00:00:00 2001
From: Bruno Windels
Date: Mon, 17 Sep 2018 19:20:26 +0200
Subject: [PATCH 326/343] better naming and document method
---
src/components/views/rooms/MemberList.js | 13 +++++++++----
1 file changed, 9 insertions(+), 4 deletions(-)
diff --git a/src/components/views/rooms/MemberList.js b/src/components/views/rooms/MemberList.js
index 2d3bc69ced..b7a64e0ec4 100644
--- a/src/components/views/rooms/MemberList.js
+++ b/src/components/views/rooms/MemberList.js
@@ -47,7 +47,7 @@ module.exports = React.createClass({
if (cli.hasLazyLoadMembersEnabled()) {
// true means will not show a spinner but the
// known members so far if not joined
- this._loadMembersIfNeeded(true);
+ this._waitForMembersIfJoinedAndLL(true);
cli.on("Room.myMembership", this.onMyMembership);
} else {
this._listenForMembersChanges();
@@ -93,7 +93,12 @@ module.exports = React.createClass({
this._updateList.cancelPendingCall();
},
- _loadMembersIfNeeded: async function(initial) {
+ /**
+ * If lazy loading is enabled, either:
+ * show a spinner and load the members if the user is joined,
+ * or show the members available so far if initial=true
+ */
+ _waitForMembersIfJoinedAndLL: async function(initial) {
const cli = MatrixClientPeg.get();
if (cli.hasLazyLoadMembersEnabled()) {
const cli = MatrixClientPeg.get();
@@ -153,12 +158,12 @@ module.exports = React.createClass({
// also when peeking, we need to await the members being loaded
// before showing them.
- this._loadMembersIfNeeded();
+ this._waitForMembersIfJoinedAndLL();
},
onMyMembership: function(room, membership, oldMembership) {
if (room.roomId === this.props.roomId && membership === "join") {
- this._loadMembersIfNeeded();
+ this._waitForMembersIfJoinedAndLL();
}
},
From e0a789f77ede852be614ba1131afbab21f8e731a Mon Sep 17 00:00:00 2001
From: Bruno Windels
Date: Mon, 17 Sep 2018 19:21:22 +0200
Subject: [PATCH 327/343] remove untrue comment, as we only load the members
when joining
---
src/components/views/rooms/MemberList.js | 4 ----
1 file changed, 4 deletions(-)
diff --git a/src/components/views/rooms/MemberList.js b/src/components/views/rooms/MemberList.js
index b7a64e0ec4..907f162a40 100644
--- a/src/components/views/rooms/MemberList.js
+++ b/src/components/views/rooms/MemberList.js
@@ -154,10 +154,6 @@ module.exports = React.createClass({
// We listen for room events because when we accept an invite
// we need to wait till the room is fully populated with state
// before refreshing the member list else we get a stale list.
-
- // also when peeking, we need to await the members being loaded
- // before showing them.
-
this._waitForMembersIfJoinedAndLL();
},
From 473f2dd72b15255939b17a9cf8e45277ff373361 Mon Sep 17 00:00:00 2001
From: Bruno Windels
Date: Mon, 17 Sep 2018 19:24:34 +0200
Subject: [PATCH 328/343] pass room to _loadMembersIfJoined, it's called when
newState not applied
_loadMembersIfJoined is called from
_onRoomLoaded < _onRoomViewStoreUpdate, before incoming state
from the store is applied to this.state, so looking up the room
with this.state.roomId doesn't always work, which would cause
the members not to be loaded. Pass in the room instead.
---
src/components/structures/RoomView.js | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/src/components/structures/RoomView.js b/src/components/structures/RoomView.js
index cf99bb9fc3..8e2c2e3fdd 100644
--- a/src/components/structures/RoomView.js
+++ b/src/components/structures/RoomView.js
@@ -582,14 +582,13 @@ module.exports = React.createClass({
this._warnAboutEncryption(room);
this._calculatePeekRules(room);
this._updatePreviewUrlVisibility(room);
- this._loadMembersIfJoined();
+ this._loadMembersIfJoined(room);
},
- _loadMembersIfJoined: async function() {
+ _loadMembersIfJoined: async function(room) {
// lazy load members if enabled
if (SettingsStore.isFeatureEnabled('feature_lazyloading')) {
const cli = MatrixClientPeg.get();
- const room = cli.getRoom(this.state.roomId);
if (room && room.getMyMembership() === 'join') {
try {
await room.loadMembersIfNeeded();
From 0e1a814d2302bd2b79a4122aac6b891caf12f689 Mon Sep 17 00:00:00 2001
From: Matthew Hodgson
Date: Mon, 17 Sep 2018 18:27:17 +0100
Subject: [PATCH 329/343] remove RoomAliasesEvent in favour of simpler textual
event
---
src/TextForEvent.js | 5 +
.../views/messages/RoomAliasesEvent.js | 173 ------------------
2 files changed, 5 insertions(+), 173 deletions(-)
delete mode 100644 src/components/views/messages/RoomAliasesEvent.js
diff --git a/src/TextForEvent.js b/src/TextForEvent.js
index a17bd7838e..6b68941ee3 100644
--- a/src/TextForEvent.js
+++ b/src/TextForEvent.js
@@ -199,6 +199,11 @@ function textForMessageEvent(ev) {
}
function textForRoomAliasesEvent(ev) {
+ // An alternative implementation of this as a first-class event can be found at
+ // https://github.com/matrix-org/matrix-react-sdk/blob/dc7212ec2bd12e1917233ed7153b3e0ef529a135/src/components/views/messages/RoomAliasesEvent.js
+ // This feels a bit overkill though, and it's not clear the i18n really needs it
+ // so instead it's landing as a simple textual event.
+
const senderName = ev.sender && ev.sender.name ? ev.sender.name : ev.getSender();
const oldAliases = ev.getPrevContent().aliases || [];
const newAliases = ev.getContent().aliases || [];
diff --git a/src/components/views/messages/RoomAliasesEvent.js b/src/components/views/messages/RoomAliasesEvent.js
deleted file mode 100644
index f15c5caf49..0000000000
--- a/src/components/views/messages/RoomAliasesEvent.js
+++ /dev/null
@@ -1,173 +0,0 @@
-/*
-Michael Telatynski <7t3chguy@gmail.com>
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
-/****************************************************************
- ** **
- ** THIS CLASS IS NOT USED TO RENDER ALIAS CHANGES, IN ORDER **
- ** TO TRY TO KEEP THINGS SIMPLE AND JUST USE TextualEvent. **
- ** **
- ** The code is kept here for ease of reference in future **
- ** should we need the GenericEventListSummary stuff **
- ** **
- ****************************************************************/
-
-'use strict';
-
-import React from 'react';
-import PropTypes from 'prop-types';
-import { _t } from '../../../languageHandler';
-
-export class GenericEventListSummary extends React.Component {
- static propTypes = {
- // An summary to display when collapsed
- summary: PropTypes.string.isRequired,
- // whether to show summary whilst children are expanded
- alwaysShowSummary: PropTypes.bool,
- // An array of EventTiles to render when expanded
- children: PropTypes.array.isRequired,
- // Called when the GELS expansion is toggled
- onToggle: PropTypes.func,
- // how many children should cause GELS to act
- threshold: PropTypes.number.isRequired,
- };
-
- static defaultProps = {
- threshold: 1,
- };
-
- constructor(props, context) {
- super(props, context);
- this._toggleSummary = this._toggleSummary.bind(this);
- }
-
- state = {
- expanded: false,
- };
-
- _toggleSummary() {
- this.setState({expanded: !this.state.expanded});
- this.props.onToggle();
- }
-
- render() {
- const fewEvents = this.props.children.length < this.props.threshold;
- const expanded = this.state.expanded || fewEvents;
- const showSummary = !expanded || this.props.alwaysShowSummary;
-
- let expandedEvents = null;
- if (expanded) {
- expandedEvents = this.props.children;
- }
-
- if (fewEvents) {
- return
{ expandedEvents }
;
- }
-
- let summaryContainer = null;
- if (showSummary) {
- summaryContainer = (
-
- {this.props.summary}
-
- );
- }
- let toggleButton = null;
- if (!fewEvents) {
- toggleButton =