Merge pull request #945 from matrix-org/matthew/fix-textforevent-i18n

Fix punctuation in TextForEvent to be i18n'd consistently
This commit is contained in:
Matthew Hodgson 2017-05-27 15:10:34 +01:00 committed by GitHub
commit 11b97adf54
9 changed files with 178 additions and 101 deletions

77
scripts/fix-i18n.pl Executable file
View file

@ -0,0 +1,77 @@
#!/usr/bin/perl -ni
use strict;
use warnings;
# script which synchronises i18n strings to include punctuation.
# i've cherry-picked ones which seem to have diverged between the different translations
# from TextForEvent, causing missing events all over the place
BEGIN {
$::fixups = [split(/\n/, <<EOT
%(targetName)s accepted the invitation for %(displayName)s.
%(targetName)s accepted an invitation.
%(senderName)s requested a VoIP conference.
%(senderName)s invited %(targetName)s.
%(senderName)s banned %(targetName)s.
%(senderName)s changed their display name from %(oldDisplayName)s to %(displayName)s.
%(senderName)s set their display name to %(displayName)s.
%(senderName)s removed their display name (%(oldDisplayName)s).
%(senderName)s removed their profile picture.
%(senderName)s changed their profile picture.
%(senderName)s set a profile picture.
VoIP conference started.
%(targetName)s joined the room.
VoIP conference finished.
%(targetName)s rejected the invitation.
%(targetName)s left the room.
%(senderName)s unbanned %(targetName)s.
%(senderName)s kicked %(targetName)s.
%(senderName)s withdrew %(targetName)s's inivitation.
%(targetName)s left the room.
%(senderDisplayName)s changed the topic to "%(topic)s".
%(senderDisplayName)s changed the room name to %(roomName)s.
%(senderDisplayName)s sent an image.
%(senderName)s answered the call.
%(senderName)s ended the call.
%(senderName)s placed a %(callType)s call.
%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.
%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).
%(senderName)s changed the power level of %(powerLevelDiffText)s.
EOT
)];
}
# example i18n format:
# "%(oneUser)sleft": "%(oneUser)sleft",
# script called with the line of the file to be checked
my $sub = 0;
if ($_ =~ m/^(\s+)"(.*?)"(: *)"(.*?)"(,?)$/) {
my ($indent, $src, $colon, $dst, $comma) = ($1, $2, $3, $4, $5);
foreach my $fixup (@{$::fixups}) {
my $dotless_fixup = substr($fixup, 0, -1);
if ($src eq $dotless_fixup) {
print STDERR "fixing up src: $src\n";
$src .= '.';
$sub = 1;
}
if ($src eq $fixup && $dst !~ /\.$/) {
print STDERR "fixing up dst: $dst\n";
$dst .= '.';
$sub = 1;
}
if ($sub) {
print qq($indent"$src"$colon"$dst"$comma\n);
last;
}
}
}
if (!$sub) {
print $_;
}

View file

