From 43d8ccf1287f0efa6bf80d7e8a2f05a5f78ad357 Mon Sep 17 00:00:00 2001 From: David Baker Date: Thu, 25 May 2017 19:21:18 +0100 Subject: [PATCH] Hopefully sort out strings with appended '.'s --- src/ScalarMessaging.js | 22 ++++++++++---------- src/SlashCommands.js | 2 +- src/TextForEvent.js | 39 +++++++++++++++++++++++------------- src/i18n/strings/da.json | 4 ++-- src/i18n/strings/de_DE.json | 40 ++++++++++++++++++------------------- src/i18n/strings/en_EN.json | 40 ++++++++++++++++++------------------- src/i18n/strings/fr.json | 2 +- src/i18n/strings/pt.json | 38 +++++++++++++++++------------------ src/i18n/strings/pt_BR.json | 40 ++++++++++++++++++------------------- src/i18n/strings/ru.json | 26 ++++++++++++------------ 10 files changed, 132 insertions(+), 121 deletions(-) diff --git a/src/ScalarMessaging.js b/src/ScalarMessaging.js index b120125e0e..8c591f7cb2 100644 --- a/src/ScalarMessaging.js +++ b/src/ScalarMessaging.js @@ -151,7 +151,7 @@ function inviteUser(event, roomId, userId) { console.log(`Received request to invite ${userId} into room ${roomId}`); const client = MatrixClientPeg.get(); if (!client) { - sendError(event, _t('You need to be logged in') + '.'); + sendError(event, _t('You need to be logged in.')); return; } const room = client.getRoom(roomId); @@ -171,7 +171,7 @@ function inviteUser(event, roomId, userId) { success: true, }); }, function(err) { - sendError(event, _t('You need to be able to invite users to do that') + '.', err); + sendError(event, _t('You need to be able to invite users to do that.'), err); }); } @@ -182,7 +182,7 @@ function setPlumbingState(event, roomId, status) { console.log(`Received request to set plumbing state to status "${status}" in room ${roomId}`); const client = MatrixClientPeg.get(); if (!client) { - sendError(event, _t('You need to be logged in') + '.'); + sendError(event, _t('You need to be logged in.')); return; } client.sendStateEvent(roomId, "m.room.plumbing", { status : status }).done(() => { @@ -190,7 +190,7 @@ function setPlumbingState(event, roomId, status) { success: true, }); }, (err) => { - sendError(event, err.message ? err.message : _t('Failed to send request') + '.', err); + sendError(event, err.message ? err.message : _t('Failed to send request.'), err); }); } @@ -198,7 +198,7 @@ function setBotOptions(event, roomId, userId) { console.log(`Received request to set options for bot ${userId} in room ${roomId}`); const client = MatrixClientPeg.get(); if (!client) { - sendError(event, _t('You need to be logged in') + '.'); + sendError(event, _t('You need to be logged in.')); return; } client.sendStateEvent(roomId, "m.room.bot.options", event.data.content, "_" + userId).done(() => { @@ -206,20 +206,20 @@ function setBotOptions(event, roomId, userId) { success: true, }); }, (err) => { - sendError(event, err.message ? err.message : _t('Failed to send request') + '.', err); + sendError(event, err.message ? err.message : _t('Failed to send request.'), err); }); } function setBotPower(event, roomId, userId, level) { if (!(Number.isInteger(level) && level >= 0)) { - sendError(event, _t('Power level must be positive integer') + '.'); + sendError(event, _t('Power level must be positive integer.')); return; } console.log(`Received request to set power level to ${level} for bot ${userId} in room ${roomId}.`); const client = MatrixClientPeg.get(); if (!client) { - sendError(event, _t('You need to be logged in') + '.'); + sendError(event, _t('You need to be logged in.')); return; } @@ -236,7 +236,7 @@ function setBotPower(event, roomId, userId, level) { success: true, }); }, (err) => { - sendError(event, err.message ? err.message : _t('Failed to send request') + '.', err); + sendError(event, err.message ? err.message : _t('Failed to send request.'), err); }); }); } @@ -259,12 +259,12 @@ function botOptions(event, roomId, userId) { function returnStateEvent(event, roomId, eventType, stateKey) { const client = MatrixClientPeg.get(); if (!client) { - sendError(event, _t('You need to be logged in') + '.'); + sendError(event, _t('You need to be logged in.')); return; } const room = client.getRoom(roomId); if (!room) { - sendError(event, _t('This room is not recognised') + '.'); + sendError(event, _t('This room is not recognised.')); return; } const stateEvent = room.currentState.getStateEvents(eventType, stateKey); diff --git a/src/SlashCommands.js b/src/SlashCommands.js index 366604eaee..d2c0eda3ff 100644 --- a/src/SlashCommands.js +++ b/src/SlashCommands.js @@ -70,7 +70,7 @@ const commands = { // TODO Don't explain this away, actually show a search UI here. Modal.createDialog(ErrorDialog, { title: _t('/ddg is not a command'), - description: _t('To use it, just wait for autocomplete results to load and tab through them') + '.', + description: _t('To use it, just wait for autocomplete results to load and tab through them.'), }); return success(); }), diff --git a/src/TextForEvent.js b/src/TextForEvent.js index 24d79ac3ce..d5a54927a0 100644 --- a/src/TextForEvent.js +++ b/src/TextForEvent.js @@ -32,9 +32,9 @@ function textForMemberEvent(ev) { var threePidContent = ev.getContent().third_party_invite; if (threePidContent) { if (threePidContent.display_name) { - return _t('%(targetName)s accepted the invitation for %(displayName)s', {targetName: targetName, displayName: threePidContent.display_name}) + "."; + return _t('%(targetName)s accepted the invitation for %(displayName)s.', {targetName: targetName, displayName: threePidContent.display_name}); } else { - return _t('%(targetName)s accepted an invitation', {targetName: targetName}) + '.'; + return _t('%(targetName)s accepted an invitation.', {targetName: targetName}); } } else { @@ -42,11 +42,14 @@ function textForMemberEvent(ev) { return _t('%(senderName)s requested a VoIP conference', {senderName: senderName}); } else { - return _t('%(senderName)s invited %(targetName)s', {senderName: senderName, targetName: targetName}) + '.'; + return _t('%(senderName)s invited %(targetName)s.', {senderName: senderName, targetName: targetName}); } } case 'ban': - return _t('%(senderName)s banned %(targetName)s', {senderName: senderName, targetName: targetName}) + '. ' + reason; + return _t( + '%(senderName)s banned %(targetName)s. %(reason)s.', + {senderName: senderName, targetName: targetName, reason: reason} + ); case 'join': if (ev.getPrevContent() && ev.getPrevContent().membership == 'join') { if (ev.getPrevContent().displayname && ev.getContent().displayname && ev.getPrevContent().displayname != ev.getContent().displayname) { @@ -71,7 +74,7 @@ function textForMemberEvent(ev) { return _t('VoIP conference started'); } else { - return _t('%(targetName)s joined the room', {targetName: targetName}) + '.'; + return _t('%(targetName)s joined the room.', {targetName: targetName}); } } case 'leave': @@ -80,23 +83,29 @@ function textForMemberEvent(ev) { return _t('VoIP conference finished'); } else if (ev.getPrevContent().membership === "invite") { - return _t('%(targetName)s rejected the invitation', {targetName: targetName}) + '.'; + return _t('%(targetName)s rejected the invitation.', {targetName: targetName}); } else { - return _t('%(targetName)s left the room', {targetName: targetName}) + '.'; + return _t('%(targetName)s left the room.', {targetName: targetName}); } } else if (ev.getPrevContent().membership === "ban") { - return _t('%(senderName)s unbanned %(targetName)s', {senderName: senderName, targetName: targetName}) + '.'; + return _t('%(senderName)s unbanned %(targetName)s.', {senderName: senderName, targetName: targetName}) + '.'; } else if (ev.getPrevContent().membership === "join") { - return _t('%(senderName)s kicked %(targetName)s', {senderName: senderName, targetName: targetName}) + '. ' + reason; + return _t( + '%(senderName)s kicked %(targetName)s. %(reason)s', + {senderName: senderName, targetName: targetName, reason} + ); } else if (ev.getPrevContent().membership === "invite") { - return _t('%(senderName)s withdrew %(targetName)s\'s inivitation', {senderName: senderName, targetName: targetName}) + '. ' + reason; + return _t( + '%(senderName)s withdrew %(targetName)s\'s inivitation. %(reason)s', + {senderName: senderName, targetName: targetName, reason: reason} + ); } else { - return _t('%(targetName)s left the room', {targetName: targetName}) + '.'; + return _t('%(targetName)s left the room.', {targetName: targetName}); } } } @@ -118,7 +127,7 @@ function textForMessageEvent(ev) { if (ev.getContent().msgtype === "m.emote") { message = "* " + senderDisplayName + " " + message; } else if (ev.getContent().msgtype === "m.image") { - message = _t('%(senderDisplayName)s sent an image', {senderDisplayName: senderDisplayName}) + '.'; + message = _t('%(senderDisplayName)s sent an image.', {senderDisplayName: senderDisplayName}); } return message; } @@ -144,17 +153,18 @@ function textForCallInviteEvent(event) { type = "video"; } var supported = MatrixClientPeg.get().supportsVoip() ? "" : _t('(not supported by this browser)'); - return _t('%(senderName)s placed a %(callType)s call', {senderName: senderName, callType: type}) + '. ' + supported; + return _t('%(senderName)s placed a %(callType)s call.', {senderName: senderName, callType: type}) + '. ' + supported; } function textForThreePidInviteEvent(event) { var senderName = event.sender ? event.sender.name : event.getSender(); - return _t('%(senderName)s sent an invitation to %(targetDisplayName)s to join the room', {senderName: senderName, targetDisplayName: event.getContent().display_name}) + "."; + return _t('%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.', {senderName: senderName, targetDisplayName: event.getContent().display_name}); } function textForHistoryVisibilityEvent(event) { var senderName = event.sender ? event.sender.name : event.getSender(); var vis = event.getContent().history_visibility; + // XXX: This i18n just isn't going to work for languages with different sentence structure. var text = _t('%(senderName)s made future room history visible to', {senderName: senderName}) + ' '; if (vis === "invited") { text += _t('all room members, from the point they are invited') + '.'; @@ -199,6 +209,7 @@ function textForPowerEvent(event) { } ); let diff = []; + // XXX: This is also surely broken for i18n users.forEach((userId) => { // Previous power level const from = event.getPrevContent().users[userId]; diff --git a/src/i18n/strings/da.json b/src/i18n/strings/da.json index 2b30593a4c..13491eb0b9 100644 --- a/src/i18n/strings/da.json +++ b/src/i18n/strings/da.json @@ -133,11 +133,11 @@ "da": "Dansk", "ru": "Russisk", "%(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", + "%(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", "%(names)s and %(count)s others are typing": "%(names)s og %(count)s andre skriver", - "%(senderName)s answered the call": "%(senderName)s besvarede opkaldet", + "%(senderName)s answered the call.": "%(senderName)s besvarede opkaldet.", "af": "Afrikaans", "ar-eg": "Arabisk (Egypten)", "ar-ma": "Arabisk (Marokko)", diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index 421a8e1f41..90395a08c0 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -349,54 +349,54 @@ "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 the invitation for %(displayName)s": "%(targetName)s akzeptierte eine Einladung für %(displayName)s", + "%(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 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", "%(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", + "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", - "%(senderName)s invited %(targetName)s": "%(senderName)s lud %(targetName)s ein", + "%(senderName)s invited %(targetName)s.": "%(senderName)s lud %(targetName)s ein.", "%(displayName)s is typing": "%(displayName)s tippt", - "%(targetName)s joined the room": "%(targetName)s trat dem Raum bei", - "%(senderName)s kicked %(targetName)s": "%(senderName)s kickte %(targetName)s", - "%(targetName)s left the room": "%(targetName)s verließ den Raum", + "%(targetName)s joined the room.": "%(targetName)s trat dem Raum bei.", + "%(senderName)s kicked %(targetName)s.": "%(senderName)s kickte %(targetName)s.", + "%(targetName)s left the room.": "%(targetName)s verließ den Raum.", "%(senderName)s made future room history visible to": "%(senderName)s machte die zukünftige Raumhistorie sichtbar für", "Missing room_id in request": "Fehlende room_id in Anfrage", "Missing user_id in request": "Fehlende user_id in Anfrage", "Must be viewing a room": "Muss einen Raum ansehen", "New Composer & Autocomplete": "Neuer Eingabeverarbeiter & Autovervollständigung", "(not supported by this browser)": "(nicht von diesem Browser unterstützt)", - "%(senderName)s placed a %(callType)s call": "%(senderName)s startete einen %(callType)s-Anruf", - "Power level must be positive integer": "Berechtigungslevel muss eine positive Zahl sein", + "%(senderName)s placed a %(callType)s call.": "%(senderName)s startete einen %(callType)s-Anruf.", + "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", + "%(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", "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", + "%(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", - "This room is not recognised": "Dieser Raum wurde nicht erkannt", + "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", + "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 unbanned %(targetName)s": "%(senderName)s zog Bann für %(targetName)s zurück", + "%(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", - "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", + "%(senderName)s withdrew %(targetName)s's inivitation.": "%(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", "Error changing language": "Fehler beim Ändern der Sprache", "Riot was unable to find the correct Data for the selected Language.": "Riot war nicht in der Lage die korrekten Daten für die ausgewählte Sprache zu finden.", diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 8f0a8018b0..9c69233692 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -125,7 +125,7 @@ "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 the invitation for %(displayName)s": "%(targetName)s accepted the invitation for %(displayName)s", + "%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s accepted the invitation for %(displayName)s.", "Account": "Account", "Access Token:": "Access Token:", "Add email address": "Add email address", @@ -149,7 +149,7 @@ "%(names)s and %(count)s others are typing": "%(names)s and %(count)s others are typing", "An email has been sent to": "An email has been sent to", "A new password must be entered.": "A new password must be entered.", - "%(senderName)s answered the call": "%(senderName)s answered the call", + "%(senderName)s answered the call.": "%(senderName)s answered the call.", "anyone.": "anyone", "An error has occurred.": "An error has occurred.", "Anyone who knows the room's link, apart from guests": "Anyone who knows the room's link, apart from guests", @@ -159,7 +159,7 @@ "Are you sure you want upload the following files?": "Are you sure you want upload the following files?", "Attachment": "Attachment", "Autoplay GIFs and videos": "Autoplay GIFs and videos", - "%(senderName)s banned %(targetName)s": "%(senderName)s banned %(targetName)s", + "%(senderName)s banned %(targetName)s.": "%(senderName)s banned %(targetName)s.", "Ban": "Ban", "Banned users": "Banned users", "Bans user with given id": "Bans user with given id", @@ -233,7 +233,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", @@ -257,7 +257,7 @@ "Failed to reject invitation": "Failed to reject invitation", "Failed to save settings": "Failed to save settings", "Failed to send email": "Failed to send email", - "Failed to send request": "Failed to send request", + "Failed to send request.": "Failed to send request.", "Failed to set display name": "Failed to set display name", "Failed to set up conference call": "Failed to set up conference call", "Failed to toggle moderator status": "Failed to toggle moderator status", @@ -291,7 +291,7 @@ "Invalid alias format": "Invalid alias format", "Invalid address format": "Invalid address format", "Invalid Email Address": "Invalid Email Address", - "%(senderName)s invited %(targetName)s": "%(senderName)s invited %(targetName)s", + "%(senderName)s invited %(targetName)s.": "%(senderName)s invited %(targetName)s.", "Invite new room members": "Invite new room members", "Invites": "Invites", "Invites user with given id to current room": "Invites user with given id to current room", @@ -303,16 +303,16 @@ "Join Room": "Join Room", "joined and left": "joined and left", "joined": "joined", - "%(targetName)s joined the room": "%(targetName)s joined the room", + "%(targetName)s joined the room.": "%(targetName)s joined the room.", "Joins room with given alias": "Joins room with given alias", - "%(senderName)s kicked %(targetName)s": "%(senderName)s kicked %(targetName)s", + "%(senderName)s kicked %(targetName)s.": "%(senderName)s kicked %(targetName)s.", "Kick": "Kick", "Kicks user with given id": "Kicks user with given id", "Labs": "Labs", "Leave room": "Leave room", "left and rejoined": "left and rejoined", "left": "left", - "%(targetName)s left the room": "%(targetName)s left the room", + "%(targetName)s left the room.": "%(targetName)s left the room.", "Level": "Level", "Local addresses for this room:": "Local addresses for this room:", "Logged in as:": "Logged in as:", @@ -363,10 +363,10 @@ "People": "People", "Permissions": "Permissions", "Phone": "Phone", - "%(senderName)s placed a %(callType)s call": "%(senderName)s placed a %(callType)s call", + "%(senderName)s placed a %(callType)s call.": "%(senderName)s placed a %(callType)s call.", "Please check your email and click on the link it contains. Once this is done, click continue.": "Please check your email and click on the link it contains. Once this is done, click continue.", "Please Register": "Please Register", - "Power level must be positive integer": "Power level must be positive integer", + "Power level must be positive integer.": "Power level must be positive integer.", "Press": "Press", "Privacy warning": "Privacy warning", "Privileged Users": "Privileged Users", @@ -376,7 +376,7 @@ "Refer a friend to Riot": "Refer a friend to Riot", "Registration required": "Registration required", "rejected": "rejected", - "%(targetName)s rejected the invitation": "%(targetName)s rejected the invitation", + "%(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)", @@ -405,8 +405,8 @@ "Sender device information": "Sender device information", "Send Invites": "Send Invites", "Send Reset Email": "Send Reset Email", - "%(senderDisplayName)s sent an image": "%(senderDisplayName)s sent an image", - "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room": "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room", + "%(senderDisplayName)s sent an image.": "%(senderDisplayName)s sent an image.", + "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.", "sent a video": "sent a video", "Server error": "Server error", "Server may be unavailable or overloaded": "Server may be unavailable or overloaded", @@ -445,7 +445,7 @@ "The file '%(fileName)s' failed to upload": "The file '%(fileName)s' failed to upload", "The remote side failed to pick up": "The remote side failed to pick up", "This room has no local addresses": "This room has no local addresses", - "This room is not recognised": "This room is not recognised", + "This room is not recognised.": "This room is not recognised.", "This room is private or inaccessible to guests. You may be able to join if you register": "This room is private or inaccessible to guests. You may be able to join if you register", "These are experimental features that may break in unexpected ways": "These are experimental features that may break in unexpected ways", "The visibility of existing history will be unchanged": "The visibility of existing history will be unchanged", @@ -474,7 +474,7 @@ "to start a chat with someone": "to start a chat with someone", "to tag as %(tagName)s": "to tag as %(tagName)s", "to tag direct chat": "to tag direct chat", - "To use it, just wait for autocomplete results to load and tab through them": "To use it, just wait for autocomplete results to load and tab through them", + "To use it, just wait for autocomplete results to load and tab through them.": "To use it, just wait for autocomplete results to load and tab through them.", "Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question": "Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question", "Tried to load a specific point in this room's timeline, but was unable to find it": "Tried to load a specific point in this room's timeline, but was unable to find it", "Turn Markdown off": "Turn Markdown off", @@ -485,7 +485,7 @@ "Unable to restore previous session": "Unable to restore previous session", "Unable to verify email address": "Unable to verify email address", "Unban": "Unban", - "%(senderName)s unbanned %(targetName)s": "%(senderName)s unbanned %(targetName)s", + "%(senderName)s unbanned %(targetName)s.": "%(senderName)s unbanned %(targetName)s.", "Unable to capture screen": "Unable to capture screen", "Unable to enable Notifications": "Unable to enable Notifications", "Unable to load device list": "Unable to load device list", @@ -522,7 +522,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 inivitation.": "%(senderName)s withdrew %(targetName)s's inivitation.", "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", @@ -534,8 +534,8 @@ "You have been logged out of all devices and will no longer receive push notifications. To re-enable notifications, sign in again on each device": "You have been logged out of all devices and will no longer receive push notifications. To re-enable notifications, sign in again on each device", "You have no visible notifications": "You have no visible notifications", "you must be a": "you must be a", - "You need to be able to invite users to do that": "You need to be able to invite users to do that", - "You need to be logged in": "You need to be logged in", + "You need to be able to invite users to do that.": "You need to be able to invite users to do that.", + "You need to be logged in.": "You need to be logged in.", "You need to log back in to generate end-to-end encryption keys for this device and submit the public key to your homeserver. This is a once off; sorry for the inconvenience": "You need to log back in to generate end-to-end encryption keys for this device and submit the public key to your homeserver. This is a once off; sorry for the inconvenience", "Your email address does not appear to be associated with a Matrix ID on this Homeserver": "Your email address does not appear to be associated with a Matrix ID on this Homeserver", "Your password has been reset": "Your password has been reset", diff --git a/src/i18n/strings/fr.json b/src/i18n/strings/fr.json index e393d27bda..eba5b5a0fc 100644 --- a/src/i18n/strings/fr.json +++ b/src/i18n/strings/fr.json @@ -137,7 +137,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", diff --git a/src/i18n/strings/pt.json b/src/i18n/strings/pt.json index e19d261997..d166b3a273 100644 --- a/src/i18n/strings/pt.json +++ b/src/i18n/strings/pt.json @@ -304,16 +304,16 @@ "de": "Alemão", "da": "Dinamarquês", "ru": "Russo", - "%(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", + "%(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", "%(names)s and %(lastPerson)s are typing": "%(names)s e %(lastPerson)s estão escrevendo", "%(names)s and one other are typing": "%(names)s e uma outra pessoa estão escrevendo", "%(names)s and %(count)s others are typing": "%(names)s e %(count)s outras pessoas estão escrevendo", - "%(senderName)s answered the call": "%(senderName)s atendeu à chamada", + "%(senderName)s answered the call.": "%(senderName)s atendeu à chamada.", "anyone.": "qualquer pessoa", - "%(senderName)s banned %(targetName)s": "%(senderName)s removeu %(targetName)s da sala", + "%(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", @@ -332,16 +332,16 @@ "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", - "Failed to send request": "Não foi possível mandar requisição", + "Failed to send request.": "Não foi possível mandar requisição.", "Failed to set up conference call": "Não foi possível montar a chamada de conferência", "Failed to verify email address: make sure you clicked the link in the email": "Não foi possível verificar o endereço de email: verifique se você realmente clicou no link que está no seu email", "Failure to create room": "Não foi possível criar a sala", "%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s de %(fromPowerLevel)s para %(toPowerLevel)s", "Guest users can't create new rooms. Please register to create room and start a chat": "Visitantes não podem criar novas salas. Por favor, registre-se para criar uma sala e iniciar uma conversa", - "%(senderName)s invited %(targetName)s": "%(senderName)s convidou %(targetName)s", + "%(senderName)s invited %(targetName)s.": "%(senderName)s convidou %(targetName)s.", "%(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 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", "%(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", @@ -350,20 +350,20 @@ "New Composer & Autocomplete": "Nova ferramenta de formatação de mensagens e autocompletar", "(not supported by this browser)": "(não é compatível com este navegador)", "olm version": "versão olm", - "%(senderName)s placed a %(callType)s call": "%(senderName)s fez uma chamada de %(callType)s", - "Power level must be positive integer": "O nível de permissões tem que ser um número inteiro e positivo", + "%(senderName)s placed a %(callType)s call.": "%(senderName)s fez uma chamada de %(callType)s.", + "Power level must be positive integer.": "O nível de permissões tem que ser um número inteiro e positivo.", "Press": "Aperte", "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", + "%(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", "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", + "%(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", "tag as %(tagName)s": "marcar como %(tagName)s", @@ -372,7 +372,7 @@ "The file '%(fileName)s' exceeds this home server's size limit for uploads": "O arquivo '%(fileName)s' ultrapassa o limite de tamanho que nosso servidor permite enviar", "The file '%(fileName)s' failed to upload": "Não foi possível enviar o arquivo '%(fileName)s", "The remote side failed to pick up": "Houve alguma falha que não permitiu a outra pessoa atender à chamada", - "This room is not recognised": "Esta sala não é reconhecida", + "This room is not recognised.": "Esta sala não é reconhecida.", "These are experimental features that may break in unexpected ways": "Estas são funcionalidades experimentais que podem apresentar falhas", "This phone number is already in use": "Este número de telefone já está sendo usado", "to browse the directory": "para navegar na lista pública de salas", @@ -383,24 +383,24 @@ "to restore": "para restaurar", "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", + "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)", "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", + "%(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", "Unable to enable Notifications": "Não foi possível ativar as notificações", "Upload Failed": "O envio falhou", "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 inivitation.": "%(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", "You cannot place a call with yourself": "Você não pode iniciar uma chamada", "You cannot place VoIP calls in this browser": "Você não pode fazer chamadas de voz neste navegador", - "You need to be able to invite users to do that": "Para fazer isso, você tem que ter permissão para convidar outras pessoas", - "You need to be logged in": "Você tem que estar logado", + "You need to be able to invite users to do that.": "Para fazer isso, você tem que ter permissão para convidar outras pessoas.", + "You need to be logged in.": "Você tem que estar logado.", "You need to log back in to generate end-to-end encryption keys for this device and submit the public key to your homeserver. This is a once off; sorry for the inconvenience": "É necessário que você faça login novamente para poder gerar as chaves de criptografia ponta-a-ponta para este dispositivo e então enviar sua chave pública para o servidor. Pedimos desculpas pela inconveniência, é preciso fazer isso apenas única uma vez", "Your email address does not appear to be associated with a Matrix ID on this Homeserver": "O seu endereço de email não parece estar associado a uma conta de usuária/o Matrix neste servidor", "Set a display name:": "Defina um nome público para você:", diff --git a/src/i18n/strings/pt_BR.json b/src/i18n/strings/pt_BR.json index 47d9271232..5194f4cc6c 100644 --- a/src/i18n/strings/pt_BR.json +++ b/src/i18n/strings/pt_BR.json @@ -310,15 +310,15 @@ "da": "Dinamarquês", "ru": "Russo", "%(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", + "%(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", "%(names)s and %(lastPerson)s are typing": "%(names)s e %(lastPerson)s estão escrevendo", "%(names)s and one other are typing": "%(names)s e uma outra pessoa estão escrevendo", "%(names)s and %(count)s others are typing": "%(names)s e %(count)s outras pessoas estão escrevendo", - "%(senderName)s answered the call": "%(senderName)s atendeu à chamada", + "%(senderName)s answered the call.": "%(senderName)s atendeu à chamada.", "anyone.": "qualquer pessoa", - "%(senderName)s banned %(targetName)s": "%(senderName)s removeu %(targetName)s da sala", + "%(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", @@ -333,21 +333,21 @@ "/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", - "Failed to send request": "Não foi possível mandar requisição", + "Failed to send request.": "Não foi possível mandar requisição.", "Failed to set up conference call": "Não foi possível montar a chamada de conferência", "Failed to verify email address: make sure you clicked the link in the email": "Não foi possível verificar o endereço de email: verifique se você realmente clicou no link que está no seu email", "Failure to create room": "Não foi possível criar a sala", "%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s de %(fromPowerLevel)s para %(toPowerLevel)s", "Guest users can't create new rooms. Please register to create room and start a chat": "Visitantes não podem criar novas salas. Por favor, registre-se para criar uma sala e iniciar uma conversa", - "%(senderName)s invited %(targetName)s": "%(senderName)s convidou %(targetName)s", + "%(senderName)s invited %(targetName)s.": "%(senderName)s convidou %(targetName)s.", "%(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 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.", "%(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", @@ -355,20 +355,20 @@ "New Composer & Autocomplete": "Nova ferramenta de formatação de mensagens e autocompletar", "(not supported by this browser)": "(não é compatível com este navegador)", "olm version": "versão olm", - "%(senderName)s placed a %(callType)s call": "%(senderName)s fez uma chamada de %(callType)s", - "Power level must be positive integer": "O nível de permissões tem que ser um número inteiro e positivo", + "%(senderName)s placed a %(callType)s call.": "%(senderName)s fez uma chamada de %(callType)s.", + "Power level must be positive integer.": "O nível de permissões tem que ser um número inteiro e positivo.", "Press": "Aperte", "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", + "%(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", "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", + "%(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", "tag as %(tagName)s": "marcar como %(tagName)s", @@ -377,7 +377,7 @@ "The file '%(fileName)s' exceeds this home server's size limit for uploads": "O arquivo '%(fileName)s' ultrapassa o limite de tamanho que nosso servidor permite enviar", "The file '%(fileName)s' failed to upload": "Não foi possível enviar o arquivo '%(fileName)s", "The remote side failed to pick up": "Houve alguma falha que não permitiu a outra pessoa atender à chamada", - "This room is not recognised": "Esta sala não é reconhecida", + "This room is not recognised.": "Esta sala não é reconhecida.", "These are experimental features that may break in unexpected ways": "Estas são funcionalidades experimentais que podem apresentar falhas", "This phone number is already in use": "Este número de telefone já está sendo usado", "to browse the directory": "para navegar na lista pública de salas", @@ -389,24 +389,24 @@ "to start a chat with someone": "para iniciar uma conversa com alguém", "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", + "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)", "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", + "%(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", "Unable to enable Notifications": "Não foi possível ativar as notificações", "Upload Failed": "O envio falhou", "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 inivitation.": "%(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", "You cannot place a call with yourself": "Você não pode iniciar uma chamada", "You cannot place VoIP calls in this browser": "Você não pode fazer chamadas de voz neste navegador", - "You need to be able to invite users to do that": "Para fazer isso, você tem que ter permissão para convidar outras pessoas", - "You need to be logged in": "Você tem que estar logado", + "You need to be able to invite users to do that.": "Para fazer isso, você tem que ter permissão para convidar outras pessoas.", + "You need to be logged in.": "Você tem que estar logado.", "You need to log back in to generate end-to-end encryption keys for this device and submit the public key to your homeserver. This is a once off; sorry for the inconvenience": "É necessário que você faça login novamente para poder gerar as chaves de criptografia ponta-a-ponta para este dispositivo e então enviar sua chave pública para o servidor. Pedimos desculpas pela inconveniência, é preciso fazer isso apenas única uma vez", "Your email address does not appear to be associated with a Matrix ID on this Homeserver": "O seu endereço de email não parece estar associado a uma conta de usuária/o Matrix neste servidor", "Set a display name:": "Defina um nome público para você:", diff --git a/src/i18n/strings/ru.json b/src/i18n/strings/ru.json index 6bd3773861..ea23d16d04 100644 --- a/src/i18n/strings/ru.json +++ b/src/i18n/strings/ru.json @@ -217,15 +217,15 @@ "da": "Датский", "ru": "Русский", "%(targetName)s accepted an invitation": "%(targetName)s принятое приглашение", - "%(targetName)s accepted the invitation for %(displayName)s": "%(targetName)s принятое приглашение от %(displayName)s", + "%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s принятое приглашение от %(displayName)s.", "Resend all": "Переслать снова всем", "cancel all": "отменить всем", "Active call": "Активный звонок", "%(names)s and %(lastPerson)s are typing": "%(names)s и %(lastPerson)s печатает", "%(names)s and one other are typing": "%(names)s и другой печатают", "%(names)s and %(count)s others are typing": "%(names)s и %(count)s другие печатают", - "%(senderName)s answered the call": "%(senderName)s ответил на звонок", - "%(senderName)s banned %(targetName)s": "%(senderName)s запрещенный %(targetName)s", + "%(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 измененное ихнее фото профиля", @@ -239,21 +239,21 @@ "/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": "Не удалось выслать запрос", + "Failed to send request.": "Не удалось выслать запрос.", "Failed to set up conference call": "Не удалось установить конференц-вызов", "Failed to verify email address: make sure you clicked the link in the email": "Не удалось подтвердить email-адрес: убедитесь что вы щелкнули по ссылке электронной почты", "Failure to create room": "Не удалось создать комнату", "%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s из %(fromPowerLevel)s до %(toPowerLevel)s", "Guest users can't create new rooms. Please register to create room and start a chat": "Гостевые пользователи не могут создавать новые комнаты. Зарегистрируйтесь для создания комнаты и чата", "click to reveal": "нажать для открытия", - "%(senderName)s invited %(targetName)s": "%(senderName)s приглашает %(targetName)s", + "%(senderName)s invited %(targetName)s.": "%(senderName)s приглашает %(targetName)s.", "%(displayName)s is typing": "%(displayName)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 kicked %(targetName)s.": "%(senderName)s выкинул %(targetName)s.", + "%(targetName)s left the room.": "%(targetName)s покинул комнату.", "%(senderName)s made future room history visible to": "%(senderName)s история сделаной будущей комнаты, видимая для", "Missing room_id in request": "Отсутствует room_id в запросе", "Missing user_id in request": "Отсутствует user_id в запросе", @@ -357,14 +357,14 @@ "Sunday": "Воскресенье", "%(weekDayName)s %(time)s": "%(weekDayName)s %(time)s", "Upload an avatar:": "Загрузить аватар", - "You need to be logged in": "Вы должны быть зарегистрированы", - "You need to be able to invite users to do that": "Вам необходимо пригласить пользователей чтобы сделать это", + "You need to be logged in.": "Вы должны быть зарегистрированы", + "You need to be able to invite users to do that.": "Вам необходимо пригласить пользователей чтобы сделать это.", "You cannot place VoIP calls in this browser": "Вы не можете сделать вызовы VoIP с этим браузером", "You are already in a call": "Вы уже находитесь в разговоре", "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 inivitation.": "%(senderName)s анулировал %(targetName)s's преглашение.", "Sep": "Сен.", "Jan": "Янв.", "Feb": "Фев.", @@ -389,10 +389,10 @@ "Your email address does not appear to be associated with a Matrix ID on this Homeserver": "Ваш адрес электронной почты, кажется, не связан с Matrix ID на этом Homeserver", "to start a chat with someone": "Начать чат с кем-то", "to tag direct chat": "Пометить прямой чат", - "To use it, just wait for autocomplete results to load and tab through them": "Для его использования, просто подождите результатов автозаполнения для загрузки на вкладке и через них", + "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)", "Unable to restore previous session": "Невозможно востановить предыдущий сеанс", - "%(senderName)s unbanned %(targetName)s": "%(senderName)s запрет отменен %(targetName)s", + "%(senderName)s unbanned %(targetName)s.": "%(senderName)s запрет отменен %(targetName)s.", "Unable to capture screen": "Невозможно записать снимок экрана", "Unable to enable Notifications": "Невозможно включить уведомления", "Upload Failed": "Неудавшаяся загрузка",