From f023bcfd63e4f00a493397729950d3014f121b7b Mon Sep 17 00:00:00 2001 From: rtestard Date: Tue, 4 Feb 2020 15:05:26 +0100 Subject: [PATCH 001/124] I have modified padlocks styling when the left panel is collapsed --- res/css/views/rooms/_InviteOnlyIcon.scss | 44 ++++++++++++++------ src/components/views/rooms/InviteOnlyIcon.js | 4 +- src/components/views/rooms/RoomTile.js | 2 +- 3 files changed, 35 insertions(+), 15 deletions(-) diff --git a/res/css/views/rooms/_InviteOnlyIcon.scss b/res/css/views/rooms/_InviteOnlyIcon.scss index 6943d1797b..21ab431973 100644 --- a/res/css/views/rooms/_InviteOnlyIcon.scss +++ b/res/css/views/rooms/_InviteOnlyIcon.scss @@ -14,27 +14,45 @@ See the License for the specific language governing permissions and limitations under the License. */ -.mx_InviteOnlyIcon { +@define-mixin mx_InviteOnlyIcon { width: 12px; height: 12px; position: relative; display: block !important; - // Align the padlock with unencrypted room names +} + +@define-mixin mx_InviteOnlyIcon_padlock { + background-color: $roomtile-name-color; + mask-image: url("$(res)/img/feather-customised/lock-solid.svg"); + mask-position: center; + mask-repeat: no-repeat; + mask-size: contain; + content: ""; + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; +} + +.mx_InviteOnlyIcon_large { + @mixin mx_InviteOnlyIcon; margin: 0 4px; &::before { - background-color: $roomtile-name-color; - mask-image: url('$(res)/img/feather-customised/lock-solid.svg'); - mask-position: center; - mask-repeat: no-repeat; - mask-size: contain; - content: ''; - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; + @mixin mx_InviteOnlyIcon_padlock; width: 12px; height: 12px; } } + +.mx_InviteOnlyIcon_small { + @mixin mx_InviteOnlyIcon; + left: -2px; + + &::before { + @mixin mx_InviteOnlyIcon_padlock; + width: 10px; + height: 10px; + } +} \ No newline at end of file diff --git a/src/components/views/rooms/InviteOnlyIcon.js b/src/components/views/rooms/InviteOnlyIcon.js index 07156b2973..7ca63c8898 100644 --- a/src/components/views/rooms/InviteOnlyIcon.js +++ b/src/components/views/rooms/InviteOnlyIcon.js @@ -37,6 +37,8 @@ export default class InviteOnlyIcon extends React.Component { }; render() { + const style = this.props.collapsedPanel ? "mx_InviteOnlyIcon_small": "mx_InviteOnlyIcon_large"; + if (!SettingsStore.isFeatureEnabled("feature_invite_only_padlocks")) { return null; } @@ -46,7 +48,7 @@ export default class InviteOnlyIcon extends React.Component { if (this.state.hover) { tooltip = ; } - return (
diff --git a/src/components/views/rooms/RoomTile.js b/src/components/views/rooms/RoomTile.js index 41d43476ea..bc781788c0 100644 --- a/src/components/views/rooms/RoomTile.js +++ b/src/components/views/rooms/RoomTile.js @@ -526,7 +526,7 @@ export default createReactClass({ let privateIcon = null; if (SettingsStore.isFeatureEnabled("feature_cross_signing")) { if (this.state.joinRule == "invite" && !dmUserId) { - privateIcon = ; + privateIcon = ; } } From 153703426a96568874f7fc169459c6cfc3b098a3 Mon Sep 17 00:00:00 2001 From: rtestard Date: Tue, 4 Feb 2020 16:02:49 +0100 Subject: [PATCH 002/124] I have removed the newline at the end of file to pass tests --- res/css/views/rooms/_InviteOnlyIcon.scss | 58 ++++++++++++------------ 1 file changed, 29 insertions(+), 29 deletions(-) diff --git a/res/css/views/rooms/_InviteOnlyIcon.scss b/res/css/views/rooms/_InviteOnlyIcon.scss index 21ab431973..0bc3f30c48 100644 --- a/res/css/views/rooms/_InviteOnlyIcon.scss +++ b/res/css/views/rooms/_InviteOnlyIcon.scss @@ -15,44 +15,44 @@ limitations under the License. */ @define-mixin mx_InviteOnlyIcon { - width: 12px; - height: 12px; - position: relative; - display: block !important; + width: 12px; + height: 12px; + position: relative; + display: block !important; } @define-mixin mx_InviteOnlyIcon_padlock { - background-color: $roomtile-name-color; - mask-image: url("$(res)/img/feather-customised/lock-solid.svg"); - mask-position: center; - mask-repeat: no-repeat; - mask-size: contain; - content: ""; - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; + background-color: $roomtile-name-color; + mask-image: url("$(res)/img/feather-customised/lock-solid.svg"); + mask-position: center; + mask-repeat: no-repeat; + mask-size: contain; + content: ""; + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; } .mx_InviteOnlyIcon_large { - @mixin mx_InviteOnlyIcon; - margin: 0 4px; + @mixin mx_InviteOnlyIcon; + margin: 0 4px; - &::before { - @mixin mx_InviteOnlyIcon_padlock; - width: 12px; - height: 12px; - } + &::before { + @mixin mx_InviteOnlyIcon_padlock; + width: 12px; + height: 12px; + } } .mx_InviteOnlyIcon_small { - @mixin mx_InviteOnlyIcon; - left: -2px; + @mixin mx_InviteOnlyIcon; + left: -2px; - &::before { - @mixin mx_InviteOnlyIcon_padlock; - width: 10px; - height: 10px; - } + &::before { + @mixin mx_InviteOnlyIcon_padlock; + width: 10px; + height: 10px; + } } \ No newline at end of file From 06ba55e1a10c299b9564c66a6bb94b0784756957 Mon Sep 17 00:00:00 2001 From: unknown Date: Sun, 9 Feb 2020 15:05:08 +0100 Subject: [PATCH 003/124] I have made changes according to turt2live recommandations, mainly css indentation and variable definition --- res/css/views/rooms/_InviteOnlyIcon.scss | 58 ++++++++++---------- src/components/views/rooms/InviteOnlyIcon.js | 4 +- 2 files changed, 31 insertions(+), 31 deletions(-) diff --git a/res/css/views/rooms/_InviteOnlyIcon.scss b/res/css/views/rooms/_InviteOnlyIcon.scss index 0bc3f30c48..21ab431973 100644 --- a/res/css/views/rooms/_InviteOnlyIcon.scss +++ b/res/css/views/rooms/_InviteOnlyIcon.scss @@ -15,44 +15,44 @@ limitations under the License. */ @define-mixin mx_InviteOnlyIcon { - width: 12px; - height: 12px; - position: relative; - display: block !important; + width: 12px; + height: 12px; + position: relative; + display: block !important; } @define-mixin mx_InviteOnlyIcon_padlock { - background-color: $roomtile-name-color; - mask-image: url("$(res)/img/feather-customised/lock-solid.svg"); - mask-position: center; - mask-repeat: no-repeat; - mask-size: contain; - content: ""; - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; + background-color: $roomtile-name-color; + mask-image: url("$(res)/img/feather-customised/lock-solid.svg"); + mask-position: center; + mask-repeat: no-repeat; + mask-size: contain; + content: ""; + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; } .mx_InviteOnlyIcon_large { - @mixin mx_InviteOnlyIcon; - margin: 0 4px; + @mixin mx_InviteOnlyIcon; + margin: 0 4px; - &::before { - @mixin mx_InviteOnlyIcon_padlock; - width: 12px; - height: 12px; - } + &::before { + @mixin mx_InviteOnlyIcon_padlock; + width: 12px; + height: 12px; + } } .mx_InviteOnlyIcon_small { - @mixin mx_InviteOnlyIcon; - left: -2px; + @mixin mx_InviteOnlyIcon; + left: -2px; - &::before { - @mixin mx_InviteOnlyIcon_padlock; - width: 10px; - height: 10px; - } + &::before { + @mixin mx_InviteOnlyIcon_padlock; + width: 10px; + height: 10px; + } } \ No newline at end of file diff --git a/src/components/views/rooms/InviteOnlyIcon.js b/src/components/views/rooms/InviteOnlyIcon.js index 7ca63c8898..acaa12303b 100644 --- a/src/components/views/rooms/InviteOnlyIcon.js +++ b/src/components/views/rooms/InviteOnlyIcon.js @@ -37,7 +37,7 @@ export default class InviteOnlyIcon extends React.Component { }; render() { - const style = this.props.collapsedPanel ? "mx_InviteOnlyIcon_small": "mx_InviteOnlyIcon_large"; + const classes = this.props.collapsedPanel ? "mx_InviteOnlyIcon_small": "mx_InviteOnlyIcon_large"; if (!SettingsStore.isFeatureEnabled("feature_invite_only_padlocks")) { return null; @@ -48,7 +48,7 @@ export default class InviteOnlyIcon extends React.Component { if (this.state.hover) { tooltip = ; } - return (
From f8509a40a446a633be106960acbc8357d44076ad Mon Sep 17 00:00:00 2001 From: jja2000 Date: Thu, 13 Feb 2020 21:27:58 +0000 Subject: [PATCH 004/124] Translated using Weblate (Dutch) Currently translated at 83.1% (1762 of 2120 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 | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/i18n/strings/nl.json b/src/i18n/strings/nl.json index 144c8c321f..927332e4ec 100644 --- a/src/i18n/strings/nl.json +++ b/src/i18n/strings/nl.json @@ -586,7 +586,7 @@ "%(oneUser)sleft and rejoined %(count)s times|one": "%(oneUser)s is weggegaan en weer toegetreden", "%(severalUsers)srejected their invitations %(count)s times|other": "%(severalUsers)s hebben hun uitnodigingen %(count)s keer afgewezen", "%(severalUsers)srejected their invitations %(count)s times|one": "%(severalUsers)s hebben hun uitnodigingen afgewezen", - "%(oneUser)srejected their invitation %(count)s times|other": "%(oneUser)s heeft de uitnodiging %(count)smaal afgewezen", + "%(oneUser)srejected their invitation %(count)s times|other": "%(oneUser)s heeft de uitnodiging %(count)s maal afgewezen", "%(oneUser)srejected their invitation %(count)s times|one": "%(oneUser)s heeft de uitnodiging afgeslagen", "%(severalUsers)shad their invitations withdrawn %(count)s times|other": "De uitnodigingen van %(severalUsers)s zijn %(count)s keer ingetrokken", "%(severalUsers)shad their invitations withdrawn %(count)s times|one": "De uitnodigingen van %(severalUsers)s zijn ingetrokken", @@ -609,11 +609,11 @@ "was kicked %(count)s times|one": "is uit het gesprek gezet", "%(severalUsers)schanged their name %(count)s times|other": "%(severalUsers)s hebben hun naam %(count)s keer gewijzigd", "%(severalUsers)schanged their name %(count)s times|one": "%(severalUsers)s hebben hun naam gewijzigd", - "%(oneUser)schanged their name %(count)s times|other": "%(oneUser)s is %(count)smaal van naam veranderd", + "%(oneUser)schanged their name %(count)s times|other": "%(oneUser)s is %(count)s maal van naam veranderd", "%(oneUser)schanged their name %(count)s times|one": "%(oneUser)s is van naam veranderd", "%(severalUsers)schanged their avatar %(count)s times|other": "%(severalUsers)s hebben hun avatar %(count)s keer gewijzigd", "%(severalUsers)schanged their avatar %(count)s times|one": "%(severalUsers)s hebben hun avatar gewijzigd", - "%(oneUser)schanged their avatar %(count)s times|other": "%(oneUser)s is %(count)smaal van profielfoto veranderd", + "%(oneUser)schanged their avatar %(count)s times|other": "%(oneUser)s is %(count)s maal van profielfoto veranderd", "%(oneUser)schanged their avatar %(count)s times|one": "%(oneUser)s is van profielfoto veranderd", "%(items)s and %(count)s others|other": "%(items)s en %(count)s andere", "%(items)s and %(count)s others|one": "%(items)s en één ander", From d19cbe4afa8a48f7cecac8898d88289fc823309d Mon Sep 17 00:00:00 2001 From: Besnik Bleta Date: Sat, 15 Feb 2020 10:42:35 +0000 Subject: [PATCH 005/124] Translated using Weblate (Albanian) Currently translated at 99.7% (2114 of 2121 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/sq/ --- src/i18n/strings/sq.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/sq.json b/src/i18n/strings/sq.json index 4510eec170..c9be8ebdca 100644 --- a/src/i18n/strings/sq.json +++ b/src/i18n/strings/sq.json @@ -2136,5 +2136,10 @@ "%(name)s (%(userId)s) signed in to a new session without verifying it:": "%(name)s (%(userId)s) bëri hyrjen në një sesion të ri pa e verifikuar:", "Ask this user to verify their session, or manually verify it below.": "Kërkojini këtij përdoruesi të verifikojë sesionin e vet, ose ta verifikojë më poshtë dorazi.", "Manually Verify": "Verifikoje Dorazi", - "Verify by scanning": "Verifikoje me skanim" + "Verify by scanning": "Verifikoje me skanim", + "The version of Riot": "Versioni i Riot-it", + "Whether you're using Riot on a device where touch is the primary input mechanism": "Nëse po e përdorni Riot-in në një pajisje ku touch-i është mekanizmi parësor për input-e", + "Whether you're using Riot as an installed Progressive Web App": "Nëse po e përdorni Riot-in të instaluar si një Aplikacion Web Progresiv", + "Your user agent": "Agjenti juaj i përdoruesit", + "The information being sent to us to help make Riot better includes:": "Te të dhënat e dërguara te ne për të na ndihmuar ta bëjmë Riot-in më të mirë përfshihen:" } From adaef02fca16407e92f622761fd99374efdc9579 Mon Sep 17 00:00:00 2001 From: Jeff Huang Date: Sat, 15 Feb 2020 02:14:21 +0000 Subject: [PATCH 006/124] Translated using Weblate (Chinese (Traditional)) Currently translated at 100.0% (2121 of 2121 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 | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/zh_Hant.json b/src/i18n/strings/zh_Hant.json index 2596d11629..9d4cf79705 100644 --- a/src/i18n/strings/zh_Hant.json +++ b/src/i18n/strings/zh_Hant.json @@ -2147,5 +2147,10 @@ "%(name)s (%(userId)s) signed in to a new session without verifying it:": "%(name)s (%(userId)s) 登入到未驗證的新工作階段:", "Ask this user to verify their session, or manually verify it below.": "要求此使用者驗證他們的工作階段,或在下方手動驗證。", "Manually Verify": "手動驗證", - "Verify by scanning": "透過掃描來驗證" + "Verify by scanning": "透過掃描來驗證", + "The version of Riot": "Riot 版本", + "Whether you're using Riot on a device where touch is the primary input mechanism": "您是否在以觸控為主要機制的裝置上使用 Riot", + "Whether you're using Riot as an installed Progressive Web App": "您是否使用 PWA 形式的 Riot", + "Your user agent": "您的使用者代理字串", + "The information being sent to us to help make Riot better includes:": "傳送給我們以協助改進 Riot 的資訊包含了:" } From 417774f6097d9dcca6b3dfcee74ab1065fbf0b24 Mon Sep 17 00:00:00 2001 From: MadsDyrmann Date: Sat, 15 Feb 2020 08:33:37 +0000 Subject: [PATCH 007/124] Translated using Weblate (Danish) Currently translated at 24.3% (515 of 2121 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/da/ --- src/i18n/strings/da.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/da.json b/src/i18n/strings/da.json index e84be8e3c7..e0ed9a9bfa 100644 --- a/src/i18n/strings/da.json +++ b/src/i18n/strings/da.json @@ -516,5 +516,8 @@ "Multiple integration managers": "Flere integrationsmanagere", "Enable Emoji suggestions while typing": "Aktiver emoji forslag under indtastning", "Use compact timeline layout": "Brug kompakt tidslinje", - "Show a placeholder for removed messages": "Vis en pladsholder for fjernede beskeder" + "Show a placeholder for removed messages": "Vis en pladsholder for fjernede beskeder", + "The version of Riot": "Riot versionen", + "Whether you're using Riot on a device where touch is the primary input mechanism": "Hvorvidt du benytter Riot på en enhed, hvor touch er den primære input-grænseflade", + "Your user agent": "Din user agent" } From 50886ff127dd9c942c32ccced16e82c3f2212a64 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?K=C3=A9vin=20C?= Date: Sat, 15 Feb 2020 07:57:52 +0000 Subject: [PATCH 008/124] Translated using Weblate (French) Currently translated at 100.0% (2121 of 2121 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 | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/fr.json b/src/i18n/strings/fr.json index 7aa6a43c91..e756d00aeb 100644 --- a/src/i18n/strings/fr.json +++ b/src/i18n/strings/fr.json @@ -2148,5 +2148,10 @@ "%(name)s (%(userId)s) signed in to a new session without verifying it:": "%(name)s (%(userId)s) s’est connecté à une nouvelle session sans la vérifier :", "Ask this user to verify their session, or manually verify it below.": "Demandez à cet utilisateur de vérifier sa session, ou vérifiez-la manuellement ci-dessous.", "Manually Verify": "Vérifier manuellement", - "Verify by scanning": "Vérifier en scannant" + "Verify by scanning": "Vérifier en scannant", + "The version of Riot": "La version de Riot", + "Whether you're using Riot on a device where touch is the primary input mechanism": "Si vous utilisez Riot sur un appareil où le toucher est le mécanisme primaire de saisie", + "Whether you're using Riot as an installed Progressive Web App": "Si vous utilisez Riot en tant qu’application web progressive (PWA)", + "Your user agent": "Votre agent utilisateur", + "The information being sent to us to help make Riot better includes:": "Les informations qui nous sont envoyées et qui nous aident à améliorer Riot comportent :" } From f3dd8ecd004f9db0bb60b0ac515011e742077126 Mon Sep 17 00:00:00 2001 From: Szimszon Date: Sat, 15 Feb 2020 09:17:04 +0000 Subject: [PATCH 009/124] Translated using Weblate (Hungarian) Currently translated at 100.0% (2121 of 2121 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 09b9e4d6e0..ca701c99e9 100644 --- a/src/i18n/strings/hu.json +++ b/src/i18n/strings/hu.json @@ -2144,5 +2144,10 @@ "Destroy cross-signing keys?": "Eszközök közti hitelesítési kulcsok megsemmisítése?", "Deleting cross-signing keys is permanent. Anyone you have verified with will see security alerts. You almost certainly don't want to do this, unless you've lost every device you can cross-sign from.": "Eszközök közti hitelesítési kulcsok törlése végleges. Mindenki akit ezzel hitelesítettél biztonsági figyelmeztetéseket fog látni. Hacsak nem vesztetted el az összes eszközödet amivel eszközök közti hitelesítést tudsz végezni, nem valószínű, hogy ezt szeretnéd tenni.", "Clear cross-signing keys": "Eszközök közti hitelesítési kulcsok törlése", - "Reset cross-signing and secret storage": "Eszközök közti hitelesítés és biztonsági tároló visszaállítása" + "Reset cross-signing and secret storage": "Eszközök közti hitelesítés és biztonsági tároló visszaállítása", + "The version of Riot": "Riot verziója", + "Whether you're using Riot on a device where touch is the primary input mechanism": "Hogy olyan eszközön használod a Riotot ahol az érintés az elsődleges beviteli forma", + "Whether you're using Riot as an installed Progressive Web App": "Hogy a Riotot mint progresszív webes alkalmazást használod", + "Your user agent": "Felhasználói ügynök", + "The information being sent to us to help make Riot better includes:": "Az alábbi információk kerülnek elküldésre amivel a Riotot jobbá tudjuk tenni:" } From 9f466477bd1295d96c88f67562b37b2ec57b676e Mon Sep 17 00:00:00 2001 From: random Date: Sat, 15 Feb 2020 10:33:56 +0000 Subject: [PATCH 010/124] Translated using Weblate (Italian) Currently translated at 100.0% (2121 of 2121 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 | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/it.json b/src/i18n/strings/it.json index e3be1a1aae..bee64682d1 100644 --- a/src/i18n/strings/it.json +++ b/src/i18n/strings/it.json @@ -2130,5 +2130,25 @@ "Cancel entering passphrase?": "Annullare l'inserimento della password?", "Mod": "Moderatore", "Indexed rooms:": "Stanze indicizzate:", - "%(crawlingRooms)s out of %(totalRooms)s": "%(crawlingRooms)s di %(totalRooms)s" + "%(crawlingRooms)s out of %(totalRooms)s": "%(crawlingRooms)s di %(totalRooms)s", + "The version of Riot": "La versione di Riot", + "Whether you're using Riot on a device where touch is the primary input mechanism": "Se stai usando Riot su un dispositivo dove il tocco è il metodo di input principale", + "Whether you're using Riot as an installed Progressive Web App": "Se stai usando Riot installato come Web App Progressiva", + "Your user agent": "Il tuo user agent", + "The information being sent to us to help make Riot better includes:": "Le informazioni che ci vengono inviate per aiutarci a migliorare Riot includono:", + "Show typing notifications": "Mostra notifiche di scrittura", + "Verify this session by completing one of the following:": "Verifica questa sessione completando una delle seguenti cose:", + "Scan this unique code": "Scansiona questo codice univoco", + "or": "o", + "Compare unique emoji": "Confronta emoji univoci", + "Compare a unique set of emoji if you don't have a camera on either device": "Confrontate un set di emoji univoci se non avete una fotocamera sui dispositivi", + "Reset cross-signing and secret storage": "Reimposta la firma incrociata e l'archivio segreto", + "Not Trusted": "Non fidato", + "%(name)s (%(userId)s) signed in to a new session without verifying it:": "%(name)s (%(userId)s) ha fatto l'accesso con una nuova sessione senza verificarla:", + "Ask this user to verify their session, or manually verify it below.": "Chiedi a questo utente di verificare la sua sessione o verificala manualmente sotto.", + "Manually Verify": "Verifica manualmente", + "Verify by scanning": "Verifica con la scansione", + "Destroy cross-signing keys?": "Distruggere le chiavi di firma incrociata?", + "Deleting cross-signing keys is permanent. Anyone you have verified with will see security alerts. You almost certainly don't want to do this, unless you've lost every device you can cross-sign from.": "L'eliminazione delle chiavi di firma incrociata è permanente. Chiunque si sia verificato con te vedrà avvisi di sicurezza. Quasi sicuramente non vuoi fare questa cosa, a meno che tu non abbia perso tutti i dispositivi da cui puoi fare l'accesso.", + "Clear cross-signing keys": "Elimina chiavi di firma incrociata" } From ed7702b01c46d2e8501542a404c5b4b570919d72 Mon Sep 17 00:00:00 2001 From: Walter Date: Sun, 16 Feb 2020 11:38:42 +0000 Subject: [PATCH 011/124] Translated using Weblate (Russian) Currently translated at 80.1% (1699 of 2121 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 | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/i18n/strings/ru.json b/src/i18n/strings/ru.json index 1d799f3a40..ba077d706a 100644 --- a/src/i18n/strings/ru.json +++ b/src/i18n/strings/ru.json @@ -1576,13 +1576,13 @@ "You are still sharing your personal data on the identity server .": "Вы все еще делитесь своими личными данными на сервере идентификации .", "We recommend that you remove your email addresses and phone numbers from the identity server before disconnecting.": "Мы рекомендуем вам удалить свои адреса электронной почты и номера телефонов с сервера идентификации перед отключением.", "Disconnect anyway": "Отключить в любом случае", - "You are currently using to discover and be discoverable by existing contacts you know. You can change your identity server below.": "В настоящее время вы используете для обнаружения и быть найденным существующими контактами, которые вы знаете. Вы можете изменить ваш сервер идентификации ниже.", + "You are currently using to discover and be discoverable by existing contacts you know. You can change your identity server below.": "В настоящее время вы используете для поиска вами ваших контактов а также вас вашими оппонентами. Вы можете изменить ваш сервер идентификации ниже.", "If you don't want to use to discover and be discoverable by existing contacts you know, enter another identity server below.": "Если вы не хотите использовать для обнаружения вас и быть обнаруженным вашими существующими контактами, введите другой идентификационный сервер ниже.", - "You are not currently using an identity server. To discover and be discoverable by existing contacts you know, add one below.": "Вы в настоящее время не используете идентификационный сервер. Чтобы обнаружить и быть обнаруженным существующими контактами, которых вы знаете, добавьте один ниже.", + "You are not currently using an identity server. To discover and be discoverable by existing contacts you know, add one below.": "Вы в настоящее время не используете идентификационный сервер. Чтобы найти и быть найденным существующими контактами, которые вы знаете, добавьте один ниже.", "Disconnecting from your identity server will mean you won't be discoverable by other users and you won't be able to invite others by email or phone.": "Отключение от сервера идентификации будет означать, что другие пользователи не смогут вас обнаружить, и вы не сможете приглашать других по электронной почте или по телефону.", "Using an identity server is optional. If you choose not to use an identity server, you won't be discoverable by other users and you won't be able to invite others by email or phone.": "Использование сервера идентификации не обязательно. Если вы решите не использовать сервер идентификации, другие пользователи не смогут обнаружить вас, и вы не сможете пригласить других по электронной почте или телефону.", "Agree to the identity server (%(serverName)s) Terms of Service to allow yourself to be discoverable by email address or phone number.": "Подтвердите условия предоставления услуг сервера идентификации (%(serverName)s), чтобы вас можно было обнаружить по адресу электронной почты или номеру телефона.", - "Discovery": "Обнаружение", + "Discovery": "Поиск", "Deactivate account": "Деактивировать аккаунт", "Clear cache and reload": "Очистить кэш и перезагрузить", "Always show the window menu bar": "Всегда показывать строку меню", @@ -1607,11 +1607,11 @@ "Complete": "Выполнено", "Revoke": "Отмена", "Share": "Делиться", - "Discovery options will appear once you have added an email above.": "Параметры обнаружения появятся после добавления электронной почты выше.", + "Discovery options will appear once you have added an email above.": "Параметры поиска по электронной почты появятся после добавления её выше.", "Unable to revoke sharing for phone number": "Не удалось отменить общий доступ к номеру телефона", "Unable to share phone number": "Не удается предоставить общий доступ к номеру телефона", "Please enter verification code sent via text.": "Пожалуйста, введите проверочный код, высланный с помощью текста.", - "Discovery options will appear once you have added a phone number above.": "Параметры обнаружения появятся после добавления вышеуказанного номера телефона.", + "Discovery options will appear once you have added a phone number above.": "Параметры поиска по номеру телефона появятся после его добавления.", "Remove %(email)s?": "Удалить %(email)s?", "Remove %(phone)s?": "Удалить %(phone)s?", "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains.": "Текстовое сообщение было отправлено +%(msisdn)s. Пожалуйста, введите проверочный код, который он содержит.", @@ -1715,5 +1715,7 @@ "Error adding ignored user/server": "Ошибка добавления игнорируемого пользователя/сервера", "Error subscribing to list": "Ошибка при подписке на список", "Send cross-signing keys to homeserver": "Отправка ключей перекрестной подписи на домашний сервер", - "Error upgrading room": "Ошибка обновления комнаты" + "Error upgrading room": "Ошибка обновления комнаты", + "Match system theme": "Изменить тему", + "Show tray icon and minimize window to it on close": "Показать иконку в панели задач и свернуть окно при закрытии" } From 0325fdd37bc12f817c11c04251494f758ec8618a Mon Sep 17 00:00:00 2001 From: progserega Date: Mon, 17 Feb 2020 07:04:12 +0000 Subject: [PATCH 012/124] Translated using Weblate (Russian) Currently translated at 80.1% (1699 of 2121 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 ba077d706a..2359cb318f 100644 --- a/src/i18n/strings/ru.json +++ b/src/i18n/strings/ru.json @@ -1717,5 +1717,6 @@ "Send cross-signing keys to homeserver": "Отправка ключей перекрестной подписи на домашний сервер", "Error upgrading room": "Ошибка обновления комнаты", "Match system theme": "Изменить тему", - "Show tray icon and minimize window to it on close": "Показать иконку в панели задач и свернуть окно при закрытии" + "Show tray icon and minimize window to it on close": "Показать иконку в панели задач и свернуть окно при закрытии", + "The version of Riot": "Версия Riot" } From 20a8fc1620d0d089f4d1d6b7481474909a902ea4 Mon Sep 17 00:00:00 2001 From: Remi Reuvekamp <20200217translateriot@remi.im> Date: Mon, 17 Feb 2020 15:53:06 +0000 Subject: [PATCH 013/124] Translated using Weblate (Dutch) Currently translated at 85.2% (1808 of 2121 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 | 52 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 51 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/nl.json b/src/i18n/strings/nl.json index 927332e4ec..16903b36bf 100644 --- a/src/i18n/strings/nl.json +++ b/src/i18n/strings/nl.json @@ -1774,5 +1774,55 @@ "Your homeserver does not support session management.": "Uw thuisserver ondersteunt geen sessiebeheer.", "Unable to load session list": "Kan sessielijst niet laden", "Delete %(count)s sessions|other": "Verwijder %(count)s sessies", - "Delete %(count)s sessions|one": "Verwijder %(count)s sessie" + "Delete %(count)s sessions|one": "Verwijder %(count)s sessie", + "The version of Riot": "De versie van Riot", + "Whether you're using Riot on a device where touch is the primary input mechanism": "Of u Riot op een apparaat gebruikt waarop een aanraakscherm de voornaamste invoermethode is", + "Whether you're using Riot as an installed Progressive Web App": "Of u Riot gebruikt als een geïnstalleerde Progressive-Web-App", + "Your user agent": "Uw browsers user-agent", + "The information being sent to us to help make Riot better includes:": "De informatie die naar ons wordt verstuurd om Riot te verbeteren bevat:", + "If you cancel now, you won't complete verifying the other user.": "Als u nu annuleert zul u de andere gebruiker niet verifiëren.", + "If you cancel now, you won't complete verifying your other session.": "Als u nu annuleert zal u uw andere sessie niet verifiëren.", + "If you cancel now, you won't complete your secret storage operation.": "Als u nu annuleert zal de sleutelopslag worden afgebroken.", + "Cancel entering passphrase?": "Wachtwoord invoer annuleren?", + "Show typing notifications": "Typmeldingen weergeven", + "Verify this session by completing one of the following:": "Verifieer deze sessie door een van het volgende te doen:", + "Scan this unique code": "Scan deze unieke code", + "or": "of", + "Compare unique emoji": "Vergelijk unieke emoji", + "Compare a unique set of emoji if you don't have a camera on either device": "Vergelijk een unieke lijst emoji als beide apparaten geen camera bevatten", + "Start": "Start", + "Securely cache encrypted messages locally for them to appear in search results.": "Sla versleutelde berichten beveiligd op om ze weer te geven in zoekresultaten.", + "Enable": "Inschakelen", + "Connecting to integration manager...": "Verbinding maken met de integratiebeheerder...", + "Cannot connect to integration manager": "Kan geen verbinding maken met de integratiebeheerder", + "The integration manager is offline or it cannot reach your homeserver.": "De integratiebeheerder is offline of kan uw thuisserver niet bereiken.", + "This session is backing up your keys. ": "Deze sessie maakt back-ups van uw sleutels. ", + "not stored": "niet opgeslagen", + "Your password was successfully changed. You will not receive push notifications on other sessions until you log back in to them": "Uw wachtwoord is gewijzigd. U zal geen pushmeldingen op uw andere sessies meer ontvangen, totdat u uzelf daarop opnieuw aanmeld", + "Ignored/Blocked": "Genegeerd/Geblokkeerd", + "Error adding ignored user/server": "Fout bij het toevoegen van een genegeerde gebruiker/server", + "Something went wrong. Please try again or view your console for hints.": "Er is iets fout gegaan. Probeer het opnieuw of bekijk de console om inzicht te krijgen.", + "Error subscribing to list": "Fout bij het abonneren op de lijst", + "Please verify the room ID or alias and try again.": "Controleer de gespreks-ID of gespreks(bij)naam en probeer het opnieuw.", + "Error removing ignored user/server": "Fout bij het verwijderen van genegeerde gebruiker/server", + "Error unsubscribing from list": "Fout bij het opzeggen van een abonnement op de lijst", + "Please try again or view your console for hints.": "Probeer het opnieuw of bekijk de console om inzicht te krijgen.", + "None": "Geen", + "You have not ignored anyone.": "U heeft niemand genegeerd.", + "You are currently ignoring:": "U negeert op dit moment:", + "You are not subscribed to any lists": "U heeft geen abonnement op een lijst", + "Unsubscribe": "Zeg abonnement op", + "View rules": "Bekijk regels", + "You are currently subscribed to:": "U heeft een abonnement op:", + "⚠ These settings are meant for advanced users.": "⚠ Deze instellingen zijn bedoeld voor gevorderde gebruikers.", + "Ignoring people is done through ban lists which contain rules for who to ban. Subscribing to a ban list means the users/servers blocked by that list will be hidden from you.": "Het negeren van gebruikers gaat via banlijsten. Deze bevatten regels over wie verbannen moet worden. Het nemen van een abonnement op een banlijst betekend dat je de gebruikers/servers die op de lijst staan niet meer zult zien.", + "Personal ban list": "Persoonlijke banlijst", + "Your personal ban list holds all the users/servers you personally don't want to see messages from. After ignoring your first user/server, a new room will show up in your room list named 'My Ban List' - stay in this room to keep the ban list in effect.": "Uw persoonlijke banlijst bevat alle gebruikers/server waar u geen berichten meer van wilt zien. Nadat u een gebruiker/server heeft genegeerd, zal een nieuwe kamer worden aangemaakt met de naam \"Mijn Banlijst\". Om de lijst actief te houden dient u de kamer niet te verlaten.", + "Server or user ID to ignore": "Server of gebruikers-ID om te negeren", + "eg: @bot:* or example.org": "bijvoorbeeld: @bot:* of example.org", + "Subscribed lists": "Abonnementen op lijsten", + "Subscribing to a ban list will cause you to join it!": "Wanneer u een abonnement neemt zal u worden toegevoegd!", + "If this isn't what you want, please use a different tool to ignore users.": "Als u dit niet wilt kunt u een andere methode gebruiken om gebruikers te negeren.", + "Room ID or alias of ban list": "Gespreks-ID of (bij)naam of banlijst", + "Subscribe": "Abonneer" } From c97bcc39f999d3ddeb499be5b34a73fc6f89f429 Mon Sep 17 00:00:00 2001 From: Tuomas Hietala Date: Mon, 17 Feb 2020 21:55:15 +0000 Subject: [PATCH 014/124] Translated using Weblate (Finnish) Currently translated at 89.5% (1899 of 2121 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/fi/ --- src/i18n/strings/fi.json | 44 ++++++++++++++++++++++++++++++++++++++-- 1 file changed, 42 insertions(+), 2 deletions(-) diff --git a/src/i18n/strings/fi.json b/src/i18n/strings/fi.json index 1d60b1af60..370f0b5394 100644 --- a/src/i18n/strings/fi.json +++ b/src/i18n/strings/fi.json @@ -97,7 +97,7 @@ "Emoji": "Emoji", "Enable Notifications": "Ota ilmoitukset käyttöön", "End-to-end encryption information": "Osapuolten välisen salauksen tiedot", - "Enter passphrase": "Syötä salasana", + "Enter passphrase": "Syötä salalause", "Error decrypting attachment": "Virhe purettaessa liitteen salausta", "Event information": "Tapahtumatiedot", "Export": "Vie", @@ -1880,5 +1880,45 @@ "Recent Conversations": "Viimeaikaiset keskustelut", "Direct Messages": "Yksityisviestit", "Go": "Mene", - "Lock": "Lukko" + "Lock": "Lukko", + "The version of Riot": "Riotin versio", + "Whether you're using Riot on a device where touch is the primary input mechanism": "Käytätkö Riotia laitteella, jossa kosketus on ensisijainen syöttömekanismi", + "Whether you're using Riot as an installed Progressive Web App": "Käytätkö Riotia asennettuna PWA:na (Progressive Web App)", + "The information being sent to us to help make Riot better includes:": "Tietoihin, joita lähetetään Riotin kehittäjille sovelluksen kehittämiseksi sisältyy:", + "Cancel entering passphrase?": "Peruuta salalauseen syöttäminen?", + "Encryption upgrade available": "Salauksen päivitys saatavilla", + "%(senderName)s added %(addedAddresses)s and %(count)s other addresses to this room|other": "%(senderName)s lisäsi osoitteet %(addedAddresses)s ja %(count)s muuta osoitetta tähän huoneeseen", + "%(senderName)s removed %(removedAddresses)s and %(count)s other addresses from this room|other": "%(senderName)s poisti osoitteet %(removedAddresses)s ja %(count)s muuta osoitetta tästä huoneesta", + "%(senderName)s removed %(countRemoved)s and added %(countAdded)s addresses to this room": "%(senderName)s poisti %(countRemoved)s ja lisäsi %(countAdded)s osoitetta tähän huoneeseen", + "a few seconds ago": "muutama sekunti sitten", + "about a minute ago": "noin minuutti sitten", + "%(num)s minutes ago": "%(num)s minuuttia sitten", + "about an hour ago": "noin tunti sitten", + "%(num)s hours ago": "%(num)s tuntia sitten", + "about a day ago": "noin päivä sitten", + "%(num)s days ago": "%(num)s päivää sitten", + "Show info about bridges in room settings": "Näytä tietoa silloista huoneen asetuksissa", + "Show typing notifications": "Näytä kirjoitusilmoitukset", + "or": "tai", + "Start": "Aloita", + "Confirm the emoji below are displayed on both devices, in the same order:": "Varmista, että alla olevat emojit näkyvät molemmilla laitteilla, samassa järjestyksessä:", + "To be secure, do this in person or use a trusted way to communicate.": "Turvallisuuden varmistamiseksi tee tämä kasvokkain tai käytä luotettua viestintätapaa.", + "Later": "Myöhemmin", + "Show less": "Näytä vähemmän", + "in memory": "muistissa", + "This room isn’t bridging messages to any platforms. Learn more.": "Tämä huone ei siltaa viestejä millekään alustalle. Lue lisää.", + "Bridges": "Sillat", + "Send a reply…": "Lähetä vastaus…", + "Send a message…": "Lähetä viesti…", + "Unknown Command": "Tuntematon komento", + "Unrecognised command: %(commandText)s": "Tunnistamaton komento: %(commandText)s", + "Send as message": "Lähetä viestinä", + "Waiting for %(displayName)s to accept…": "Odotetaan, että %(displayName)s hyväksyy…", + "Done": "Valmis", + "Got it": "Asia selvä", + "Failed to find the following users": "Seuraavia käyttäjiä ei löytynyt", + "Backup restored": "Varmuuskopio palautettu", + "Go Back": "Takaisin", + "Copy": "Kopioi", + "Upgrade your encryption": "Päivitä salauksesi" } From 0c3d2479484eeb98849c1749e693428cb681c6fe Mon Sep 17 00:00:00 2001 From: Walter Date: Mon, 17 Feb 2020 21:20:44 +0000 Subject: [PATCH 015/124] Translated using Weblate (Russian) Currently translated at 80.8% (1714 of 2121 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 | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/src/i18n/strings/ru.json b/src/i18n/strings/ru.json index 2359cb318f..831e39bf5a 100644 --- a/src/i18n/strings/ru.json +++ b/src/i18n/strings/ru.json @@ -21,7 +21,7 @@ "Curve25519 identity key": "Ключ идентификации Curve25519", "Deactivate Account": "Закрыть аккаунт", "Decryption error": "Ошибка расшифровки", - "Default": "Участник", + "Default": "По умолчанию", "Deops user with given id": "Снимает полномочия оператора с пользователя с заданным ID", "Device ID": "ID устройства", "Displays action": "Отображение действий", @@ -1716,7 +1716,22 @@ "Error subscribing to list": "Ошибка при подписке на список", "Send cross-signing keys to homeserver": "Отправка ключей перекрестной подписи на домашний сервер", "Error upgrading room": "Ошибка обновления комнаты", - "Match system theme": "Изменить тему", + "Match system theme": "Тема системы", "Show tray icon and minimize window to it on close": "Показать иконку в панели задач и свернуть окно при закрытии", - "The version of Riot": "Версия Riot" + "The version of Riot": "Версия Riot", + "Show typing notifications": "Показывать уведомления о наборе", + "Delete %(count)s sessions|other": "Удалить %(count)s сессию", + "Enable desktop notifications for this session": "Включить уведомления для рабочего стола для этой сессии", + "Enable audible notifications for this session": "Включить звуковые уведомления для этой сессии", + "Use an Integration Manager (%(serverName)s) to manage bots, widgets, and sticker packs.": "Используйте Менеджер интеграциями %(serverName)s для управления ботами, виджетами и стикерами.", + "Use an Integration Manager to manage bots, widgets, and sticker packs.": "Используйте Менеджер интеграциями для управления ботами, виджетами и стикерами.", + "Manage integrations": "Управление интеграциями", + "Integration Managers receive configuration data, and can modify widgets, send room invites, and set power levels on your behalf.": "Менеджеры интеграции получают данные конфигурации и могут изменять виджеты, отправлять приглашения в комнаты и устанавливать уровни доступа от вашего имени.", + "Sessions": "Сессии", + "Direct Messages": "Прямые сообщения", + "%(count)s sessions|other": "%(count)s сессий", + "Hide sessions": "Скрытые сессии", + "Enable 'Manage Integrations' in Settings to do this.": "Включите «Управление интеграциями» в настройках, чтобы сделать это.", + "Unknown sessions": "Неизвестные сессии", + "Help": "Помощь" } From 025d028893fcc9d96ab563eaca0760e2ecb283d3 Mon Sep 17 00:00:00 2001 From: catborise Date: Mon, 17 Feb 2020 20:07:13 +0000 Subject: [PATCH 016/124] Translated using Weblate (Turkish) Currently translated at 71.7% (1521 of 2121 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 | 41 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/tr.json b/src/i18n/strings/tr.json index 391c3c8636..124dd076ee 100644 --- a/src/i18n/strings/tr.json +++ b/src/i18n/strings/tr.json @@ -1497,5 +1497,44 @@ "Space used:": "Kullanılan alan:", "Indexed messages:": "İndekslenmiş mesajlar:", "Number of rooms:": "Oda sayısı:", - "Enable inline URL previews by default": "Varsayılan olarak satır içi URL önizlemeleri aç" + "Enable inline URL previews by default": "Varsayılan olarak satır içi URL önizlemeleri aç", + "Waiting for %(displayName)s to verify…": "%(displayName)s ın doğrulaması için bekleniyor…", + "They match": "Eşleşiyorlar", + "They don't match": "Eşleşmiyorlar", + "Verify yourself & others to keep your chats safe": "Sohbetlerinizi güvenli tutmak için kendinizi & diğerlerini doğrulayın", + "Other users may not trust it": "Diğer kullanıcılar güvenmeyebilirler", + "Later": "Sonra", + "Review": "Gözden Geçirme", + "Workspace: %(networkName)s": "Çalışma alanı: %(networkName)s", + "Channel: %(channelName)s": "Kanal: %(channelName)s", + "Show less": "Daha az göster", + "Show more": "Daha fazla göster", + "in memory": "hafızada", + "in secret storage": "sır deposunda", + "Secret storage public key:": "Sır deposu açık anahtarı:", + "Your homeserver does not support session management.": "Anasunucunuz oturum yönetimini desteklemiyor.", + "Unable to load session list": "Oturum listesi yüklenemedi", + "Delete %(count)s sessions|other": "%(count)s oturumu sil", + "Delete %(count)s sessions|one": "%(count)s oturum sil", + "Public Name": "Açık İsim", + "rooms.": "odalar.", + "Manage": "Yönet", + "Enable": "Aç", + "The integration manager is offline or it cannot reach your homeserver.": "Entegrasyon yöneticisi çevrim dışı veya anasunucunuza erişemiyor.", + "Connect this session to Key Backup": "Anahtar Yedekleme için bu oturuma bağlanın", + "Backup is not signed by any of your sessions": "Yedek hiç bir oturumunuz tarafından imzalanmadı", + "This backup is trusted because it has been restored on this session": "Bu yedek güvenilir çünkü bu oturumda geri döndürüldü", + "Backup key stored: ": "Yedek anahtarı depolandı: ", + "Enable desktop notifications for this session": "Bu oturum için masaüstü bildirimlerini aç", + "Upgrade to your own domain": "Kendi etkinlik alanınızı yükseltin", + "Use an Integration Manager to manage bots, widgets, and sticker packs.": "Botları, görsel bileşenleri ve çıkartma paketlerini yönetmek için bir entegrasyon yöneticisi kullanın.", + "Session ID:": "Oturum ID:", + "Session key:": "Oturum anahtarı:", + "Sessions": "Oturumlar", + "This user has not verified all of their sessions.": "Bu kullanıcı bütün oturumlarında doğrulanmamış.", + "You have not verified this user.": "Bu kullanıcıyı doğrulamadınız.", + "Someone is using an unknown session": "Birisi bilinmeyen bir oturum kullanıyor", + "Everyone in this room is verified": "Bu odadaki herkes doğrulanmış", + "Some sessions for this user are not trusted": "Bu kullanıcı için bazı oturumlar güvenilir değil", + "All sessions for this user are trusted": "Bu kullanıcı için tüm oturumlar güvenilir" } From 01f8a1e01fac10b0cf7981d7d1bf4b8c9dfb58fa Mon Sep 17 00:00:00 2001 From: Besnik Bleta Date: Tue, 18 Feb 2020 12:19:14 +0000 Subject: [PATCH 017/124] Translated using Weblate (Albanian) Currently translated at 99.7% (2119 of 2126 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/sq/ --- src/i18n/strings/sq.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/sq.json b/src/i18n/strings/sq.json index c9be8ebdca..546b6f0766 100644 --- a/src/i18n/strings/sq.json +++ b/src/i18n/strings/sq.json @@ -2141,5 +2141,10 @@ "Whether you're using Riot on a device where touch is the primary input mechanism": "Nëse po e përdorni Riot-in në një pajisje ku touch-i është mekanizmi parësor për input-e", "Whether you're using Riot as an installed Progressive Web App": "Nëse po e përdorni Riot-in të instaluar si një Aplikacion Web Progresiv", "Your user agent": "Agjenti juaj i përdoruesit", - "The information being sent to us to help make Riot better includes:": "Te të dhënat e dërguara te ne për të na ndihmuar ta bëjmë Riot-in më të mirë përfshihen:" + "The information being sent to us to help make Riot better includes:": "Te të dhënat e dërguara te ne për të na ndihmuar ta bëjmë Riot-in më të mirë përfshihen:", + "The session you are trying to verify doesn't support scanning a QR code or emoji verification, which is what Riot supports. Try with a different client.": "Sesioni që po provoni të verifikoni, nuk mbulon skanim kodesh QR apo verifikim emoji-sh, çka janë ato që Riot-i mbulon. Provoni me një tjetër klient.", + "You declined": "Hodhët poshtë", + "%(name)s declined": "%(name)s hodhi poshtë", + "accepting …": "po pranohet …", + "declining …": "po hidhet poshtë …" } From 27bae86c0cded0f84723c201938c4464f7aea5ee Mon Sep 17 00:00:00 2001 From: Miren Date: Tue, 18 Feb 2020 10:24:37 +0000 Subject: [PATCH 018/124] Translated using Weblate (Basque) Currently translated at 97.6% (2074 of 2126 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 | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/eu.json b/src/i18n/strings/eu.json index 5235eba1c8..691ff0f9f5 100644 --- a/src/i18n/strings/eu.json +++ b/src/i18n/strings/eu.json @@ -2097,5 +2097,8 @@ "Your unverified session '%(displayName)s' is requesting encryption keys.": "Zure egiaztatu gabeko '%(displayName)s' saioa zifratze gakoak eskatzen ari da.", "We recommend you go through the verification process for each session to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.": "Egiaztaketa prozesua saio bakoitzeko egitea aholkatzen dizugu, benetan jabearenak direla baieztatzeko, baina egiaztaketa egin gabe mezua bidali dezakezu ere.", "Access your secure message history and your cross-signing identity for verifying other sessions by entering your passphrase.": "Atzitu zure mezu seguruen historiala eta zeharkako sinatzerako identitatea beste saioak egiaztatzeko zure pasa-esaldia sartuz.", - "Show sessions, send anyway or cancel.": "Erakutsi saioak, bidali edonola ere edo ezeztatu." + "Show sessions, send anyway or cancel.": "Erakutsi saioak, bidali edonola ere edo ezeztatu.", + "The information being sent to us to help make Riot better includes:": "Riot hobetzeko bidaltzen zaigun informazioa honakoa da, besteren artean:", + "Verify this session by completing one of the following:": "Egiaztatu saio hau hauetako bat osatuz:", + "or": "ala" } From 650f412acb1d6097596118ee578f5053acb0d235 Mon Sep 17 00:00:00 2001 From: rtestard Date: Wed, 19 Feb 2020 10:15:58 +0100 Subject: [PATCH 019/124] I have added a new line at the end of the scss file --- res/css/views/rooms/_InviteOnlyIcon.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/res/css/views/rooms/_InviteOnlyIcon.scss b/res/css/views/rooms/_InviteOnlyIcon.scss index 21ab431973..b71fd6348d 100644 --- a/res/css/views/rooms/_InviteOnlyIcon.scss +++ b/res/css/views/rooms/_InviteOnlyIcon.scss @@ -55,4 +55,4 @@ limitations under the License. width: 10px; height: 10px; } -} \ No newline at end of file +} From d7a6296100208ad5e4e9e2b0c49901de93944263 Mon Sep 17 00:00:00 2001 From: Jeff Huang Date: Wed, 19 Feb 2020 02:49:26 +0000 Subject: [PATCH 020/124] Translated using Weblate (Chinese (Traditional)) Currently translated at 100.0% (2126 of 2126 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 | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/zh_Hant.json b/src/i18n/strings/zh_Hant.json index 9d4cf79705..0cbbaccb35 100644 --- a/src/i18n/strings/zh_Hant.json +++ b/src/i18n/strings/zh_Hant.json @@ -2152,5 +2152,10 @@ "Whether you're using Riot on a device where touch is the primary input mechanism": "您是否在以觸控為主要機制的裝置上使用 Riot", "Whether you're using Riot as an installed Progressive Web App": "您是否使用 PWA 形式的 Riot", "Your user agent": "您的使用者代理字串", - "The information being sent to us to help make Riot better includes:": "傳送給我們以協助改進 Riot 的資訊包含了:" + "The information being sent to us to help make Riot better includes:": "傳送給我們以協助改進 Riot 的資訊包含了:", + "The session you are trying to verify doesn't support scanning a QR code or emoji verification, which is what Riot supports. Try with a different client.": "您嘗試驗證的工作階段不支援 Riot 支援的掃描 QR code 或顏文字驗證。請用其他客戶端試試看。", + "You declined": "您拒絕了", + "%(name)s declined": "%(name)s 拒絕了", + "accepting …": "正在接受……", + "declining …": "正在拒絕……" } From 2273b8606b1465e0936d5a1f310ffb4321e7d1ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?K=C3=A9vin=20C?= Date: Wed, 19 Feb 2020 07:57:19 +0000 Subject: [PATCH 021/124] Translated using Weblate (French) Currently translated at 100.0% (2126 of 2126 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 | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/fr.json b/src/i18n/strings/fr.json index e756d00aeb..63e8159924 100644 --- a/src/i18n/strings/fr.json +++ b/src/i18n/strings/fr.json @@ -2153,5 +2153,10 @@ "Whether you're using Riot on a device where touch is the primary input mechanism": "Si vous utilisez Riot sur un appareil où le toucher est le mécanisme primaire de saisie", "Whether you're using Riot as an installed Progressive Web App": "Si vous utilisez Riot en tant qu’application web progressive (PWA)", "Your user agent": "Votre agent utilisateur", - "The information being sent to us to help make Riot better includes:": "Les informations qui nous sont envoyées et qui nous aident à améliorer Riot comportent :" + "The information being sent to us to help make Riot better includes:": "Les informations qui nous sont envoyées et qui nous aident à améliorer Riot comportent :", + "The session you are trying to verify doesn't support scanning a QR code or emoji verification, which is what Riot supports. Try with a different client.": "La session que vous essayez de vérifier ne prend pas en charge les codes QR ou la vérification d’émojis, qui sont les méthodes prises en charge par Riot. Essayez avec un autre client.", + "You declined": "Vous avez refusé", + "%(name)s declined": "%(name)s a refusé", + "accepting …": "nous acceptons…", + "declining …": "nous refusons…" } From 7460ddfada28bd26c5af71da1f4fd5aa0594e446 Mon Sep 17 00:00:00 2001 From: Tentarial Date: Tue, 18 Feb 2020 22:08:12 +0000 Subject: [PATCH 022/124] Translated using Weblate (German) Currently translated at 71.1% (1512 of 2126 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 | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index 2dcdb43aec..304c166e22 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -1542,5 +1542,23 @@ "Unsubscribe": "Deabonnieren", "View rules": "Regeln betrachten", "You are currently subscribed to:": "Du abonnierst momentan:", - "⚠ These settings are meant for advanced users.": "⚠ Diese Einstellungen sind für fortgeschrittene Nutzer gedacht." + "⚠ These settings are meant for advanced users.": "⚠ Diese Einstellungen sind für fortgeschrittene Nutzer gedacht.", + "The version of Riot": "Die Version von Riot", + "Whether you're using Riot on a device where touch is the primary input mechanism": "Ob Sie Riot auf einem Gerät verwenden, bei dem Berührung der primäre Eingabemechanismus ist", + "Whether you're using Riot as an installed Progressive Web App": "Ob Sie Riot als installierte progressive Web-App verwenden", + "Your user agent": "Ihr User-Agent", + "The information being sent to us to help make Riot better includes:": "Zu den Informationen, die uns zugesandt werden, um zu helfen, Riot besser zu machen, gehören:", + "There are unknown sessions in this room: if you proceed without verifying them, it will be possible for someone to eavesdrop on your call.": "Es sind unbekannte Sitzungen in diesem Raum: Wenn Sie ohne Verifizierung fortfahren, wird es für jemanden möglich sein, Ihren Anruf zu belauschen.", + "If you cancel now, you won't complete verifying the other user.": "Wenn Sie jetzt abbrechen, werden Sie die Verifizierung des anderen Nutzers nicht beenden können.", + "If you cancel now, you won't complete verifying your other session.": "Wenn Sie jetzt abbrechen, werden Sie die Verifizierung der anderen Sitzung nicht beenden können.", + "If you cancel now, you won't complete your secret storage operation.": "Wenn Sie jetzt abbrechen, werden Sie die Geheimlagerungsoperation nicht beenden können.", + "Cancel entering passphrase?": "Eingabe der Passphrase abbrechen?", + "Setting up keys": "Einrichten der Schlüssel", + "Encryption upgrade available": "Verschlüsselungs-Update verfügbar", + "Unverified session": "Ungeprüfte Sitzung", + "Verifies a user, session, and pubkey tuple": "Verifiziert einen Benutzer, eine Sitzung und Pubkey-Tupel", + "Unknown (user, session) pair:": "Unbekanntes (Nutzer-, Sitzungs-) Paar:", + "Session already verified!": "Sitzung bereits verifiziert!", + "WARNING: Session already verified, but keys do NOT MATCH!": "ACHTUNG: Sitzung bereits verifiziert, aber die Schlüssel passen NICHT ZUSAMMEN!", + "WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and session %(deviceId)s is \"%(fprint)s\" which does not match the provided key \"%(fingerprint)s\". This could mean your communications are being intercepted!": "ACHTUNG: SCHLÜSSEL-VERIFIZIERUNG FEHLGESCHLAGEN! Der Signierschlüssel für %(userId)s und Sitzung %(deviceId)s ist \"%(fprint)s\", was nicht mit dem beritgestellten Schlüssel \"%(fingerprint)s\" übereinstimmt. Das könnte bedeuten, dass Ihre Kommunikation abgehört wird!" } From 6c9d489ef7fe2d69446c19090e1fd1cf9b5ed540 Mon Sep 17 00:00:00 2001 From: Szimszon Date: Tue, 18 Feb 2020 20:20:57 +0000 Subject: [PATCH 023/124] Translated using Weblate (Hungarian) Currently translated at 100.0% (2126 of 2126 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 ca701c99e9..018f7a05f6 100644 --- a/src/i18n/strings/hu.json +++ b/src/i18n/strings/hu.json @@ -2149,5 +2149,10 @@ "Whether you're using Riot on a device where touch is the primary input mechanism": "Hogy olyan eszközön használod a Riotot ahol az érintés az elsődleges beviteli forma", "Whether you're using Riot as an installed Progressive Web App": "Hogy a Riotot mint progresszív webes alkalmazást használod", "Your user agent": "Felhasználói ügynök", - "The information being sent to us to help make Riot better includes:": "Az alábbi információk kerülnek elküldésre amivel a Riotot jobbá tudjuk tenni:" + "The information being sent to us to help make Riot better includes:": "Az alábbi információk kerülnek elküldésre amivel a Riotot jobbá tudjuk tenni:", + "The session you are trying to verify doesn't support scanning a QR code or emoji verification, which is what Riot supports. Try with a different client.": "Az ellenőrizni kívánt munkamenet nem támogatja se a QR kód beolvasást se az emodzsi ellenőrzést, amit a Riot támogat. Próbáld meg egy másik klienssel.", + "You declined": "Elutasítottad", + "%(name)s declined": "%(name)s elutasította", + "accepting …": "elfogadás …", + "declining …": "elutasítás …" } From ad8255e31a85c8f838feab139abc302934b41fb5 Mon Sep 17 00:00:00 2001 From: random Date: Tue, 18 Feb 2020 14:44:23 +0000 Subject: [PATCH 024/124] Translated using Weblate (Italian) Currently translated at 100.0% (2126 of 2126 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 bee64682d1..d1e12bdd77 100644 --- a/src/i18n/strings/it.json +++ b/src/i18n/strings/it.json @@ -2150,5 +2150,10 @@ "Verify by scanning": "Verifica con la scansione", "Destroy cross-signing keys?": "Distruggere le chiavi di firma incrociata?", "Deleting cross-signing keys is permanent. Anyone you have verified with will see security alerts. You almost certainly don't want to do this, unless you've lost every device you can cross-sign from.": "L'eliminazione delle chiavi di firma incrociata è permanente. Chiunque si sia verificato con te vedrà avvisi di sicurezza. Quasi sicuramente non vuoi fare questa cosa, a meno che tu non abbia perso tutti i dispositivi da cui puoi fare l'accesso.", - "Clear cross-signing keys": "Elimina chiavi di firma incrociata" + "Clear cross-signing keys": "Elimina chiavi di firma incrociata", + "The session you are trying to verify doesn't support scanning a QR code or emoji verification, which is what Riot supports. Try with a different client.": "La sessione che stai cercando di verificare non supporta la scansione del codice QR o la verifica emoji, che sono supportate da Riot. Prova con un client diverso.", + "You declined": "Hai rifiutato", + "%(name)s declined": "%(name)s ha rifiutato", + "accepting …": "accettazione …", + "declining …": "rifiuto …" } From 48ef8e84e6233b1bd37634684ec75d8945d2a4dc Mon Sep 17 00:00:00 2001 From: Walter Date: Wed, 19 Feb 2020 07:16:33 +0000 Subject: [PATCH 025/124] Translated using Weblate (Russian) Currently translated at 80.9% (1719 of 2126 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 | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/i18n/strings/ru.json b/src/i18n/strings/ru.json index 831e39bf5a..457e828ded 100644 --- a/src/i18n/strings/ru.json +++ b/src/i18n/strings/ru.json @@ -924,7 +924,7 @@ "Failed to invite users to the room:": "Не удалось пригласить пользователей в комнату:", "Upgrades a room to a new version": "Модернизирует комнату до новой версии", "Sets the room name": "Устанавливает название комнаты", - "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": "Принудительно отбрасывает текущая сессия исходящей группы в зашифрованной комнате", "%(senderDisplayName)s upgraded this room.": "%(senderDisplayName)s модернизировал эту комнату.", "%(senderName)s added %(count)s %(addedAddresses)s as addresses for this room.|other": "%(senderName)s добавил %(addedAddresses)s к списку адресов комнаты.", "%(senderName)s added %(count)s %(addedAddresses)s as addresses for this room.|one": "%(senderName)s добавил %(addedAddresses)s к списку адресов комнаты.", @@ -1733,5 +1733,11 @@ "Hide sessions": "Скрытые сессии", "Enable 'Manage Integrations' in Settings to do this.": "Включите «Управление интеграциями» в настройках, чтобы сделать это.", "Unknown sessions": "Неизвестные сессии", - "Help": "Помощь" + "Help": "Помощь", + "If you cancel now, you won't complete verifying your other session.": "Если вы отмените сейчас, вы не завершите проверку вашей другой сессии.", + "Verify this session": "Проверьте эту сессию", + "Unverified session": "Непроверенная сессия", + "Verifies a user, session, and pubkey tuple": "Проверяет пользователя, сессию и публичные ключи", + "Unknown (user, session) pair:": "Неизвестная (пользователь:сессия) пара:", + "Session already verified!": "Сессия уже подтверждена!" } From 46fcb7d348f41a355ad6979cdc55c6067dfe3031 Mon Sep 17 00:00:00 2001 From: Tentarial Date: Wed, 19 Feb 2020 14:10:00 +0000 Subject: [PATCH 026/124] Translated using Weblate (German) Currently translated at 72.6% (1544 of 2126 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 | 34 ++++++++++++++++++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index 304c166e22..d37ac290ef 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -1250,7 +1250,7 @@ "I don't want my encrypted messages": "Ich möchte meine verschlüsselten Nachrichten nicht", "You'll lose access to your encrypted messages": "Du wirst den Zugang zu deinen verschlüsselten Nachrichten verlieren", "If you run into any bugs or have feedback you'd like to share, please let us know on GitHub.": "Wenn du Fehler bemerkst oder eine Rückmeldung geben möchtest, teile dies uns auf GitHub mit.", - "To help avoid duplicate issues, please view existing issues first (and add a +1) or create a new issue if you can't find it.": "Um doppelte Issues zu vermeiden, schau dir zuerst die existierenden Issues an (und füge hinzu oder erstelle ein neues Issue, wenn du keins finden kannst.", + "To help avoid duplicate issues, please view existing issues first (and add a +1) or create a new issue if you can't find it.": "Um doppelte Issues zu vermeiden, schauen Sie bitte zuerst die existierenden Issues an (und fügen Sie ein \"+1\" hinzu), oder erstellen Sie ein neues Issue, wenn Sie keines finden können.", "Report bugs & give feedback": "Melde Fehler & gebe Rückmeldungen", "Recovery Key Mismatch": "Wiederherstellungsschlüssel passt nicht", "Update status": "Aktualisiere Status", @@ -1560,5 +1560,35 @@ "Unknown (user, session) pair:": "Unbekanntes (Nutzer-, Sitzungs-) Paar:", "Session already verified!": "Sitzung bereits verifiziert!", "WARNING: Session already verified, but keys do NOT MATCH!": "ACHTUNG: Sitzung bereits verifiziert, aber die Schlüssel passen NICHT ZUSAMMEN!", - "WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and session %(deviceId)s is \"%(fprint)s\" which does not match the provided key \"%(fingerprint)s\". This could mean your communications are being intercepted!": "ACHTUNG: SCHLÜSSEL-VERIFIZIERUNG FEHLGESCHLAGEN! Der Signierschlüssel für %(userId)s und Sitzung %(deviceId)s ist \"%(fprint)s\", was nicht mit dem beritgestellten Schlüssel \"%(fingerprint)s\" übereinstimmt. Das könnte bedeuten, dass Ihre Kommunikation abgehört wird!" + "WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and session %(deviceId)s is \"%(fprint)s\" which does not match the provided key \"%(fingerprint)s\". This could mean your communications are being intercepted!": "ACHTUNG: SCHLÜSSEL-VERIFIZIERUNG FEHLGESCHLAGEN! Der Signierschlüssel für %(userId)s und Sitzung %(deviceId)s ist \"%(fprint)s\", was nicht mit dem beritgestellten Schlüssel \"%(fingerprint)s\" übereinstimmt. Das könnte bedeuten, dass Ihre Kommunikation abgehört wird!", + "Never send encrypted messages to unverified sessions from this session": "Sende niemals verschlüsselte Nachrichten von dieser Sitzung zu unverifizierten Sitzungen", + "Never send encrypted messages to unverified sessions in this room from this session": "Sende niemals verschlüsselte Nachrichten von dieser Sitzung zu unverifizierten Sitzungen in diesem Raum", + "Changing password will currently reset any end-to-end encryption keys on all sessions, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Durch die Änderung des Passworts werden derzeit alle End-zu-End-Verschlüsselungsschlüssel in allen Sitzungen zurückgesetzt, sodass der verschlüsselte Chat-Verlauf nicht mehr lesbar ist, es sei denn, Sie exportieren zuerst Ihre Raumschlüssel und importieren sie anschließend wieder. In Zukunft wird dies verbessert werden.", + "Delete %(count)s sessions|other": "Lösche %(count)s Sitzungen", + "Backup is not signed by any of your sessions": "Die Sicherung ist von keiner Ihrer Sitzungen unterzeichnet.", + "Your password was successfully changed. You will not receive push notifications on other sessions until you log back in to them": "Ihr Passwort wurde erfolgreich geändert. Sie erhalten keine Push-Benachrichtigungen zu anderen Sitzungen, bis Sie sich wieder bei diesen anmelden", + "Sessions": "Sitzungen", + "Notification sound": "Benachrichtigungston", + "Set a new custom sound": "Setze einen neuen benutzerdefinierten Sound", + "Browse": "Durchsuche", + "Direct Messages": "Direkte Nachrichten", + "You can use /help to list available commands. Did you mean to send this as a message?": "Sie können /help benutzen, um verfügbare Befehle aufzulisten. Wollten Sie dies als Nachricht senden?", + "Direct message": "Direkte Nachricht", + "Set a room alias to easily share your room with other people.": "Setze ein Raum-Alias, um deinen Raum einfach mit anderen Personen zu teilen.", + "Suggestions": "Vorschläge", + "Recently Direct Messaged": "Kürzlich direkt verschickt", + "If you can't find someone, ask them for their username, share your username (%(userId)s) or profile link.": "Wenn Sie niemanden finden können, fragen Sie nach deren Benutzernamen, teilen Sie ihren Benutzernamen (%(userId)s) oder Profil-Link.", + "Go": "Los", + "If you can't find someone, ask them for their username (e.g. @user:server.com) or share this room.": "Wenn Sie niemanden finden können, fragen Sie nach deren Benutzernamen (z.B. @benutzer:server.de) oder teilen Sie diesen Raum.", + "Command Help": "Befehl Hilfe", + "To help us prevent this in future, please send us logs.": "Um uns zu helfen, dies in Zukunft zu vermeiden, senden Sie uns bitte Logs.", + "We recommend you go through the verification process for each session to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.": "Wir empfehlen Ihnen, den Verifizierungsprozess für jede Sitzung zu durchlaufen, um zu bestätigen, dass sie ihrem rechtmäßigen Eigentümer gehören, aber Sie können die Nachricht auch ohne Verifizierung erneut senden, wenn Sie dies bevorzugen.", + "Notification settings": "Benachrichtigungseinstellungen", + "Help": "Hilfe", + "Filter": "Filter", + "Filter rooms…": "Räume filtern…", + "You have %(count)s unread notifications in a prior version of this room.|one": "Sie haben %(count)s ungelesene Benachrichtigungen in einer früheren Version dieses Raumes.", + "Go Back": "Gehe zurück", + "Notification Autocomplete": "Benachrichtigung Autovervollständigen", + "If disabled, messages from encrypted rooms won't appear in search results.": "Wenn deaktiviert, werden Nachrichten von verschlüsselten Räumen nicht in den Ergebnissen auftauchen." } From ca680e56fc94d9b07271dbab07bbacafe9184e9e Mon Sep 17 00:00:00 2001 From: Tentarial Date: Wed, 19 Feb 2020 14:34:33 +0000 Subject: [PATCH 027/124] Translated using Weblate (German) Currently translated at 72.6% (1544 of 2126 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 d37ac290ef..4adb614dab 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -1590,5 +1590,6 @@ "You have %(count)s unread notifications in a prior version of this room.|one": "Sie haben %(count)s ungelesene Benachrichtigungen in einer früheren Version dieses Raumes.", "Go Back": "Gehe zurück", "Notification Autocomplete": "Benachrichtigung Autovervollständigen", - "If disabled, messages from encrypted rooms won't appear in search results.": "Wenn deaktiviert, werden Nachrichten von verschlüsselten Räumen nicht in den Ergebnissen auftauchen." + "If disabled, messages from encrypted rooms won't appear in search results.": "Wenn deaktiviert, werden Nachrichten von verschlüsselten Räumen nicht in den Ergebnissen auftauchen.", + "This user has not verified all of their sessions.": "Dieser Benutzer hat nicht alle seine Sitzungen verifiziert." } From df897b47348cace70db777d1bcb83ff39594ba6a Mon Sep 17 00:00:00 2001 From: Remi Reuvekamp <20200217translateriot@remi.im> Date: Wed, 19 Feb 2020 15:29:30 +0000 Subject: [PATCH 028/124] Translated using Weblate (Dutch) Currently translated at 86.6% (1841 of 2126 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 | 35 ++++++++++++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/nl.json b/src/i18n/strings/nl.json index 16903b36bf..f0fddfd9b4 100644 --- a/src/i18n/strings/nl.json +++ b/src/i18n/strings/nl.json @@ -1824,5 +1824,38 @@ "Subscribing to a ban list will cause you to join it!": "Wanneer u een abonnement neemt zal u worden toegevoegd!", "If this isn't what you want, please use a different tool to ignore users.": "Als u dit niet wilt kunt u een andere methode gebruiken om gebruikers te negeren.", "Room ID or alias of ban list": "Gespreks-ID of (bij)naam of banlijst", - "Subscribe": "Abonneer" + "Subscribe": "Abonneer", + "Enable desktop notifications for this session": "Schakel desktopmeldingen in voor deze sessie", + "Enable audible notifications for this session": "Schakel meldingen met geluid in voor deze sessie", + "You should:": "U zou:", + "check your browser plugins for anything that might block the identity server (such as Privacy Badger)": "uw browser extensies bekijken voor extensies die mogelijk de identiteitsserver blokkeren (zoals Privacy Badger)", + "contact the administrators of identity server ": "contact opnemen met de beheerders van de identiteitsserver ", + "wait and try again later": "wachten en het later weer proberen", + "Use an Integration Manager (%(serverName)s) to manage bots, widgets, and sticker packs.": "Gebruik een integratiebeheerder (%(serverName)s) om robots, widgets en stickerpakketten te beheren.", + "Use an Integration Manager to manage bots, widgets, and sticker packs.": "Gebruik een integratiebeheerder om robots, widgets en stickerpakketten te beheren.", + "Manage integrations": "Beheer integraties", + "Integration Managers receive configuration data, and can modify widgets, send room invites, and set power levels on your behalf.": "Integratiebeheerders ontvangen configuratie-informatie en kunnen widgets aanpassen, uitnodigingen voor de kamer versturen en machtsniveau's namens u aanpassen.", + "Ban list rules - %(roomName)s": "Banlijst regels - %(roomName)s", + "Server rules": "Server regels", + "User rules": "Gebruiker regels", + "Show tray icon and minimize window to it on close": "Geef een icoon in de systeembalk weer en minimaliseer het venster wanneer het wordt gesloten", + "Session ID:": "Sessie-ID:", + "Session key:": "Sessiesleutel:", + "Message search": "Berichten zoeken", + "Sessions": "Sessies", + "A session's public name is visible to people you communicate with": "Een sessie's publieke naam is zichtbaar voor de mensen waarmee u communiceert", + "This room is bridging messages to the following platforms. Learn more.": "Dit gesprek wordt overbrugt naar de volgende platformen. Lees meer", + "This room isn’t bridging messages to any platforms. Learn more.": "Dit gesprek wordt niet overbrugt naar andere platformen. Lees meer.", + "Bridges": "Overbruggingen", + "This user has not verified all of their sessions.": "Deze gebruiker heeft niet al haar sessies geverifieerd.", + "You have not verified this user.": "U heeft deze gebruiker niet geverifieerd.", + "You have verified this user. This user has verified all of their sessions.": "U heeft deze gebruiker geverifieerd. Deze gebruiker heeft al haar sessies geverifieerd.", + "Someone is using an unknown session": "Iemand gebruikt een onbekende sessie", + "This room is end-to-end encrypted": "Dit gesprek is van eind-tot-eind versleuteld", + "Everyone in this room is verified": "Iedereen in dit gesprek is geverifieerd", + "Some sessions for this user are not trusted": "Sommige sessies van deze gebruiker zijn niet vertrouwd", + "All sessions for this user are trusted": "Alle sessies van deze gebruiker zijn vertrouwd", + "Some sessions in this encrypted room are not trusted": "Sommige sessies in dit versleutelde gesprek zijn niet vertrouwd", + "All sessions in this encrypted room are trusted": "Alle sessies in dit versleutelde gesprek zijn vertrouwd", + "Mod": "Mod" } From fa390213876b1bdc1583d9153f420383e719fdf6 Mon Sep 17 00:00:00 2001 From: Tentarial Date: Wed, 19 Feb 2020 14:34:46 +0000 Subject: [PATCH 029/124] Translated using Weblate (German) Currently translated at 75.6% (1608 of 2126 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 | 80 ++++++++++++++++++++++++++++++------- 1 file changed, 65 insertions(+), 15 deletions(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index 4adb614dab..ec7ce416fb 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -869,7 +869,7 @@ "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!", - "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.": "Dies wird deinen Account permanent unbenutzbar machen. Du wirst nicht in der Lage sein, dich anzumelden und keiner wird dieselbe Benutzer-ID erneut registrieren können. Alle Räume, in denen der Account ist, werden verlassen und deine Account-Daten werden vom Identitätsserver gelöscht. Diese Aktion ist irreversibel!", + "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.": "Dies wird deinen Account permanent unbenutzbar machen. Du wirst nicht in der Lage sein, dich anzumelden und keiner wird dieselbe Benutzer-ID erneut registrieren können. Alle Räume, in denen der Account ist, werden verlassen und deine Account-Daten werden vom Identitätsserver gelöscht. Diese Aktion ist unumkehrbar.", "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.": "Standardmäßig werden die von dir gesendeten Nachrichten beim Deaktiveren nicht gelöscht. Wenn du dies von uns möchtest, aktivere das Auswalfeld unten.", "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.": "Sie Sichtbarkeit der Nachrichten in Matrix ist vergleichbar mit E-Mails: Wenn wir deine Nachrichten vergessen heißt das, dass diese nicht mit neuen oder nicht registrierten Nutzern teilen werden, aber registrierte Nutzer, die bereits zugriff haben, werden Zugriff auf ihre Kopie behalten.", "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)": "Bitte vergesst alle Nachrichten, die ich gesendet habe, wenn mein Account deaktiviert wird. (Warnung: Zukünftige Nutzer werden eine unvollständige Konversation sehen)", @@ -892,7 +892,7 @@ "No Audio Outputs detected": "Keine Ton-Ausgabe erkannt", "Audio Output": "Ton-Ausgabe", "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 verschlüsselten Räumen, wie diesem, ist die Link-Vorschau standardmäßig deaktiviert damit dein Heimserver (auf dem die Vorschau erzeugt wird) keine Informationen über Links in diesem Raum bekommt.", - "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.": "Wenn jemand eine Nachricht mit einem Link schickt, kann die Link-Vorschau mehr Informationen, wie Titel, Beschreibung und Bild der Webseite, über den Link anzeigen.", + "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.": "Wenn jemand eine URL in seine Nachricht einfügt, kann eine URL-Vorschau angezeigt werden, um mehr Informationen über diesen Link zu erhalten, wie z.B. den Titel, die Beschreibung und ein Bild von der Website.", "The email field must not be blank.": "Das E-Mail-Feld darf nicht leer sein.", "The phone number field must not be blank.": "Das Telefonnummern-Feld darf nicht leer sein.", "The password field must not be blank.": "Das Passwort-Feld darf nicht leer sein.", @@ -945,9 +945,9 @@ "%(senderName)s removed the main address for this room.": "%(senderName)s entfernte die Hauptadresse von diesem Raum.", "%(senderName)s added %(addedAddresses)s and removed %(removedAddresses)s as addresses for this room.": "%(senderName)s fügte %(addedAddresses)s hinzu und entfernte %(removedAddresses)s als Adressen von diesem Raum.", "Before submitting logs, you must create a GitHub issue to describe your problem.": "Bevor du Log-Dateien übermittelst, musst du ein GitHub-Issue erstellen um dein Problem zu beschreiben.", - "Riot now uses 3-5x less memory, by only loading information about other users when needed. Please wait whilst we resynchronise with the server!": "Riot benutzt nun 3-5x weniger Arbeitsspeicher, indem Informationen über andere Nutzer erst bei Bedarf geladen werden. Bitte warte, während die Daten erneut mit dem Server abgeglichen werden!", + "Riot now uses 3-5x less memory, by only loading information about other users when needed. Please wait whilst we resynchronise with the server!": "Riot benutzt nun 3-5-mal weniger Arbeitsspeicher, indem Informationen über andere Nutzer erst bei Bedarf geladen werden. Bitte warte, während die Daten erneut mit dem Server abgeglichen werden!", "Updating Riot": "Aktualisiere Riot", - "You've previously used Riot on %(host)s with lazy loading of members enabled. In this version lazy loading is disabled. As the local cache is not compatible between these two settings, Riot needs to resync your account.": "Du hast zuvor Riot auf %(host)s ohne verzögertem Laden von Mitgliedern genutzt. In dieser Version war das verzögerte Laden deaktiviert. Da die lokal zwischengespeicherten Daten zwischen diesen Einstellungen nicht kompatibel ist, muss Riot dein Konto neu synchronisieren.", + "You've previously used Riot on %(host)s with lazy loading of members enabled. In this version lazy loading is disabled. As the local cache is not compatible between these two settings, Riot needs to resync your account.": "Du hast zuvor Riot auf %(host)s ohne das verzögerte Laden von Mitgliedern genutzt. In dieser Version war das verzögerte Laden deaktiviert. Da die lokal zwischengespeicherten Daten zwischen diesen Einstellungen nicht kompatibel sind, muss Riot dein Konto neu synchronisieren.", "If the other version of Riot is still open in another tab, please close it as using Riot on the same host with both lazy loading enabled and disabled simultaneously will cause issues.": "Wenn Riot mit der alten Version in einem anderen Tab geöffnet ist, schließe dies bitte, da das parallele Nutzen von Riot auf demselben Host mit aktivierten und deaktivierten verzögertem Laden, Probleme verursachen wird.", "Incompatible local cache": "Inkompatibler lokaler Zwischenspeicher", "Clear cache and resync": "Zwischenspeicher löschen und erneut synchronisieren", @@ -960,7 +960,7 @@ "Delete Backup": "Sicherung löschen", "Backup version: ": "Sicherungsversion: ", "Algorithm: ": "Algorithmus: ", - "To avoid losing your chat history, you must export your room keys before logging out. You will need to go back to the newer version of Riot to do this": "Um deinen Chatverlauf nicht zu verlieren, musst du deine Raum-Schlüssel exportieren, bevor du dich abmeldest. Du musst zurück zu einer neueren Riot-Version gehen, um dies zu tun", + "To avoid losing your chat history, you must export your room keys before logging out. You will need to go back to the newer version of Riot to do this": "Um zu vermeiden, dass Ihr Chat-Verlauf verloren geht, müssen Sie Ihre Raum-Schlüssel exportieren, bevor Sie sich abmelden. Dazu müssen Sie auf die neuere Version von Riot zurückgehen", "Incompatible Database": "Inkompatible Datenbanken", "Continue With Encryption Disabled": "Mit deaktivierter Verschlüsselung fortfahren", "Enter a passphrase...": "Passphrase eingeben...", @@ -984,7 +984,7 @@ "Backup Restored": "Sicherung wiederhergestellt", "Enter Recovery Passphrase": "Gebe Wiederherstellungs-Passphrase ein", "Enter Recovery Key": "Gebe Wiederherstellungsschlüssel ein", - "This looks like a valid recovery key!": "Dies sieht nach einem validen Wiederherstellungsschlüssel aus", + "This looks like a valid recovery key!": "Dies sieht wie ein gültiger Wiederherstellungsschlüssel aus!", "Not a valid recovery key": "Kein valider Wiederherstellungsschlüssel", "There was an error joining the room": "Es gab einen Fehler beim Raum-Beitreten", "Use a few words, avoid common phrases": "Benutze einige Worte, vermeide gängige Phrasen", @@ -1026,7 +1026,7 @@ "Unable to load key backup status": "Konnte Status des Schlüsselbackups nicht laden", "Don't ask again": "Nicht erneut fragen", "Set up": "Einrichten", - "Please review and accept all of the homeserver's policies": "Bitte sieh dir die Heimserver-Regularien an und akzeptiere sie", + "Please review and accept all of the homeserver's policies": "Bitte prüfen und akzeptieren Sie alle Richtlinien des Heimservers", "Failed to load group members": "Konnte Gruppenmitglieder nicht laden", "That doesn't look like a valid email address": "Sieht nicht nach einer validen E-Mail-Adresse aus", "Unable to load commit detail: %(msg)s": "Konnte Commit-Details nicht laden: %(msg)s", @@ -1034,10 +1034,10 @@ "Unable to load backup status": "Konnte Backupstatus nicht laden", "Failed to decrypt %(failedCount)s sessions!": "Konnte %(failedCount)s Sitzungen nicht entschlüsseln!", "Restored %(sessionCount)s session keys": "%(sessionCount)s Sitzungsschlüssel wiederhergestellt", - "Access your secure message history and set up secure messaging by entering your recovery passphrase.": "Greife auf deinen sicheren Chatverlauf zu und richte sicheres Schreiben ein indem du deine Wiederherstellungspassphrase eingibst.", + "Access your secure message history and set up secure messaging by entering your recovery passphrase.": "Greifen Sie auf Ihre sichere Nachrichtenhistorie zu und richten Sie einen sicheren Nachrichtenversand ein, indem Sie Ihre Wiederherstellungspassphrase eingeben.", "If you've forgotten your recovery passphrase you can use your recovery key or set up new recovery options": "Wenn du deinen Wiederherstellungspassphrase vergessen hast, kannst du deinen Wiederherstellungsschlüssel benutzen oder neue Wiederherstellungsoptionen einrichten", "You've previously used a newer version of Riot on %(host)s. To use this version again with end to end encryption, you will need to sign out and back in again. ": "Du hast kürzlich eine neuere Version von Riot auf %(host)s verwendet. Um diese Version erneut mit Ende-zu-Ende-Verschlüsselung zu nutzen, musst du dich ab- und wieder anmelden. ", - "Access your secure message history and set up secure messaging by entering your recovery key.": "Auf sichere Nachrichtenhistorie zugreifen und sicheren Nachrichtenversand einrichten indem du deinen Wiederherstellungsschlüssel eingibst.", + "Access your secure message history and set up secure messaging by entering your recovery key.": "Greifen Sie auf Ihren sicheren Nachrichtenverlauf zu und richten Sie durch Eingabe Ihres Wiederherstellungsschlüssels einen sicheren Nachrichtenversand ein.", "Set a new status...": "Setze einen neuen Status...", "Clear status": "Status löschen", "Invalid homeserver discovery response": "Ungültige Antwort beim Aufspüren des Heimservers", @@ -1051,10 +1051,10 @@ "Without setting up Secure Message Recovery, you'll lose your secure message history when you log out.": "Ohne Sichere Nachrichten-Wiederherstellung einzurichten, wirst du deine sichere Nachrichtenhistorie verlieren, wenn du dich abmeldest.", "If you don't want to set this up now, you can later in Settings.": "Wenn du dies jetzt nicht einrichten willst, kannst du dies später in den Einstellungen tun.", "New Recovery Method": "Neue Wiederherstellungsmethode", - "If you didn't set the new recovery method, an attacker may be trying to access your account. Change your account password and set a new recovery method immediately in Settings.": "Wenn du die neue Wiederherstellungsmethode nicht eingerichtet hast, kann ein Angreifer versuchen Zugang zu deinem Konto zu erlangen. Ändere sofort dein Passwort und setze eine neue Wiederherstellungsmethode.", + "If you didn't set the new recovery method, an attacker may be trying to access your account. Change your account password and set a new recovery method immediately in Settings.": "Wenn Sie die neue Wiederherstellungsmethode nicht festgelegt haben, versucht ein Angreifer möglicherweise, auf Ihr Konto zuzugreifen. Ändern Sie Ihr Kontopasswort und legen Sie sofort eine neue Wiederherstellungsmethode in den Einstellungen fest.", "Set up Secure Messages": "Richte sichere Nachrichten ein", "Go to Settings": "Gehe zu Einstellungen", - "Sign in with single sign-on": "Mit Single Sign-On anmelden", + "Sign in with single sign-on": "Melden Sie sich mit Single Sign-On an", "Waiting for %(userId)s to confirm...": "Warte auf Bestätigung für %(userId)s ...", "Unrecognised address": "Nicht erkannte Adresse", "User %(user_id)s may or may not exist": "Existenz der Benutzer %(user_id)s unsicher", @@ -1246,7 +1246,7 @@ "Manually export keys": "Manueller Schlüssel Export", "Composer": "Nachrichteneingabefeld", "Nothing appearing? Not all clients support interactive verification yet. .": "Es ist nichts aufgetaucht? Noch nicht alle Clients unterstützen die interaktive Verifikation. .", - "Verify this user to mark them as trusted. Trusting users gives you extra peace of mind when using end-to-end encrypted messages.": "Verifiziere diesen Benutzer und markiere ihn als \"vertraut\". Dies gibt dir bei Ende-zu-Ende-verschlüsselten Nachrichten extra Seelenfrieden.", + "Verify this user to mark them as trusted. Trusting users gives you extra peace of mind when using end-to-end encrypted messages.": "Überprüfen Sie diesen Benutzer, um ihn als vertrauenswürdig zu kennzeichnen. Benutzern zu vertrauen gibt Ihnen zusätzliche Sicherheit bei der Verwendung von Ende-zu-Ende-verschlüsselten Nachrichten.", "I don't want my encrypted messages": "Ich möchte meine verschlüsselten Nachrichten nicht", "You'll lose access to your encrypted messages": "Du wirst den Zugang zu deinen verschlüsselten Nachrichten verlieren", "If you run into any bugs or have feedback you'd like to share, please let us know on GitHub.": "Wenn du Fehler bemerkst oder eine Rückmeldung geben möchtest, teile dies uns auf GitHub mit.", @@ -1302,7 +1302,7 @@ "Enter the location of your Modular homeserver. It may use your own domain name or be a subdomain of modular.im.": "Gib die Adresse deines Modular-Heimservers an. Es kann deine eigene Domain oder eine Subdomain von modular.im sein.", "Unable to query for supported registration methods.": "Konnte unterstützte Registrierungsmethoden nicht abrufen.", "Bulk options": "Sammeloptionen", - "Join millions for free on the largest public server": "Tritt wie Millionen andere kostenlos dem größten öffentlichen Server bei", + "Join millions for free on the largest public server": "Schließen Sie sich auf dem größten öffentlichen Server kostenlos Millionen von Menschen an", "Prepends ¯\\_(ツ)_/¯ to a plain-text message": "Fügt ¯\\_(ツ)_/¯ vor einer Klartextnachricht ein", "Changes your display nickname in the current room only": "Ändert den Anzeigenamen ausschließlich für den aktuellen Raum", "%(senderDisplayName)s enabled flair for %(groups)s in this room.": "%(senderDisplayName)s aktivierte Abzeichen der Gruppen %(groups)s für diesen Raum.", @@ -1560,7 +1560,7 @@ "Unknown (user, session) pair:": "Unbekanntes (Nutzer-, Sitzungs-) Paar:", "Session already verified!": "Sitzung bereits verifiziert!", "WARNING: Session already verified, but keys do NOT MATCH!": "ACHTUNG: Sitzung bereits verifiziert, aber die Schlüssel passen NICHT ZUSAMMEN!", - "WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and session %(deviceId)s is \"%(fprint)s\" which does not match the provided key \"%(fingerprint)s\". This could mean your communications are being intercepted!": "ACHTUNG: SCHLÜSSEL-VERIFIZIERUNG FEHLGESCHLAGEN! Der Signierschlüssel für %(userId)s und Sitzung %(deviceId)s ist \"%(fprint)s\", was nicht mit dem beritgestellten Schlüssel \"%(fingerprint)s\" übereinstimmt. Das könnte bedeuten, dass Ihre Kommunikation abgehört wird!", + "WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and session %(deviceId)s is \"%(fprint)s\" which does not match the provided key \"%(fingerprint)s\". This could mean your communications are being intercepted!": "ACHTUNG: SCHLÜSSEL-VERIFIZIERUNG FEHLGESCHLAGEN! Der Signierschlüssel für %(userId)s und Sitzung %(deviceId)s ist \"%(fprint)s\", was nicht mit dem bereitgestellten Schlüssel \"%(fingerprint)s\" übereinstimmt. Das könnte bedeuten, dass Ihre Kommunikation abgehört wird!", "Never send encrypted messages to unverified sessions from this session": "Sende niemals verschlüsselte Nachrichten von dieser Sitzung zu unverifizierten Sitzungen", "Never send encrypted messages to unverified sessions in this room from this session": "Sende niemals verschlüsselte Nachrichten von dieser Sitzung zu unverifizierten Sitzungen in diesem Raum", "Changing password will currently reset any end-to-end encryption keys on all sessions, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Durch die Änderung des Passworts werden derzeit alle End-zu-End-Verschlüsselungsschlüssel in allen Sitzungen zurückgesetzt, sodass der verschlüsselte Chat-Verlauf nicht mehr lesbar ist, es sei denn, Sie exportieren zuerst Ihre Raumschlüssel und importieren sie anschließend wieder. In Zukunft wird dies verbessert werden.", @@ -1591,5 +1591,55 @@ "Go Back": "Gehe zurück", "Notification Autocomplete": "Benachrichtigung Autovervollständigen", "If disabled, messages from encrypted rooms won't appear in search results.": "Wenn deaktiviert, werden Nachrichten von verschlüsselten Räumen nicht in den Ergebnissen auftauchen.", - "This user has not verified all of their sessions.": "Dieser Benutzer hat nicht alle seine Sitzungen verifiziert." + "This user has not verified all of their sessions.": "Dieser Benutzer hat nicht alle seine Sitzungen verifiziert.", + "You have verified this user. This user has verified all of their sessions.": "Sie haben diesen Benutzer verifiziert. Dieser Benutzer hat alle seine Sitzungen verifiziert.", + "Some sessions for this user are not trusted": "Einige Sitzungen für diesen Benutzer sind nicht vertrauenswürdig", + "All sessions for this user are trusted": "Alle Sitzungen für diesen Benutzer sind vertrauenswürdig", + "Some sessions in this encrypted room are not trusted": "Einige Sitzungen in diesem verschlüsselten Raum sind nicht vertrauenswürdig", + "All sessions in this encrypted room are trusted": "Alle Sitzungen in diesem verschlüsselten Raum sind vertrauenswürdig", + "Your key share request has been sent - please check your other sessions for key share requests.": "Ihre Anfrage zur Schlüssel-Teilung wurde gesendet - bitte überprüfen Sie Ihre anderen Sitzungen auf Anfragen zur Schlüssel-Teilung.", + "Key share requests are sent to your other sessions automatically. If you rejected or dismissed the key share request on your other sessions, click here to request the keys for this session again.": "Anfragen zum Teilen von Schlüsseln werden automatisch an Ihre anderen Sitzungen gesendet. Wenn Sie die Anfragen zum Teilen von Schlüsseln in Ihren anderen Sitzungen abgelehnt oder abgewiesen haben, klicken Sie hier, um die Schlüssel für diese Sitzung erneut anzufordern.", + "If your other sessions do not have the key for this message you will not be able to decrypt them.": "Wenn Ihre anderen Sitzungen nicht über den Schlüssel für diese Nachricht verfügen, können Sie sie nicht entschlüsseln.", + "Re-request encryption keys from your other sessions.": "Fordern Sie Verschlüsselungsschlüssel aus Ihren anderen Sitzungen erneut an.", + "No sessions with registered encryption keys": "Keine Sitzungen mit registrierten Verschlüsselungsschlüsseln", + "Room %(name)s": "Raum %(name)s", + "Upgrading this room will shut down the current instance of the room and create an upgraded room with the same name.": "Ein Upgrade dieses Raums schaltet die aktuelle Instanz des Raums ab und erstellt einen aktualisierten Raum mit demselben Namen.", + "%(name)s (%(userId)s) signed in to a new session without verifying it:": "%(name)s (%(userId)s) hat sich zu einer neuen Sitzung angemeldet, ohne sie zu überprüfen:", + "%(count)s verified sessions|other": "%(count)s verifizierte Sitzungen", + "Hide verified sessions": "Verifizierte Sitzungen ausblenden", + "%(count)s sessions|other": "%(count)s Sitzungen", + "Hide sessions": "Sitzungen ausblenden", + "Encryption enabled": "Verschlüsselung aktiviert", + "Messages in this room are end-to-end encrypted. Learn more & verify this user in their user profile.": "Nachrichten in diesem Raum sind Ende-zu-Ende verschlüsselt. Erfahren Sie mehr & überprüfen Sie diesen Benutzer in seinem Benutzerprofil.", + "Encryption not enabled": "Verschlüsselung nicht aktiviert", + "You verified %(name)s": "Du hast %(name)s verifiziert", + "You cancelled verifying %(name)s": "Sie haben die Verifizierung von %(name)s abgebrochen", + "%(name)s cancelled verifying": "%(name)s hat die Verifizierung abgebrochen", + "%(name)s accepted": "%(name)s hat akzeptiert", + "%(name)s declined": "%(name)s hat abgelehnt", + "%(name)s cancelled": "%(name)s hat abgebrochen", + "%(name)s wants to verify": "%(name)s will eine Verifizierung", + "Your display name": "Ihr Anzeigename", + "Please enter a name for the room": "Bitte geben Sie einen Namen für den Raum ein", + "This room is private, and can only be joined by invitation.": "Dieser Raum ist privat und kann nur auf Einladung betreten werden.", + "Create a private room": "Erstelle einen privaten Raum", + "Topic (optional)": "Thema (optional)", + "Make this room public": "Machen Sie diesen Raum öffentlich", + "Hide advanced": "Fortgeschrittenes ausblenden", + "Block users on other matrix homeservers from joining this room (This setting cannot be changed later!)": "Hindere Benutzer auf anderen Matrix-Homeservern daran, diesem Raum beizutreten (Diese Einstellung kann später nicht geändert werden!)", + "Session name": "Name der Sitzung", + "This will allow you to return to your account after signing out, and sign in on other sessions.": "So können Sie nach der Abmeldung zu Ihrem Konto zurückkehren und sich bei anderen Sitzungen anmelden.", + "Use bots, bridges, widgets and sticker packs": "Benutze Bots, Bridges, Widgets und Sticker-Packs", + "You are currently blacklisting unverified sessions; to send messages to these sessions you must verify them.": "Sie blockieren derzeit nicht verifizierte Sitzungen; um Nachrichten an diese Sitzungen zu senden, müssen Sie sie verifizieren.", + "Room contains unknown sessions": "Raum enthält unbekannte Sitzungen", + "\"%(RoomName)s\" contains sessions that you haven't seen before.": "\"%(RoomName)s\" enthält Sitzungen, die Sie noch nie zuvor gesehen haben.", + "Unknown sessions": "Unbekannte Sitzungen", + "Access your secure message history and your cross-signing identity for verifying other sessions by entering your passphrase.": "Greifen Sie durch Eingabe Ihrer Passphrase auf Ihren sicheren Nachrichtenverlauf und Ihre Quersignatur-Identität zu, um andere Sitzungen zu überprüfen.", + "Access your secure message history and your cross-signing identity for verifying other sessions by entering your recovery key.": "Greifen Sie durch Eingabe Ihres Wiederherstellungsschlüssels auf Ihren sicheren Nachrichtenverlauf und Ihre Quersignatur-Identität zur Überprüfung anderer Sitzungen zu.", + "Message not sent due to unknown sessions being present": "Nachricht wird nicht gesendet, da unbekannte Sitzungen vorhanden sind", + "Show sessions, send anyway or cancel.": "Sitzungen anzeigen, trotzdem senden oder abbrechen.", + "Changing your password will reset any end-to-end encryption keys on all of your sessions, making encrypted chat history unreadable. Set up Key Backup or export your room keys from another session before resetting your password.": "Wenn Sie Ihr Passwort ändern, werden alle End-to-End-Verschlüsselungsschlüssel für alle Ihre Sitzungen zurückgesetzt, sodass der verschlüsselte Chat-Verlauf nicht mehr lesbar ist. Richten Sie ein Schlüssel-Backup ein oder exportieren Sie Ihre Raumschlüssel aus einer anderen Sitzung, bevor Sie Ihr Passwort zurücksetzen.", + "You have been logged out of all sessions and will no longer receive push notifications. To re-enable notifications, sign in again on each device.": "Sie wurden von allen Sitzungen abgemeldet und erhalten keine Push-Benachrichtigungen mehr. Um die Benachrichtigungen wieder zu aktivieren, melden Sie sich auf jedem Gerät erneut an.", + "Upgrade this session to allow it to verify other sessions, granting them access to encrypted messages and marking them as trusted for other users.": "Aktualisieren Sie diese Sitzung, damit sie andere Sitzungen verifizieren kann, indem sie ihnen Zugang zu verschlüsselten Nachrichten gewährt und sie für andere Benutzer als vertrauenswürdig markiert.", + "Set up encryption on this session to allow it to verify other sessions, granting them access to encrypted messages and marking them as trusted for other users.": "Richten Sie für diese Sitzung eine Verschlüsselung ein, damit sie andere Sitzungen verifizieren kann, indem sie ihnen Zugang zu verschlüsselten Nachrichten gewährt und sie für andere Benutzer als vertrauenswürdig markiert." } From 45963adeb41671a893829c1902b1d003716b8fc3 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Wed, 19 Feb 2020 17:02:14 -0700 Subject: [PATCH 030/124] Use binary packing for verification QR codes Fixes https://github.com/vector-im/riot-web/issues/12257 Fixes https://github.com/vector-im/riot-web/issues/12375 We do not remove the existing QR code library in this commit because it is still used elsewhere (like the share dialog). This should be as accurate as possible to what [MSC1543](https://github.com/matrix-org/matrix-doc/pull/1544) asks for. --- package.json | 1 + .../elements/crypto/VerificationQRCode.js | 182 +++++++++++------- yarn.lock | 55 +++++- 3 files changed, 164 insertions(+), 74 deletions(-) diff --git a/package.json b/package.json index a68dcfddb4..32e78f835f 100644 --- a/package.json +++ b/package.json @@ -85,6 +85,7 @@ "pako": "^1.0.5", "png-chunks-extract": "^1.0.0", "prop-types": "^15.5.8", + "qrcode": "^1.4.4", "qrcode-react": "^0.1.16", "qs": "^6.6.0", "react": "^16.9.0", diff --git a/src/components/views/elements/crypto/VerificationQRCode.js b/src/components/views/elements/crypto/VerificationQRCode.js index 1c0fdcbf44..09408fe4dd 100644 --- a/src/components/views/elements/crypto/VerificationQRCode.js +++ b/src/components/views/elements/crypto/VerificationQRCode.js @@ -17,89 +17,87 @@ limitations under the License. import React from "react"; import PropTypes from "prop-types"; import {replaceableComponent} from "../../../../utils/replaceableComponent"; -import * as qs from "qs"; -import QRCode from "qrcode-react"; import {MatrixClientPeg} from "../../../../MatrixClientPeg"; import {VerificationRequest} from "matrix-js-sdk/src/crypto/verification/request/VerificationRequest"; import {ToDeviceChannel} from "matrix-js-sdk/src/crypto/verification/request/ToDeviceChannel"; +import {decodeBase64} from "matrix-js-sdk/src/crypto/olmlib"; +import Spinner from "../Spinner"; +import * as QRCode from "qrcode"; + +const CODE_VERSION = 0x02; +const BINARY_PREFIX = "MATRIX"; // ASCII, used to prefix the +const MODE_VERIFY_OTHER_USER = 0x00; +const MODE_VERIFY_SELF_TRUSTED = 0x01; // We trust the master key +const MODE_VERIFY_SELF_UNTRUSTED = 0x02; // We do not trust the master key @replaceableComponent("views.elements.crypto.VerificationQRCode") export default class VerificationQRCode extends React.PureComponent { static propTypes = { - // Common for all kinds of QR codes - keys: PropTypes.array.isRequired, // array of [Key ID, Base64 Key] pairs - action: PropTypes.string.isRequired, - keyholderUserId: PropTypes.string.isRequired, - - // User verification use case only - secret: PropTypes.string, - otherUserKey: PropTypes.string, // Base64 key being verified - otherUserDeviceKey: PropTypes.string, // Base64 key of the other user's device (or what we think it is; optional) - requestEventId: PropTypes.string, // for DM verification only - }; - - static defaultProps = { - action: "verify", + prefix: PropTypes.string.isRequired, + version: PropTypes.number.isRequired, + mode: PropTypes.number.isRequired, + transactionId: PropTypes.string.isRequired, // or requestEventId + firstKeyB64: PropTypes.string.isRequired, + secondKeyB64: PropTypes.string.isRequired, + secretB64: PropTypes.string.isRequired, }; static async getPropsForRequest(verificationRequest: VerificationRequest) { const cli = MatrixClientPeg.get(); const myUserId = cli.getUserId(); const otherUserId = verificationRequest.otherUserId; - const myDeviceId = cli.getDeviceId(); - const otherDevice = verificationRequest.targetDevice; - const otherDeviceId = otherDevice ? otherDevice.deviceId : null; - const qrProps = { - secret: verificationRequest.encodedSharedSecret, - keyholderUserId: myUserId, - action: "verify", - keys: [], // array of pairs: keyId, base64Key - otherUserKey: "", // base64key - otherUserDeviceKey: "", // base64key - requestEventId: "", // we figure this out in a moment - }; + let mode = MODE_VERIFY_OTHER_USER; + if (myUserId === otherUserId) { + // Mode changes depending on whether or not we trust the master cross signing key + const myTrust = cli.checkUserTrust(myUserId); + if (myTrust.isCrossSigningVerified()) { + mode = MODE_VERIFY_SELF_TRUSTED; + } else { + mode = MODE_VERIFY_SELF_UNTRUSTED; + } + } const requestEvent = verificationRequest.requestEvent; - qrProps.requestEventId = requestEvent.getId() + let transactionId = requestEvent.getId() ? requestEvent.getId() : ToDeviceChannel.getTransactionId(requestEvent); - // Populate the keys we need depending on which direction and users are involved in the verification. - if (myUserId === otherUserId) { - if (!otherDeviceId) { - // Existing scanning New session's QR code - qrProps.otherUserDeviceKey = null; - } else { - // New scanning Existing session's QR code - const myDevices = (await cli.getStoredDevicesForUser(myUserId)) || []; - const device = myDevices.find(d => d.deviceId === otherDeviceId); - if (device) qrProps.otherUserDeviceKey = device.getFingerprint(); - } + const qrProps = { + prefix: BINARY_PREFIX, + version: CODE_VERSION, + mode, + transactionId, + firstKeyB64: '', // worked out shortly + secondKeyB64: '', // worked out shortly + secretB64: verificationRequest.encodedSharedSecret, + }; - // Either direction shares these next few props + const myCrossSigningInfo = cli.getStoredCrossSigningForUser(myUserId); + const myDevices = (await cli.getStoredDevicesForUser(myUserId)) || []; - const xsignInfo = cli.getStoredCrossSigningForUser(myUserId); - qrProps.otherUserKey = xsignInfo.getId("master"); + if (mode === MODE_VERIFY_OTHER_USER) { + // First key is our master cross signing key + qrProps.firstKeyB64 = myCrossSigningInfo.getId("master"); - qrProps.keys = [ - [myDeviceId, cli.getDeviceEd25519Key()], - [xsignInfo.getId("master"), xsignInfo.getId("master")], - ]; - } else { - // Doesn't matter which direction the verification is, we always show the same QR code - // for not-ourself verification. - const myXsignInfo = cli.getStoredCrossSigningForUser(myUserId); - const otherXsignInfo = cli.getStoredCrossSigningForUser(otherUserId); - const otherDevices = (await cli.getStoredDevicesForUser(otherUserId)) || []; - const otherDevice = otherDevices.find(d => d.deviceId === otherDeviceId); + // Second key is the other user's master cross signing key + const otherUserCrossSigningInfo = cli.getStoredCrossSigningForUser(otherUserId); + qrProps.secondKeyB64 = otherUserCrossSigningInfo.getId("master"); + } else if (mode === MODE_VERIFY_SELF_TRUSTED) { + // First key is our master cross signing key + qrProps.firstKeyB64 = myCrossSigningInfo.getId("master"); - qrProps.keys = [ - [myDeviceId, cli.getDeviceEd25519Key()], - [myXsignInfo.getId("master"), myXsignInfo.getId("master")], - ]; - qrProps.otherUserKey = otherXsignInfo.getId("master"); - if (otherDevice) qrProps.otherUserDeviceKey = otherDevice.getFingerprint(); + // Second key is the other device's device key + const otherDevice = verificationRequest.targetDevice; + const otherDeviceId = otherDevice ? otherDevice.deviceId : null; + const device = myDevices.find(d => d.deviceId === otherDeviceId); + qrProps.secondKeyB64 = device.getFingerprint(); + } else if (mode === MODE_VERIFY_SELF_UNTRUSTED) { + // First key is our device's key + qrProps.firstKeyB64 = cli.getDeviceEd25519Key(); + + // Second key is what we think our master cross signing key is + qrProps.secondKeyB64 = myCrossSigningInfo.getId("master"); } return qrProps; @@ -107,21 +105,63 @@ export default class VerificationQRCode extends React.PureComponent { constructor(props) { super(props); + + this.state = { + dataUri: null, + }; + this.generateQrCode(); + } + + componentDidUpdate(prevProps: Readonly

): void { + if (JSON.stringify(this.props) === JSON.stringify(prevProps)) return; // No prop change + + this.generateQRCode(); + } + + async generateQrCode() { + let buf = Buffer.alloc(0); // we'll concat our way through life + + const appendByte = (b: number) => { + const tmpBuf = Buffer.from([b]); + buf = Buffer.concat([buf, tmpBuf]); + }; + const appendInt = (i: number) => { + const tmpBuf = Buffer.alloc(4); + tmpBuf.writeInt8(i, 0); + buf = Buffer.concat([buf, tmpBuf]); + }; + const appendStr = (s: string, enc: string) => { + const tmpBuf = Buffer.from(s, enc); + appendInt(tmpBuf.byteLength); + buf = Buffer.concat([buf, tmpBuf]); + }; + const appendEncBase64 = (b64: string) => { + const b = decodeBase64(b64); + const tmpBuf = Buffer.from(b); + buf = Buffer.concat([buf, tmpBuf]); + }; + + // Actually build the buffer for the QR code + appendStr(this.props.prefix, "ascii"); + appendByte(this.props.version); + appendByte(this.props.mode); + appendStr(this.props.transactionId, "utf-8"); + appendEncBase64(this.props.firstKeyB64); + appendEncBase64(this.props.secondKeyB64); + appendEncBase64(this.props.secretB64); + + // Now actually assemble the QR code's data URI + const uri = await QRCode.toDataURL([{data: buf, mode: 'byte'}], { + errorCorrectionLevel: 'L', // we want it as trivial-looking as possible + }); + this.setState({dataUri: uri}); } render() { - const query = { - request: this.props.requestEventId, - action: this.props.action, - other_user_key: this.props.otherUserKey, - secret: this.props.secret, - }; - for (const key of this.props.keys) { - query[`key_${key[0]}`] = key[1]; + if (!this.state.dataUri) { + return

; } - const uri = `https://matrix.to/#/${this.props.keyholderUserId}?${qs.stringify(query)}`; - - return ; + return ; } } diff --git a/yarn.lock b/yarn.lock index 6924d7dcc0..5aa6a3ed0c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2101,7 +2101,25 @@ bser@2.1.1: dependencies: node-int64 "^0.4.0" -buffer-from@^1.0.0: +buffer-alloc-unsafe@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0" + integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg== + +buffer-alloc@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec" + integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow== + dependencies: + buffer-alloc-unsafe "^1.1.0" + buffer-fill "^1.0.0" + +buffer-fill@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" + integrity sha1-+PeLdniYiO858gXNY39o5wISKyw= + +buffer-from@^1.0.0, buffer-from@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== @@ -2120,6 +2138,14 @@ buffer@^4.3.0: ieee754 "^1.1.4" isarray "^1.0.0" +buffer@^5.4.3: + version "5.4.3" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.4.3.tgz#3fbc9c69eb713d323e3fc1a895eee0710c072115" + integrity sha512-zvj65TkFeIt3i6aj5bIvJDzjjQQGs4o/sNoezg1F1kYap9Nu2jcUdpwzRSJTHMMzG0H7bZkn4rNQpImhuxWX2A== + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + builtin-modules@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" @@ -2887,6 +2913,11 @@ diffie-hellman@^5.0.0: miller-rabin "^4.0.0" randombytes "^2.0.0" +dijkstrajs@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/dijkstrajs/-/dijkstrajs-1.0.1.tgz#d3cd81221e3ea40742cfcde556d4e99e98ddc71b" + integrity sha1-082BIh4+pAdCz83lVtTpnpjdxxs= + dir-glob@^2.2.2: version "2.2.2" resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.2.2.tgz#fa09f0694153c8918b18ba0deafae94769fc50c4" @@ -4882,7 +4913,7 @@ isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= -isarray@^2.0.5: +isarray@^2.0.1, isarray@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== @@ -6728,6 +6759,11 @@ png-chunks-extract@^1.0.0: dependencies: crc-32 "^0.3.0" +pngjs@^3.3.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-3.4.0.tgz#99ca7d725965fb655814eaf65f38f12bbdbf555f" + integrity sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w== + posix-character-classes@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" @@ -7018,6 +7054,19 @@ qrcode-react@^0.1.16: dependencies: qr.js "0.0.0" +qrcode@^1.4.4: + version "1.4.4" + resolved "https://registry.yarnpkg.com/qrcode/-/qrcode-1.4.4.tgz#f0c43568a7e7510a55efc3b88d9602f71963ea83" + integrity sha512-oLzEC5+NKFou9P0bMj5+v6Z40evexeE29Z9cummZXZ9QXyMr3lphkURzxjXgPJC5azpxcshoDWV1xE46z+/c3Q== + dependencies: + buffer "^5.4.3" + buffer-alloc "^1.2.0" + buffer-from "^1.1.1" + dijkstrajs "^1.0.1" + isarray "^2.0.1" + pngjs "^3.3.0" + yargs "^13.2.4" + qs@^6.5.2, qs@^6.6.0: version "6.9.1" resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.1.tgz#20082c65cb78223635ab1a9eaca8875a29bf8ec9" @@ -9260,7 +9309,7 @@ yargs@^12.0.5: y18n "^3.2.1 || ^4.0.0" yargs-parser "^11.1.1" -yargs@^13.3.0: +yargs@^13.2.4, yargs@^13.3.0: version "13.3.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.0.tgz#4c657a55e07e5f2cf947f8a366567c04a0dedc83" integrity sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA== From 3b6a201d4ea80566214e2038adbff80e76c8c8c6 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Wed, 19 Feb 2020 17:03:50 -0700 Subject: [PATCH 031/124] Add comments --- src/components/views/elements/crypto/VerificationQRCode.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/components/views/elements/crypto/VerificationQRCode.js b/src/components/views/elements/crypto/VerificationQRCode.js index 09408fe4dd..407c1adf81 100644 --- a/src/components/views/elements/crypto/VerificationQRCode.js +++ b/src/components/views/elements/crypto/VerificationQRCode.js @@ -24,9 +24,9 @@ import {decodeBase64} from "matrix-js-sdk/src/crypto/olmlib"; import Spinner from "../Spinner"; import * as QRCode from "qrcode"; -const CODE_VERSION = 0x02; -const BINARY_PREFIX = "MATRIX"; // ASCII, used to prefix the -const MODE_VERIFY_OTHER_USER = 0x00; +const CODE_VERSION = 0x02; // the version of binary QR codes we support +const BINARY_PREFIX = "MATRIX"; // ASCII, used to prefix the binary format +const MODE_VERIFY_OTHER_USER = 0x00; // Verifying someone who isn't us const MODE_VERIFY_SELF_TRUSTED = 0x01; // We trust the master key const MODE_VERIFY_SELF_UNTRUSTED = 0x02; // We do not trust the master key From 760a472be51f6c8550ace4f43a51e6691c4b6133 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Wed, 19 Feb 2020 17:05:32 -0700 Subject: [PATCH 032/124] Appease the linter --- src/components/views/elements/crypto/VerificationQRCode.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/views/elements/crypto/VerificationQRCode.js b/src/components/views/elements/crypto/VerificationQRCode.js index 407c1adf81..cbbe2912d6 100644 --- a/src/components/views/elements/crypto/VerificationQRCode.js +++ b/src/components/views/elements/crypto/VerificationQRCode.js @@ -59,7 +59,7 @@ export default class VerificationQRCode extends React.PureComponent { } const requestEvent = verificationRequest.requestEvent; - let transactionId = requestEvent.getId() + const transactionId = requestEvent.getId() ? requestEvent.getId() : ToDeviceChannel.getTransactionId(requestEvent); @@ -112,7 +112,7 @@ export default class VerificationQRCode extends React.PureComponent { this.generateQrCode(); } - componentDidUpdate(prevProps: Readonly

): void { + componentDidUpdate(prevProps): void { if (JSON.stringify(this.props) === JSON.stringify(prevProps)) return; // No prop change this.generateQRCode(); From 10f90be5afc45b0160cab220c6164c39496062e2 Mon Sep 17 00:00:00 2001 From: Walter Date: Wed, 19 Feb 2020 20:02:10 +0000 Subject: [PATCH 033/124] Translated using Weblate (Russian) Currently translated at 81.1% (1725 of 2126 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 | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/ru.json b/src/i18n/strings/ru.json index 457e828ded..abe39b2cbd 100644 --- a/src/i18n/strings/ru.json +++ b/src/i18n/strings/ru.json @@ -1739,5 +1739,12 @@ "Unverified session": "Непроверенная сессия", "Verifies a user, session, and pubkey tuple": "Проверяет пользователя, сессию и публичные ключи", "Unknown (user, session) pair:": "Неизвестная (пользователь:сессия) пара:", - "Session already verified!": "Сессия уже подтверждена!" + "Session already verified!": "Сессия уже подтверждена!", + "Never send encrypted messages to unverified sessions from this session": "Никогда не отправляйте зашифрованные сообщения в непроверенные сессий из этой сессии", + "Never send encrypted messages to unverified sessions in this room from this session": "Никогда не отправляйте зашифрованные сообщения в непроверенные сессии в эту комнату из этой сессии", + "Your keys are not being backed up from this session.": "Ваши ключи не резервируются с этой сессии.", + "Server or user ID to ignore": "ID сервера или пользователя для игнорирования", + "Subscribed lists": "Подписанные списки", + "Subscribe": "Подписать", + "A session's public name is visible to people you communicate with": "Публичное имя сессии видны людям, с которыми вы общаетесь" } From c04eef6521cafc6ed4a97ee4e6b6f9ff1cbe787c Mon Sep 17 00:00:00 2001 From: MamasLT Date: Thu, 20 Feb 2020 09:48:46 +0000 Subject: [PATCH 034/124] Translated using Weblate (Lithuanian) Currently translated at 42.1% (894 of 2126 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 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/i18n/strings/lt.json b/src/i18n/strings/lt.json index eeb1871a8a..4276a933d1 100644 --- a/src/i18n/strings/lt.json +++ b/src/i18n/strings/lt.json @@ -625,8 +625,8 @@ "This homeserver has hit its Monthly Active User limit so some users will not be able to log in.": "Šis namų serveris pasiekė savo mėnesinį aktyvių naudotojų limitą, taigi, kai kurie naudotojai negalės prisijungti.", "This homeserver has exceeded one of its resource limits so some users will not be able to log in.": "Šis namų serveris viršijo vieno iš savo išteklių limitą, taigi, kai kurie naudotojai negalės prisijungti.", "An error ocurred whilst trying to remove the widget from the room": "Įvyko klaida, bandant pašalinti valdiklį iš kambario", - "Blacklist": "Įtraukti į juodąjį sąrašą", - "Unblacklist": "Pašalinti iš juodojo sąrašo", + "Blacklist": "Blokuoti", + "Unblacklist": "Atblokuoti", "Verify...": "Patvirtinti...", "Communities": "Bendruomenės", "Home": "Pradžia", From 4cc37d13c71f6a88a40cb18b7dbdf20419647f2f Mon Sep 17 00:00:00 2001 From: MamasLT Date: Thu, 20 Feb 2020 13:55:50 +0000 Subject: [PATCH 035/124] Translated using Weblate (Lithuanian) Currently translated at 42.1% (895 of 2126 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 | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/i18n/strings/lt.json b/src/i18n/strings/lt.json index 4276a933d1..98fa314016 100644 --- a/src/i18n/strings/lt.json +++ b/src/i18n/strings/lt.json @@ -755,7 +755,7 @@ "Sign In": "Prisijungti", "Explore rooms": "Žvalgyti kambarius", "Your Riot is misconfigured": "Jūsų Riot yra neteisingai sukonfigūruotas", - "Sign in to your Matrix account on %(serverName)s": "Prisijunkite prie savo paskyros %(serverName)s serveryje", + "Sign in to your Matrix account on %(serverName)s": "Prisijunkite prie savo Matrix paskyros %(serverName)s serveryje", "Sign in to your Matrix account on ": "Prisijunkite prie savo paskyros serveryje", "Whether or not you're using the 'breadcrumbs' feature (avatars above the room list)": "Nepriklausomai nuo to ar jūs naudojate 'duonos trupinių' funkciją (avatarai virš kambarių sąrašo)", "Where this page includes identifiable information, such as a room, user or group ID, that data is removed before being sent to the server.": "Kur šis puslapis įtraukia identifikuojamą informaciją, kaip kambarys, vartotojas ar grupės ID, tie duomenys yra pašalinami prieš siunčiant į serverį.", @@ -900,5 +900,6 @@ "Are you sure you want to leave the room '%(roomName)s'?": "Ar tikrai norite palikti kambarį %(roomName)s?", "%(creator)s created and configured the room.": "%(creator)s sukūrė ir sukonfigūravo kambarį.", "Riot failed to get the public room list.": "Riot nepavyko gauti viešų kambarių sąrašą.", - "General failure": "Bendras triktis" + "General failure": "Bendras triktis", + "Messages containing my username": "Žinutės, kuriose yra mano vartotojo vardas" } From 403895ebb9e809288cdf81da08b5b1d84597540a Mon Sep 17 00:00:00 2001 From: "J. A. Durieux" Date: Thu, 20 Feb 2020 16:30:15 +0000 Subject: [PATCH 036/124] Translated using Weblate (Dutch) Currently translated at 86.8% (1846 of 2126 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 | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/nl.json b/src/i18n/strings/nl.json index f0fddfd9b4..22af1bc727 100644 --- a/src/i18n/strings/nl.json +++ b/src/i18n/strings/nl.json @@ -1857,5 +1857,10 @@ "All sessions for this user are trusted": "Alle sessies van deze gebruiker zijn vertrouwd", "Some sessions in this encrypted room are not trusted": "Sommige sessies in dit versleutelde gesprek zijn niet vertrouwd", "All sessions in this encrypted room are trusted": "Alle sessies in dit versleutelde gesprek zijn vertrouwd", - "Mod": "Mod" + "Mod": "Mod", + "rooms.": "gesprekken.", + "Recent rooms": "Actuele gesprekken", + "Direct Messages": "Tweegesprekken", + "If disabled, messages from encrypted rooms won't appear in search results.": "Dit moet aanstaan om te kunnen zoeken in versleutelde gesprekken.", + "Indexed rooms:": "Geïndexeerde gesprekken:" } From 2027f410e3c1b949dcaaf6de20c8e71e5d1c4181 Mon Sep 17 00:00:00 2001 From: MamasLT Date: Thu, 20 Feb 2020 14:04:30 +0000 Subject: [PATCH 037/124] Translated using Weblate (Lithuanian) Currently translated at 43.1% (916 of 2126 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 | 35 ++++++++++++++++++++++++++++------- 1 file changed, 28 insertions(+), 7 deletions(-) diff --git a/src/i18n/strings/lt.json b/src/i18n/strings/lt.json index 98fa314016..cf563c29f3 100644 --- a/src/i18n/strings/lt.json +++ b/src/i18n/strings/lt.json @@ -420,7 +420,7 @@ "I have verified my email address": "Aš patvirtinau savo el. pašto adresą", "Return to login screen": "Grįžti į prisijungimo ekraną", "Send Reset Email": "Siųsti atstatymo el. laišką", - "Incorrect username and/or password.": "Neteisingas naudotojo vardas ir/ar slaptažodis.", + "Incorrect username and/or password.": "Neteisingas vartotojo vardas ir/arba 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.", "Failed to fetch avatar URL": "Nepavyko gauti avataro URL", "Commands": "Komandos", @@ -526,7 +526,7 @@ "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į", + "Confirm password": "Patvirtinkite slaptažodį", "Demote yourself?": "Pažeminti save?", "Demote": "Pažeminti", "Share Link to User": "Dalintis nuoroda į naudotoją", @@ -714,12 +714,12 @@ "Unable to verify email address.": "Nepavyko patvirtinti el. pašto adreso.", "This will allow you to reset your password and receive notifications.": "Tai jums leis atstatyti savo slaptažodį ir gauti pranešimus.", "Skip": "Praleisti", - "Username not available": "Naudotojo vardas neprieinamas", - "Username invalid: %(errMessage)s": "Neteisingas naudotojo vardas: %(errMessage)s", + "Username not available": "Vartotojo vardas negalimas", + "Username invalid: %(errMessage)s": "Neteisingas vartotojo vardas: %(errMessage)s", "An error occurred: %(error_string)s": "Įvyko klaida: %(error_string)s", "Checking...": "Tikrinama...", - "Username available": "Naudotojo vardas yra prieinamas", - "To get started, please pick a username!": "Norėdami pradėti, pasirinkite naudotojo vardą!", + "Username available": "Vartotojo vardas galimas", + "To get started, please pick a username!": "Norėdami pradėti, pasirinkite vartotojo vardą!", "If you already have a Matrix account you can log in instead.": "Jeigu jau turite Matrix paskyrą, tuomet vietoj to, galite prisijungti.", "Unable to restore backup": "Nepavyko atkurti atsarginės kopijos", "No backup found!": "Nerasta jokios atsarginės kopijos!", @@ -901,5 +901,26 @@ "%(creator)s created and configured the room.": "%(creator)s sukūrė ir sukonfigūravo kambarį.", "Riot failed to get the public room list.": "Riot nepavyko gauti viešų kambarių sąrašą.", "General failure": "Bendras triktis", - "Messages containing my username": "Žinutės, kuriose yra mano vartotojo vardas" + "Messages containing my username": "Žinutės, kuriose yra mano vartotojo vardas", + "Set a new account password...": "Nustatyti naują paskyros slaptažodį...", + "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.": "Jei jūs pateikėte klaidą per GitHub, derinimo žurnalai (debug logs) gali padėti mums surasti problemą. Derinimo žurnaluose yra programos naudojimo duomenys, įskaitant jūsų vartotojo vardą, ID ar kitus kambarių arba grupių, kuriuose jūs lankėtės, pavadinimus ir kitų vartotojų vardus. Juose nėra žinučių.", + "%(userName)s (power %(powerLevelNumber)s)": "%(userName)s (galia %(powerLevelNumber)s)", + "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.": "Derinimo žurnaluose yra programos naudojimo duomenys, įskaitant jūsų vartotojo vardą, ID ar kitus kambarių arba grupių, kuriuose jūs lankėtės, pavadinimus ir kitų vartotojų vardus. Juose nėra žinučių.", + "If you can't find someone, ask them for their username, share your username (%(userId)s) or profile link.": "Jei jūs negalite kažkieno surasti, paklauskite jų vartotojo vardo, pasidalinkite savo vartotojo vardu (%(userId)s) arba profilio nuoroda.", + "If you can't find someone, ask them for their username (e.g. @user:server.com) or share this room.": "Jei jūs negalite kažkieno surasti, paklauskite jų vartotojo vardo (pvz.: @vartotojas:serveris.lt) arba pasidalinkite šiuo kambariu.", + "A username can only contain lower case letters, numbers and '=_-./'": "Vartotojo vardą gali sudaryti tik mažosios raidės, skaičiai ir '=_-./'", + "The username field must not be blank.": "Vartotojo vardo laukelis negali būti tuščias.", + "Username": "Vartotojo vardas", + "Not sure of your password? Set a new one": "Pamiršote slaptažodį? Nustatykite naują", + "Enter username": "Įveskite vartotojo vardą", + "Confirm": "Patvirtinti", + "Create your Matrix account on %(serverName)s": "Sukurkite savo Matrix paskyrą %(serverName)s serveryje", + "Create your Matrix account on ": "Sukurkite savo Matrix paskyrą serveryje", + "Set an email for account recovery. Use email or phone to optionally be discoverable by existing contacts.": "Nustatykite el. paštą paskyros susigrąžinimui. Naudokite el. paštą ar tel. nr. norėdami pasirinktinai būti aptinkami esamų kontaktų.", + "Set an email for account recovery. Use email to optionally be discoverable by existing contacts.": "Nustatykite el. paštą paskyros susigrąžinimui. Naudokite el. paštą norėdami pasirinktinai būti aptinkami esamų kontaktų.", + "Sign in instead": "Prisijungti", + "A verification email will be sent to your inbox to confirm setting your new password.": "Patvirtinimo laiškas bus išsiųstas į jūsų pašto dėžutę tam, kad patvirtintumėte naujo slaptažodžio nustatymą.", + "Set a new password": "Nustatykite naują slaptažodį", + "Create account": "Sukurti paskyrą", + "Create your account": "Sukurkite savo paskyrą" } From 00cc2535941d5e009a25f40a53a9f704e8601e51 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Thu, 20 Feb 2020 10:50:35 -0700 Subject: [PATCH 038/124] Always suggest a pill for MXID-looking users Part of https://github.com/vector-im/riot-web/issues/12440 --- src/components/views/dialogs/InviteDialog.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/components/views/dialogs/InviteDialog.js b/src/components/views/dialogs/InviteDialog.js index 8c9c5f75ef..ce653d38ae 100644 --- a/src/components/views/dialogs/InviteDialog.js +++ b/src/components/views/dialogs/InviteDialog.js @@ -645,6 +645,13 @@ export default class InviteDialog extends React.PureComponent { } catch (e) { console.warn("Non-fatal error trying to make an invite for a user ID"); console.warn(e); + + // Add a result anyways, just without a profile + r.results.push({ + user_id: term, + display_name: term, + avatar_url: null, + }); } } From 62aaa0db9a115a434728ed719476fa0dbe95b52a Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Thu, 20 Feb 2020 23:01:50 -0700 Subject: [PATCH 039/124] Always insert suggestions for user IDs Fixes https://github.com/vector-im/riot-web/issues/12419 --- src/components/views/dialogs/InviteDialog.js | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/components/views/dialogs/InviteDialog.js b/src/components/views/dialogs/InviteDialog.js index ce653d38ae..3920cfd249 100644 --- a/src/components/views/dialogs/InviteDialog.js +++ b/src/components/views/dialogs/InviteDialog.js @@ -630,13 +630,14 @@ export default class InviteDialog extends React.PureComponent { // While we're here, try and autocomplete a search result for the mxid itself // if there's no matches (and the input looks like a mxid). - if (term[0] === '@' && term.indexOf(':') > 1 && r.results.length === 0) { + if (term[0] === '@' && term.indexOf(':') > 1) { try { const profile = await MatrixClientPeg.get().getProfileInfo(term); if (profile) { // If we have a profile, we have enough information to assume that - // the mxid can be invited - add it to the list - r.results.push({ + // the mxid can be invited - add it to the list. We stick it at the + // top so it is most obviously presented to the user. + r.results.splice(0, 0, { user_id: term, display_name: profile['displayname'], avatar_url: profile['avatar_url'], @@ -646,8 +647,9 @@ export default class InviteDialog extends React.PureComponent { console.warn("Non-fatal error trying to make an invite for a user ID"); console.warn(e); - // Add a result anyways, just without a profile - r.results.push({ + // Add a result anyways, just without a profile. We stick it at the + // top so it is most obviously presented to the user. + r.results.splice(0, 0,{ user_id: term, display_name: term, avatar_url: null, From f491e4222a5aa9f7eb1a87c9cc7634bd5ef7e267 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Thu, 20 Feb 2020 23:10:43 -0700 Subject: [PATCH 040/124] Convert the user's last filter into a selection if possible Fixes https://github.com/vector-im/riot-web/issues/12440 --- src/components/views/dialogs/InviteDialog.js | 26 +++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/src/components/views/dialogs/InviteDialog.js b/src/components/views/dialogs/InviteDialog.js index 3920cfd249..fa12f5393a 100644 --- a/src/components/views/dialogs/InviteDialog.js +++ b/src/components/views/dialogs/InviteDialog.js @@ -512,9 +512,26 @@ export default class InviteDialog extends React.PureComponent { return false; } + _convertFilter(): Member[] { + if (!this.state.filterText || !this.state.filterText.includes('@')) return; // nothing to convert + + let newMember: Member; + if (this.state.filterText.startsWith('@')) { + // Assume mxid + newMember = new DirectoryMember({user_id: this.state.filterText, display_name: null, avatar_url: null}); + } else { + // Assume email + newMember = new ThreepidMember(this.state.filterText); + } + const newTargets = [...this.state.targets, newMember]; + this.setState({targets: newTargets, filterText: ''}); + return newTargets; + } + _startDm = async () => { this.setState({busy: true}); - const targetIds = this.state.targets.map(t => t.userId); + const targets = this._convertFilter(); + const targetIds = targets.map(t => t.userId); // Check if there is already a DM with these people and reuse it if possible. const existingRoom = DMRoomMap.shared().getDMRoomForIdentifiers(targetIds); @@ -573,7 +590,9 @@ export default class InviteDialog extends React.PureComponent { _inviteUsers = () => { this.setState({busy: true}); - const targetIds = this.state.targets.map(t => t.userId); + this._convertFilter(); + const targets = this._convertFilter(); + const targetIds = targets.map(t => t.userId); const room = MatrixClientPeg.get().getRoom(this.props.roomId); if (!room) { @@ -1038,6 +1057,7 @@ export default class InviteDialog extends React.PureComponent { goButtonFn = this._inviteUsers; } + const hasSelection = this.state.targets.length > 0 || (this.state.filterText && this.state.filterText.includes('@')); return ( {buttonText} From 8ba274a38263fa500f2a01992919bb8a2c7492eb Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Thu, 20 Feb 2020 23:16:21 -0700 Subject: [PATCH 041/124] Allow creating a room with only yourself in it Fixes https://github.com/vector-im/riot-web/issues/12092 --- src/components/views/dialogs/InviteDialog.js | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/components/views/dialogs/InviteDialog.js b/src/components/views/dialogs/InviteDialog.js index fa12f5393a..03ec242a2e 100644 --- a/src/components/views/dialogs/InviteDialog.js +++ b/src/components/views/dialogs/InviteDialog.js @@ -513,7 +513,8 @@ export default class InviteDialog extends React.PureComponent { } _convertFilter(): Member[] { - if (!this.state.filterText || !this.state.filterText.includes('@')) return; // nothing to convert + // Check to see if there's anything to convert first + if (!this.state.filterText || !this.state.filterText.includes('@')) return this.state.targets || []; let newMember: Member; if (this.state.filterText.startsWith('@')) { @@ -523,7 +524,7 @@ export default class InviteDialog extends React.PureComponent { // Assume email newMember = new ThreepidMember(this.state.filterText); } - const newTargets = [...this.state.targets, newMember]; + const newTargets = [...(this.state.targets || []), newMember]; this.setState({targets: newTargets, filterText: ''}); return newTargets; } @@ -561,9 +562,12 @@ export default class InviteDialog extends React.PureComponent { // Check if it's a traditional DM and create the room if required. // TODO: [Canonical DMs] Remove this check and instead just create the multi-person DM let createRoomPromise = Promise.resolve(); - if (targetIds.length === 1) { + const isSelf = targetIds.length === 1 && targetIds[0] === MatrixClientPeg.get().getUserId(); + if (targetIds.length === 1 && !isSelf) { createRoomOptions.dmUserId = targetIds[0]; createRoomPromise = createRoom(createRoomOptions); + } else if (isSelf) { + createRoomPromise = createRoom(createRoomOptions); } else { // Create a boring room and try to invite the targets manually. createRoomPromise = createRoom(createRoomOptions).then(roomId => { From bcb1d73c3cfb09a2c953aeb716e4a1ad981b73b4 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Thu, 20 Feb 2020 23:21:35 -0700 Subject: [PATCH 042/124] Appease the linter --- src/components/views/dialogs/InviteDialog.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/components/views/dialogs/InviteDialog.js b/src/components/views/dialogs/InviteDialog.js index 03ec242a2e..5c222182de 100644 --- a/src/components/views/dialogs/InviteDialog.js +++ b/src/components/views/dialogs/InviteDialog.js @@ -672,7 +672,7 @@ export default class InviteDialog extends React.PureComponent { // Add a result anyways, just without a profile. We stick it at the // top so it is most obviously presented to the user. - r.results.splice(0, 0,{ + r.results.splice(0, 0, { user_id: term, display_name: term, avatar_url: null, @@ -1061,7 +1061,8 @@ export default class InviteDialog extends React.PureComponent { goButtonFn = this._inviteUsers; } - const hasSelection = this.state.targets.length > 0 || (this.state.filterText && this.state.filterText.includes('@')); + const hasSelection = this.state.targets.length > 0 + || (this.state.filterText && this.state.filterText.includes('@')); return ( Date: Tue, 18 Feb 2020 17:28:38 +0000 Subject: [PATCH 043/124] fix ssss overwrite --- src/components/views/settings/CrossSigningPanel.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/components/views/settings/CrossSigningPanel.js b/src/components/views/settings/CrossSigningPanel.js index eeccaa61e1..6e69227844 100644 --- a/src/components/views/settings/CrossSigningPanel.js +++ b/src/components/views/settings/CrossSigningPanel.js @@ -128,13 +128,12 @@ export default class CrossSigningPanel extends React.PureComponent { } const enabled = ( - crossSigningPublicKeysOnDevice && crossSigningPrivateKeysInStorage && secretStorageKeyInAccount ); let summarisedStatus; - if (enabled) { + if (enabled && crossSigningPublicKeysOnDevice) { summarisedStatus =

✅ {_t( "Cross-signing and secret storage are enabled.", )}

; From 558ae1128b05962211d07d8c453e3d5ac5448397 Mon Sep 17 00:00:00 2001 From: Bruno Windels Date: Fri, 21 Feb 2020 13:01:36 +0100 Subject: [PATCH 044/124] use alt_aliases rather than aliases for the display alias --- src/Rooms.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Rooms.js b/src/Rooms.js index f65e0ff218..218e970f35 100644 --- a/src/Rooms.js +++ b/src/Rooms.js @@ -23,7 +23,7 @@ import {MatrixClientPeg} from './MatrixClientPeg'; * of aliases. Otherwise return null; */ export function getDisplayAliasForRoom(room) { - return room.getCanonicalAlias() || room.getAliases()[0]; + return room.getCanonicalAlias() || room.getAltAliases()[0]; } /** From 8870da6c2403074b2d8f41875f1c5522ebdda194 Mon Sep 17 00:00:00 2001 From: Bruno Windels Date: Fri, 21 Feb 2020 12:50:18 +0100 Subject: [PATCH 045/124] Add alt_aliases to room completion candidates but don't match on name otherwise you see multiple entries per room when searching for a room name Also pass the roomId to the composer autocomplete, so it's easier to we don't need to loop through all the rooms and it's also easier accept room with local aliases as well in the future --- src/autocomplete/RoomProvider.js | 41 +++++++++++++++++++------------- src/editor/autocomplete.js | 2 +- src/editor/parts.js | 8 +++---- 3 files changed, 29 insertions(+), 22 deletions(-) diff --git a/src/autocomplete/RoomProvider.js b/src/autocomplete/RoomProvider.js index fccf1e3524..1074197814 100644 --- a/src/autocomplete/RoomProvider.js +++ b/src/autocomplete/RoomProvider.js @@ -40,11 +40,19 @@ function score(query, space) { } } +function matcherObject(room, displayedAlias, matchName = "") { + return { + room, + matchName, + displayedAlias, + }; +} + export default class RoomProvider extends AutocompleteProvider { constructor() { super(ROOM_REGEX); this.matcher = new QueryMatcher([], { - keys: ['displayedAlias', 'name'], + keys: ['displayedAlias', 'matchName'], }); } @@ -56,16 +64,16 @@ export default class RoomProvider extends AutocompleteProvider { const {command, range} = this.getCurrentCommand(query, selection, force); if (command) { // the only reason we need to do this is because Fuse only matches on properties - let matcherObjects = client.getVisibleRooms().filter( - (room) => !!room && !!getDisplayAliasForRoom(room), - ).map((room) => { - return { - room: room, - name: room.name, - displayedAlias: getDisplayAliasForRoom(room), - }; - }); - + let matcherObjects = client.getVisibleRooms().reduce((aliases, room) => { + if (room.getCanonicalAlias()) { + aliases = aliases.concat(matcherObject(room, room.getCanonicalAlias(), room.name)); + } + if (room.getAltAliases().length) { + const altAliases = room.getAltAliases().map(alias => matcherObject(room, alias)); + aliases = aliases.concat(altAliases); + } + return aliases; + }, []); // Filter out any matches where the user will have also autocompleted new rooms matcherObjects = matcherObjects.filter((r) => { const tombstone = r.room.currentState.getStateEvents("m.room.tombstone", ""); @@ -84,16 +92,15 @@ export default class RoomProvider extends AutocompleteProvider { completions = _sortBy(completions, [ (c) => score(matchedString, c.displayedAlias), (c) => c.displayedAlias.length, - ]).map((room) => { - const displayAlias = getDisplayAliasForRoom(room.room) || room.roomId; + completions = completions.map((room) => { return { - completion: displayAlias, - completionId: displayAlias, + completion: room.displayedAlias, + completionId: room.room.roomId, type: "room", suffix: ' ', - href: makeRoomPermalink(displayAlias), + href: makeRoomPermalink(room.displayedAlias), component: ( - } title={room.name} description={displayAlias} /> + } title={room.room.name} description={room.displayedAlias} /> ), range, }; diff --git a/src/editor/autocomplete.js b/src/editor/autocomplete.js index 1ead3aef07..fcde6e0ce4 100644 --- a/src/editor/autocomplete.js +++ b/src/editor/autocomplete.js @@ -102,7 +102,7 @@ export default class AutocompleteWrapperModel { const text = completion.completion; switch (completion.type) { case "room": - return [this._partCreator.roomPill(completionId), this._partCreator.plain(completion.suffix)]; + return [this._partCreator.roomPill(text, completionId), this._partCreator.plain(completion.suffix)]; case "at-room": return [this._partCreator.atRoomPill(completionId), this._partCreator.plain(completion.suffix)]; case "user": diff --git a/src/editor/parts.js b/src/editor/parts.js index 652342405f..083ee38478 100644 --- a/src/editor/parts.js +++ b/src/editor/parts.js @@ -422,14 +422,14 @@ export class PartCreator { return new PillCandidatePart(text, this._autoCompleteCreator); } - roomPill(alias) { + roomPill(alias, roomId) { let room; - if (alias[0] === '#') { + if (roomId || alias[0] !== "#") { + room = this._client.getRoom(roomId || alias); + } else { room = this._client.getRooms().find((r) => { return r.getCanonicalAlias() === alias || r.getAliases().includes(alias); }); - } else { - room = this._client.getRoom(alias); } return new RoomPillPart(alias, room); } From 16815a752b569db1f24d1ff2d92fc2da5f6a6572 Mon Sep 17 00:00:00 2001 From: Bruno Windels Date: Fri, 21 Feb 2020 12:58:41 +0100 Subject: [PATCH 046/124] use alt_aliases instead of aliases to match a pill to a room when deserializing a pill --- src/editor/parts.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/editor/parts.js b/src/editor/parts.js index 083ee38478..0e39e66bad 100644 --- a/src/editor/parts.js +++ b/src/editor/parts.js @@ -428,7 +428,8 @@ export class PartCreator { room = this._client.getRoom(roomId || alias); } else { room = this._client.getRooms().find((r) => { - return r.getCanonicalAlias() === alias || r.getAliases().includes(alias); + return r.getCanonicalAlias() === alias || + r.getAltAliases().includes(alias); }); } return new RoomPillPart(alias, room); From f6313b51e61dd230fd3c895dd5859150f32d719c Mon Sep 17 00:00:00 2001 From: Bruno Windels Date: Fri, 21 Feb 2020 13:00:09 +0100 Subject: [PATCH 047/124] also look in alt_aliases to match a pill to a room --- 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 cd7277cdeb..6810e776fe 100644 --- a/src/components/views/elements/Pill.js +++ b/src/components/views/elements/Pill.js @@ -129,7 +129,7 @@ const Pill = createReactClass({ const localRoom = resourceId[0] === '#' ? MatrixClientPeg.get().getRooms().find((r) => { return r.getCanonicalAlias() === resourceId || - r.getAliases().includes(resourceId); + r.getAltAliases().includes(resourceId); }) : MatrixClientPeg.get().getRoom(resourceId); room = localRoom; if (!localRoom) { From 4219d2fcf6f31c919ad4a37d1f41d1739858b6ac Mon Sep 17 00:00:00 2001 From: Bruno Windels Date: Fri, 21 Feb 2020 13:00:32 +0100 Subject: [PATCH 048/124] style a room pill even if we don't find the room --- 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 6810e776fe..68e4e29337 100644 --- a/src/components/views/elements/Pill.js +++ b/src/components/views/elements/Pill.js @@ -241,8 +241,8 @@ const Pill = createReactClass({ if (this.props.shouldShowPillAvatar) { avatar =
; }; -const EncryptionInfo = ({pending, member, onStartVerification}) => { +const EncryptionInfo = ({waitingForOtherParty, waitingForNetwork, member, onStartVerification}) => { let content; - if (pending) { - const text = _t("Waiting for %(displayName)s to accept…", { - displayName: member.displayName || member.name || member.userId, - }); + if (waitingForOtherParty || waitingForNetwork) { + let text; + if (waitingForOtherParty) { + text = _t("Waiting for %(displayName)s to accept…", { + displayName: member.displayName || member.name || member.userId, + }); + } else { + text = _t("Waiting for network…"); + } content = ; } else { const AccessibleButton = sdk.getComponent('elements.AccessibleButton'); diff --git a/src/components/views/right_panel/EncryptionPanel.js b/src/components/views/right_panel/EncryptionPanel.js index 24d2f9f010..3ba6ca9a8a 100644 --- a/src/components/views/right_panel/EncryptionPanel.js +++ b/src/components/views/right_panel/EncryptionPanel.js @@ -76,8 +76,13 @@ const EncryptionPanel = ({verificationRequest, member, onClose, layout}) => { }, [member.userId]); const requested = request && (phase === PHASE_REQUESTED || phase === PHASE_UNSENT || phase === undefined); + const initiatedByMe = request && request.initiatedByMe; if (!request || requested) { - return ; + return ; } else { return ( Date: Tue, 25 Feb 2020 13:18:27 +0100 Subject: [PATCH 096/124] UI spinner when clicking "they don't match" --- .../views/verification/VerificationShowSas.js | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/src/components/views/verification/VerificationShowSas.js b/src/components/views/verification/VerificationShowSas.js index 4d3c962385..ea81ef3d65 100644 --- a/src/components/views/verification/VerificationShowSas.js +++ b/src/components/views/verification/VerificationShowSas.js @@ -48,6 +48,11 @@ export default class VerificationShowSas extends React.Component { this.props.onDone(); }; + onDontMatchClick = () => { + this.setState({ cancelling: true }); + this.props.onCancel(); + }; + render() { let sasDisplay; let sasCaption; @@ -98,9 +103,14 @@ export default class VerificationShowSas extends React.Component { } let confirm; - if (this.state.pending) { - const {displayName} = this.props; - const text = _t("Waiting for %(displayName)s to verify…", {displayName}); + if (this.state.pending || this.state.cancelling) { + let text; + if (this.state.pending) { + const {displayName} = this.props; + text = _t("Waiting for %(displayName)s to verify…", {displayName}); + } else { + text = _t("Waiting for network…"); + } confirm = ; } else { // FIXME: stop using DialogButtons here once this component is only used in the right panel verification @@ -109,7 +119,7 @@ export default class VerificationShowSas extends React.Component { onPrimaryButtonClick={this.onMatchClick} primaryButtonClass="mx_UserInfo_wideButton" cancelButton={_t("They don't match")} - onCancel={this.props.onCancel} + onCancel={this.onDontMatchClick} cancelButtonClass="mx_UserInfo_wideButton" />; } From bd584ab23651ac29eaeb445b1a36844ffb328f0f Mon Sep 17 00:00:00 2001 From: Bruno Windels Date: Tue, 25 Feb 2020 13:27:19 +0100 Subject: [PATCH 097/124] from verification tile, also don't wait to show right panel --- src/components/views/messages/MKeyVerificationRequest.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/views/messages/MKeyVerificationRequest.js b/src/components/views/messages/MKeyVerificationRequest.js index d02319119e..df1e14a717 100644 --- a/src/components/views/messages/MKeyVerificationRequest.js +++ b/src/components/views/messages/MKeyVerificationRequest.js @@ -62,8 +62,8 @@ export default class MKeyVerificationRequest extends React.Component { const request = this.props.mxEvent.verificationRequest; if (request) { try { - await request.accept(); this._openRequest(); + await request.accept(); } catch (err) { console.error(err.message); } From 682781aa48fb4f2b41ebae6662cd24628c33ddce Mon Sep 17 00:00:00 2001 From: Bruno Windels Date: Tue, 25 Feb 2020 13:27:59 +0100 Subject: [PATCH 098/124] better word smithing --- src/components/views/messages/MKeyVerificationRequest.js | 4 ++-- src/components/views/right_panel/EncryptionInfo.js | 2 +- src/components/views/verification/VerificationShowSas.js | 2 +- src/i18n/strings/en_EN.json | 7 ++++--- 4 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/components/views/messages/MKeyVerificationRequest.js b/src/components/views/messages/MKeyVerificationRequest.js index df1e14a717..f49ae1b6b1 100644 --- a/src/components/views/messages/MKeyVerificationRequest.js +++ b/src/components/views/messages/MKeyVerificationRequest.js @@ -136,9 +136,9 @@ export default class MKeyVerificationRequest extends React.Component { } else if (request.cancelled) { stateLabel = this._cancelledLabel(request.cancellingUserId); } else if (request.accepting) { - stateLabel = _t("accepting …"); + stateLabel = _t("Accepting …"); } else if (request.declining) { - stateLabel = _t("declining …"); + stateLabel = _t("Declining …"); } stateNode = (
{stateLabel}
); } diff --git a/src/components/views/right_panel/EncryptionInfo.js b/src/components/views/right_panel/EncryptionInfo.js index 3638e1058f..bbedc9b303 100644 --- a/src/components/views/right_panel/EncryptionInfo.js +++ b/src/components/views/right_panel/EncryptionInfo.js @@ -37,7 +37,7 @@ const EncryptionInfo = ({waitingForOtherParty, waitingForNetwork, member, onStar displayName: member.displayName || member.name || member.userId, }); } else { - text = _t("Waiting for network…"); + text = _t("Accepting…"); } content = ; } else { diff --git a/src/components/views/verification/VerificationShowSas.js b/src/components/views/verification/VerificationShowSas.js index ea81ef3d65..e640a75129 100644 --- a/src/components/views/verification/VerificationShowSas.js +++ b/src/components/views/verification/VerificationShowSas.js @@ -109,7 +109,7 @@ export default class VerificationShowSas extends React.Component { const {displayName} = this.props; text = _t("Waiting for %(displayName)s to verify…", {displayName}); } else { - text = _t("Waiting for network…"); + text = _t("Cancelling…"); } confirm = ; } else { diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 6192302d18..3b2bca49a3 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -465,6 +465,7 @@ "Verify this user by confirming the following number appears on their screen.": "Verify this user by confirming the following number appears on their screen.", "Unable to find a supported verification method.": "Unable to find a supported verification method.", "Waiting for %(displayName)s to verify…": "Waiting for %(displayName)s to verify…", + "Cancelling…": "Cancelling…", "They match": "They match", "They don't match": "They don't match", "To be secure, do this in person or use a trusted way to communicate.": "To be secure, do this in person or use a trusted way to communicate.", @@ -1165,7 +1166,7 @@ "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 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.": "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.", "Waiting for %(displayName)s to accept…": "Waiting for %(displayName)s to accept…", - "Waiting for network…": "Waiting for network…", + "Accepting…": "Accepting…", "Start Verification": "Start Verification", "Messages in this room are end-to-end encrypted.": "Messages in this room are end-to-end encrypted.", "Your messages are secured and only you and the recipient have the unique keys to unlock them.": "Your messages are secured and only you and the recipient have the unique keys to unlock them.", @@ -1249,8 +1250,8 @@ "You cancelled": "You cancelled", "%(name)s declined": "%(name)s declined", "%(name)s cancelled": "%(name)s cancelled", - "accepting …": "accepting …", - "declining …": "declining …", + "Accepting …": "Accepting …", + "Declining …": "Declining …", "%(name)s wants to verify": "%(name)s wants to verify", "You sent a verification request": "You sent a verification request", "Error decrypting video": "Error decrypting video", From 1d8756b95d7b7230159548911f781e94f55957cf Mon Sep 17 00:00:00 2001 From: Zoe Date: Tue, 25 Feb 2020 15:40:06 +0000 Subject: [PATCH 099/124] text improvements --- src/components/views/dialogs/NewSessionReviewDialog.js | 6 +++--- src/i18n/strings/en_EN.json | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/components/views/dialogs/NewSessionReviewDialog.js b/src/components/views/dialogs/NewSessionReviewDialog.js index 4cc8cb54ed..125811115f 100644 --- a/src/components/views/dialogs/NewSessionReviewDialog.js +++ b/src/components/views/dialogs/NewSessionReviewDialog.js @@ -43,11 +43,11 @@ export default class NewSessionReviewDialog extends React.PureComponent {
  • {_t("Your password")}
  • {_t("Your homeserver")}
  • -
  • {_t("This device, or the other device")}
  • -
  • {_t("The internet connection either device is using")}
  • +
  • {_t("This session, or the other session")}
  • +
  • {_t("The internet connection either session is using")}
- {_t("We recomment you change your password and recovery key in Settings immediately")} + {_t("We recommend you change your password and recovery key in Settings immediately")}
, onFinished: () => this.props.onFinished(false), diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 31e9abd646..f702da6b4c 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -1574,9 +1574,9 @@ "Message edits": "Message edits", "Your account is not secure": "Your account is not secure", "Your password": "Your password", - "This device, or the other device": "This device, or the other device", - "The internet connection either device is using": "The internet connection either device is using", - "We recomment you change your password and recovery key in Settings immediately": "We recomment you change your password and recovery key in Settings immediately", + "This session, or the other session": "This session, or the other session", + "The internet connection either session is using": "The internet connection either session is using", + "We recommend you change your password and recovery key in Settings immediately": "We recommend you change your password and recovery key in Settings immediately", "New session": "New session", "Use this session to verify your new one, granting it access to encrypted messages:": "Use this session to verify your new one, granting it access to encrypted messages:", "If you didn’t sign in to this session, your account may be compromised.": "If you didn’t sign in to this session, your account may be compromised.", From 8299ee4128599d6676b2c5de7f891de80f8f8174 Mon Sep 17 00:00:00 2001 From: Jeff Huang Date: Tue, 25 Feb 2020 02:28:30 +0000 Subject: [PATCH 100/124] Translated using Weblate (Chinese (Traditional)) Currently translated at 100.0% (2130 of 2130 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 0cbbaccb35..d14a77744e 100644 --- a/src/i18n/strings/zh_Hant.json +++ b/src/i18n/strings/zh_Hant.json @@ -2157,5 +2157,9 @@ "You declined": "您拒絕了", "%(name)s declined": "%(name)s 拒絕了", "accepting …": "正在接受……", - "declining …": "正在拒絕……" + "declining …": "正在拒絕……", + "Your homeserver does not support cross-signing.": "您的家伺服器不支援交叉簽章。", + "Homeserver feature support:": "家伺服器功能支援:", + "exists": "存在", + "Verification Requests": "驗證請求" } From fe30b63404b5f43e3e8f632c4ca5690d49c6f7f4 Mon Sep 17 00:00:00 2001 From: Nathan Follens Date: Tue, 25 Feb 2020 14:57:12 +0000 Subject: [PATCH 101/124] Translated using Weblate (Dutch) Currently translated at 88.1% (1877 of 2130 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 | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/src/i18n/strings/nl.json b/src/i18n/strings/nl.json index e57d28d5e5..8636efee1d 100644 --- a/src/i18n/strings/nl.json +++ b/src/i18n/strings/nl.json @@ -247,8 +247,8 @@ "%(senderName)s requested a VoIP conference.": "%(senderName)s heeft een VoIP-vergadering aangevraagd.", "Results from DuckDuckGo": "Resultaten van DuckDuckGo", "Return to login screen": "Terug naar het aanmeldscherm", - "Riot does not have permission to send you notifications - please check your browser settings": "Riot heeft geen toestemming u meldingen te versturen - controleer uw browserinstellingen", - "Riot was not given permission to send notifications - please try again": "Riot kreeg geen toestemming u meldingen te sturen - probeer het opnieuw", + "Riot does not have permission to send you notifications - please check your browser settings": "Riot heeft geen toestemming om u meldingen te versturen - controleer uw browserinstellingen", + "Riot was not given permission to send notifications - please try again": "Riot kreeg geen toestemming om u meldingen te sturen - probeer het opnieuw", "riot-web version:": "riot-web-versie:", "Room %(roomId)s not visible": "Gesprek %(roomId)s is niet zichtbaar", "Room Colour": "Gesprekskleur", @@ -914,7 +914,7 @@ "You need to register to do this. Would you like to register now?": "Hiervoor dient u zich te registreren. Wilt u dat nu doen?", "This homeserver has hit its Monthly Active User limit.": "Deze thuisserver heeft zijn limiet voor maandelijks actieve gebruikers bereikt.", "This homeserver has exceeded one of its resource limits.": "Deze thuisserver heeft één van zijn systeembronlimieten overschreden.", - "Whether or not you're logged in (we don't record your username)": "Of u al dan niet ingelogd bent (we slaan uw gebruiksnaam niet op)", + "Whether or not you're logged in (we don't record your username)": "Of u al dan niet aangemeld bent (we slaan uw gebruikersnaam niet op)", "The file '%(fileName)s' exceeds this homeserver's size limit for uploads": "Het bestand ‘%(fileName)s’ is groter dan de uploadlimiet van de thuisserver", "Unable to load! Check your network connectivity and try again.": "Laden mislukt! Controleer uw netwerktoegang en probeer het nogmaals.", "Failed to invite users to the room:": "Kon de volgende gebruikers hier niet uitnodigen:", @@ -1669,12 +1669,12 @@ "Notification Autocomplete": "Meldingen automatisch voltooien", "Room Autocomplete": "Gesprekken automatisch aanvullen", "User Autocomplete": "Gebruikers automatisch aanvullen", - "Add Email Address": "Emailadres toevoegen", + "Add Email Address": "E-mailadres toevoegen", "Add Phone Number": "Telefoonnummer toevoegen", "Your email address hasn't been verified yet": "Uw emailadres is nog niet gecontroleerd", "Click the link in the email you received to verify and then click continue again.": "Open de link in de ontvangen contrôle-email, en klik dan op \"Doorgaan\".", "%(creator)s created and configured the room.": "Gesprek gestart en ingesteld door %(creator)s.", - "There are unknown sessions in this room: if you proceed without verifying them, it will be possible for someone to eavesdrop on your call.": "Dit gesprek bevat onbekende sessies. Tenzij u die verifieert zou iemand u kunnen afluisteren.", + "There are unknown sessions in this room: if you proceed without verifying them, it will be possible for someone to eavesdrop on your call.": "Dit gesprek bevat onbekende sessies. Tenzij u die verifieert zou iemand u kunnen afluisteren.", "Setting up keys": "Sleutelconfiguratie", "Verify this session": "Deze sessie verifiëren", "Encryption upgrade available": "Er is een bijgewerkte versleuteling beschikbaar", @@ -1682,18 +1682,18 @@ "Help": "Hulp", "Set up encryption": "Versleuteling instellen", "Unverified session": "Ongeverifieerde sessie", - "This action requires accessing the default identity server to validate an email address or phone number, but the server does not have any terms of service.": "Dit vergt toegang tot de verstek-identiteitsserver om emailadres of telefoonummer te valideren, maar die server heeft kent geen gebruiksvoorwaarden.", - "Trust": "Vertrouw", + "This action requires accessing the default identity server to validate an email address or phone number, but the server does not have any terms of service.": "Dit vergt toegang tot de standaardidentiteitsserver om een e-mailadres of telefoonnummer te valideren, maar die server heeft geen gebruiksvoorwaarden.", + "Trust": "Vertrouwen", "Custom (%(level)s)": "Aangepast (%(level)s)", - "Error upgrading room": "Bijwerken gesprek mislukt", - "Double check that your server supports the room version chosen and try again.": "Ga nogmaals na dat de server de gekozen gespreksversie ondersteunt, en probeer dan opnieuw.", + "Error upgrading room": "Bijwerken van gesprek mislukt", + "Double check that your server supports the room version chosen and try again.": "Ga nogmaals na dat de server de gekozen gespreksversie ondersteunt, en probeer het dan opnieuw.", "Verifies a user, session, and pubkey tuple": "Verifieert een combinatie van gebruiker+sessie+publieke sleutel", "Unknown (user, session) pair:": "Onbekende combinatie gebruiker+sessie:", "Session already verified!": "Sessie al geverifieerd!", - "WARNING: Session already verified, but keys do NOT MATCH!": "PAS OP: De sessie is al geverifieerd, maar de sleutels komen NIET OVEREEN!", - "WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and session %(deviceId)s is \"%(fprint)s\" which does not match the provided key \"%(fingerprint)s\". This could mean your communications are being intercepted!": "PAS OP: Sleutelverificatie MISLUKT! De combinatie %userId)s + sessie %(deviceId)s is ondertekend met \"%(fprint)s\" - maar de opgegeven sleutel is \"%(fingerprint)s\". Wellicht worden uw berichten onderschept!", - "The signing key you provided matches the signing key you received from %(userId)s's session %(deviceId)s. Session marked as verified.": "De door u verschafte en de van %(userId)ss sessie %(deviceId)s verkregen sleutels komen overeen. De sessie is daarmee geverifieerd.", - "%(senderName)s added %(addedAddresses)s and %(count)s other addresses to this room|other": "%(senderName) heeft %(addedAddresses)s en %(count)d andere adressen aan dit gesprek toegevoegd", + "WARNING: Session already verified, but keys do NOT MATCH!": "PAS OP: de sessie is al geverifieerd, maar de sleutels komen NIET OVEREEN!", + "WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and session %(deviceId)s is \"%(fprint)s\" which does not match the provided key \"%(fingerprint)s\". This could mean your communications are being intercepted!": "PAS OP: sleutelverificatie MISLUKT! De combinatie %(userId)s + sessie %(deviceId)s is ondertekend met ‘%(fprint)s’ - maar de opgegeven sleutel is ‘%(fingerprint)s’. Wellicht worden uw berichten onderschept!", + "The signing key you provided matches the signing key you received from %(userId)s's session %(deviceId)s. Session marked as verified.": "De door u verschafte en de van %(userId)ss sessie %(deviceId)s verkregen sleutels komen overeen. De sessie is daarmee geverifieerd.", + "%(senderName)s added %(addedAddresses)s and %(count)s other addresses to this room|other": "%(senderName)s heeft %(addedAddresses)s en %(count)s andere adressen aan dit gesprek toegevoegd", "%(senderName)s removed %(removedAddresses)s and %(count)s other addresses from this room|other": "%(senderName)s heeft dit gesprek ontdaan van %(removedAddresses)s en %(count)s andere adressen", "%(senderName)s removed %(countRemoved)s and added %(countAdded)s addresses to this room": "%(senderName)s heeft dit gesprek ontdaan van %(countRemoved)s adressen, en er %(countAdded)s toegevoegd", "%(senderName)s placed a voice call.": "%(senderName)s probeert u te bellen.", @@ -1717,12 +1717,12 @@ "%(senderName)s changed a rule that was banning rooms matching %(oldGlob)s to matching %(newGlob)s for %(reason)s": "%(senderName)s heeft het patroon van een banregel voor gesprekken wegens %(reason)s aangepast van %(oldGlob)s tot %(newGlob)s", "%(senderName)s changed a rule that was banning servers matching %(oldGlob)s to matching %(newGlob)s for %(reason)s": "%(senderName)s heeft het patroon van een banregel voor servers wegens %(reason)s aangepast van %(oldGlob)s tot %(newGlob)s", "%(senderName)s updated a ban rule that was matching %(oldGlob)s to matching %(newGlob)s for %(reason)s": "%(senderName)s heeft het patroon van een banregel wegens %(reason)s aangepast van %(oldGlob)s tot %(newGlob)s", - "The message you are trying to send is too large.": "Uw bericht is te lang om te verzenden.", + "The message you are trying to send is too large.": "Uw bericht is te lang om te versturen.", "a few seconds ago": "enige tellen geleden", "about a minute ago": "een minuut of zo geleden", "%(num)s minutes ago": "%(num)s minuten geleden", "about an hour ago": "een uur of zo geleden", - "%(num)s hours ago": "%(num)s uren geleden", + "%(num)s hours ago": "%(num)s uur geleden", "about a day ago": "een dag of zo geleden", "%(num)s days ago": "%(num)s dagen geleden", "a few seconds from now": "over een paar tellen", @@ -1778,12 +1778,12 @@ "The version of Riot": "De versie van Riot", "Whether you're using Riot on a device where touch is the primary input mechanism": "Of u Riot op een apparaat gebruikt waarop een aanraakscherm de voornaamste invoermethode is", "Whether you're using Riot as an installed Progressive Web App": "Of u Riot gebruikt als een geïnstalleerde Progressive-Web-App", - "Your user agent": "Uw browsers user-agent", + "Your user agent": "Uw gebruikersagent", "The information being sent to us to help make Riot better includes:": "De informatie die naar ons wordt verstuurd om Riot te verbeteren bevat:", - "If you cancel now, you won't complete verifying the other user.": "Als u nu annuleert zul u de andere gebruiker niet verifiëren.", - "If you cancel now, you won't complete verifying your other session.": "Als u nu annuleert zal u uw andere sessie niet verifiëren.", + "If you cancel now, you won't complete verifying the other user.": "Als u nu annuleert zult u de andere gebruiker niet verifiëren.", + "If you cancel now, you won't complete verifying your other session.": "Als u nu annuleert zult u uw andere sessie niet verifiëren.", "If you cancel now, you won't complete your secret storage operation.": "Als u nu annuleert zal de sleutelopslag worden afgebroken.", - "Cancel entering passphrase?": "Wachtwoord invoer annuleren?", + "Cancel entering passphrase?": "Wachtwoordinvoer annuleren?", "Show typing notifications": "Typmeldingen weergeven", "Verify this session by completing one of the following:": "Verifieer deze sessie door een van het volgende te doen:", "Scan this unique code": "Scan deze unieke code", From ffb82e4ed6118ef529066b356ec46fa03b5770de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?K=C3=A9vin=20C?= Date: Tue, 25 Feb 2020 08:14:46 +0000 Subject: [PATCH 102/124] Translated using Weblate (French) Currently translated at 100.0% (2130 of 2130 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 | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/fr.json b/src/i18n/strings/fr.json index 63e8159924..23e574013d 100644 --- a/src/i18n/strings/fr.json +++ b/src/i18n/strings/fr.json @@ -2158,5 +2158,9 @@ "You declined": "Vous avez refusé", "%(name)s declined": "%(name)s a refusé", "accepting …": "nous acceptons…", - "declining …": "nous refusons…" + "declining …": "nous refusons…", + "Your homeserver does not support cross-signing.": "Votre serveur d’accueil ne prend pas en charge la signature croisée.", + "Homeserver feature support:": "Prise en charge de la fonctionnalité par le serveur d’accueil :", + "exists": "existant", + "Verification Requests": "Demandes de vérification" } From d3bc735479e890a9f83a7ce587d8e635bf991a8a Mon Sep 17 00:00:00 2001 From: random Date: Tue, 25 Feb 2020 10:59:03 +0000 Subject: [PATCH 103/124] Translated using Weblate (Italian) Currently translated at 100.0% (2130 of 2130 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 | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/it.json b/src/i18n/strings/it.json index d1e12bdd77..26a95062fd 100644 --- a/src/i18n/strings/it.json +++ b/src/i18n/strings/it.json @@ -2155,5 +2155,9 @@ "You declined": "Hai rifiutato", "%(name)s declined": "%(name)s ha rifiutato", "accepting …": "accettazione …", - "declining …": "rifiuto …" + "declining …": "rifiuto …", + "Your homeserver does not support cross-signing.": "Il tuo homeserver non supporta la firma incrociata.", + "Homeserver feature support:": "Funzioni supportate dall'homeserver:", + "exists": "esiste", + "Verification Requests": "Richieste di verifica" } From 1aefbc771f8716af3109e998a40f1a2450fc06fd Mon Sep 17 00:00:00 2001 From: "Nils J. Haugen" Date: Mon, 24 Feb 2020 19:33:39 +0000 Subject: [PATCH 104/124] Translated using Weblate (Norwegian Nynorsk) Currently translated at 50.6% (1077 of 2130 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 | 71 ++++++++++++++++++++++++++++++++-------- 1 file changed, 58 insertions(+), 13 deletions(-) diff --git a/src/i18n/strings/nn.json b/src/i18n/strings/nn.json index dd95ea89bf..0bdf358533 100644 --- a/src/i18n/strings/nn.json +++ b/src/i18n/strings/nn.json @@ -56,16 +56,16 @@ "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:": "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 the following users to %(groupId)s:": "Fekk ikkje til å invitera følgjande brukarar i %(groupId)s:", + "Failed to invite users to community": "Fekk ikkje til å invitera brukarar til fellesskapet.", "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:": "Fylgjande rom lét seg ikkje leggja til i %(groupId)s:", + "Failed to add the following rooms to %(groupId)s:": "Fekk ikkje til å invitera følgjande rom til %(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 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", + "Default": "Opphavleg innstilling", "Restricted": "Avgrensa", "Moderator": "Moderator", "Admin": "Administrator", @@ -86,10 +86,10 @@ "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", + "Searches DuckDuckGo for results": "Søker på DuckDuckGo for 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", + "/ddg is not a command": "/ddg er ikkje ein kommando", "Changes your display nickname": "Forandrar kallenamnet ditt", "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", @@ -114,14 +114,14 @@ "Analytics": "Statistikk", "Unable to capture screen": "Klarte ikkje ta opp skjermen", "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.", + "To use it, just wait for autocomplete results to load and tab through them.": "For å bruka den, 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", "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", - "Verified key": "Godkjend nykel", + "Verified key": "Godkjend nøkkel", "Displays action": "Visar handlingar", "Reason": "Grunnlag", "%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s sa ja til innbydinga frå %(displayName)s.", @@ -167,10 +167,10 @@ "%(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", "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.", + "Server may be unavailable, overloaded, or you hit a bug.": "Serveren er kanskje utilgjengeleg, overlasta elles så traff du ein bug.", "Send anyway": "Send likevel", "Send": "Send", - "Unnamed Room": "Rom utan Namn", + "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?": "Godkjenningssjekk mislukkast: urett passord?", @@ -290,7 +290,7 @@ "Ignore": "Oversjå", "Mention": "Nemn", "Invite": "Byd inn", - "Enable inline URL previews by default": "Skru URL-førehandsvisingar i tekstfeltet på", + "Enable inline URL previews by default": "Skru URL-førehandsvising i tekstfeltet på", "Share Link to User": "Del Brukarlenkje", "User Options": "Brukarinnstillingar", "Direct chats": "Direktesamtaler", @@ -1014,7 +1014,7 @@ "Replying With Files": "Send svar med filer", "At this time it is not possible to reply with a file. Would you like to upload this file without replying?": "Nett no er det ikkje mogleg å senda svar med ei fil. Vil du lasta opp denne fila utan å senda svaret?", "The file '%(fileName)s' failed to upload.": "Fila '%(fileName)s' vart ikkje lasta opp.", - "The server does not support the room version specified.": "Tenaren støttar ikkje den spesifikke versjonen av rommet.", + "The server does not support the room version specified.": "Serveren støttar ikkje den spesifikke versjonen av rommet.", "Name or Matrix ID": "Namn eller Matrix ID", "Registration Required": "Registrering er obligatorisk", "You need to register to do this. Would you like to register now?": "Du må registrera for å gjera dette. Ynskjer du å registrera no?", @@ -1045,5 +1045,50 @@ "Sends the given message coloured as a rainbow": "Sender den bestemte meldinga farga som ein regnboge", "Displays list of commands with usages and descriptions": "Viser ei liste over kommandoar med bruksområde og skildringar", "%(senderName)s made no change.": "%(senderName)s utførde ingen endring.", - "%(senderDisplayName)s upgraded this room.": "%(senderDisplayName)s oppgraderte dette rommet." + "%(senderDisplayName)s upgraded this room.": "%(senderDisplayName)s oppgraderte dette rommet.", + "The version of Riot": "Gjeldande versjon av Riot", + "Whether you're using Riot on a device where touch is the primary input mechanism": "Om du brukar Riot på ein innretning som er satt opp for touch-skjerm", + "Whether or not you're using the 'breadcrumbs' feature (avatars above the room list)": "Om du nyttar funksjonen 'breadcrumbs' (avatarane over romkatalogen)", + "Whether you're using Riot as an installed Progressive Web App": "Om din Riot er installert som ein webapplikasjon (Progressive Web App)", + "Your user agent": "Din nettlesar (User-Agent)", + "The information being sent to us to help make Riot better includes:": "Informasjon sendt til oss for å forbetre Riot inkluderar:", + "There are unknown sessions in this room: if you proceed without verifying them, it will be possible for someone to eavesdrop on your call.": "Det er ukjende sesjonar i dette rommet: om går vidare utan å verifisere dei, kan andre avlytte samtalen.", + "If you cancel now, you won't complete verifying the other user.": "Om du avbryter no, vil dette stoppe verifikasjonsprosessen for den andre brukaren.", + "If you cancel now, you won't complete verifying your other session.": "Om du avbryter no, vil dette stoppe verifikasjonsprosessen for den andre sesjonen.", + "If you cancel now, you won't complete your secret storage operation.": "Om du avbryter no, vil dette stoppe lagringa av den hemmelege passfrasen.", + "Cancel entering passphrase?": "Avbryte inntasting av passfrase ?", + "Setting up keys": "Setter opp nøklar", + "Verify this session": "Stadfest denne sesjonen", + "Encryption upgrade available": "Kryptering kan oppgraderast", + "Set up encryption": "Sett opp kryptering", + "Unverified session": "Uverifisert sesjon", + "Identity server has no terms of service": "Identitetsserveren manglar bruksvilkår", + "This action requires accessing the default identity server to validate an email address or phone number, but the server does not have any terms of service.": "Denne handlinga krev kommunikasjon mot (standard identitetsserver) for å verifisere e-post eller telefonnummer, men serveren manglar bruksvilkår.", + "Only continue if you trust the owner of the server.": "Gå vidare så lenge du har tillit til eigar av serveren.", + "Trust": "Tillat", + "Custom (%(level)s)": "Tilpassa (%(level)s)", + "Error upgrading room": "Feil ved oppgradering av rom", + "Double check that your server supports the room version chosen and try again.": "Sjekk at server støttar romversjon, og prøv på nytt.", + "Verifies a user, session, and pubkey tuple": "Verifiser brukar, sesjon eller public key objekt (pubkey tuple)", + "Unknown (user, session) pair:": "Ukjent (brukar,sesjon) par:", + "Session already verified!": "Sesjon er tidligare verifisert!", + "WARNING: Session already verified, but keys do NOT MATCH!": "ÅTVARING: Sesjon er tidligare verifisert, men nøklane STEMMER IKKJE!", + "WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and session %(deviceId)s is \"%(fprint)s\" which does not match the provided key \"%(fingerprint)s\". This could mean your communications are being intercepted!": "ÅTVARING: NØKKELVERIFIKASJON FEILA! Signeringsnøkkel for %(userId)s og sesjon %(deviceId)s er \"%(fprint)s\" stemmer ikkje med innsendt nøkkel \"%(fingerprint)s\". Dette kan vere teikn på at kommunikasjonen er avlytta!", + "The signing key you provided matches the signing key you received from %(userId)s's session %(deviceId)s. Session marked as verified.": "Innsendt signeringsnøkkel er lik nøkkelen du mottok frå %(userId)s med sesjon %(deviceId)s. Sesjonen no er verifisert.", + "%(senderDisplayName)s made the room public to whoever knows the link.": "%(senderDisplayName)s satte rommet til offentleg for alle som har linken.", + "%(senderDisplayName)s made the room invite only.": "%(senderDisplayName)s avgrensa romtilgang til inviterte deltakarar.", + "%(senderDisplayName)s changed the join rule to %(rule)s": "%(senderDisplayName)s satte tilgangsregelen til %(rule)s", + "%(senderDisplayName)s has allowed guests to join the room.": "%(senderDisplayName)s har opna for gjestetilgang i rommet.", + "%(senderDisplayName)s has prevented guests from joining the room.": "%(senderDisplayName)s har hindra gjestetilgang i rommet.", + "%(senderDisplayName)s changed guest access to %(rule)s": "%(senderDisplayName)s endra gjestetilgang til %(rule)s", + "%(senderDisplayName)s enabled flair for %(groups)s in this room.": "%(senderDisplayName)s satte etikett for %(groups)s i dette rommet.", + "%(senderDisplayName)s disabled flair for %(groups)s in this room.": "%(senderDisplayName)s deaktiverte etikettar for %(groups)s i dette rommet.", + "%(senderDisplayName)s enabled flair for %(newGroups)s and disabled flair for %(oldGroups)s in this room.": "%(senderDisplayName)s har aktivert etikettar for %(newGroups)s, og deaktivert etikettar for %(oldGroups)s i dette rommet.", + "%(senderName)s added %(addedAddresses)s and %(count)s other addresses to this room|other": "%(senderName)s la til %(addedAddresses)s og %(count)s andre adresser i dette rommet", + "%(senderName)s added %(count)s %(addedAddresses)s as addresses for this room.|other": "%(senderName)s la til %(addedAddresses)s som adresser for dette rommet.", + "%(senderName)s added %(count)s %(addedAddresses)s as addresses for this room.|one": "%(senderName)s la til %(addedAddresses)s som adresse for dette rommet.", + "%(senderName)s removed %(removedAddresses)s and %(count)s other addresses from this room|other": "%(senderName)s fjerna %(removedAddresses)s og %(count)s andre som adresse for dette rommet", + "%(senderName)s removed %(count)s %(removedAddresses)s as addresses for this room.|other": "%(senderName)s fjerna %(removedAddresses)s som adresser for dette rommet.", + "%(senderName)s removed %(count)s %(removedAddresses)s as addresses for this room.|one": "%(senderName)s fjerna %(removedAddresses)s som adresse for dette rommet.", + "%(senderName)s removed %(countRemoved)s and added %(countAdded)s addresses to this room": "%(senderName)s fjerna %(countRemoved)s og la til %(countAdded)s adresser for dette rommet" } From 75f73dad3e2494a1eb6100025e371365a8fdf321 Mon Sep 17 00:00:00 2001 From: catborise Date: Mon, 24 Feb 2020 19:21:34 +0000 Subject: [PATCH 105/124] Translated using Weblate (Turkish) Currently translated at 72.7% (1549 of 2130 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 | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/tr.json b/src/i18n/strings/tr.json index 13840a4601..b8926b85cb 100644 --- a/src/i18n/strings/tr.json +++ b/src/i18n/strings/tr.json @@ -1550,5 +1550,19 @@ "A widget would like to verify your identity": "Bir görsel tasarım kimliğinizi teyit etmek istiyor", "Remember my selection for this widget": "Bu görsel bileşen işin seçimimi hatırla", "Deny": "Reddet", - "Recovery key mismatch": "Kurtarma anahtarı uyumsuz" + "Recovery key mismatch": "Kurtarma anahtarı uyumsuz", + "Backup restored": "Yedek geri dönüldü", + "Enter recovery key": "Kurtarma anahtarı gir", + "Help": "Yardım", + "Take picture": "Resim çek", + "Premium": "Premium", + "Sign in to your Matrix account on %(serverName)s": "%(serverName)s adresindeki Matrix hesabınıza oturum açın", + "Sign in to your Matrix account on ": " adresindeki Matrix hesabına oturum açın", + "Add to summary": "Özete ekle", + "Add users to the community summary": "Topluluk özetine kullanıcıları ekle", + "Who would you like to add to this summary?": "Bu özete kimi eklemek istersiniz?", + "Failed to update community": "Toluluğu güncelleme başarısız", + "Downloading mesages for %(currentRoom)s.": "%(currentRoom)s için mesajlar indiriliyor.", + "Indexed rooms:": "İndekslenmiş odalar:", + "%(crawlingRooms)s out of %(totalRooms)s": "%(totalRooms)s odadan %(crawlingRooms)s tanesi" } From b7c7b6c33a798c6512dab996f32facd99e4afd65 Mon Sep 17 00:00:00 2001 From: Nathan Follens Date: Tue, 25 Feb 2020 14:36:30 +0000 Subject: [PATCH 106/124] Translated using Weblate (West Flemish) Currently translated at 72.7% (1548 of 2130 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/vls/ --- src/i18n/strings/vls.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/strings/vls.json b/src/i18n/strings/vls.json index b705afc4fe..b08bc31e5d 100644 --- a/src/i18n/strings/vls.json +++ b/src/i18n/strings/vls.json @@ -2,7 +2,7 @@ "This email address is already in use": "Dat e-mailadresse hier es al in gebruuk", "This phone number is already in use": "Dezen telefongnumero es al in gebruuk", "Failed to verify email address: make sure you clicked the link in the email": "Kostege ’t e-mailadresse nie verifieern: zorgt dervoor da je de koppelienge in den e-mail èt angeklikt", - "The platform you're on": "’t Platform wuk da je gebruukt", + "The platform you're on": "’t Platform da je gebruukt", "The version of Riot.im": "De versie van Riot.im", "Whether or not you're logged in (we don't record your username)": "Of da je al dan nie angemeld zyt (we sloan je gebruukersnoame nie ip)", "Your language of choice": "De deur joun gekoozn toale", From c848489cc143c9dcc7e0a96fb34bb3f45539121b Mon Sep 17 00:00:00 2001 From: Nathan Follens Date: Tue, 25 Feb 2020 16:07:56 +0000 Subject: [PATCH 107/124] Translated using Weblate (Dutch) Currently translated at 87.9% (1877 of 2135 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 | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/i18n/strings/nl.json b/src/i18n/strings/nl.json index 8636efee1d..f0bee97f03 100644 --- a/src/i18n/strings/nl.json +++ b/src/i18n/strings/nl.json @@ -963,7 +963,7 @@ "Avoid years that are associated with you": "Vermijd jaren die op uzelf betrekking hebben", "Avoid dates and years that are associated with you": "Vermijd data en jaren die op uzelf betrekking hebben", "Capitalization doesn't help very much": "Hoofdlettergebruik helpt niet echt", - "All-uppercase is almost as easy to guess as all-lowercase": "Enkel hoofdletters is nauwelijks moeilijker te raden als enkel kleine letters", + "All-uppercase is almost as easy to guess as all-lowercase": "Enkel hoofdletters is nauwelijks moeilijker te raden dan enkel kleine letters", "Reversed words aren't much harder to guess": "Omgedraaide woorden zijn bijna even gemakkelijk te raden", "Predictable substitutions like '@' instead of 'a' don't help very much": "Voorspelbare vervangingen (zoals '@' i.p.v. 'a') zijn niet erg zinvol", "Add another word or two. Uncommon words are better.": "Voeg nog een paar (liefst weinig gebruikte) woorden toe.", @@ -1736,10 +1736,10 @@ "Try out new ways to ignore people (experimental)": "Nieuwe manieren om mensen te negeren uitproberen (nog in ontwikkeling)", "Show a presence dot next to DMs in the room list": "Toon aanwezigheid bij tweegesprekken in de gesprekkenlijst", "Enable cross-signing to verify per-user instead of per-session (in development)": "Gebruik gebruikersverificatie in plaats van sessieverificatie (nog in ontwikkeling)", - "Enable local event indexing and E2EE search (requires restart)": "Indexeer lokaal gebeurtenissen en maak zo E2EE-zoeken mogelijk (vergt een herstart)", + "Enable local event indexing and E2EE search (requires restart)": "Indexeer gebeurtenissen lokaal en maak zo E2EE-zoeken mogelijk (vergt een herstart)", "Show info about bridges in room settings": "Toon bruginformatie in gespreksinstellingen", "Show padlocks on invite only rooms": "Toon hangsloten op besloten gesprekken", - "Match system theme": "Pas aan aan systeemthema", + "Match system theme": "Aanpassen aan systeemthema", "Never send encrypted messages to unverified sessions from this session": "Zend vanaf deze sessie nooit versleutelde berichten naar ongeverifieerde sessies", "Never send encrypted messages to unverified sessions in this room from this session": "Zend vanaf deze sessie nooit versleutelde berichten naar ongeverifieerde sessies in dit gesprek", "Enable message search in encrypted rooms": "Sta zoeken in versleutelde gesprekken toe", @@ -1747,12 +1747,12 @@ "How fast should messages be downloaded.": "Ophaalfrequentie van berichten.", "My Ban List": "Mijn banlijst", "This is your list of users/servers you have blocked - don't leave the room!": "Dit is de lijst van door u geblokkeerde servers/gebruikers. Verlaat dit gesprek niet!", - "Confirm the emoji below are displayed on both devices, in the same order:": "Bevestig dat beide apparaten dezelfde emojis in dezelfde volgorde tonen:", + "Confirm the emoji below are displayed on both devices, in the same order:": "Bevestig dat beide apparaten dezelfde emoji’s in dezelfde volgorde tonen:", "Verify this device by confirming the following number appears on its screen.": "Verifieer dit apparaat door te bevestigen dat het scherm het volgende getal toont.", "Waiting for %(displayName)s to verify…": "Wachten tot %(displayName)s geverifieerd heeft…", "They match": "Ze komen overeen", "They don't match": "Ze komen niet overeen", - "To be secure, do this in person or use a trusted way to communicate.": "Doe dit voor de zekerheid in persona, of via een betrouwbaar communicatiemedium.", + "To be secure, do this in person or use a trusted way to communicate.": "Doe dit voor de zekerheid onder vier ogen, of via een betrouwbaar communicatiemedium.", "Lock": "Hangslot", "Verify yourself & others to keep your chats safe": "Verifieer jezelf en anderen om je gesprekken veilig te houden", "Other users may not trust it": "Mogelijk wantrouwen anderen het", @@ -1789,7 +1789,7 @@ "Scan this unique code": "Scan deze unieke code", "or": "of", "Compare unique emoji": "Vergelijk unieke emoji", - "Compare a unique set of emoji if you don't have a camera on either device": "Vergelijk een unieke lijst emoji als beide apparaten geen camera bevatten", + "Compare a unique set of emoji if you don't have a camera on either device": "Vergelijk een unieke lijst met emoji als geen van beide apparaten een camera heeft", "Start": "Start", "Securely cache encrypted messages locally for them to appear in search results.": "Sla versleutelde berichten beveiligd op om ze weer te geven in zoekresultaten.", "Enable": "Inschakelen", From 5d1d50645d36a19736d68d19ea05412b226a9fb1 Mon Sep 17 00:00:00 2001 From: Silke Date: Tue, 25 Feb 2020 16:11:37 +0000 Subject: [PATCH 108/124] Translated using Weblate (Dutch) Currently translated at 87.9% (1877 of 2135 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 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/strings/nl.json b/src/i18n/strings/nl.json index f0bee97f03..7c31dc1e0c 100644 --- a/src/i18n/strings/nl.json +++ b/src/i18n/strings/nl.json @@ -1753,7 +1753,7 @@ "They match": "Ze komen overeen", "They don't match": "Ze komen niet overeen", "To be secure, do this in person or use a trusted way to communicate.": "Doe dit voor de zekerheid onder vier ogen, of via een betrouwbaar communicatiemedium.", - "Lock": "Hangslot", + "Lock": "Slot", "Verify yourself & others to keep your chats safe": "Verifieer jezelf en anderen om je gesprekken veilig te houden", "Other users may not trust it": "Mogelijk wantrouwen anderen het", "Upgrade": "Bijwerken", From 7091e7a4af4f6e48617c860c589d64cca4d55a53 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Tue, 25 Feb 2020 09:19:37 -0700 Subject: [PATCH 109/124] Use the right keyword --- src/components/views/dialogs/InviteDialog.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/views/dialogs/InviteDialog.js b/src/components/views/dialogs/InviteDialog.js index d229a4eedd..20c8fb5b14 100644 --- a/src/components/views/dialogs/InviteDialog.js +++ b/src/components/views/dialogs/InviteDialog.js @@ -335,7 +335,7 @@ export default class InviteDialog extends React.PureComponent { _buildRecents(excludedTargetIds: Set): {userId: string, user: RoomMember, lastActive: number} { const rooms = DMRoomMap.shared().getUniqueRoomsWithIndividuals(); // map of userId => js-sdk Room - // Also pull in all the rooms tagged as m.direct so we don't miss anything. Sometimes the + // Also pull in all the rooms tagged as TAG_DM so we don't miss anything. Sometimes the // room list doesn't tag the room for the DMRoomMap, but does for the room list. const taggedRooms = RoomListStore.getRoomLists(); const dmTaggedRooms = taggedRooms[TAG_DM]; From 5ef02fabf9a2b4b340183f53fc55c53490aa9417 Mon Sep 17 00:00:00 2001 From: Nathan Follens Date: Tue, 25 Feb 2020 16:11:42 +0000 Subject: [PATCH 110/124] Translated using Weblate (Dutch) Currently translated at 88.1% (1880 of 2135 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 | 179 ++++++++++++++++++++------------------- 1 file changed, 91 insertions(+), 88 deletions(-) diff --git a/src/i18n/strings/nl.json b/src/i18n/strings/nl.json index 7c31dc1e0c..fce04510d4 100644 --- a/src/i18n/strings/nl.json +++ b/src/i18n/strings/nl.json @@ -142,7 +142,7 @@ "/ddg is not a command": "/ddg is geen opdracht", "Deactivate Account": "Account deactiveren", "Decline": "Weigeren", - "Decrypt %(text)s": "%(text)s ontcijferen", + "Decrypt %(text)s": "%(text)s ontsleutelen", "Decryption error": "Ontsleutelingsfout", "Device ID": "Apparaats-ID", "device id: ": "apparaats-ID: ", @@ -165,7 +165,7 @@ "%(senderName)s ended the call.": "%(senderName)s heeft opgehangen.", "End-to-end encryption information": "Info over eind-tot-eind-versleuteling", "Enter passphrase": "Voer wachtwoord in", - "Error decrypting attachment": "Fout bij het ontcijferen van de bijlage", + "Error decrypting attachment": "Fout bij het ontsleutelen van de bijlage", "Error: Problem communicating with the given homeserver.": "Fout: probleem bij communicatie met de gegeven thuisserver.", "Event information": "Gebeurtenisinformatie", "Existing Call": "Bestaande oproep", @@ -321,7 +321,7 @@ "%(userName)s (power %(powerLevelNumber)s)": "%(userName)s (macht %(powerLevelNumber)s)", "Username invalid: %(errMessage)s": "Ongeldige gebruikersnaam: %(errMessage)s", "Users": "Gebruikers", - "Verification Pending": "Contrôle in afwachting", + "Verification Pending": "Verificatie in afwachting", "Verification": "Verificatie", "verified": "geverifieerd", "Verified key": "Geverifieerde sleutel", @@ -374,10 +374,10 @@ "Import room keys": "Gesprekssleutels inlezen", "File to import": "In te lezen bestand", "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.": "Hiermee kunt u de sleutels van uw ontvangen berichten in versleutelde gesprekken naar een lokaal bestand wegschrijven. Als u dat bestand dan in een andere Matrix-cliënt inleest kan die ook die berichten ontcijferen.", - "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.": "Wie het weggeschreven bestand kan lezen, kan daarmee ook alle versleutelde berichten die u kunt zien ontcijferen - ga er dus zorgvuldig mee om! Daartoe kunt u hieronder een wachtwoord invoeren, dat dan gebruikt zal worden om het bestand te versleutelen. Het is dan enkel mogelijk de gegevens in te lezen met hetzelfde wachtwoord.", - "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.": "Hiermee kunt u vanuit een andere Matrix-cliënt weggeschreven ontcijferingssleutels inlezen, zodat u alle berichten die de andere cliënt kon ontcijferen ook hier kunt lezen.", - "The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.": "Het weggeschreven bestand is beveiligd met een wachtwoord. Voer dat wachtwoord hier in om het bestand te ontcijferen.", - "You must join the room to see its files": "Slechts na toetreding tot het gesprek toetreden zult u de bestanden kunnen zien", + "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.": "Wie het weggeschreven bestand kan lezen, kan daarmee ook alle versleutelde berichten die u kunt zien ontcijferen - ga er dus zorgvuldig mee om! Daartoe kunt u hieronder een wachtwoord invoeren, dat dan gebruikt zal worden om het bestand te versleutelen. Het is dan enkel mogelijk de gegevens in te lezen met hetzelfde wachtwoord.", + "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.": "Hiermee kunt u vanuit een andere Matrix-cliënt weggeschreven versleutelingssleutels inlezen, zodat u alle berichten die de andere cliënt kon ontcijferen ook hier kunt lezen.", + "The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.": "Het weggeschreven bestand is beveiligd met een wachtwoord. Voer dat wachtwoord hier in om het bestand te ontsleutelen.", + "You must join the room to see its files": "Slechts na toetreding tot het gesprek zult u de bestanden kunnen zien", "Reject all %(invitedRooms)s invites": "Alle %(invitedRooms)s-uitnodigingen weigeren", "Failed to invite": "Uitnodigen is mislukt", "Failed to invite the following users to the %(roomName)s room:": "Kon de volgende gebruikers niet uitnodigen voor gesprek %(roomName)s:", @@ -400,9 +400,9 @@ "Token incorrect": "Bewijs onjuist", "Please enter the code it contains:": "Voer de code in die het bevat:", "If you don't specify an email address, you won't be able to reset your password. Are you sure?": "Als u geen e-mailadres opgeeft, zult u uw wachtwoord niet opnieuw kunnen instellen. Weet u het zeker?", - "Error decrypting audio": "Fout bij het ontcijferen van de audio", - "Error decrypting image": "Fout bij het ontcijferen van de afbeelding", - "Error decrypting video": "Fout bij het ontcijferen van de video", + "Error decrypting audio": "Fout bij het ontsleutelen van de audio", + "Error decrypting image": "Fout bij het ontsleutelen van de afbeelding", + "Error decrypting video": "Fout bij het ontsleutelen van de video", "Add an Integration": "Voeg een integratie toe", "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?": "U wordt zo dadelijk naar een derdepartijwebsite gebracht zodat u de account kunt legitimeren voor gebruik met %(integrationsUrl)s. Wilt u doorgaan?", "Removed or unknown message type": "Verwijderd of onbekend berichttype", @@ -586,8 +586,8 @@ "%(oneUser)sleft and rejoined %(count)s times|one": "%(oneUser)s is weggegaan en weer toegetreden", "%(severalUsers)srejected their invitations %(count)s times|other": "%(severalUsers)s hebben hun uitnodigingen %(count)s keer afgewezen", "%(severalUsers)srejected their invitations %(count)s times|one": "%(severalUsers)s hebben hun uitnodigingen afgewezen", - "%(oneUser)srejected their invitation %(count)s times|other": "%(oneUser)s heeft de uitnodiging %(count)s maal afgewezen", - "%(oneUser)srejected their invitation %(count)s times|one": "%(oneUser)s heeft de uitnodiging afgeslagen", + "%(oneUser)srejected their invitation %(count)s times|other": "%(oneUser)s heeft de uitnodiging %(count)s maal geweigerd", + "%(oneUser)srejected their invitation %(count)s times|one": "%(oneUser)s heeft de uitnodiging geweigerd", "%(severalUsers)shad their invitations withdrawn %(count)s times|other": "De uitnodigingen van %(severalUsers)s zijn %(count)s keer ingetrokken", "%(severalUsers)shad their invitations withdrawn %(count)s times|one": "De uitnodigingen van %(severalUsers)s zijn ingetrokken", "%(oneUser)shad their invitation withdrawn %(count)s times|other": "De uitnodiging van %(oneUser)s is %(count)s keer ingetrokken", @@ -664,7 +664,7 @@ "Community %(groupId)s not found": "Gemeenschap %(groupId)s is niet gevonden", "Failed to load %(groupId)s": "Laden van %(groupId)s is mislukt", "Old cryptography data detected": "Oude cryptografiegegevens gedetecteerd", - "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.": "Er zijn gegevens van een oudere versie van Riot gevonden, die problemen veroorzaakt hebben met de eind-tot-eind-versleuteling in de oude versie. Onlangs vanuit de oude versie verzonden eind-tot-eind-versleutelde berichten zijn mogelijk onontcijferbaar in deze versie. Ook kunnen berichten die met deze versie gewisseld zijn falen. Mocht u problemen ervaren, meld u dan opnieuw aan. Schrijf uw de sleutels weg en lees ze weer in om uw berichtgeschiedenis te behouden.", + "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.": "Er zijn gegevens van een oudere versie van Riot gevonden, die problemen veroorzaakt hebben met de eind-tot-eind-versleuteling in de oude versie. Onlangs vanuit de oude versie verzonden eind-tot-eind-versleutelde berichten zijn mogelijk onontsleutelbaar in deze versie. Ook kunnen berichten die met deze versie uitgewisseld zijn falen. Mocht u problemen ervaren, meld u dan opnieuw aan. Schrijf uw sleutels weg en lees ze weer in om uw berichtgeschiedenis te behouden.", "Your Communities": "Uw gemeenschappen", "Error whilst fetching joined communities": "Er is een fout opgetreden bij het ophalen van de gemeenschappen waarvan u lid bent", "Create a new community": "Maak een nieuwe gemeenschap aan", @@ -718,14 +718,14 @@ "Who can join this community?": "Wie kan er tot deze gemeenschap toetreden?", "Everyone": "Iedereen", "Leave this community": "Deze gemeenschap verlaten", - "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.": "Voor het oplossen van in GitHub gemelde problemen helpen foutopsporingslogboeken ons enorm. Deze bevatten wel gebruiksgegevens (waaronder uw gebruikersnaam, de ID’s of bijnamen van de gesprekken en groepen die u heeft bezocht, en de namen van andere gebruikers), maar geen berichten.", + "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.": "Voor het oplossen van in GitHub gemelde problemen helpen foutopsporingslogboeken ons enorm. Deze bevatten wel gebruiksgegevens (waaronder uw gebruikersnaam, de ID’s of bijnamen van de gesprekken en groepen die u heeft bezocht, en de namen van andere gebruikers), maar geen berichten.", "Submit debug logs": "Foutopsporingslogboeken indienen", "Opens the Developer Tools dialog": "Opent het dialoogvenster met ontwikkelaarsgereedschap", "Fetching third party location failed": "Het ophalen van de locatie van de derde partij is mislukt", "A new version of Riot is available.": "Er is een nieuwe versie van Riot beschikbaar.", "I understand the risks and wish to continue": "Ik begrijp de risico’s en wil graag verdergaan", "Send Account Data": "Accountgegevens versturen", - "All notifications are currently disabled for all targets.": "Alle meldingen voor alle bestemmingen staan momenteel uit.", + "All notifications are currently disabled for all targets.": "Alle meldingen voor alle bestemmingen zijn momenteel uitgeschakeld.", "Uploading report": "Rapport wordt geüpload", "Sunday": "Zondag", "Notification targets": "Meldingsbestemmingen", @@ -1154,7 +1154,7 @@ "Roles & Permissions": "Rollen & toestemmingen", "Select the roles required to change various parts of the room": "Selecteer de rollen vereist om verschillende delen van het gesprek te wijzigen", "Enable encryption?": "Versleuteling inschakelen?", - "Once enabled, encryption for a room cannot be disabled. Messages sent in an encrypted room cannot be seen by the server, only by the participants of the room. Enabling encryption may prevent many bots and bridges from working correctly. Learn more about encryption.": "Gespreksversleuteling is onomkeerbaar. Berichten in versleutelde gesprekken zijn niet leesbaar voor de server; enkel voor de gespreksdeelnemers. Veel robots en overbruggingen werken niet correct in versleutelde gesprekken. Lees meer over versleuteling.", + "Once enabled, encryption for a room cannot be disabled. Messages sent in an encrypted room cannot be seen by the server, only by the participants of the room. Enabling encryption may prevent many bots and bridges from working correctly. Learn more about encryption.": "Gespreksversleuteling is onomkeerbaar. Berichten in versleutelde gesprekken zijn niet leesbaar voor de server; enkel voor de gespreksdeelnemers. Veel robots en overbruggingen werken niet correct in versleutelde gesprekken. Lees meer over versleuteling.", "To link to this room, please add an alias.": "Voeg een bijnaam toe om naar dit gesprek te verwijzen.", "Changes to who can read history will only apply to future messages in this room. The visibility of existing history will be unchanged.": "Wijzigingen aan wie de geschiedenis kan lezen gelden enkel voor toekomstige berichten in dit gesprek. De zichtbaarheid van de bestaande geschiedenis blijft ongewijzigd.", "Encryption": "Versleuteling", @@ -1196,7 +1196,7 @@ "Invite anyway": "Alsnog uitnodigen", "Before submitting logs, you must create a GitHub issue to describe your problem.": "Vooraleer u logboeken indient, dient u uw probleem te melden op GitHub.", "Unable to load commit detail: %(msg)s": "Kan commitdetail niet laden: %(msg)s", - "To avoid losing your chat history, you must export your room keys before logging out. You will need to go back to the newer version of Riot to do this": "Om uw gespreksgeschiedenis niet te verliezen, moet u vóór het afmelden uw gesprekssleutels wegschrijven. Dat moet vanuit de nieuwere versie van Riot", + "To avoid losing your chat history, you must export your room keys before logging out. You will need to go back to the newer version of Riot to do this": "Om uw gespreksgeschiedenis niet te verliezen, moet u vóór het afmelden uw gesprekssleutels wegschrijven. Dat moet vanuit de nieuwere versie van Riot", "You've previously used a newer version of Riot on %(host)s. To use this version again with end to end encryption, you will need to sign out and back in again. ": "U heeft eerder een nieuwere versie van Riot op %(host)s gebruikt. Om deze versie opnieuw met eind-tot-eind-versleuteling te gebruiken, zult u zich moeten afmelden en opnieuw aanmelden. ", "Incompatible Database": "Incompatibele database", "Continue With Encryption Disabled": "Verdergaan met versleuteling uitgeschakeld", @@ -1221,7 +1221,7 @@ "You'll lose access to your encrypted messages": "U zult de toegang tot uw versleutelde berichten verliezen", "Are you sure you want to sign out?": "Weet u zeker dat u zich wilt afmelden?", "If you run into any bugs or have feedback you'd like to share, please let us know on GitHub.": "Als u fouten zou tegenkomen of voorstellen zou hebben, laat het ons dan weten op GitHub.", - "To help avoid duplicate issues, please view existing issues first (and add a +1) or create a new issue if you can't find it.": "Voorkom dubbele meldingen: doorzoek eerst de bestaande meldingen (en voeg desgewenst een +1 toe). Maak enkel een nieuwe melding aan indien u niets kunt vinden.", + "To help avoid duplicate issues, please view existing issues first (and add a +1) or create a new issue if you can't find it.": "Voorkom dubbele meldingen: doorzoek eerst de bestaande meldingen (en voeg desgewenst een +1 toe). Maak enkel een nieuwe melding aan indien u niets kunt vinden.", "Report bugs & give feedback": "Fouten melden & feedback geven", "Go back": "Terug", "Room Settings - %(roomName)s": "Gespreksinstellingen - %(roomName)s", @@ -1232,18 +1232,18 @@ "Create a new room with the same name, description and avatar": "Een nieuw gesprek aanmaken met dezelfde naam, beschrijving en avatar", "Update any local room aliases to point to the new room": "Alle lokale gespreksbijnamen naar het nieuwe gesprek laten verwijzen", "Stop users from speaking in the old version of the room, and post a message advising users to move to the new room": "Gebruikers verhinderen aan de oude versie van het gesprek bij te dragen, en daar een bericht plaatsen dat de gebruikers verwijst naar het nieuwe gesprek", - "Put a link back to the old room at the start of the new room so people can see old messages": "Bovenaan het nieuwe gesprek naar het oude te verwijzen, om oude berichten te lezen", + "Put a link back to the old room at the start of the new room so people can see old messages": "Bovenaan het nieuwe gesprek naar het oude verwijzen, om oude berichten te lezen", "A username can only contain lower case letters, numbers and '=_-./'": "Een gebruikersnaam mag enkel kleine letters, cijfers en ‘=_-./’ bevatten", "Checking...": "Bezig met controleren…", "Unable to load backup status": "Kan back-upstatus niet laden", "Recovery Key Mismatch": "Herstelsleutel komt niet overeen", - "Backup could not be decrypted with this key: please verify that you entered the correct recovery key.": "De back-up kon met deze sleutel niet ontcijferd worden: controleer of u de juiste herstelsleutel heeft ingevoerd.", + "Backup could not be decrypted with this key: please verify that you entered the correct recovery key.": "De back-up kon met deze sleutel niet ontsleuteld worden: controleer of u de juiste herstelsleutel heeft ingevoerd.", "Incorrect Recovery Passphrase": "Onjuist herstelwachtwoord", - "Backup could not be decrypted with this passphrase: please verify that you entered the correct recovery passphrase.": "De back-up kon met dit wachtwoord niet ontcijferd worden: controleer of u het juiste herstelwachtwoord heeft ingevoerd.", + "Backup could not be decrypted with this passphrase: please verify that you entered the correct recovery passphrase.": "De back-up kon met dit wachtwoord niet ontsleuteld worden: controleer of u het juiste herstelwachtwoord heeft ingevoerd.", "Unable to restore backup": "Kan back-up niet terugzetten", "No backup found!": "Geen back-up gevonden!", "Backup Restored": "Back-up hersteld", - "Failed to decrypt %(failedCount)s sessions!": "Ontcijferen van %(failedCount)s sessies is mislukt!", + "Failed to decrypt %(failedCount)s sessions!": "Ontsleutelen van %(failedCount)s sessies is mislukt!", "Restored %(sessionCount)s session keys": "%(sessionCount)s sessiesleutels hersteld", "Enter Recovery Passphrase": "Voer het herstelwachtwoord in", "Warning: you should only set up key backup from a trusted computer.": "Let op: stel sleutelback-up enkel in op een vertrouwde computer.", @@ -1386,7 +1386,7 @@ "Sign out and remove encryption keys?": "Afmelden en versleutelingssleutels verwijderen?", "To help us prevent this in future, please send us logs.": "Gelieve ons logboeken te sturen om dit in de toekomst te helpen voorkomen.", "Missing session data": "Sessiegegevens ontbreken", - "Some session data, including encrypted message keys, is missing. Sign out and sign in to fix this, restoring keys from backup.": "Sommige sessiegegevens, waaronder sleutels voor versleutelde berichten, ontbreken. Herstel de sleutels uit uw back-up door u af en weer aan te melden.", + "Some session data, including encrypted message keys, is missing. Sign out and sign in to fix this, restoring keys from backup.": "Sommige sessiegegevens, waaronder sleutels voor versleutelde berichten, ontbreken. Herstel de sleutels uit uw back-up door u af- en weer aan te melden.", "Your browser likely removed this data when running low on disk space.": "Uw browser heeft deze gegevens wellicht verwijderd toen de beschikbare opslagruimte vol was.", "Upload files (%(current)s of %(total)s)": "Bestanden versturen (%(current)s van %(total)s)", "Upload files": "Bestanden versturen", @@ -1395,9 +1395,9 @@ "These files are too large to upload. The file size limit is %(limit)s.": "Deze bestanden zijn te groot om te versturen. De bestandsgroottelimiet is %(limit)s.", "Some files are too large to be uploaded. The file size limit is %(limit)s.": "Sommige bestanden zijn te groot om te versturen. De bestandsgroottelimiet is %(limit)s.", "Upload %(count)s other files|other": "%(count)s overige bestanden versturen", - "Upload %(count)s other files|one": "%(count)s overig bestanden versturen", + "Upload %(count)s other files|one": "%(count)s overig bestand versturen", "Cancel All": "Alles annuleren", - "Upload Error": "Fout bij versturen bestand", + "Upload Error": "Fout bij versturen van bestand", "A conference call could not be started because the integrations server is not available": "Daar de integratieserver onbereikbaar is kon het groepsaudiogesprek niet gestart worden", "The server does not support the room version specified.": "De server ondersteunt deze versie van gesprekken niet.", "Name or Matrix ID": "Naam of Matrix-ID", @@ -1582,7 +1582,7 @@ "You are still sharing your personal data on the identity server .": "U deelt nog steeds uw persoonlijke gegevens op de identiteitsserver .", "We recommend that you remove your email addresses and phone numbers from the identity server before disconnecting.": "We raden u aan uw e-mailadressen en telefoonnummers van de identiteitsserver te verwijderen vooraleer u de verbinding verbreekt.", "Disconnect anyway": "Verbinding toch verbreken", - "If you don't want to use to discover and be discoverable by existing contacts you know, enter another identity server below.": "Mocht u om bekenden te zoeken en vindbaar te zijn niet willen gebruiken, voer dan hieronder een andere identiteitsserver in.", + "If you don't want to use to discover and be discoverable by existing contacts you know, enter another identity server below.": "Mocht u om bekenden te zoeken en zelf vindbaar te zijn niet willen gebruiken, voer dan hieronder een andere identiteitsserver in.", "Using an identity server is optional. If you choose not to use an identity server, you won't be discoverable by other users and you won't be able to invite others by email or phone.": "Een identiteitsserver is niet verplicht, maar zonder identiteitsserver zult u geen bekenden op e-mailadres of telefoonnummer kunnen zoeken, noch door hen vindbaar zijn.", "Do not use an identity server": "Geen identiteitsserver gebruiken", "Agree to the identity server (%(serverName)s) Terms of Service to allow yourself to be discoverable by email address or phone number.": "Aanvaard de gebruiksvoorwaarden van de identiteitsserver (%(serverName)s) om vindbaar te zijn op e-mailadres of telefoonnummer.", @@ -1638,7 +1638,7 @@ "Explore rooms": "Gesprekken ontdekken", "Show previews/thumbnails for images": "Toon voorbeelden voor afbeeldingen", "Clear cache and reload": "Cache wissen en herladen", - "You are about to remove %(count)s messages by %(user)s. This cannot be undone. Do you wish to continue?|one": "U staat op het punt 1 bericht door %(user)s te verwijderen. Dit kan niet ongedaan worden gemaakt. Wilt u doorgaan?", + "You are about to remove %(count)s messages by %(user)s. This cannot be undone. Do you wish to continue?|one": "U staat op het punt 1 bericht door %(user)s te verwijderen. Dit kan niet ongedaan gemaakt worden. Wilt u doorgaan?", "Remove %(count)s messages|one": "1 bericht verwijderen", "%(count)s unread messages including mentions.|other": "%(count)s ongelezen berichten, inclusief vermeldingen.", "%(count)s unread messages.|other": "%(count)s ongelezen berichten.", @@ -1671,14 +1671,14 @@ "User Autocomplete": "Gebruikers automatisch aanvullen", "Add Email Address": "E-mailadres toevoegen", "Add Phone Number": "Telefoonnummer toevoegen", - "Your email address hasn't been verified yet": "Uw emailadres is nog niet gecontroleerd", - "Click the link in the email you received to verify and then click continue again.": "Open de link in de ontvangen contrôle-email, en klik dan op \"Doorgaan\".", + "Your email address hasn't been verified yet": "Uw e-mailadres is nog niet geverifieerd", + "Click the link in the email you received to verify and then click continue again.": "Open de koppeling in de ontvangen verificatie-e-mail, en klik dan op ‘Doorgaan’.", "%(creator)s created and configured the room.": "Gesprek gestart en ingesteld door %(creator)s.", "There are unknown sessions in this room: if you proceed without verifying them, it will be possible for someone to eavesdrop on your call.": "Dit gesprek bevat onbekende sessies. Tenzij u die verifieert zou iemand u kunnen afluisteren.", "Setting up keys": "Sleutelconfiguratie", "Verify this session": "Deze sessie verifiëren", "Encryption upgrade available": "Er is een bijgewerkte versleuteling beschikbaar", - "You can use /help to list available commands. Did you mean to send this as a message?": "Type /help om alle opdrachten te zien. Was het uw bedoeling dit als bericht te sturen?", + "You can use /help to list available commands. Did you mean to send this as a message?": "Typ /help om alle opdrachten te zien. Was het uw bedoeling dit als bericht te sturen?", "Help": "Hulp", "Set up encryption": "Versleuteling instellen", "Unverified session": "Ongeverifieerde sessie", @@ -1753,13 +1753,13 @@ "They match": "Ze komen overeen", "They don't match": "Ze komen niet overeen", "To be secure, do this in person or use a trusted way to communicate.": "Doe dit voor de zekerheid onder vier ogen, of via een betrouwbaar communicatiemedium.", - "Lock": "Slot", - "Verify yourself & others to keep your chats safe": "Verifieer jezelf en anderen om je gesprekken veilig te houden", + "Lock": "Hangslot", + "Verify yourself & others to keep your chats safe": "Verifieer uzelf en anderen om uw gesprekken veilig te houden", "Other users may not trust it": "Mogelijk wantrouwen anderen het", "Upgrade": "Bijwerken", "Verify": "Verifiëren", "Later": "Later", - "Review": "Contrôle", + "Review": "Controle", "Decline (%(counter)s)": "Afwijzen (%(counter)s)", "This bridge was provisioned by .": "Dank aan voor de brug.", "This bridge is managed by .": "Brug onderhouden door .", @@ -1767,14 +1767,14 @@ "Channel: %(channelName)s": "Kanaal: %(channelName)s", "Show less": "Minder tonen", "Show more": "Meer tonen", - "Changing password will currently reset any end-to-end encryption keys on all sessions, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Momenteel stelt een wachtwoordswijziging alle berichtsleutels in alle sessies opnieuw in, en maakt zo oude versleutelde berichten onleesbaar - tenzij u uw sleutels eerst wegschrijft, en na afloop weer inleest. Dit zal verbeterd worden.", - "Add users and servers you want to ignore here. Use asterisks to have Riot match any characters. For example, @bot:* would ignore all users that have the name 'bot' on any server.": "Geef hier te negeren gebruikers en servers in. Asterisken staan voor willekeurige tekenreeksen; zo leidt @bot:* tot het negeren van gebruikers die 'bot' heten op alle servers.", + "Changing password will currently reset any end-to-end encryption keys on all sessions, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Momenteel stelt een wachtwoordswijziging alle berichtsleutels in alle sessies opnieuw in, en maakt zo oude versleutelde berichten onleesbaar - tenzij u uw sleutels eerst wegschrijft, en na afloop weer inleest. Dit zal verbeterd worden.", + "Add users and servers you want to ignore here. Use asterisks to have Riot match any characters. For example, @bot:* would ignore all users that have the name 'bot' on any server.": "Geef hier te negeren gebruikers en servers in. Asterisken staan voor willekeurige tekenreeksen; zo leidt @bot:* tot het negeren van alle gebruikers die ‘bot’ heten op alle servers.", "in memory": "in het geheugen", "not found": "niet gevonden", "Your homeserver does not support session management.": "Uw thuisserver ondersteunt geen sessiebeheer.", "Unable to load session list": "Kan sessielijst niet laden", - "Delete %(count)s sessions|other": "Verwijder %(count)s sessies", - "Delete %(count)s sessions|one": "Verwijder %(count)s sessie", + "Delete %(count)s sessions|other": "%(count)s sessies verwijderen", + "Delete %(count)s sessions|one": "%(count)s sessie verwijderen", "The version of Riot": "De versie van Riot", "Whether you're using Riot on a device where touch is the primary input mechanism": "Of u Riot op een apparaat gebruikt waarop een aanraakscherm de voornaamste invoermethode is", "Whether you're using Riot as an installed Progressive Web App": "Of u Riot gebruikt als een geïnstalleerde Progressive-Web-App", @@ -1793,65 +1793,65 @@ "Start": "Start", "Securely cache encrypted messages locally for them to appear in search results.": "Sla versleutelde berichten beveiligd op om ze weer te geven in zoekresultaten.", "Enable": "Inschakelen", - "Connecting to integration manager...": "Verbinding maken met de integratiebeheerder...", + "Connecting to integration manager...": "Verbinding maken met de integratiebeheerder…", "Cannot connect to integration manager": "Kan geen verbinding maken met de integratiebeheerder", "The integration manager is offline or it cannot reach your homeserver.": "De integratiebeheerder is offline of kan uw thuisserver niet bereiken.", "This session is backing up your keys. ": "Deze sessie maakt back-ups van uw sleutels. ", "not stored": "niet opgeslagen", - "Your password was successfully changed. You will not receive push notifications on other sessions until you log back in to them": "Uw wachtwoord is gewijzigd. U zal geen pushmeldingen op uw andere sessies meer ontvangen, totdat u uzelf daarop opnieuw aanmeld", - "Ignored/Blocked": "Genegeerd/Geblokkeerd", + "Your password was successfully changed. You will not receive push notifications on other sessions until you log back in to them": "Uw wachtwoord is gewijzigd. U zult geen pushmeldingen op uw andere sessies meer ontvangen, totdat u zichzelf daarop opnieuw aanmeldt", + "Ignored/Blocked": "Genegeerd/geblokkeerd", "Error adding ignored user/server": "Fout bij het toevoegen van een genegeerde gebruiker/server", - "Something went wrong. Please try again or view your console for hints.": "Er is iets fout gegaan. Probeer het opnieuw of bekijk de console om inzicht te krijgen.", + "Something went wrong. Please try again or view your console for hints.": "Er is iets fout gegaan. Probeer het opnieuw of bekijk de console om voor meer informatie.", "Error subscribing to list": "Fout bij het abonneren op de lijst", - "Please verify the room ID or alias and try again.": "Controleer de gespreks-ID of gespreks(bij)naam en probeer het opnieuw.", + "Please verify the room ID or alias and try again.": "Controleer de gespreks-ID of -(bij)naam en probeer het opnieuw.", "Error removing ignored user/server": "Fout bij het verwijderen van genegeerde gebruiker/server", "Error unsubscribing from list": "Fout bij het opzeggen van een abonnement op de lijst", - "Please try again or view your console for hints.": "Probeer het opnieuw of bekijk de console om inzicht te krijgen.", + "Please try again or view your console for hints.": "Probeer het opnieuw of bekijk de console voor meer informatie.", "None": "Geen", "You have not ignored anyone.": "U heeft niemand genegeerd.", "You are currently ignoring:": "U negeert op dit moment:", "You are not subscribed to any lists": "U heeft geen abonnement op een lijst", - "Unsubscribe": "Zeg abonnement op", + "Unsubscribe": "Abonnement opzeggen", "View rules": "Bekijk regels", "You are currently subscribed to:": "U heeft een abonnement op:", "⚠ These settings are meant for advanced users.": "⚠ Deze instellingen zijn bedoeld voor gevorderde gebruikers.", - "Ignoring people is done through ban lists which contain rules for who to ban. Subscribing to a ban list means the users/servers blocked by that list will be hidden from you.": "Het negeren van gebruikers gaat via banlijsten. Deze bevatten regels over wie verbannen moet worden. Het nemen van een abonnement op een banlijst betekend dat je de gebruikers/servers die op de lijst staan niet meer zult zien.", + "Ignoring people is done through ban lists which contain rules for who to ban. Subscribing to a ban list means the users/servers blocked by that list will be hidden from you.": "Het negeren van gebruikers gaat via banlijsten. Deze bevatten regels over wie verbannen moet worden. Het abonneren op een banlijst betekent dat u de gebruikers/servers die op de lijst staan niet meer zult zien.", "Personal ban list": "Persoonlijke banlijst", - "Your personal ban list holds all the users/servers you personally don't want to see messages from. After ignoring your first user/server, a new room will show up in your room list named 'My Ban List' - stay in this room to keep the ban list in effect.": "Uw persoonlijke banlijst bevat alle gebruikers/server waar u geen berichten meer van wilt zien. Nadat u een gebruiker/server heeft genegeerd, zal een nieuwe kamer worden aangemaakt met de naam \"Mijn Banlijst\". Om de lijst actief te houden dient u de kamer niet te verlaten.", + "Your personal ban list holds all the users/servers you personally don't want to see messages from. After ignoring your first user/server, a new room will show up in your room list named 'My Ban List' - stay in this room to keep the ban list in effect.": "Uw persoonlijke banlijst bevat alle gebruikers/server waar u geen berichten meer van wilt zien. Nadat u een gebruiker/server heeft genegeerd, zal er een nieuw gesprek worden aangemaakt met de naam ‘Mijn banlijst’. Om de lijst actief te houden dient u het gesprek niet te verlaten.", "Server or user ID to ignore": "Server of gebruikers-ID om te negeren", - "eg: @bot:* or example.org": "bijvoorbeeld: @bot:* of example.org", + "eg: @bot:* or example.org": "bijvoorbeeld: @bot:* of voorbeeld.org", "Subscribed lists": "Abonnementen op lijsten", - "Subscribing to a ban list will cause you to join it!": "Wanneer u een abonnement neemt zal u worden toegevoegd!", + "Subscribing to a ban list will cause you to join it!": "Wanneer u zich abonneert op een banlijst zal u eraan worden toegevoegd!", "If this isn't what you want, please use a different tool to ignore users.": "Als u dit niet wilt kunt u een andere methode gebruiken om gebruikers te negeren.", - "Room ID or alias of ban list": "Gespreks-ID of (bij)naam of banlijst", - "Subscribe": "Abonneer", - "Enable desktop notifications for this session": "Schakel desktopmeldingen in voor deze sessie", - "Enable audible notifications for this session": "Schakel meldingen met geluid in voor deze sessie", - "You should:": "U zou:", - "check your browser plugins for anything that might block the identity server (such as Privacy Badger)": "uw browser extensies bekijken voor extensies die mogelijk de identiteitsserver blokkeren (zoals Privacy Badger)", + "Room ID or alias of ban list": "Gespreks-ID of (bij)naam van banlijst", + "Subscribe": "Abonneren", + "Enable desktop notifications for this session": "Bureaubladmeldingen inschakelen voor deze sessie", + "Enable audible notifications for this session": "Meldingen met geluid inschakelen voor deze sessie", + "You should:": "U zou best:", + "check your browser plugins for anything that might block the identity server (such as Privacy Badger)": "uw browserextensies bekijken voor extensies die mogelijk de identiteitsserver blokkeren (zoals Privacy Badger)", "contact the administrators of identity server ": "contact opnemen met de beheerders van de identiteitsserver ", "wait and try again later": "wachten en het later weer proberen", "Use an Integration Manager (%(serverName)s) to manage bots, widgets, and sticker packs.": "Gebruik een integratiebeheerder (%(serverName)s) om robots, widgets en stickerpakketten te beheren.", "Use an Integration Manager to manage bots, widgets, and sticker packs.": "Gebruik een integratiebeheerder om robots, widgets en stickerpakketten te beheren.", "Manage integrations": "Beheer integraties", - "Integration Managers receive configuration data, and can modify widgets, send room invites, and set power levels on your behalf.": "Integratiebeheerders ontvangen configuratie-informatie en kunnen widgets aanpassen, uitnodigingen voor de kamer versturen en machtsniveau's namens u aanpassen.", - "Ban list rules - %(roomName)s": "Banlijst regels - %(roomName)s", - "Server rules": "Server regels", - "User rules": "Gebruiker regels", - "Show tray icon and minimize window to it on close": "Geef een icoon in de systeembalk weer en minimaliseer het venster wanneer het wordt gesloten", + "Integration Managers receive configuration data, and can modify widgets, send room invites, and set power levels on your behalf.": "Integratiebeheerders ontvangen configuratie-informatie en kunnen widgets aanpassen, gespreksuitnodigingen versturen en machtsniveau’s namens u aanpassen.", + "Ban list rules - %(roomName)s": "Banlijstregels - %(roomName)s", + "Server rules": "Serverregels", + "User rules": "Gebruikersregels", + "Show tray icon and minimize window to it on close": "Geef een pictogram weer in de systeembalk en minimaliseer het venster wanneer het wordt gesloten", "Session ID:": "Sessie-ID:", "Session key:": "Sessiesleutel:", "Message search": "Berichten zoeken", "Sessions": "Sessies", - "A session's public name is visible to people you communicate with": "Een sessie's publieke naam is zichtbaar voor de mensen waarmee u communiceert", - "This room is bridging messages to the following platforms. Learn more.": "Dit gesprek wordt overbrugt naar de volgende platformen. Lees meer", - "This room isn’t bridging messages to any platforms. Learn more.": "Dit gesprek wordt niet overbrugt naar andere platformen. Lees meer.", - "Bridges": "Overbruggingen", - "This user has not verified all of their sessions.": "Deze gebruiker heeft niet al haar sessies geverifieerd.", + "A session's public name is visible to people you communicate with": "De publieke naam van een sessie is zichtbaar voor de mensen waarmee u communiceert", + "This room is bridging messages to the following platforms. Learn more.": "Dit gesprek wordt overbrugd naar de volgende platformen. Lees meer", + "This room isn’t bridging messages to any platforms. Learn more.": "Dit gesprek wordt niet overbrugd naar andere platformen. Lees meer.", + "Bridges": "Bruggen", + "This user has not verified all of their sessions.": "Deze gebruiker heeft niet al zijn sessies geverifieerd.", "You have not verified this user.": "U heeft deze gebruiker niet geverifieerd.", - "You have verified this user. This user has verified all of their sessions.": "U heeft deze gebruiker geverifieerd. Deze gebruiker heeft al haar sessies geverifieerd.", + "You have verified this user. This user has verified all of their sessions.": "U heeft deze gebruiker geverifieerd. Deze gebruiker heeft al zijn sessies geverifieerd.", "Someone is using an unknown session": "Iemand gebruikt een onbekende sessie", - "This room is end-to-end encrypted": "Dit gesprek is van eind-tot-eind versleuteld", + "This room is end-to-end encrypted": "Dit gesprek is eind-tot-eind-versleuteld", "Everyone in this room is verified": "Iedereen in dit gesprek is geverifieerd", "Some sessions for this user are not trusted": "Sommige sessies van deze gebruiker zijn niet vertrouwd", "All sessions for this user are trusted": "Alle sessies van deze gebruiker zijn vertrouwd", @@ -1861,37 +1861,40 @@ "rooms.": "gesprekken.", "Recent rooms": "Actuele gesprekken", "Direct Messages": "Tweegesprekken", - "If disabled, messages from encrypted rooms won't appear in search results.": "Dit moet aanstaan om te kunnen zoeken in versleutelde gesprekken.", + "If disabled, messages from encrypted rooms won't appear in search results.": "Dit moet aan staan om te kunnen zoeken in versleutelde gesprekken.", "Indexed rooms:": "Geïndexeerde gesprekken:", - "Cross-signing and secret storage are enabled.": "Cross-signing en sleutelopslag zijn ingeschakeld.", - "Your account has a cross-signing identity in secret storage, but it is not yet trusted by this session.": "Uw account heeft een cross-signing identiteit in de sleutelopslag, maar deze is nog niet vertrouwd door de huidige sessie.", - "Cross-signing and secret storage are not yet set up.": "Cross-signing en sleutelopslag zijn nog niet ingesteld.", - "Bootstrap cross-signing and secret storage": "Cross-signing en sleutelopslag opzetten", - "Reset cross-signing and secret storage": "Cross-signing en sleutelopslag resetten", - "Cross-signing public keys:": "Cross-signing publieke sleutels:", - "Cross-signing private keys:": "Cross-signing privésleutels:", + "Cross-signing and secret storage are enabled.": "Kruiselings ondertekenen en sleutelopslag zijn ingeschakeld.", + "Your account has a cross-signing identity in secret storage, but it is not yet trusted by this session.": "Uw account heeft een identiteit voor kruiselings ondertekenen in de sleutelopslag, maar deze is nog niet vertrouwd door de huidige sessie.", + "Cross-signing and secret storage are not yet set up.": "Kruiselings ondertekenen en sleutelopslag zijn nog niet ingesteld.", + "Bootstrap cross-signing and secret storage": "Kruiselings ondertekenen en sleutelopslag instellen", + "Reset cross-signing and secret storage": "Kruiselings ondertekenen en sleutelopslag opnieuw instellen", + "Cross-signing public keys:": "Publieke sleutels voor kruiselings ondertekenen:", + "Cross-signing private keys:": "Privésleutels voor kruiselings ondertekenen:", "in secret storage": "in de sleutelopslag", "Secret storage public key:": "Sleutelopslag publieke sleutel:", "in account data": "in accountinformatie", "Securely cache encrypted messages locally for them to appear in search results, using ": "Sla versleutelde berichten beveiligd op om ze weer te geven in de zoekresultaten, door gebruik te maken van ", " to store messages from ": " om berichten op te slaan van ", "Manage": "Beheren", - "Connect this session to key backup before signing out to avoid losing any keys that may only be on this session.": "Verbind deze sessie met de sleutelback-up voordat u uitlogt. Dit voorkomt dat u sleutels verliest die alleen op deze sessie voorkomen.", + "Connect this session to key backup before signing out to avoid losing any keys that may only be on this session.": "Verbind deze sessie met de sleutelback-up voordat u zich afmeldt. Dit voorkomt dat u sleutels verliest die alleen op deze sessie voorkomen.", "Connect this session to Key Backup": "Verbind deze sessie met de sleutelback-up", - "Backup has a valid signature from this user": "De back-up heeft een correcte ondertekening van deze gebruiker", - "Backup has a invalid signature from this user": "De back-up heeft een incorrecte ondertekening van deze gebruiker", - "Backup has a signature from unknown user with ID %(deviceId)s": "De back-up heeft een ondertekening van onbekende gebruiker met ID %(deviceId)s", - "Backup has a signature from unknown session with ID %(deviceId)s": "De back-up heeft een ondertekening van onbekende sessie met ID %(deviceId)s", - "Backup has a valid signature from this session": "De back-up heeft een correcte ondertekening van deze sessie", - "Backup has an invalid signature from this session": "De back-up heeft een incorrecte ondertekening van deze sessie", - "Backup has a valid signature from verified session ": "De back-up heeft een correcte ondertekening van geverifieerde sessie ", - "Backup has a valid signature from unverified session ": "De back-up heeft een correcte ondertekening van ongeverifieerde sessie ", - "Backup has an invalid signature from verified session ": "De back-up heeft een incorrecte ondertekening van geverifieerde sessie ", - "Backup has an invalid signature from unverified session ": "De back-up heeft een incorrecte ondertekening van ongeverifieerde sessie ", + "Backup has a valid signature from this user": "De back-up heeft een geldige ondertekening van deze gebruiker", + "Backup has a invalid signature from this user": "De back-up heeft een ongeldige ondertekening van deze gebruiker", + "Backup has a signature from unknown user with ID %(deviceId)s": "De back-up heeft een ondertekening van een onbekende gebruiker met ID %(deviceId)s", + "Backup has a signature from unknown session with ID %(deviceId)s": "De back-up heeft een ondertekening van een onbekende sessie met ID %(deviceId)s", + "Backup has a valid signature from this session": "De back-up heeft een geldige ondertekening van deze sessie", + "Backup has an invalid signature from this session": "De back-up heeft een ongeldige ondertekening van deze sessie", + "Backup has a valid signature from verified session ": "De back-up heeft een geldige ondertekening van een geverifieerde sessie ", + "Backup has a valid signature from unverified session ": "De back-up heeft een geldige ondertekening van een ongeverifieerde sessie ", + "Backup has an invalid signature from verified session ": "De back-up heeft een ongeldige ondertekening van een geverifieerde sessie ", + "Backup has an invalid signature from unverified session ": "De back-up heeft een ongeldige ondertekening van een ongeverifieerde sessie ", "Backup is not signed by any of your sessions": "De back-up is door geen van uw sessies ondertekend", - "This backup is trusted because it has been restored on this session": "Deze back-up is vertrouwd omdat het is hersteld naar deze sessie", + "This backup is trusted because it has been restored on this session": "Deze back-up is vertrouwd omdat hij hersteld is naar deze sessie", "Backup key stored: ": "Back-upsleutel opgeslagen: ", "Your keys are not being backed up from this session.": "Uw sleutels worden niet geback-upt van deze sessie.", - "Clear notifications": "Notificaties wissen", - "You should remove your personal data from identity server before disconnecting. Unfortunately, identity server is currently offline or cannot be reached.": "U moet uw persoonlijke informatie van de identiteitsserver verwijderen voordat u zich ontkoppeld. Helaas kan de identiteitsserver op dit moment niet worden bereikt. Mogelijk is het offline." + "Clear notifications": "Meldingen wissen", + "You should remove your personal data from identity server before disconnecting. Unfortunately, identity server is currently offline or cannot be reached.": "U moet uw persoonlijke informatie van de identiteitsserver verwijderen voordat u zich ontkoppelt. Helaas kan de identiteitsserver op dit moment niet worden bereikt. Mogelijk is hij offline.", + "Your homeserver does not support cross-signing.": "Uw thuisserver biedt geen ondersteuning voor kruiselings ondertekenen.", + "Homeserver feature support:": "Functies ondersteund door thuisserver:", + "exists": "bestaat" } From f6fdddb9bac6d62891eb7c19611c0df1a7ce4b87 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Tue, 25 Feb 2020 09:54:48 -0700 Subject: [PATCH 111/124] Don't prefix QR codes with the length of the static marker string Fixes https://github.com/vector-im/riot-web/issues/12489 --- src/components/views/elements/crypto/VerificationQRCode.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/components/views/elements/crypto/VerificationQRCode.js b/src/components/views/elements/crypto/VerificationQRCode.js index cbbe2912d6..88f9608138 100644 --- a/src/components/views/elements/crypto/VerificationQRCode.js +++ b/src/components/views/elements/crypto/VerificationQRCode.js @@ -130,9 +130,9 @@ export default class VerificationQRCode extends React.PureComponent { tmpBuf.writeInt8(i, 0); buf = Buffer.concat([buf, tmpBuf]); }; - const appendStr = (s: string, enc: string) => { + const appendStr = (s: string, enc: string, withLengthPrefix = true) => { const tmpBuf = Buffer.from(s, enc); - appendInt(tmpBuf.byteLength); + if (withLengthPrefix) appendInt(tmpBuf.byteLength); buf = Buffer.concat([buf, tmpBuf]); }; const appendEncBase64 = (b64: string) => { @@ -142,7 +142,7 @@ export default class VerificationQRCode extends React.PureComponent { }; // Actually build the buffer for the QR code - appendStr(this.props.prefix, "ascii"); + appendStr(this.props.prefix, "ascii", false); appendByte(this.props.version); appendByte(this.props.mode); appendStr(this.props.transactionId, "utf-8"); From 30a0d88074542eb538f98e869d04e5ad58d8c853 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Tue, 25 Feb 2020 13:13:41 -0700 Subject: [PATCH 112/124] Don't print errors when the tab is used with no autocomplete present Fixes https://github.com/vector-im/riot-web/issues/12461 Not a release blocker because the error is caught, and is at the end of the function. Just log spam. --- src/components/views/rooms/BasicMessageComposer.js | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/components/views/rooms/BasicMessageComposer.js b/src/components/views/rooms/BasicMessageComposer.js index ff4e5e8385..e366a20326 100644 --- a/src/components/views/rooms/BasicMessageComposer.js +++ b/src/components/views/rooms/BasicMessageComposer.js @@ -471,10 +471,14 @@ export default class BasicMessageEditor extends React.Component { const addedLen = range.replace([partCreator.pillCandidate(range.text)]); return model.positionForOffset(caret.offset + addedLen, true); }); - await model.autoComplete.onTab(); - if (!model.autoComplete.hasSelection()) { - this.setState({showVisualBell: true}); - model.autoComplete.close(); + + // Don't try to do things with the autocomplete if there is none shown + if (model.autoComplete) { + await model.autoComplete.onTab(); + if (!model.autoComplete.hasSelection()) { + this.setState({showVisualBell: true}); + model.autoComplete.close(); + } } } catch (err) { console.error(err); From 6008124e65da7f21d29e80e781d02d3ae1655f67 Mon Sep 17 00:00:00 2001 From: "Nils J. Haugen" Date: Tue, 25 Feb 2020 17:52:54 +0000 Subject: [PATCH 113/124] Translated using Weblate (Norwegian Nynorsk) Currently translated at 50.9% (1088 of 2137 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 | 130 +++++++++++++++++++++------------------ 1 file changed, 70 insertions(+), 60 deletions(-) diff --git a/src/i18n/strings/nn.json b/src/i18n/strings/nn.json index 0bdf358533..c9b98f9a26 100644 --- a/src/i18n/strings/nn.json +++ b/src/i18n/strings/nn.json @@ -47,15 +47,15 @@ "%(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", - "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", + "Who would you like to add to this community?": "Kven vil du leggja til i dette fellesskapet?", + "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 fellesskap blir offentleg synleg til alle som kan fellesskaps-IDen", + "Invite new community members": "Inviter nye fellesskapsmedlem", + "Invite to Community": "Inviter til Felleskapet", + "Which rooms would you like to add to this community?": "Kva rom vil du leggja til i dette fellesskapet?", + "Show these rooms to non-members on the community page and room list?": "Vise desse romma til ikkje-medlem på fellesskapssida og romkatalogen?", + "Add rooms to the community": "Legg til rom i fellesskapet", "Room name or alias": "Romnamn eller alias", - "Add to community": "Legg til i samfunn", + "Add to community": "Legg til i fellesskapet", "Failed to invite the following users to %(groupId)s:": "Fekk ikkje til å invitera følgjande brukarar i %(groupId)s:", "Failed to invite users to community": "Fekk ikkje til å invitera brukarar til fellesskapet.", "Failed to invite users to %(groupId)s": "Fekk ikkje til å byda brukarar inn til %(groupId)s", @@ -127,7 +127,7 @@ "%(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 invited %(targetName)s.": "%(senderName)s inviterte %(targetName)s.", "%(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.", @@ -149,13 +149,13 @@ "%(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.", + "%(senderName)s answered the call.": "%(senderName)s svarde på samtalen.", "(could not connect media)": "(klarte ikkje å kopla media saman)", "(no answer)": "(ingen svar)", - "(unknown failure: %(reason)s)": "(ukjend mislukking: %(reason)s)", - "%(senderName)s ended the call.": "%(senderName)s enda samtala.", - "%(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.", + "(unknown failure: %(reason)s)": "(ukjend feil: %(reason)s)", + "%(senderName)s ended the call.": "%(senderName)s avslutta samtalen.", + "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "%(senderName)s inviterte %(targetDisplayName)s til å bli med i 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 rommedlemar frå då dei vart invitert.", "%(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.", @@ -349,7 +349,7 @@ "Forget room": "Gløym rom", "Search": "Søk", "Share room": "Del rom", - "Community Invites": "Samfunnsinnbydingar", + "Community Invites": "Fellesskapsinvitasjonar", "Invites": "Innbydingar", "Favourites": "Yndlingar", "Rooms": "Rom", @@ -397,12 +397,12 @@ "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", + "Invalid community ID": "Ugyldig fellesskaps-ID", + "'%(groupId)s' is not a valid community ID": "'%(groupId)s' er ikkje ein gyldig fellesskaps-ID", "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)", + "New community ID (e.g. +foo:%(localDomain)s)": "Ny fellesskaps-ID (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.", @@ -450,23 +450,23 @@ "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 epostadresse du vil bruka vil du ikkje kunna attendestille passordet ditt. Er du sikker?", "Register": "Meld deg inn", - "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?", + "Remove from community": "Fjern frå fellesskapet", + "Disinvite this user from community?": "Fjerne denne brukaren sin invitasjon til fellesskapet?", + "Remove this user from community?": "Fjerne denne brukaren frå fellesskapet?", "Failed to withdraw invitation": "Fekk ikkje til å taka innbydinga att", - "Failed to remove user from community": "Fekk ikkje til å fjerna brukaren frå samfunnet", + "Failed to remove user from community": "Fekk ikkje til å fjerna brukaren frå fellesskapet", "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.", + "Removing a room from the community will also remove it from the community page.": "Fjerning av rom frå fellesskapet vil i tillegg fjerna det frå fellesskapssida.", "Remove": "Fjern", - "Failed to remove room from community": "Fekk ikkje til å fjerna rommet frå samfunnet", + "Failed to remove room from community": "Fekk ikkje til å fjerna rommet frå fellesskapet", "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", + "Only visible to community members": "Berre synleg for medlemar av fellesskapet", "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.", + "Display your community flair in rooms configured to show it.": "Vis fellesskapsetiketten din 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 skrivebordsvarsel", @@ -571,11 +571,11 @@ "Send logs": "Send loggar inn", "Unavailable": "Utilgjengeleg", "Changelog": "Endringslogg", - "Something went wrong whilst creating your community": "Noko gjekk gale med laginga av samfunnet ditt", - "Create Community": "Lag Samfunn", - "Community Name": "Samfunnsnamn", + "Something went wrong whilst creating your community": "Noko gjekk gale med laginga av felleskapet ditt", + "Create Community": "Lag Fellesskap", + "Community Name": "Fellesskapsnamn", "Example": "Døme", - "Community ID": "Samfunns-ID", + "Community ID": "Fellesskap-ID", "example": "døme", "Create": "Lag", "Create Room": "Lag eit Rom", @@ -584,8 +584,8 @@ "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 '=_-./'", + "Community IDs cannot be empty.": "Feltet Fellesskap-ID kan ikkje vera tomt.", + "Community IDs may only contain characters a-z, 0-9, or '=_-./'": "Fellesskap-IDar kan berre innehalda teikna a-z, 0-9, eller '=_-./'", "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 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.", @@ -642,7 +642,7 @@ "Share Room": "Del Rom", "Link to most recent message": "Lenk til den nyaste meldinga", "Share User": "Del Brukar", - "Share Community": "Del Samfunn", + "Share Community": "Del Fellesskap", "Share Room Message": "Del Rommelding", "Link to selected message": "Lenk til den valde meldinga", "COPY": "KOPIER", @@ -673,7 +673,7 @@ "Forget": "Gløym", "Low Priority": "Lågrett", "Direct Chat": "Direktesamtale", - "View Community": "Sjå Samfunn", + "View Community": "Sjå Fellesskap", "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.", "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å!", @@ -682,44 +682,44 @@ "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", - "

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", + "

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' HTML-taggar!\n

\n", + "Add rooms to the community summary": "Legg rom til i samandraget for fellesskapet", "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 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", + "Add users to the community summary": "Legg brukarar til i samandraget for fellesskapet", "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 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.", "Failed to upload image": "Fekk ikkje til å lasta biletet opp", - "Failed to update community": "Fekk ikkje til å oppdatera samfunnet", + "Failed to update community": "Fekk ikkje til å oppdatera fellesskapet", "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", + "Unable to join community": "Fekk ikkje til å bli med i fellesskapet", + "Leave Community": "Forlat fellesskapet", "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", + "Unable to leave community": "Fekk ikkje til å forlate fellesskapet", + "Community Settings": "Fellesskapsinnstillingar", + "Changes made to your community name and avatar might not be seen by other users for up to 30 minutes.": "Endringar gjort på felleskapsnamn og felleskapsavatar blir kanskje ikkje synleg for andre før etter 30 minutt.", + "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 medlem i felleskapet på felleskapssida. Felleskapsmedlemar kan bli med i romma ved å klikke på dei.", + "Add rooms to this community": "Legg rom til i fellesskapet", "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?", + "%(inviter)s has invited you to join this community": "%(inviter)s inviterte deg med i dette fellesskapet", + "Join this community": "Bli med i dette felleskapet", + "Leave this community": "Forlat dette felleskapet", + "You are an administrator of this community": "Du er administrator av dette fellesskapet", + "You are a member of this community": "Du er medlem av dette fellesskapet", + "Who can join this community?": "Kven kan bli med i dette fellesskapet?", "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!", + "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!": "Fellesskapet ditt har ikkje ein lang beskrivelse (HTML-side for å visa til fellesskapsmedlem.)
Klikk her for å opna innstillingar og legge dette til!", "Long Description (HTML)": "Lang Skildring (HTML)", "Description": "Skildring", - "Community %(groupId)s not found": "Fann ikkje samfunnet %(groupId)s", + "Community %(groupId)s not found": "Fann ikkje fellesskapet %(groupId)s", "Failed to load %(groupId)s": "Fekk ikkje til å lasta %(groupId)s", "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.", @@ -737,13 +737,13 @@ "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", + "Create a new community": "Lag eit nytt fellesskap", "You have no visible notifications": "Du har ingen synlege varsel", "Members": "Medlemer", "Invite to this room": "Byd inn til rommet", "Files": "Filer", "Notifications": "Varsel", - "Invite to this community": "Byd inn til samfunnet", + "Invite to this community": "Inviter til dette fellesskapet", "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?", @@ -866,9 +866,9 @@ "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": "Teiknet er gale", - "Filter community members": "Filtrer samfunnsmedlemer", + "Filter community members": "Filtrer fellesskapssmedlemar", "Custom Server Options": "Tilpassa tenar-innstillingar", - "Filter community rooms": "Filtrer samfunnsrom", + "Filter community rooms": "Filtrer rom i fellesskapet", "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", @@ -887,8 +887,8 @@ "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 å 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 di eiga heimeside for å kreva din del av Matrix-verda.", + "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, dra ein fellesskapsavatar 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 fellesskapet.", + "Create a community to group together users and rooms! Build a custom homepage to mark out your space in the Matrix universe.": "Lag eit fellesskap for å føra saman brukarar og rom! Bygg di eiga heimeside for å kreva din del av Matrix-verda.", "Unable to look up room ID from server": "Klarte ikkje å henta rom-ID frå tenaren", "Server may be unavailable, overloaded, or search timed out :(": "Tenaren er kanskje utilgjengeleg, overlasta, elles så vart søket tidsavbrote :(", "Clear filter": "Tøm filter", @@ -1090,5 +1090,15 @@ "%(senderName)s removed %(removedAddresses)s and %(count)s other addresses from this room|other": "%(senderName)s fjerna %(removedAddresses)s og %(count)s andre som adresse for dette rommet", "%(senderName)s removed %(count)s %(removedAddresses)s as addresses for this room.|other": "%(senderName)s fjerna %(removedAddresses)s som adresser for dette rommet.", "%(senderName)s removed %(count)s %(removedAddresses)s as addresses for this room.|one": "%(senderName)s fjerna %(removedAddresses)s som adresse for dette rommet.", - "%(senderName)s removed %(countRemoved)s and added %(countAdded)s addresses to this room": "%(senderName)s fjerna %(countRemoved)s og la til %(countAdded)s adresser for dette rommet" + "%(senderName)s removed %(countRemoved)s and added %(countAdded)s addresses to this room": "%(senderName)s fjerna %(countRemoved)s og la til %(countAdded)s adresser for dette rommet", + "%(senderName)s added %(addedAddresses)s and removed %(removedAddresses)s as addresses for this room.": "%(senderName)s la til %(addedAddresses)s og tok vekk %(removedAddresses)s som adresser for dette rommet.", + "%(senderName)s set the main address for this room to %(address)s.": "%(senderName)s satte standardadressa for dette rommet til %(address)s.", + "%(senderName)s removed the main address for this room.": "%(senderName)s fjerna standardadressa for dette rommet.", + "%(senderName)s placed a voice call.": "%(senderName)s starta eit taleanrop.", + "%(senderName)s placed a voice call. (not supported by this browser)": "%(senderName)s starta eit taleanrop. (ikkje støtta av denne nettlesaren)", + "%(senderName)s placed a video call.": "%(senderName)s starta ein videosamtale.", + "%(senderName)s placed a video call. (not supported by this browser)": "%(senderName)s starta ein videosamtale. (ikkje støtta av denne nettlesaren)", + "%(senderName)s revoked the invitation for %(targetDisplayName)s to join the room.": "%(senderName)s trekte tilbake invitasjonen for at %(targetDisplayName)s kan bli medlem i rommet.", + "You are an administrator of this community. You will not be able to rejoin without an invite from another administrator.": "Du er administrator for dette fellesskapet. Du kan ikkje melde deg inn igjen utan at du har invitasjon frå ein annan administrator.", + "Want more than a community? Get your own server": "Treng du meir enn eit fellesskap? Skaff din eigen server" } From b32fbcb64fef82f1e7c229efd29d849d93a493f9 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Tue, 25 Feb 2020 15:40:15 -0700 Subject: [PATCH 114/124] Don't try to collapse zero events with a group Fixes https://github.com/vector-im/riot-web/issues/12423 When events are redacted they fail to make it into the Grouper because the `shouldAddEvent` check blocks them from entering. However, the grouper expects that when `getTiles()` is called that there's events to group and dutifully grabs some context from the array. Because JavaScript is the least helpful language, `myArray[-1]` returns `undefined` or `null` and thus you get `cannot read 'sender' of undefined`. Regressed in https://github.com/matrix-org/matrix-react-sdk/pull/4059 --- src/components/structures/MessagePanel.js | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/components/structures/MessagePanel.js b/src/components/structures/MessagePanel.js index b8b11fbb31..d0e35e1c2b 100644 --- a/src/components/structures/MessagePanel.js +++ b/src/components/structures/MessagePanel.js @@ -873,6 +873,11 @@ class CreationGrouper { } getTiles() { + // If we don't have any events to group, don't even try to group them. The logic + // below assumes that we have a group of events to deal with, but we might not if + // the events we were supposed to group were redacted. + if (!this.events || !this.events.length) return []; + const DateSeparator = sdk.getComponent('messages.DateSeparator'); const EventListSummary = sdk.getComponent('views.elements.EventListSummary'); @@ -959,6 +964,11 @@ class MemberGrouper { } getTiles() { + // If we don't have any events to group, don't even try to group them. The logic + // below assumes that we have a group of events to deal with, but we might not if + // the events we were supposed to group were redacted. + if (!this.events || !this.events.length) return []; + const DateSeparator = sdk.getComponent('messages.DateSeparator'); const MemberEventListSummary = sdk.getComponent('views.elements.MemberEventListSummary'); From 9673fbfc2ab33dabc58734242b079a9b8204ef64 Mon Sep 17 00:00:00 2001 From: Tuomas Hietala Date: Tue, 25 Feb 2020 21:20:16 +0000 Subject: [PATCH 115/124] Translated using Weblate (Finnish) Currently translated at 89.8% (1918 of 2137 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/fi/ --- src/i18n/strings/fi.json | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/fi.json b/src/i18n/strings/fi.json index 370f0b5394..769e92ac27 100644 --- a/src/i18n/strings/fi.json +++ b/src/i18n/strings/fi.json @@ -1920,5 +1920,24 @@ "Backup restored": "Varmuuskopio palautettu", "Go Back": "Takaisin", "Copy": "Kopioi", - "Upgrade your encryption": "Päivitä salauksesi" + "Upgrade your encryption": "Päivitä salauksesi", + "Unknown (user, session) pair:": "Tuntematon (käyttäjä, istunto) -pari:", + "Your homeserver does not support session management.": "Kotipalvelimesi ei tue istunnonhallintaa.", + "Unable to load session list": "Istuntoluettelon lataaminen ei onnistu", + "Delete %(count)s sessions|one": "Poista %(count)s istunto", + "Backup has a valid signature from this session": "Varmuuskopiossa on kelvollinen allekirjoitus tästä istunnosta", + "Backup has an invalid signature from this session": "Varmuuskopiossa on epäkelpo allekirjoitus tästä istunnosta", + "Enable desktop notifications for this session": "Ota käyttöön työpöytäilmoitukset tälle istunnolle", + "Enable audible notifications for this session": "Ota käyttöön ääni-ilmoitukset tälle istunnolle", + "A session's public name is visible to people you communicate with": "Istunnon julkinen nimi näkyy ihmisille, joiden kanssa viestit", + "Someone is using an unknown session": "Joku käyttää tuntematonta istuntoa", + "%(count)s sessions|other": "%(count)s istuntoa", + "%(count)s sessions|one": "%(count)s istunto", + "Hide sessions": "Piilota istunnot", + "Clear all data in this session?": "Poista kaikki tämän istunnon tiedot?", + "Clearing all data from this session is permanent. Encrypted messages will be lost unless their keys have been backed up.": "Kaikkien tämän istunnon tietojen poistaminen on pysyvää. Salatut viestit menetetään, ellei niiden avaimia ole varmuuskopioitu.", + "Session name": "Istunnon nimi", + "You added a new session '%(displayName)s', which is requesting encryption keys.": "Lisäsit uuden istunnon '%(displayName)s', joka pyytää salausavaimia.", + "Loading session info...": "Ladataan istunnon tietoja...", + "New session": "Uusi istunto" } From 167092d35b62c1c38b2353a983df4c979e6f1a4d Mon Sep 17 00:00:00 2001 From: Szimszon Date: Tue, 25 Feb 2020 20:29:50 +0000 Subject: [PATCH 116/124] Translated using Weblate (Hungarian) Currently translated at 100.0% (2137 of 2137 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 | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/hu.json b/src/i18n/strings/hu.json index b1531daa42..4b08fb8294 100644 --- a/src/i18n/strings/hu.json +++ b/src/i18n/strings/hu.json @@ -2154,5 +2154,18 @@ "You declined": "Elutasítottad", "%(name)s declined": "%(name)s elutasította", "accepting …": "elfogadás …", - "declining …": "elutasítás …" + "declining …": "elutasítás …", + "Cancelling…": "Megszakítás…", + "Your homeserver does not support cross-signing.": "A matrix szervered nem támogatja az eszközök közti hitelesítést.", + "Homeserver feature support:": "Matrix szerver támogatott szolgáltatások:", + "exists": "létezik", + "Accepting…": "Elfogadás…", + "Accepting …": "Elfogadás …", + "Declining …": "Elutasítás …", + "Verification Requests": "Hitelesítés Kérések", + "Your account is not secure": "A fiókod nem biztonságos", + "Your password": "A jelszavad", + "This session, or the other session": "Ez vagy másik munkamenet", + "The internet connection either session is using": "Az egyik munkamenet internet kapcsolata", + "We recommend you change your password and recovery key in Settings immediately": "Javasoljuk, hogy a jelszavadat és a visszaállítási kulcsodat mihamarabb változtasd meg a Beállításokban" } From 9be61497fb33bb3cb52e7e7e631d9b0477b70161 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Tue, 25 Feb 2020 16:11:07 -0700 Subject: [PATCH 117/124] Handle errors when previewing rooms more safely Fixes https://github.com/vector-im/riot-web/issues/12500 See https://github.com/matrix-org/synapse/issues/6992 for additional context. --- src/components/structures/RoomView.js | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/components/structures/RoomView.js b/src/components/structures/RoomView.js index 0efa46416e..edd916697a 100644 --- a/src/components/structures/RoomView.js +++ b/src/components/structures/RoomView.js @@ -342,7 +342,7 @@ export default createReactClass({ peekLoading: false, }); this._onRoomLoaded(room); - }, (err) => { + }).catch((err) => { if (this.unmounted) { return; } @@ -355,7 +355,7 @@ export default createReactClass({ // This won't necessarily be a MatrixError, but we duck-type // here and say if it's got an 'errcode' key with the right value, // it means we can't peek. - if (err.errcode == "M_GUEST_ACCESS_FORBIDDEN") { + if (err.errcode === "M_GUEST_ACCESS_FORBIDDEN" || err.errcode === 'M_FORBIDDEN') { // This is fine: the room just isn't peekable (we assume). this.setState({ peekLoading: false, @@ -365,8 +365,6 @@ export default createReactClass({ } }); } 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}); From 15dd6b319d8dfd5b614a91429e1635bd53d0ef8a Mon Sep 17 00:00:00 2001 From: Jeff Huang Date: Wed, 26 Feb 2020 02:12:30 +0000 Subject: [PATCH 118/124] Translated using Weblate (Chinese (Traditional)) Currently translated at 100.0% (2137 of 2137 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 | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/zh_Hant.json b/src/i18n/strings/zh_Hant.json index d14a77744e..0551f2f3ec 100644 --- a/src/i18n/strings/zh_Hant.json +++ b/src/i18n/strings/zh_Hant.json @@ -2161,5 +2161,14 @@ "Your homeserver does not support cross-signing.": "您的家伺服器不支援交叉簽章。", "Homeserver feature support:": "家伺服器功能支援:", "exists": "存在", - "Verification Requests": "驗證請求" + "Verification Requests": "驗證請求", + "Cancelling…": "正在取消……", + "Accepting…": "正在接受……", + "Accepting …": "正在接受……", + "Declining …": "正在拒絕……", + "Your account is not secure": "您的帳號不安全", + "Your password": "您的密碼", + "This session, or the other session": "此工作階段或其他工作階段", + "The internet connection either session is using": "任何一個工作階段正在使用的網際網路連線", + "We recommend you change your password and recovery key in Settings immediately": "我們建議您立刻在設定中變更您的密碼與復原金鑰" } From 9a1236a016eb2f6217f3b8c78d44f7813472ffa7 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Wed, 26 Feb 2020 10:40:33 +0000 Subject: [PATCH 119/124] Fix message context menu breaking on invalid m.room.pinned_events event Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- src/components/views/context_menus/MessageContextMenu.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/components/views/context_menus/MessageContextMenu.js b/src/components/views/context_menus/MessageContextMenu.js index ea5623fe48..a73b0d640e 100644 --- a/src/components/views/context_menus/MessageContextMenu.js +++ b/src/components/views/context_menus/MessageContextMenu.js @@ -90,7 +90,8 @@ export default createReactClass({ const room = MatrixClientPeg.get().getRoom(this.props.mxEvent.getRoomId()); const pinnedEvent = room.currentState.getStateEvents('m.room.pinned_events', ''); if (!pinnedEvent) return false; - return pinnedEvent.getContent().pinned.includes(this.props.mxEvent.getId()); + const content = pinnedEvent.getContent(); + return content.pinned && Array.isArray(content.pinned) && content.pinned.includes(this.props.mxEvent.getId()); }, onResendClick: function() { From c4ce9a310e585a8d6bc469e76242063ffeb66f1c Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Wed, 26 Feb 2020 13:44:35 +0000 Subject: [PATCH 120/124] Limit UserInfo Displayname to 3 lines to get rid of scrollbars and ugliness Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- res/css/views/right_panel/_UserInfo.scss | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/res/css/views/right_panel/_UserInfo.scss b/res/css/views/right_panel/_UserInfo.scss index 46d5e99d64..074d625963 100644 --- a/res/css/views/right_panel/_UserInfo.scss +++ b/res/css/views/right_panel/_UserInfo.scss @@ -137,12 +137,20 @@ limitations under the License. font-size: 18px; line-height: 25px; flex: 1; - overflow-x: auto; - max-height: 50px; display: flex; justify-content: center; align-items: center; + // limit to 2 lines, show an ellipsis if it overflows + // this looks webkit specific but is supported by Firefox 68+ + display: -webkit-box; + -webkit-box-orient: vertical; + -webkit-line-clamp: 2; + + overflow: hidden; + word-break: break-all; + text-overflow: ellipsis; + .mx_E2EIcon { margin: 5px; } From 2ce006a9ea5b481621d37e86e35859e5315fc94c Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Wed, 26 Feb 2020 13:48:22 +0000 Subject: [PATCH 121/124] delint css Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- res/css/views/right_panel/_UserInfo.scss | 1 - 1 file changed, 1 deletion(-) diff --git a/res/css/views/right_panel/_UserInfo.scss b/res/css/views/right_panel/_UserInfo.scss index 074d625963..0e4b1bda9e 100644 --- a/res/css/views/right_panel/_UserInfo.scss +++ b/res/css/views/right_panel/_UserInfo.scss @@ -137,7 +137,6 @@ limitations under the License. font-size: 18px; line-height: 25px; flex: 1; - display: flex; justify-content: center; align-items: center; From c8493d5b08242dfe469b6b5d80cdac7dd5f5b6e0 Mon Sep 17 00:00:00 2001 From: Ben Bucksch Date: Wed, 26 Feb 2020 15:29:51 +0100 Subject: [PATCH 122/124] Solve fixed-width digits display in flowed text Noto Color Emoji contains digits, in fixed-width, therefore causing digits in flowed text to stand out. Fixes: https://github.com/vector-im/riot-web/issues/12504 Signed-off-by: Ben Bucksch --- res/themes/light/css/_light.scss | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/res/themes/light/css/_light.scss b/res/themes/light/css/_light.scss index c868c81549..626ccb2e13 100644 --- a/res/themes/light/css/_light.scss +++ b/res/themes/light/css/_light.scss @@ -5,9 +5,12 @@ Arial empirically gets it right, hence prioritising Arial here. */ /* We fall through to Twemoji for emoji rather than falling through to native Emoji fonts (if any) to ensure cross-browser consistency */ -$font-family: Nunito, Twemoji, 'Apple Color Emoji', 'Segoe UI Emoji', 'Noto Color Emoji', Arial, Helvetica, Sans-Serif; +/* Noto Color Emoji contains digits, in fixed-width, therefore causing + digits in flowed text to stand out. + TODO: Consider putting all emoji fonts to the end rather than the front. */ +$font-family: Nunito, Twemoji, 'Apple Color Emoji', 'Segoe UI Emoji', Arial, Helvetica, Sans-Serif, 'Noto Color Emoji'; -$monospace-font-family: Inconsolata, Twemoji, 'Apple Color Emoji', 'Segoe UI Emoji', 'Noto Color Emoji', Courier, monospace; +$monospace-font-family: Inconsolata, Twemoji, 'Apple Color Emoji', 'Segoe UI Emoji', Courier, monospace, 'Noto Color Emoji'; // unified palette // try to use these colors when possible From 347f56b983ec515720d9a576fa55ef4f2950bcc7 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Wed, 26 Feb 2020 13:21:11 -0700 Subject: [PATCH 123/124] Ensure verification QR codes use the right buffer size The string length buffer only needs 2 bytes, not 4. --- src/components/views/elements/crypto/VerificationQRCode.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/views/elements/crypto/VerificationQRCode.js b/src/components/views/elements/crypto/VerificationQRCode.js index 88f9608138..b7232048e5 100644 --- a/src/components/views/elements/crypto/VerificationQRCode.js +++ b/src/components/views/elements/crypto/VerificationQRCode.js @@ -126,7 +126,7 @@ export default class VerificationQRCode extends React.PureComponent { buf = Buffer.concat([buf, tmpBuf]); }; const appendInt = (i: number) => { - const tmpBuf = Buffer.alloc(4); + const tmpBuf = Buffer.alloc(2); tmpBuf.writeInt8(i, 0); buf = Buffer.concat([buf, tmpBuf]); }; From 3abd3137c77c97ddbaa8e344588f139ba1efa4f6 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Wed, 26 Feb 2020 13:37:19 -0700 Subject: [PATCH 124/124] Use the right function for creating binary verification QR codes `writeInt8` happened to work because the strings we're writing happen to fit within a single byte so the LSB doesn't matter. We actually want a 16 bit (2 byte) number in big-endian format. --- src/components/views/elements/crypto/VerificationQRCode.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/views/elements/crypto/VerificationQRCode.js b/src/components/views/elements/crypto/VerificationQRCode.js index b7232048e5..3838aa61ff 100644 --- a/src/components/views/elements/crypto/VerificationQRCode.js +++ b/src/components/views/elements/crypto/VerificationQRCode.js @@ -127,7 +127,7 @@ export default class VerificationQRCode extends React.PureComponent { }; const appendInt = (i: number) => { const tmpBuf = Buffer.alloc(2); - tmpBuf.writeInt8(i, 0); + tmpBuf.writeInt16BE(i, 0); buf = Buffer.concat([buf, tmpBuf]); }; const appendStr = (s: string, enc: string, withLengthPrefix = true) => {