@ -39,7 +39,7 @@ function textForMemberEvent(ev) {
}
else {
if (ConferenceHandler && ConferenceHandler.isConferenceUser(ev.getStateKey())) {
return _t('%(senderName)s requested a VoIP conference', {senderName: senderName});
return _t('%(senderName)s requested a VoIP conference.', {senderName: senderName});
}
else {
return _t('%(senderName)s invited %(targetName)s.', {senderName: senderName, targetName: targetName});
@ -53,17 +53,17 @@ function textForMemberEvent(ev) {
case 'join':
if (ev.getPrevContent() && ev.getPrevContent().membership == 'join') {
if (ev.getPrevContent().displayname && ev.getContent().displayname && ev.getPrevContent().displayname != ev.getContent().displayname) {
return _t('%(senderName)s changed their display name from %(oldDisplayName)s to %(displayName)s', {senderName: ev.getSender(), oldDisplayName: ev.getPrevContent().displayname, displayName: ev.getContent().displayname});
return _t('%(senderName)s changed their display name from %(oldDisplayName)s to %(displayName)s.', {senderName: ev.getSender(), oldDisplayName: ev.getPrevContent().displayname, displayName: ev.getContent().displayname});
} else if (!ev.getPrevContent().displayname && ev.getContent().displayname) {
return _t('%(senderName)s set their display name to %(displayName)s', {senderName: ev.getSender(), displayName: ev.getContent().displayname});
return _t('%(senderName)s set their display name to %(displayName)s.', {senderName: ev.getSender(), displayName: ev.getContent().displayname});
} else if (ev.getPrevContent().displayname && !ev.getContent().displayname) {
return _t('%(senderName)s removed their display name (%(oldDisplayName)s)', {senderName: ev.getSender(), oldDisplayName: ev.getPrevContent().displayname});
return _t('%(senderName)s removed their display name (%(oldDisplayName)s).', {senderName: ev.getSender(), oldDisplayName: ev.getPrevContent().displayname});
} else if (ev.getPrevContent().avatar_url && !ev.getContent().avatar_url) {
return _t('%(senderName)s removed their profile picture', {senderName: senderName});
return _t('%(senderName)s removed their profile picture.', {senderName: senderName});
} else if (ev.getPrevContent().avatar_url && ev.getContent().avatar_url && ev.getPrevContent().avatar_url != ev.getContent().avatar_url) {
return _t('%(senderName)s changed their profile picture', {senderName: senderName});
return _t('%(senderName)s changed their profile picture.', {senderName: senderName});
} else if (!ev.getPrevContent().avatar_url && ev.getContent().avatar_url) {
return _t('%(senderName)s set a profile picture', {senderName: senderName});
return _t('%(senderName)s set a profile picture.', {senderName: senderName});
} else {
// suppress null rejoins
return '';
@ -71,7 +71,7 @@ function textForMemberEvent(ev) {
} else {
if (!ev.target) console.warn("Join message has no target! -- " + ev.getContent().state_key);
if (ConferenceHandler && ConferenceHandler.isConferenceUser(ev.getStateKey())) {
return _t('VoIP conference started');
return _t('VoIP conference started.');
}
else {
return _t('%(targetName)s joined the room.', {targetName: targetName});
@ -80,7 +80,7 @@ function textForMemberEvent(ev) {
case 'leave':
if (ev.getSender() === ev.getStateKey()) {
if (ConferenceHandler && ConferenceHandler.isConferenceUser(ev.getStateKey())) {
return _t('VoIP conference finished');
return _t('VoIP conference finished.');
}
else if (ev.getPrevContent().membership === "invite") {
return _t('%(targetName)s rejected the invitation.', {targetName: targetName});
@ -100,7 +100,7 @@ function textForMemberEvent(ev) {
}
else if (ev.getPrevContent().membership === "invite") {
return _t(
'%(senderName)s withdrew %(targetName)s\'s inivitation.',
'%(senderName)s withdrew %(targetName)s\'s invitation.',
{senderName: senderName, targetName: targetName}
) + ' ' + reason;
}
@ -112,13 +112,13 @@ function textForMemberEvent(ev) {
function textForTopicEvent(ev) {
var senderDisplayName = ev.sender && ev.sender.name ? ev.sender.name : ev.getSender();
return _t('%(senderDisplayName)s changed the topic to "%(topic)s"', {senderDisplayName: senderDisplayName, topic: ev.getContent().topic});
return _t('%(senderDisplayName)s changed the topic to "%(topic)s".', {senderDisplayName: senderDisplayName, topic: ev.getContent().topic});
}
function textForRoomNameEvent(ev) {
var senderDisplayName = ev.sender && ev.sender.name ? ev.sender.name : ev.getSender();
return _t('%(senderDisplayName)s changed the room name to %(roomName)s', {senderDisplayName: senderDisplayName, roomName: ev.getContent().name});
return _t('%(senderDisplayName)s changed the room name to %(roomName)s.', {senderDisplayName: senderDisplayName, roomName: ev.getContent().name});
}
function textForMessageEvent(ev) {
@ -135,13 +135,13 @@ function textForMessageEvent(ev) {
function textForCallAnswerEvent(event) {
var senderName = event.sender ? event.sender.name : _t('Someone');
var supported = MatrixClientPeg.get().supportsVoip() ? "" : _t('(not supported by this browser)');
return _t('%(senderName)s answered the call', {senderName: senderName}) + ' ' + supported;
return _t('%(senderName)s answered the call.', {senderName: senderName}) + ' ' + supported;
}
function textForCallHangupEvent(event) {
var senderName = event.sender ? event.sender.name : _t('Someone');
var supported = MatrixClientPeg.get().supportsVoip() ? "" : _t('(not supported by this browser)');
return _t('%(senderName)s ended the call', {senderName: senderName}) + ' ' + supported;
return _t('%(senderName)s ended the call.', {senderName: senderName}) + ' ' + supported;
}
function textForCallInviteEvent(event) {
@ -186,7 +186,7 @@ function textForHistoryVisibilityEvent(event) {
function textForEncryptionEvent(event) {
var senderName = event.sender ? event.sender.name : event.getSender();
return _t('%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s)', {senderName: senderName, algorithm: event.getContent().algorithm});
return _t('%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).', {senderName: senderName, algorithm: event.getContent().algorithm});
}
// Currently will only display a change if a user's power level is changed
@ -224,7 +224,7 @@ function textForPowerEvent(event) {
if (!diff.length) {
return '';
}
return _t('%(senderName)s changed the power level of %(powerLevelDiffText)s', {senderName: senderName, powerLevelDiffText: diff.join(", ")});
return _t('%(senderName)s changed the power level of %(powerLevelDiffText)s.', {senderName: senderName, powerLevelDiffText: diff.join(", ")});
}
var handlers = {

View file

@ -132,7 +132,7 @@
"de": "Tysk",
"da": "Dansk",
"ru": "Russisk",
"%(targetName)s accepted an invitation": "%(targetName)s accepterede en invitation",
"%(targetName)s accepted an invitation.": "%(targetName)s accepterede en invitation.",
"%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s accepteret invitationen til %(displayName)s.",
"%(names)s and %(lastPerson)s are typing": "%(names)s og %(lastPerson)s er ved at skrive",
"%(names)s and one other are typing": "%(names)s og den anden skriver",

View file

@ -258,8 +258,8 @@
"Verification Pending": "Verifizierung ausstehend",
"Video call": "Videoanruf",
"Voice call": "Sprachanruf",
"VoIP conference finished": "VoIP-Konferenz beendet",
"VoIP conference started": "VoIP-Konferenz gestartet",
"VoIP conference finished.": "VoIP-Konferenz beendet.",
"VoIP conference started.": "VoIP-Konferenz gestartet.",
"(warning: cannot be disabled again!)": "(Warnung: Kann nicht wieder deaktiviert werden!)",
"was banned": "wurde gebannt",
"was invited": "wurde eingeladen",
@ -348,19 +348,19 @@
"Encrypt room": "Entschlüssele Raum",
"To send events of type": "Zum Senden von Ereignissen mit Typ",
"%(names)s and %(lastPerson)s are typing": "%(names)s und %(lastPerson)s schreiben",
"%(targetName)s accepted an invitation": "%(targetName)s akzeptierte eine Einladung",
"%(targetName)s accepted an invitation.": "%(targetName)s akzeptierte eine Einladung.",
"%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s akzeptierte eine Einladung für %(displayName)s.",
"%(names)s and one other are typing": "%(names)s und eine weitere Person tippen",
"%(names)s and %(count)s others are typing": "%(names)s und %(count)s weitere Personen tippen",
"%(senderName)s answered the call.": "%(senderName)s beantwortete den Anruf.",
"%(senderName)s banned %(targetName)s.": "%(senderName)s bannte %(targetName)s.",
"%(senderName)s changed their display name from %(oldDisplayName)s to %(displayName)s": "%(senderName)s änderte den Anzeigenamen von %(oldDisplayName)s zu %(displayName)s",
"%(senderName)s changed their profile picture": "%(senderName)s änderte das Profilbild",
"%(senderName)s changed the power level of %(powerLevelDiffText)s": "%(senderName)s änderte das Berechtigungslevel von %(powerLevelDiffText)s",
"%(senderDisplayName)s changed the room name to %(roomName)s": "%(senderDisplayName)s änderte den Raumnamen zu %(roomName)s",
"%(senderName)s changed their display name from %(oldDisplayName)s to %(displayName)s.": "%(senderName)s änderte den Anzeigenamen von %(oldDisplayName)s zu %(displayName)s.",
"%(senderName)s changed their profile picture.": "%(senderName)s änderte das Profilbild.",
"%(senderName)s changed the power level of %(powerLevelDiffText)s.": "%(senderName)s änderte das Berechtigungslevel von %(powerLevelDiffText)s.",
"%(senderDisplayName)s changed the room name to %(roomName)s.": "%(senderDisplayName)s änderte den Raumnamen zu %(roomName)s.",
"%(senderDisplayName)s changed the topic to \"%(topic)s\"": "%(senderDisplayName)s änderte das Thema zu \"%(topic)s\"",
"/ddg is not a command": "/ddg ist kein Kommando",
"%(senderName)s ended the call": "%(senderName)s beendete den Anruf",
"%(senderName)s ended the call.": "%(senderName)s beendete den Anruf.",
"Failed to lookup current room": "Aktuellen Raum nachzuschlagen schlug fehl",
"Failed to send request.": "Anfrage zu senden schlug fehl.",
"%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s von %(fromPowerLevel)s zu %(toPowerLevel)s",
@ -379,22 +379,22 @@
"Power level must be positive integer.": "Berechtigungslevel muss eine positive Zahl sein.",
"Reason": "Grund",
"%(targetName)s rejected the invitation.": "%(targetName)s lehnte die Einladung ab.",
"%(senderName)s removed their display name (%(oldDisplayName)s)": "%(senderName)s löschte den Anzeigenamen (%(oldDisplayName)s)",
"%(senderName)s removed their profile picture": "%(senderName)s löschte das Profilbild",
"%(senderName)s requested a VoIP conference": "%(senderName)s fragte nach einer VoIP-Konferenz",
"%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName)s löschte den Anzeigenamen (%(oldDisplayName)s).",
"%(senderName)s removed their profile picture.": "%(senderName)s löschte das Profilbild.",
"%(senderName)s requested a VoIP conference.": "%(senderName)s fragte nach einer VoIP-Konferenz.",
"Room %(roomId)s not visible": "Raum %(roomId)s ist nicht sichtbar",
"%(senderDisplayName)s sent an image.": "%(senderDisplayName)s hat ein Bild gesendet.",
"%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "%(senderName)s sandte eine Einladung an %(targetDisplayName)s um diesem Raum beizutreten.",
"%(senderName)s set a profile picture": "%(senderName)s setzte ein Profilbild",
"%(senderName)s set their display name to %(displayName)s": "%(senderName)s setzte den Anzeigenamen zu %(displayName)s",
"%(senderName)s set a profile picture.": "%(senderName)s setzte ein Profilbild.",
"%(senderName)s set their display name to %(displayName)s.": "%(senderName)s setzte den Anzeigenamen zu %(displayName)s.",
"This room is not recognised.": "Dieser Raum wurde nicht erkannt.",
"These are experimental features that may break in unexpected ways": "Dies sind experimentelle Funktionen, die in unerwarteter Weise Fehler verursachen können",
"To use it, just wait for autocomplete results to load and tab through them.": "Um dies zu nutzen, warte auf die Autovervollständigungsergebnisse und benutze die TAB Taste.",
"%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s)": "%(senderName)s schaltete Ende-zu-Ende-Verschlüsselung ein (Algorithmus: %(algorithm)s)",
"%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).": "%(senderName)s schaltete Ende-zu-Ende-Verschlüsselung ein (Algorithmus: %(algorithm)s).",
"%(senderName)s unbanned %(targetName)s.": "%(senderName)s zog Bann für %(targetName)s zurück.",
"Usage": "Verwendung",
"Use with caution": "Mit Vorsicht benutzen",
"%(senderName)s withdrew %(targetName)s's inivitation.": "%(senderName)s zog die Einladung für %(targetName)s zurück.",
"%(senderName)s withdrew %(targetName)s's invitation.": "%(senderName)s zog die Einladung für %(targetName)s zurück.",
"You need to be able to invite users to do that.": "Du musst in der Lage sein Nutzer einzuladen um dies zu tun.",
"You need to be logged in.": "Du musst angemeldet sein.",
"There are no visible files in this room": "Es gibt keine sichtbaren Dateien in diesem Raum",

View file

@ -124,7 +124,7 @@
"A registered account is required for this action": "A registered account is required for this action",
"A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains",
"accept": "accept",
"%(targetName)s accepted an invitation": "%(targetName)s accepted an invitation",
"%(targetName)s accepted an invitation.": "%(targetName)s accepted an invitation.",
"%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s accepted the invitation for %(displayName)s.",
"Account": "Account",
"Access Token:": "Access Token:",
@ -172,10 +172,10 @@
"Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or %(urlStart)s enable unsafe scripts %(urlEnd)s": "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or %(urlStart)s enable unsafe scripts %(urlEnd)s",
"Can't load user settings": "Can't load user settings",
"Change Password": "Change Password",
"%(senderName)s changed their display name from %(oldDisplayName)s to %(displayName)s": "%(senderName)s changed their display name from %(oldDisplayName)s to %(displayName)s",
"%(senderName)s changed their profile picture": "%(senderName)s changed their profile picture",
"%(senderName)s changed the power level of %(powerLevelDiffText)s": "%(senderName)s changed the power level of %(powerLevelDiffText)s",
"%(senderDisplayName)s changed the room name to %(roomName)s": "%(senderDisplayName)s changed the room name to %(roomName)s",
"%(senderName)s changed their display name from %(oldDisplayName)s to %(displayName)s.": "%(senderName)s changed their display name from %(oldDisplayName)s to %(displayName)s.",
"%(senderName)s changed their profile picture.": "%(senderName)s changed their profile picture.",
"%(senderName)s changed the power level of %(powerLevelDiffText)s.": "%(senderName)s changed the power level of %(powerLevelDiffText)s.",
"%(senderDisplayName)s changed the room name to %(roomName)s.": "%(senderDisplayName)s changed the room name to %(roomName)s.",
"%(senderDisplayName)s changed the topic to \"%(topic)s\"": "%(senderDisplayName)s changed the topic to \"%(topic)s\"",
"Changes to who can read history will only apply to future messages in this room": "Changes to who can read history will only apply to future messages in this room",
"Changes your display nickname": "Changes your display nickname",
@ -235,7 +235,7 @@
"Enable encryption": "Enable encryption",
"Encrypted messages will not be visible on clients that do not yet implement encryption": "Encrypted messages will not be visible on clients that do not yet implement encryption",
"Encrypted room": "Encrypted room",
"%(senderName)s ended the call": "%(senderName)s ended the call",
"%(senderName)s ended the call.": "%(senderName)s ended the call.",
"End-to-end encryption information": "End-to-end encryption information",
"End-to-end encryption is in beta and may not be reliable": "End-to-end encryption is in beta and may not be reliable",
"Enter Code": "Enter Code",
@ -381,10 +381,10 @@
"%(targetName)s rejected the invitation.": "%(targetName)s rejected the invitation.",
"Reject invitation": "Reject invitation",
"Remove Contact Information?": "Remove Contact Information?",
"%(senderName)s removed their display name (%(oldDisplayName)s)": "%(senderName)s removed their display name (%(oldDisplayName)s)",
"%(senderName)s removed their profile picture": "%(senderName)s removed their profile picture",
"%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName)s removed their display name (%(oldDisplayName)s).",
"%(senderName)s removed their profile picture.": "%(senderName)s removed their profile picture.",
"Remove": "Remove",
"%(senderName)s requested a VoIP conference": "%(senderName)s requested a VoIP conference",
"%(senderName)s requested a VoIP conference.": "%(senderName)s requested a VoIP conference.",
"Report it": "Report it",
"Resetting password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved": "Resetting password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved",
"restore": "restore",
@ -418,8 +418,8 @@
"Server may be unavailable, overloaded, or you hit a bug": "Server may be unavailable, overloaded, or you hit a bug",
"Server unavailable, overloaded, or something else went wrong": "Server unavailable, overloaded, or something else went wrong",
"Session ID": "Session ID",
"%(senderName)s set a profile picture": "%(senderName)s set a profile picture",
"%(senderName)s set their display name to %(displayName)s": "%(senderName)s set their display name to %(displayName)s",
"%(senderName)s set a profile picture.": "%(senderName)s set a profile picture.",
"%(senderName)s set their display name to %(displayName)s.": "%(senderName)s set their display name to %(displayName)s.",
"Settings": "Settings",
"Show panel": "Show panel",
"Show timestamps in 12 hour format (e.g. 2:30pm)": "Show timestamps in 12 hour format (e.g. 2:30pm)",
@ -483,7 +483,7 @@
"Tried to load a specific point in this room's timeline, but was unable to find it": "Tried to load a specific point in this room's timeline, but was unable to find it",
"Turn Markdown off": "Turn Markdown off",
"Turn Markdown on": "Turn Markdown on",
"%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s)": "%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s)",
"%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).": "%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).",
"Unable to add email address": "Unable to add email address",
"Unable to remove contact information": "Unable to remove contact information",
"Unable to restore previous session": "Unable to restore previous session",
@ -517,8 +517,8 @@
"verified": "verified",
"Video call": "Video call",
"Voice call": "Voice call",
"VoIP conference finished": "VoIP conference finished",
"VoIP conference started": "VoIP conference started",
"VoIP conference finished.": "VoIP conference finished.",
"VoIP conference started.": "VoIP conference started.",
"VoIP is unsupported": "VoIP is unsupported",
"(warning: cannot be disabled again!)": "(warning: cannot be disabled again!)",
"Warning!": "Warning!",
@ -526,7 +526,7 @@
"Who can read history?": "Who can read history?",
"Who would you like to add to this room?": "Who would you like to add to this room?",
"Who would you like to communicate with?": "Who would you like to communicate with?",
"%(senderName)s withdrew %(targetName)s's inivitation.": "%(senderName)s withdrew %(targetName)s's inivitation.",
"%(senderName)s withdrew %(targetName)s's invitation.": "%(senderName)s withdrew %(targetName)s's invitation.",
"Would you like to": "Would you like to",
"You are already in a call": "You are already in a call",
"You're not in any rooms yet! Press": "You're not in any rooms yet! Press",

View file

@ -137,7 +137,7 @@
"Enable encryption": "Activer l'encryption",
"Encrypted messages will not be visible on clients that do not yet implement encryption": "Les messages encryptés ne seront pas visibles dans les clients qui nimplémentent pas encore lencryption",
"Encrypted room": "Salon encrypté",
"%(senderName)s ended the call": "%(senderName)s a terminé lappel",
"%(senderName)s ended the call.": "%(senderName)s a terminé lappel.",
"End-to-end encryption information": "Information sur l'encryption bout-en-bout",
"End-to-end encryption is in beta and may not be reliable": "Lencryption bout-en-bout est en béta et risque de ne pas être fiable",
"Enter Code": "Entrer le code",
@ -173,8 +173,8 @@
"Failed to join the room": "Échec de l'adhésion au salon",
"A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "Un message texte a été envoyé à +%(msisdn)s. Merci d'entrer le code de vérification qu'il contient",
"accept": "Accepter",
"%(targetName)s accepted an invitation": "%(targetName)s a accepté une invitation",
"%(targetName)s accepted the invitation for %(displayName)s": "%(targetName)s a accepté une invitation de %(displayName)s",
"%(targetName)s accepted an invitation.": "%(targetName)s a accepté une invitation.",
"%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s a accepté une invitation de %(displayName)s.",
"Account": "Compte",
"Add email address": "Ajouter une adresse e-mail",
"Add phone number": "Ajouter un numéro de téléphone",
@ -196,7 +196,7 @@
"%(names)s and %(count)s others are typing": "%(names)s et %(count)s d'autres sont en train de taper",
"An email has been sent to": "Un e-mail a été envoyé à",
"A new password must be entered.": "Un nouveau mot de passe doit être entré.",
"%(senderName)s answered the call": "%(senderName)s a répondu à lappel",
"%(senderName)s answered the call.": "%(senderName)s a répondu à lappel.",
"Anyone who knows the room's link, apart from guests": "Tout ceux qui connaissent le lien du salon, à part les invités",
"Anyone who knows the room's link, including guests": "Tout ceux qui connaissent le lien du salon, y compris les invités",
"Are you sure?": "Êtes-vous sûr ?",
@ -204,7 +204,7 @@
"Are you sure you want upload the following files?": "Êtes-vous sûr de vouloir télécharger les fichiers suivants ?",
"Attachment": "Pièce jointe",
"Autoplay GIFs and videos": "Jouer automatiquement les GIFs et vidéos",
"%(senderName)s banned %(targetName)s": "%(senderName)s a banni %(targetName)s",
"%(senderName)s banned %(targetName)s.": "%(senderName)s a banni %(targetName)s.",
"Ban": "Bannir",
"Banned users": "Utilisateurs bannis",
"Bans user with given id": "Utilisateurs bannis avec un identifiant donné",
@ -215,10 +215,10 @@
"Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or %(urlStart)s enable unsafe scripts %(urlEnd)s": "Impossible de se connecter au homeserver en HTTP si l'URL dans la barre de votre explorateur est en HTTPS. Utilisez HTTPS ou %(urlStart)s activez le support des scripts non-vérifiés %(urlEnd)s",
"Can't load user settings": "Impossible de charger les paramètres utilisateur",
"Change Password": "Changer le mot de passe",
"%(senderName)s changed their display name from %(oldDisplayName)s to %(displayName)s": "%(senderName)s a changé son nom daffichage de %(oldDisplayName)s en %(displayName)s",
"%(senderName)s changed their profile picture": "%(senderName)s a changé sa photo de profil",
"%(senderName)s changed the power level of %(powerLevelDiffText)s": "%(senderName)s a changé le niveau de pouvoir de %(powerLevelDiffText)s",
"%(senderDisplayName)s changed the room name to %(roomName)s": "%(senderDisplayName)s a changé le nom du salon en %(roomName)s",
"%(senderName)s changed their display name from %(oldDisplayName)s to %(displayName)s.": "%(senderName)s a changé son nom daffichage de %(oldDisplayName)s en %(displayName)s.",
"%(senderName)s changed their profile picture.": "%(senderName)s a changé sa photo de profil.",
"%(senderName)s changed the power level of %(powerLevelDiffText)s.": "%(senderName)s a changé le niveau de pouvoir de %(powerLevelDiffText)s.",
"%(senderDisplayName)s changed the room name to %(roomName)s.": "%(senderDisplayName)s a changé le nom du salon en %(roomName)s.",
"%(senderDisplayName)s changed the topic to \"%(topic)s\"": "%(senderDisplayName)s a changé le sujet du salon en \"%(topic)s\"",
"Changes to who can read history will only apply to future messages in this room": "Les changements de visibilité de lhistorique de ce salon ne sappliquent quaux messages futurs",
"Changes your display nickname": "Change votre nom d'affichage",

View file

@ -254,8 +254,8 @@
"verified": "verificado",
"Video call": "Chamada de vídeo",
"Voice call": "Chamada de voz",
"VoIP conference finished": "Conferência VoIP encerrada",
"VoIP conference started": "Conferência VoIP iniciada",
"VoIP conference finished.": "Conferência VoIP encerrada.",
"VoIP conference started.": "Conferência VoIP iniciada.",
"(warning: cannot be disabled again!)": "(atenção: esta operação não poderá ser desfeita depois!)",
"Warning!": "Atenção!",
"was banned": "banida/o",
@ -304,7 +304,7 @@
"de": "Alemão",
"da": "Dinamarquês",
"ru": "Russo",
"%(targetName)s accepted an invitation": "%(targetName)s aceitou um convite.",
"%(targetName)s accepted an invitation.": "%(targetName)s aceitou um convite.",
"%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s aceitou o convite para %(displayName)s.",
"all room members, from the point they are invited": "todas/os as/os integrantes da sala, a partir do momento em que foram convidadas/os",
"all room members, from the point they joined": "todas/os as/os integrantes da sala, a partir do momento em que entraram na sala",
@ -315,10 +315,10 @@
"anyone.": "qualquer pessoa",
"%(senderName)s banned %(targetName)s.": "%(senderName)s removeu %(targetName)s da sala.",
"Call Timeout": "Tempo esgotado. Chamada encerrada",
"%(senderName)s changed their display name from %(oldDisplayName)s to %(displayName)s": "%(senderName)s mudou seu nome público de %(oldDisplayName)s para %(displayName)s",
"%(senderName)s changed their profile picture": "%(senderName)s alterou sua imagem de perfil",
"%(senderName)s changed the power level of %(powerLevelDiffText)s": "%(senderName)s alterou o nível de permissões de %(powerLevelDiffText)s",
"%(senderDisplayName)s changed the room name to %(roomName)s": "%(senderDisplayName)s alterou o nome da sala para %(roomName)s",
"%(senderName)s changed their display name from %(oldDisplayName)s to %(displayName)s.": "%(senderName)s mudou seu nome público de %(oldDisplayName)s para %(displayName)s.",
"%(senderName)s changed their profile picture.": "%(senderName)s alterou sua imagem de perfil.",
"%(senderName)s changed the power level of %(powerLevelDiffText)s.": "%(senderName)s alterou o nível de permissões de %(powerLevelDiffText)s.",
"%(senderDisplayName)s changed the room name to %(roomName)s.": "%(senderDisplayName)s alterou o nome da sala para %(roomName)s.",
"%(senderDisplayName)s changed the topic to \"%(topic)s\"": "%(senderDisplayName)s alterou o tópico para \"%(topic)s\"",
"click to reveal": "clique para ver",
"Conference call failed": "Chamada de conferência falhou",
@ -328,7 +328,7 @@
"/ddg is not a command": "/ddg não é um comando",
"Drop here %(toAction)s": "Arraste aqui %(toAction)s",
"Drop here to tag %(section)s": "Arraste aqui para marcar como %(section)s",
"%(senderName)s ended the call": "%(senderName)s finalizou a chamada",
"%(senderName)s ended the call.": "%(senderName)s finalizou a chamada.",
"Existing Call": "Chamada em andamento",
"Failed to lookup current room": "Não foi possível buscar na sala atual",
"Failed to send email": "Não foi possível enviar email",
@ -342,7 +342,7 @@
"%(displayName)s is typing": "%(displayName)s está escrevendo",
"%(targetName)s joined the room.": "%(targetName)s entrou na sala.",
"%(senderName)s kicked %(targetName)s.": "%(senderName)s removeu %(targetName)s da sala.",
"%(targetName)s left the room": "%(targetName)s saiu da sala",
"%(targetName)s left the room.": "%(targetName)s saiu da sala.",
"%(senderName)s made future room history visible to": "%(senderName)s deixou o histórico futuro da sala visível para",
"Missing room_id in request": "Faltou o id da sala na requisição",
"Missing user_id in request": "Faltou o id de usuário na requisição",
@ -356,16 +356,16 @@
"Reason": "Razão",
"Refer a friend to Riot": "Recomende Riot a um/a amigo/a",
"%(targetName)s rejected the invitation.": "%(targetName)s recusou o convite.",
"%(senderName)s removed their display name (%(oldDisplayName)s)": "%(senderName)s removeu o seu nome público (%(oldDisplayName)s)",
"%(senderName)s removed their profile picture": "%(senderName)s removeu sua imagem de perfil",
"%(senderName)s requested a VoIP conference": "%(senderName)s está solicitando uma conferência de voz",
"%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName)s removeu o seu nome público (%(oldDisplayName)s).",
"%(senderName)s removed their profile picture.": "%(senderName)s removeu sua imagem de perfil.",
"%(senderName)s requested a VoIP conference.": "%(senderName)s está solicitando uma conferência de voz.",
"Riot does not have permission to send you notifications - please check your browser settings": "Riot não tem permissões para enviar notificações a você - por favor, verifique as configurações do seu navegador",
"Riot was not given permission to send notifications - please try again": "Riot não tem permissões para enviar notificações a você - por favor, tente novamente",
"Room %(roomId)s not visible": "A sala %(roomId)s não está visível",
"%(senderDisplayName)s sent an image.": "%(senderDisplayName)s enviou uma imagem.",
"%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "%(senderName)s enviou um convite para %(targetDisplayName)s entrar na sala.",
"%(senderName)s set a profile picture": "%(senderName)s definiu uma imagem de perfil",
"%(senderName)s set their display name to %(displayName)s": "%(senderName)s definiu seu nome público para %(displayName)s",
"%(senderName)s set a profile picture.": "%(senderName)s definiu uma imagem de perfil.",
"%(senderName)s set their display name to %(displayName)s.": "%(senderName)s definiu seu nome público para %(displayName)s.",
"tag as %(tagName)s": "marcar como %(tagName)s",
"This email address is already in use": "Este endereço de email já está sendo usado",
"This email address was not found": "Este endereço de email não foi encontrado",
@ -384,7 +384,7 @@
"to start a chat with someone": "para iniciar uma conversa com alguém",
"to tag direct chat": "para marcar a conversa como pessoal",
"To use it, just wait for autocomplete results to load and tab through them.": "Para usar esta funcionalidade, espere o carregamento dos resultados de autocompletar e então escolha entre as opções.",
"%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s)": "%(senderName)s ativou criptografia ponta a ponta (algoritmo %(algorithm)s)",
"%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).": "%(senderName)s ativou criptografia ponta a ponta (algoritmo %(algorithm)s).",
"Unable to restore previous session": "Não foi possível restaurar a sessão anterior",
"%(senderName)s unbanned %(targetName)s.": "%(senderName)s desfez o banimento de %(targetName)s.",
"Unable to capture screen": "Não foi possível capturar a imagem da tela",
@ -393,7 +393,7 @@
"Usage": "Uso",
"Use with caution": "Use com cautela",
"VoIP is unsupported": "Chamada de voz não permitida",
"%(senderName)s withdrew %(targetName)s's inivitation.": "%(senderName)s desfez o convite a %(targetName)s's.",
"%(senderName)s withdrew %(targetName)s's invitation.": "%(senderName)s desfez o convite a %(targetName)s's.",
"You are already in a call": "Você já está em uma chamada",
"You're not in any rooms yet! Press": "Você ainda não está em nenhuma sala! Pressione",
"You are trying to access %(roomName)s": "Você está tentando acessar a sala %(roomName)s",

View file

@ -259,8 +259,8 @@
"verified": "verificado",
"Video call": "Chamada de vídeo",
"Voice call": "Chamada de voz",
"VoIP conference finished": "Conferência VoIP encerrada",
"VoIP conference started": "Conferência VoIP iniciada",
"VoIP conference finished.": "Conferência VoIP encerrada.",
"VoIP conference started.": "Conferência VoIP iniciada.",
"(warning: cannot be disabled again!)": "(atenção: esta operação não poderá ser desfeita depois!)",
"Warning": "Atenção!",
"was banned": "banida/o",
@ -309,7 +309,7 @@
"de": "Alemão",
"da": "Dinamarquês",
"ru": "Russo",
"%(targetName)s accepted an invitation": "%(targetName)s aceitou um convite",
"%(targetName)s accepted an invitation.": "%(targetName)s aceitou um convite.",
"%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s aceitou o convite para %(displayName)s.",
"all room members, from the point they are invited": "todas/os as/os integrantes da sala, a partir do momento em que foram convidadas/os",
"all room members, from the point they joined": "todas/os as/os integrantes da sala, a partir do momento em que entraram na sala",
@ -320,10 +320,10 @@
"anyone.": "qualquer pessoa",
"%(senderName)s banned %(targetName)s.": "%(senderName)s removeu %(targetName)s da sala.",
"Call Timeout": "Tempo esgotado. Chamada encerrada",
"%(senderName)s changed their display name from %(oldDisplayName)s to %(displayName)s": "%(senderName)s mudou seu nome público de %(oldDisplayName)s para %(displayName)s",
"%(senderName)s changed their profile picture": "%(senderName)s alterou sua imagem de perfil",
"%(senderName)s changed the power level of %(powerLevelDiffText)s": "%(senderName)s alterou o nível de permissões de %(powerLevelDiffText)s",
"%(senderDisplayName)s changed the room name to %(roomName)s": "%(senderDisplayName)s alterou o nome da sala para %(roomName)s",
"%(senderName)s changed their display name from %(oldDisplayName)s to %(displayName)s.": "%(senderName)s mudou seu nome público de %(oldDisplayName)s para %(displayName)s.",
"%(senderName)s changed their profile picture.": "%(senderName)s alterou sua imagem de perfil.",
"%(senderName)s changed the power level of %(powerLevelDiffText)s.": "%(senderName)s alterou o nível de permissões de %(powerLevelDiffText)s.",
"%(senderDisplayName)s changed the room name to %(roomName)s.": "%(senderDisplayName)s alterou o nome da sala para %(roomName)s.",
"click to reveal": "clique para ver",
"Conference call failed": "Chamada de conferência falhou",
"Conference calling is in development and may not be reliable": "Chamadas de conferência estão em desenvolvimento e portanto podem não funcionar",
@ -332,7 +332,7 @@
"/ddg is not a command": "/ddg não é um comando",
"Drop here %(toAction)s": "Arraste aqui %(toAction)s",
"Drop here to tag %(section)s": "Arraste aqui para marcar como %(section)s",
"%(senderName)s ended the call": "%(senderName)s finalizou a chamada",
"%(senderName)s ended the call.": "%(senderName)s finalizou a chamada.",
"Existing Call": "Chamada em andamento",
"Failed to lookup current room": "Não foi possível buscar na sala atual",
"Failed to send email": "Não foi possível enviar email",
@ -360,16 +360,16 @@
"Reason": "Razão",
"Refer a friend to Riot": "Recomende Riot a um/a amigo/a",
"%(targetName)s rejected the invitation.": "%(targetName)s recusou o convite.",
"%(senderName)s removed their display name (%(oldDisplayName)s)": "%(senderName)s removeu o seu nome público (%(oldDisplayName)s)",
"%(senderName)s removed their profile picture": "%(senderName)s removeu sua imagem de perfil",
"%(senderName)s requested a VoIP conference": "%(senderName)s está solicitando uma conferência de voz",
"%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName)s removeu o seu nome público (%(oldDisplayName)s).",
"%(senderName)s removed their profile picture.": "%(senderName)s removeu sua imagem de perfil.",
"%(senderName)s requested a VoIP conference.": "%(senderName)s está solicitando uma conferência de voz.",
"Riot does not have permission to send you notifications - please check your browser settings": "Riot não tem permissões para enviar notificações a você - por favor, verifique as configurações do seu navegador",
"Riot was not given permission to send notifications - please try again": "Riot não tem permissões para enviar notificações a você - por favor, tente novamente",
"Room %(roomId)s not visible": "A sala %(roomId)s não está visível",
"%(senderDisplayName)s sent an image.": "%(senderDisplayName)s enviou uma imagem.",
"%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "%(senderName)s enviou um convite para %(targetDisplayName)s entrar na sala.",
"%(senderName)s set a profile picture": "%(senderName)s definiu uma imagem de perfil",
"%(senderName)s set their display name to %(displayName)s": "%(senderName)s definiu seu nome público para %(displayName)s",
"%(senderName)s set a profile picture.": "%(senderName)s definiu uma imagem de perfil.",
"%(senderName)s set their display name to %(displayName)s.": "%(senderName)s definiu seu nome público para %(displayName)s.",
"tag as %(tagName)s": "marcar como %(tagName)s",
"This email address is already in use": "Este endereço de email já está sendo usado",
"This email address was not found": "Este endereço de email não foi encontrado",
@ -389,7 +389,7 @@
"to tag as %(tagName)s": "para marcar como %(tagName)s",
"to tag direct chat": "para marcar a conversa como pessoal",
"To use it, just wait for autocomplete results to load and tab through them.": "Para usar esta funcionalidade, espere o carregamento dos resultados de autocompletar e então escolha entre as opções.",
"%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s)": "%(senderName)s ativou criptografia ponta a ponta (algoritmo %(algorithm)s)",
"%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).": "%(senderName)s ativou criptografia ponta a ponta (algoritmo %(algorithm)s).",
"Unable to restore previous session": "Não foi possível restaurar a sessão anterior",
"%(senderName)s unbanned %(targetName)s.": "%(senderName)s desfez o banimento de %(targetName)s.",
"Unable to capture screen": "Não foi possível capturar a imagem da tela",
@ -398,7 +398,7 @@
"Usage": "Uso",
"Use with caution": "Use com cautela",
"VoIP is unsupported": "Chamada de voz não permitida",
"%(senderName)s withdrew %(targetName)s's inivitation.": "%(senderName)s desfez o convite a %(targetName)s.",
"%(senderName)s withdrew %(targetName)s's invitation.": "%(senderName)s desfez o convite a %(targetName)s.",
"You are already in a call": "Você já está em uma chamada",
"You're not in any rooms yet! Press": "Você ainda não está em nenhuma sala! Pressione",
"You are trying to access %(roomName)s": "Você está tentando acessar a sala %(roomName)s",

View file

@ -188,8 +188,8 @@
"verified": "проверенный",
"Video call": "Видио вызов",
"Voice call": "Голосовой вызов",
"VoIP conference finished": "VoIP конференция закончилась",
"VoIP conference started": "VoIP Конференция стартовала",
"VoIP conference finished.": "VoIP конференция закончилась.",
"VoIP conference started.": "VoIP Конференция стартовала.",
"(warning: cannot be disabled again!)": "(предупреждение: не может быть снова отключен!)",
"Warning!": "Предупреждение!",
"was banned": "запрещен",
@ -216,7 +216,7 @@
"de": "Немецкий",
"da": "Датский",
"ru": "Русский",
"%(targetName)s accepted an invitation": "%(targetName)s принял приглашение",
"%(targetName)s accepted an invitation.": "%(targetName)s принял приглашение.",
"%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s принял приглашение от %(displayName)s.",
"Resend all": "Переслать снова всем",
"cancel all": "отменить всем",
@ -227,10 +227,10 @@
"%(senderName)s answered the call.": "%(senderName)s ответил на звонок.",
"%(senderName)s banned %(targetName)s.": "%(senderName)s запрещенный %(targetName)s.",
"Call Timeout": "Время ожидания вызова",
"%(senderName)s changed their display name from %(oldDisplayName)s to %(displayName)s": "%(senderName)s их имя измененное с %(oldDisplayName)s на %(displayName)s",
"%(senderName)s changed their profile picture": "%(senderName)s измененное ихнее фото профиля",
"%(senderName)s changed the power level of %(powerLevelDiffText)s": "%(senderName)s уровень мощности изменен на %(powerLevelDiffText)s",
"%(senderDisplayName)s changed the room name to %(roomName)s": "%(senderDisplayName)s имя комнаты измененно на %(roomName)s",
"%(senderName)s changed their display name from %(oldDisplayName)s to %(displayName)s.": "%(senderName)s их имя измененное с %(oldDisplayName)s на %(displayName)s.",
"%(senderName)s changed their profile picture.": "%(senderName)s измененное ихнее фото профиля.",
"%(senderName)s changed the power level of %(powerLevelDiffText)s.": "%(senderName)s уровень мощности изменен на %(powerLevelDiffText)s.",
"%(senderDisplayName)s changed the room name to %(roomName)s.": "%(senderDisplayName)s имя комнаты измененно на %(roomName)s.",
"%(senderDisplayName)s changed the topic to \"%(topic)s\"": "%(senderDisplayName)s измененная тема на %(topic)s",
"Conference call failed": "Конференц-вызов прервался",
"Conference calling is in development and may not be reliable": "Конференц-вызов находится в процессе и может не быть надежным",
@ -239,7 +239,7 @@
"/ddg is not a command": "/ddg не команда",
"Drop here %(toAction)s": "Вставить здесь %(toAction)s",
"Drop here to tag %(section)s": "Вставить здесь для тега %(section)s",
"%(senderName)s ended the call": "%(senderName)s прекратил звонок",
"%(senderName)s ended the call.": "%(senderName)s прекратил звонок.",
"Existing Call": "Существующий вызов",
"Failed to lookup current room": "Не удалось выполнить поиск текущий комнаты",
"Failed to send request.": "Не удалось выслать запрос.",
@ -251,7 +251,7 @@
"click to reveal": "нажать для открытия",
"%(senderName)s invited %(targetName)s.": "%(senderName)s приглашает %(targetName)s.",
"%(displayName)s is typing": "%(displayName)s вводит текст",
"%(targetName)s joined the room": "%(targetName)s присоединенный к комнате",
"%(targetName)s joined the room.": "%(targetName)s присоединенный к комнате.",
"%(senderName)s kicked %(targetName)s.": "%(senderName)s выкинул %(targetName)s.",
"%(targetName)s left the room.": "%(targetName)s покинул комнату.",
"%(senderName)s made future room history visible to": "%(senderName)s история сделаной будущей комнаты, видимая для",
@ -364,7 +364,7 @@
"You're not in any rooms yet! Press": "Вы еще не находитесь ни в каких комнатах! Нажать",
"You are trying to access %(roomName)s": "Вы пытаетесь получить доступ %(roomName)s",
"You cannot place a call with yourself": "Вы не можете позвонить самим себе",
"%(senderName)s withdrew %(targetName)s's inivitation.": "%(senderName)s анулировал %(targetName)s's преглашение.",
"%(senderName)s withdrew %(targetName)s's invitation.": "%(senderName)s анулировал %(targetName)s's преглашение.",
"Sep": "Сен.",
"Jan": "Янв.",
"Feb": "Фев.",
@ -390,7 +390,7 @@
"to start a chat with someone": "Начать чат с кем-то",
"to tag direct chat": "Пометить прямой чат",
"To use it, just wait for autocomplete results to load and tab through them.": "Для его использования, просто подождите результатов автозаполнения для загрузки на вкладке и через них.",
"%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s)": "%(senderName)s включил сквозное шифрование (algorithm %(algorithm)s)",
"%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).": "%(senderName)s включил сквозное шифрование (algorithm %(algorithm)s).",
"Unable to restore previous session": "Невозможно востановить предыдущий сеанс",
"%(senderName)s unbanned %(targetName)s.": "%(senderName)s запрет отменен %(targetName)s.",
"Unable to capture screen": "Невозможно записать снимок экрана",
@ -537,9 +537,9 @@
"%(targetName)s rejected the invitation.": "%(targetName)s отклонил приглашение.",
"Reject invitation": "Отклонить приглашение",
"Remove Contact Information?": "Убрать контактную информацию?",
"%(senderName)s removed their display name (%(oldDisplayName)s)": "%(senderName)s убрал своё отображаемое имя (%(oldDisplayName)s)",
"%(senderName)s removed their profile picture": "%(senderName)s убрал своё изображение",
"%(senderName)s requested a VoIP conference": "%(senderName)s запросил голосовую конференц-связь",
"%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName)s убрал своё отображаемое имя (%(oldDisplayName)s).",
"%(senderName)s removed their profile picture.": "%(senderName)s убрал своё изображение.",
"%(senderName)s requested a VoIP conference.": "%(senderName)s запросил голосовую конференц-связь.",
"Report it": "Сообщить об этом",
"Resetting password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved": "На данный момент сброс пароля сбросит все ключи шифрования на всех устройствах, зашифрованная история общения будет нечитаема, если вы сперва не скачаете ваши ключи от комнаты и не загрузите их после. В будущем это будет улучшено",
"restore": "восстановить",