Merge branch 'develop' of github.com:matrix-org/matrix-react-sdk into t3chguy/piwik

This commit is contained in:
Michael Telatynski 2017-05-27 20:59:35 +01:00
commit 45cd80dedb
22 changed files with 502 additions and 182 deletions

186
scripts/check-i18n.pl Executable file
View file

@ -0,0 +1,186 @@
#!/usr/bin/perl
use strict;
use warnings;
use Cwd 'abs_path';
# script which checks how out of sync the i18ns are drifting
# example i18n format:
# "%(oneUser)sleft": "%(oneUser)sleft",
$|=1;
$0 =~ /^(.*\/)/;
my $i18ndir = abs_path($1."/../src/i18n/strings");
my $srcdir = abs_path($1."/../src");
my $en = read_i18n($i18ndir."/en_EN.json");
my $src_strings = read_src_strings($srcdir);
my $src = {};
print "Checking strings in src\n";
foreach my $tuple (@$src_strings) {
my ($s, $file) = (@$tuple);
$src->{$s} = $file;
if (!$en->{$s}) {
if ($en->{$s . '.'}) {
printf ("%50s %24s\t%s\n", $file, "en_EN has fullstop!", $s);
}
else {
$s =~ /^(.*)\.?$/;
if ($en->{$1}) {
printf ("%50s %24s\t%s\n", $file, "en_EN lacks fullstop!", $s);
}
else {
printf ("%50s %24s\t%s\n", $file, "Translation missing!", $s);
}
}
}
}
print "\nChecking en_EN\n";
my $count = 0;
my $remaining_src = {};
foreach (keys %$src) { $remaining_src->{$_}++ };
foreach my $k (sort keys %$en) {
# crappy heuristic to ignore country codes for now...
next if ($k =~ /^(..|..-..)$/);
if ($en->{$k} ne $k) {
printf ("%50s %24s\t%s\n", "en_EN", "en_EN is not symmetrical", $k);
}
if (!$src->{$k}) {
if ($src->{$k. '.'}) {
printf ("%50s %24s\t%s\n", $src->{$k. '.'}, "src has fullstop!", $k);
}
else {
$k =~ /^(.*)\.?$/;
if ($src->{$1}) {
printf ("%50s %24s\t%s\n", $src->{$1}, "src lacks fullstop!", $k);
}
else {
printf ("%50s %24s\t%s\n", '???', "Not present in src?", $k);
}
}
}
else {
$count++;
delete $remaining_src->{$k};
}
}
printf ("$count/" . (scalar keys %$src) . " strings found in src are present in en_EN\n");
foreach (keys %$remaining_src) {
print "missing: $_\n";
}
opendir(DIR, $i18ndir) || die $!;
my @files = readdir(DIR);
closedir(DIR);
foreach my $lang (grep { -f "$i18ndir/$_" && !/(basefile|en_EN)\.json/ } @files) {
print "\nChecking $lang\n";
my $map = read_i18n($i18ndir."/".$lang);
my $count = 0;
my $remaining_en = {};
foreach (keys %$en) { $remaining_en->{$_}++ };
foreach my $k (sort keys %$map) {
{
no warnings 'uninitialized';
my $vars = {};
while ($k =~ /%\((.*?)\)s/g) {
$vars->{$1}++;
}
while ($map->{$k} =~ /%\((.*?)\)s/g) {
$vars->{$1}--;
}
foreach my $var (keys %$vars) {
if ($vars->{$var} != 0) {
printf ("%10s %24s\t%s\n", $lang, "Broken var ($var)s", $k);
}
}
}
if ($en->{$k}) {
if ($map->{$k} eq $k) {
printf ("%10s %24s\t%s\n", $lang, "Untranslated string?", $k);
}
$count++;
delete $remaining_en->{$k};
}
else {
if ($en->{$k . "."}) {
printf ("%10s %24s\t%s\n", $lang, "en_EN has fullstop!", $k);
next;
}
$k =~ /^(.*)\.?$/;
if ($en->{$1}) {
printf ("%10s %24s\t%s\n", $lang, "en_EN lacks fullstop!", $k);
next;
}
printf ("%10s %24s\t%s\n", $lang, "Not present in en_EN", $k);
}
}
if (scalar keys %$remaining_en < 100) {
foreach (keys %$remaining_en) {
printf ("%10s %24s\t%s\n", $lang, "Not yet translated", $_);
}
}
printf ("$count/" . (scalar keys %$en) . " strings translated\n");
}
sub read_i18n {
my $path = shift;
my $map = {};
open(FILE, "<", $path) || die $!;
while(<FILE>) {
if ($_ =~ m/^(\s+)"(.*?)"(: *)"(.*?)"(,?)$/) {
my ($indent, $src, $colon, $dst, $comma) = ($1, $2, $3, $4, $5);
$src =~ s/\\"/"/g;
$dst =~ s/\\"/"/g;
$map->{$src} = $dst;
}
}
close(FILE);
return $map;
}
sub read_src_strings {
my $path = shift;
use File::Find;
use File::Slurp;
my $strings = [];
my @files;
find( sub { push @files, $File::Find::name if (-f $_ && /\.jsx?$/) }, $path );
foreach my $file (@files) {
my $src = read_file($file);
$src =~ s/'\s*\+\s*'//g;
$src =~ s/"\s*\+\s*"//g;
$file =~ s/^.*\/src/src/;
while ($src =~ /_t\(\s*'(.*?[^\\])'/sg) {
my $s = $1;
$s =~ s/\\'/'/g;
push @$strings, [$s, $file];
}
while ($src =~ /_t\(\s*"(.*?[^\\])"/sg) {
push @$strings, [$1, $file];
}
}
return $strings;
}

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

@ -0,0 +1,91 @@
#!/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.
For security, this session has been signed out. Please sign in again.
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.
A new password must be entered.
Guests can't set avatars. Please register.
Failed to set avatar.
Unable to verify email address.
Guests can't use labs features. Please register.
A new password must be entered.
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.
Guests cannot join this room even if explicitly invited.
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);
$src =~ s/\\"/"/g;
$dst =~ s/\\"/"/g;
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) {
$src =~ s/"/\\"/g;
$dst =~ s/"/\\"/g;
print qq($indent"$src"$colon"$dst"$comma\n);
last;
}
}
}
if (!$sub) {
print $_;
}

View file

@ -232,10 +232,8 @@ function _handleRestoreFailure(e) {
let msg = e.message;
if (msg == "OLM.BAD_LEGACY_ACCOUNT_PICKLE") {
msg = _t(
'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.'
);
_clearLocalStorage();

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) {
@ -179,14 +179,14 @@ function textForHistoryVisibilityEvent(event) {
text += _t('anyone') + '.';
}
else {
text += ' ' + _t('unknown') + ' (' + vis + ')';
text += ' ' + _t('unknown') + ' (' + vis + ').';
}
return text;
}
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
@ -217,14 +217,21 @@ function textForPowerEvent(event) {
const to = event.getContent().users[userId];
if (to !== from) {
diff.push(
_t('%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s', {userId: userId, fromPowerLevel: Roles.textualPowerLevel(from, userDefault), toPowerLevel: Roles.textualPowerLevel(to, userDefault)})
_t('%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s', {
userId: userId,
fromPowerLevel: Roles.textualPowerLevel(from, userDefault),
toPowerLevel: Roles.textualPowerLevel(to, userDefault)
})
);
}
});
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

@ -15,12 +15,11 @@ limitations under the License.
*/
import React from 'react';
import ReactDOM from 'react-dom';
import Matrix from 'matrix-js-sdk';
import sdk from '../../index';
import MatrixClientPeg from '../../MatrixClientPeg';
import dis from '../../dispatcher';
import { _t } from '../../languageHandler';
/*
* Component which shows the filtered file using a TimelinePanel

View file

@ -87,6 +87,9 @@ module.exports = React.createClass({
// show twelve hour timestamps
isTwelveHour: React.PropTypes.bool,
// show timestamps always
alwaysShowTimestamps: React.PropTypes.bool,
},
componentWillMount: function() {
@ -618,8 +621,13 @@ module.exports = React.createClass({
var style = this.props.hidden ? { display: 'none' } : {};
style.opacity = this.props.opacity;
var className = this.props.className + " mx_fadable";
if (this.props.alwaysShowTimestamps) {
className += " mx_MessagePanel_alwaysShowTimestamps";
}
return (
<ScrollPanel ref="scrollPanel" className={ this.props.className + " mx_fadable" }
<ScrollPanel ref="scrollPanel" className={ className }
onScroll={ this.props.onScroll }
onResize={ this.onResize }
onFillRequest={ this.props.onFillRequest }

View file

@ -176,6 +176,9 @@ var TimelinePanel = React.createClass({
// should the event tiles have twelve hour times
isTwelveHour: UserSettingsStore.getSyncedSetting('showTwelveHourTimestamps'),
// always show timestamps on event tiles?
alwaysShowTimestamps: UserSettingsStore.getSyncedSetting('alwaysShowTimestamps'),
};
},
@ -1127,6 +1130,7 @@ var TimelinePanel = React.createClass({
onUnfillRequest={ this.onMessageListUnfillRequest }
opacity={ this.props.opacity }
isTwelveHour={ this.state.isTwelveHour }
alwaysShowTimestamps={ this.state.alwaysShowTimestamps }
className={ this.props.className }
tileShape={ this.props.tileShape }
/>

View file

@ -258,7 +258,7 @@ module.exports = React.createClass({
const NeedToRegisterDialog = sdk.getComponent("dialogs.NeedToRegisterDialog");
Modal.createDialog(NeedToRegisterDialog, {
title: _t("Please Register"),
description: _t("Guests can't set avatars. Please register") + ".",
description: _t("Guests can't set avatars. Please register."),
});
return;
}
@ -283,7 +283,7 @@ module.exports = React.createClass({
console.error("Failed to set avatar: " + err);
const ErrorDialog = sdk.getComponent("dialogs.ErrorDialog");
Modal.createDialog(ErrorDialog, {
title: _t("Failed to set avatar"),
title: _t("Failed to set avatar."),
description: ((err && err.message) ? err.message : _t("Operation failed")),
});
});
@ -295,7 +295,10 @@ module.exports = React.createClass({
title: _t("Sign out"),
description:
<div>
{ _t("For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.") }.
{ _t("For security, logging out will delete any end-to-end " +
"encryption keys from this browser. If you want to be able " +
"to decrypt your conversation history from future Riot sessions, " +
"please export your room keys for safe-keeping.") }.
</div>,
button: _t("Sign out"),
extraButtons: [
@ -391,7 +394,7 @@ module.exports = React.createClass({
const QuestionDialog = sdk.getComponent("dialogs.QuestionDialog");
Modal.createDialog(QuestionDialog, {
title: _t("Remove Contact Information?"),
description: _t("Remove ") + threepid.address + "?",
description: _t("Remove %(threePid)s?", { threePid : threepid.address }),
button: _t('Remove'),
onFinished: (submit) => {
if (submit) {
@ -433,8 +436,8 @@ module.exports = React.createClass({
this.setState({email_add_pending: false});
if (err.errcode == 'M_THREEPID_AUTH_FAILED') {
const QuestionDialog = sdk.getComponent("dialogs.QuestionDialog");
let message = _t("Unable to verify email address. ");
message += _t("Please check your email and click on the link it contains. Once this is done, click continue.");
let message = _t("Unable to verify email address.") + " " +
_t("Please check your email and click on the link it contains. Once this is done, click continue.");
Modal.createDialog(QuestionDialog, {
title: _t("Verification Pending"),
description: message,
@ -445,7 +448,7 @@ module.exports = React.createClass({
const ErrorDialog = sdk.getComponent("dialogs.ErrorDialog");
console.error("Unable to verify email address: " + err);
Modal.createDialog(ErrorDialog, {
title: _t("Unable to verify email address"),
title: _t("Unable to verify email address."),
description: ((err && err.message) ? err.message : _t("Operation failed")),
});
}
@ -536,7 +539,7 @@ module.exports = React.createClass({
<div>
<h3>Referral</h3>
<div className="mx_UserSettings_section">
{_t("Refer a friend to Riot: ")} <a href={href}>{href}</a>
{_t("Refer a friend to Riot:")} <a href={href}>{href}</a>
</div>
</div>
);
@ -734,7 +737,7 @@ module.exports = React.createClass({
const NeedToRegisterDialog = sdk.getComponent("dialogs.NeedToRegisterDialog");
Modal.createDialog(NeedToRegisterDialog, {
title: _t("Please Register"),
description: _t("Guests can't use labs features. Please register") + ".",
description: _t("Guests can't use labs features. Please register."),
});
return;
}

View file

@ -82,7 +82,7 @@ module.exports = React.createClass({
this.showErrorDialog(_t('The email address linked to your account must be entered.'));
}
else if (!this.state.password || !this.state.password2) {
this.showErrorDialog(_t('A new password must be entered') + ".");
this.showErrorDialog(_t('A new password must be entered.'));
}
else if (this.state.password !== this.state.password2) {
this.showErrorDialog(_t('New passwords must match each other.'));
@ -98,10 +98,8 @@ module.exports = React.createClass({
'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 ' +
'<a href="https://github.com/vector-im/riot-web/issues/2671">' +
'will be improved</a>'
) }.
'them afterwards. In future this will be improved.'
) }
</div>,
button: _t('Continue'),
extraButtons: [

View file

@ -188,7 +188,7 @@ class PasswordLogin extends React.Component {
value={this.state.loginType}
onOptionChange={this.onLoginTypeChange}>
<span key={PasswordLogin.LOGIN_FIELD_MXID}>{ _t('my Matrix ID') }</span>
<span key={PasswordLogin.LOGIN_FIELD_EMAIL}>{ _t('Email Address') }</span>
<span key={PasswordLogin.LOGIN_FIELD_EMAIL}>{ _t('Email address') }</span>
<span key={PasswordLogin.LOGIN_FIELD_PHONE}>{ _t('Phone') }</span>
</Dropdown>
</div>

View file

@ -156,7 +156,7 @@ module.exports = React.createClass({
var ErrorDialog = sdk.getComponent("dialogs.ErrorDialog");
Modal.createDialog(ErrorDialog, {
title: _t('Invalid alias format'),
description: _t('"%(alias)s" is not a valid format for an alias', { alias: alias }),
description: _t('\'%(alias)s\' is not a valid format for an alias', { alias: alias }),
});
}
},
@ -172,7 +172,7 @@ module.exports = React.createClass({
var ErrorDialog = sdk.getComponent("dialogs.ErrorDialog");
Modal.createDialog(ErrorDialog, {
title: _t('Invalid address format'),
description: _t('"%(alias)s" is not a valid format for an address', { alias: alias }),
description: _t('\'%(alias)s\' is not a valid format for an address', { alias: alias }),
});
}
},

View file

@ -121,7 +121,7 @@ module.exports = React.createClass({
console.error("Failed to set avatar: " + errMsg);
Modal.createDialog(ErrorDialog, {
title: _t("Error"),
description: _t("Failed to set avatar") + ".",
description: _t("Failed to set avatar."),
});
}).done();
},

View file

@ -86,7 +86,7 @@ module.exports = React.createClass({
_roomNameElement: function(fallback) {
fallback = fallback || 'a room';
const name = this.props.room ? this.props.room.name : (this.props.room_alias || "");
return name ? { name } : fallback;
return name ? name : fallback;
},
render: function() {

View file

@ -762,7 +762,7 @@ module.exports = React.createClass({
if (this.state.join_rule !== "public" && this.state.guest_access === "forbidden") {
inviteGuestWarning =
<div className="mx_RoomSettings_warning">
{ _t('Guests cannot join this room even if explicitly invited') }. <a href="#" onClick={ (e) => {
{ _t('Guests cannot join this room even if explicitly invited.') } <a href="#" onClick={ (e) => {
this.setState({ join_rule: "invite", guest_access: "can_join" });
e.preventDefault();
}}>{ _t('Click here to fix') }</a>.

View file

@ -77,7 +77,7 @@ module.exports = React.createClass({
'Changing password will currently reset any end-to-end encryption keys on all devices, ' +
'making encrypted chat history unreadable, unless you first export your room keys ' +
'and re-import them afterwards. ' +
'In future this will be improved. '
'In future this will be improved.'
) } (<a href="https://github.com/vector-im/riot-web/issues/2671">https://github.com/vector-im/riot-web/issues/2671</a>)
</div>,
button: _t("Continue"),

View file

@ -64,7 +64,7 @@
"and": "og",
"An email has been sent to": "En e-mail blev sendt til",
"answered the call.": "svarede på kaldet",
"anyone.": "alle",
"anyone": "alle",
"Anyone who knows the room's link, apart from guests": "Alle der kender link til rummet, bortset fra gæster",
"Anyone who knows the room's link, including guests": "Alle der kender link til rummet, inklusiv gæster",
"Are you sure you want to leave the room?": "Er du sikker på du vil forlade rummet?",
@ -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

@ -59,7 +59,7 @@
"all room members, from the point they joined": "Alle Raum-Mitglieder - seitdem sie beigetreten sind",
"and": "und",
"An email has been sent to": "Eine E-Mail wurde gesendet an",
"anyone.": "Jeder",
"anyone": "Jeder",
"Anyone who knows the room's link, apart from guests": "Jeder der den Raum-Link kennt - abgesehen von Gästen",
"Anyone who knows the room's link, including guests": "Jeder der den Raum-Link kennt - auch Gäste",
"Are you sure you want to leave the room?": "Bist du sicher, dass du den Raum verlassen willst?",
@ -123,9 +123,9 @@
"Forget room": "Raum vergessen",
"Forgot your password?": "Passwort vergessen?",
"For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.": "Aus Sicherheitsgründen werden beim Ausloggen alle Ende-zu-Ende-Verschlüsselungsschlüssel von diesem Browser gelöscht. Wenn du in späteren Riot-Sitzungen die Konversationshistorie entschlüsseln möchtest, exportiere bitte deine Schlüssel zur sicheren Verwahrung.",
"For security, this session has been signed out. Please sign in again": "Zur Sicherheit wurde diese Sitzung abgemeldet. Bitte melde dich erneut an",
"For security, this session has been signed out. Please sign in again.": "Zur Sicherheit wurde diese Sitzung abgemeldet. Bitte melde dich erneut an.",
"Found a bug?": "Fehler gefunden?",
"Guests cannot join this room even if explicitly invited": "Gäste können diesem Raum nicht beitreten auch wenn sie explizit eingeladen werden",
"Guests cannot join this room even if explicitly invited.": "Gäste können diesem Raum nicht beitreten auch wenn sie explizit eingeladen werden.",
"Guests can't set avatars. Please register.": "Gäste können keine Avatare setzen. Bitte registriere dich.",
"Guest users can't upload files. Please register to upload.": "Gäste können keine Dateien hochladen. Bitte registrieren um hochzuladen.",
"had": "hatte",
@ -177,7 +177,7 @@
"Privacy warning": "Datenschutzwarnung",
"Privileged Users": "Privilegierte Nutzer",
"Profile": "Profil",
"Refer a friend to Riot": "Lade eine(n) Freund(in) zu Riot ein",
"Refer a friend to Riot:": "Lade eine(n) Freund(in) zu Riot ein",
"rejected": "abgeleht",
"Once you&#39;ve followed the link it contains, click below": "Nachdem du dem Link gefolgt bist, klicke unten",
"rejected the invitation.": "lehnte die Einladung ab.",
@ -186,7 +186,7 @@
"removed their display name": "löschte den eigenen Anzeigenamen",
"Remove": "Entferne",
"requested a VoIP conference": "hat eine VoIP-Konferenz angefordert",
"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": "Eine Passwortänderung sorgt aktuell dafür, dass alle Ende-zu-Ende-Schlüssel von allen Geräten zurückgesetzt werden. Dadurch wird die verschlüsselte Chat-Historie unlesbar, es sei denn Sie exportieren vorher Ihre Raum-Schlüssel und importieren sie nachher wieder. In Zukunft wird dies verbessert",
"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.": "Eine Passwortänderung sorgt aktuell dafür, dass alle Ende-zu-Ende-Schlüssel von allen Geräten zurückgesetzt werden. Dadurch wird die verschlüsselte Chat-Historie unlesbar, es sei denn Sie exportieren vorher Ihre Raum-Schlüssel und importieren sie nachher wieder. In Zukunft wird dies verbessert.",
"restore": "Zum zurücksetzen",
"Return to login screen": "Zur Anmeldung zurückkehren",
"Room Colour": "Raumfarbe",
@ -242,7 +242,7 @@
"turned on end-to-end encryption (algorithm": "aktivierte Ende-zu-Ende-Verschlüsselung (Algorithmus",
"Unable to add email address": "Unfähig die E-Mail-Adresse hinzuzufügen",
"Unable to remove contact information": "Unfähig die Kontakt-Informationen zu löschen",
"Unable to verify email address": "Unfähig die E-Mail-Adresse zu verifizieren",
"Unable to verify email address.": "Unfähig die E-Mail-Adresse zu verifizieren.",
"Unban": "Entbannen",
"Unencrypted room": "Unverschlüsselter Raum",
"unknown error code": "Unbekannter Fehlercode",
@ -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",
@ -307,7 +307,7 @@
"You are already in a call": "Du bist bereits bei einem Anruf",
"You cannot place a call with yourself": "Du kannst keinen Anruf mit dir selbst starten",
"You cannot place VoIP calls in this browser": "Du kannst kein VoIP-Gespräch in diesem Browser starten",
"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": "Du musst dich erneut anmelden um Ende-zu-Ende-Verschlüsselungscodes für dieses Gerät zu generieren und den öffentl. Schlüssel an deinen Homeserver zu senden. Dies muss einmal gemacht werden. Entschuldige die Unannehmlichkeit",
"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.": "Du musst dich erneut anmelden um Ende-zu-Ende-Verschlüsselungscodes für dieses Gerät zu generieren und den öffentl. Schlüssel an deinen Homeserver zu senden. Dies muss einmal gemacht werden. Entschuldige die Unannehmlichkeit.",
"Your email address does not appear to be associated with a Matrix ID on this Homeserver": "Deine E-Mail-Adresse scheint nicht mit einer Matrix-ID auf diesem Homeserver verknüpft zu sein",
"Sun": "So",
"Mon": "Mo",
@ -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",
"%(senderDisplayName)s changed the topic to \"%(topic)s\"": "%(senderDisplayName)s änderte das Thema zu \"%(topic)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:",
@ -151,7 +151,7 @@
"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.",
"anyone.": "anyone",
"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",
"Anyone who knows the room's link, including guests": "Anyone who knows the room's link, including guests",
@ -172,14 +172,15 @@
"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",
"%(senderDisplayName)s changed the topic to \"%(topic)s\"": "%(senderDisplayName)s changed the topic to \"%(topic)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",
"changing room on a RoomView is not supported": "changing room on a RoomView is not supported",
"Changing password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Changing password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.",
"Claimed Ed25519 fingerprint key": "Claimed Ed25519 fingerprint key",
"Clear Cache and Reload": "Clear Cache and Reload",
"Clear Cache": "Clear Cache",
@ -214,6 +215,7 @@
"Delete": "Delete",
"demote": "demote",
"Deops user with given id": "Deops user with given id",
"Default": "Default",
"Device ID": "Device ID",
"Devices": "Devices",
"Devices will not yet be able to decrypt history from before they joined the room": "Devices will not yet be able to decrypt history from before they joined the room",
@ -229,17 +231,18 @@
"Drop here to tag %(section)s": "Drop here to tag %(section)s",
"Ed25519 fingerprint": "Ed25519 fingerprint",
"Email": "Email",
"Email Address": "Email Address",
"Email address": "Email address",
"Email, name or matrix ID": "Email, name or matrix ID",
"Emoji": "Emoji",
"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",
"Error": "Error",
"Error decrypting attachment": "Error decrypting attachment",
"Event information": "Event information",
"Existing Call": "Existing Call",
"Export E2E room keys": "Export E2E room keys",
@ -260,6 +263,7 @@
"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 set avatar.": "Failed to set avatar.",
"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",
@ -274,11 +278,16 @@
"Filter room members": "Filter room members",
"Forget room": "Forget room",
"Forgot your password?": "Forgot your password?",
"For security, this session has been signed out. Please sign in again": "For security, this session has been signed out. Please sign in again",
"For security, this session has been signed out. Please sign in again.": "For security, this session has been signed out. Please sign in again.",
"For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.": "For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.",
"Found a bug?": "Found a bug?",
"%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s",
"Guests can't set avatars. Please register.": "Guests can't set avatars. Please register.",
"Guest users can't create new rooms. Please register to create room and start a chat": "Guest users can't create new rooms. Please register to create room and start a chat",
"Guest users can't upload files. Please register to upload": "Guest users can't upload files. Please register to upload",
"Guests can't set avatars. Please register.": "Guests can't set avatars. Please register.",
"Guests can't use labs features. Please register.": "Guests can't use labs features. Please register.",
"Guests cannot join this room even if explicitly invited.": "Guests cannot join this room even if explicitly invited.",
"had": "had",
"Hangup": "Hangup",
"Hide read receipts": "Hide read receipts",
@ -293,6 +302,7 @@
"Invalid alias format": "Invalid alias format",
"Invalid address format": "Invalid address format",
"Invalid Email Address": "Invalid Email Address",
"Invalid file%(extra)s": "Invalid file%(extra)s",
"%(senderName)s invited %(targetName)s.": "%(senderName)s invited %(targetName)s.",
"Invite new room members": "Invite new room members",
"Invites": "Invites",
@ -333,6 +343,7 @@
"Mobile phone number": "Mobile phone number",
"Moderator": "Moderator",
"Must be viewing a room": "Must be viewing a room",
"Mute": "Mute",
"my Matrix ID": "my Matrix ID",
"Name": "Name",
"Never send encrypted messages to unverified devices from this device": "Never send encrypted messages to unverified devices from this device",
@ -359,6 +370,7 @@
"Once encryption is enabled for a room it cannot be turned off again (for now)": "Once encryption is enabled for a room it cannot be turned off again (for now)",
"Once you&#39;ve followed the link it contains, click below": "Once you&#39;ve followed the link it contains, click below",
"Only people who have been invited": "Only people who have been invited",
"Operation failed": "Operation failed",
"or": "or",
"Password": "Password",
"Passwords can't be empty": "Passwords can't be empty",
@ -375,18 +387,19 @@
"Profile": "Profile",
"Reason": "Reason",
"Revoke Moderator": "Revoke Moderator",
"Refer a friend to Riot": "Refer a friend to Riot",
"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.",
"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",
"Remove %(threePid)s?": "Remove %(threePid)s?",
"%(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",
"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",
"Return to app": "Return to app",
"Return to login screen": "Return to login screen",
@ -407,6 +420,7 @@
"Sender device information": "Sender device information",
"Send Invites": "Send Invites",
"Send Reset Email": "Send Reset Email",
"sent an image": "sent an image",
"%(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",
@ -417,8 +431,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)",
@ -482,11 +496,11 @@
"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",
"Unable to verify email address": "Unable to verify email address",
"Unable to verify email address.": "Unable to verify email address.",
"Unban": "Unban",
"%(senderName)s unbanned %(targetName)s.": "%(senderName)s unbanned %(targetName)s.",
"Unable to capture screen": "Unable to capture screen",
@ -499,6 +513,7 @@
"unknown error code": "unknown error code",
"Unknown room %(roomId)s": "Unknown room %(roomId)s",
"unknown": "unknown",
"Unmute": "Unmute",
"uploaded a file": "uploaded a file",
"Upload avatar": "Upload avatar",
"Upload Failed": "Upload Failed",
@ -516,8 +531,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!",
@ -525,7 +540,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",
@ -539,7 +554,8 @@
"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 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",
"You need to enter a user name.": "You need to enter a user name.",
"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",
"Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them": "Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them",

View file

@ -119,7 +119,7 @@
"zh-sg": "Chinese (Singapore)",
"zh-tw": "Chinese (Taiwan)",
"zu": "Zulu",
"anyone.": "anyone",
"anyone": "anyone",
"Direct Chat": "Conversation Directe",
"Direct chats": "Conversations directes",
"Disable inline URL previews by default": "Désactiver laperçu des URLs",
@ -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,11 +215,11 @@
"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",
"%(senderDisplayName)s changed the topic to \"%(topic)s\"": "%(senderDisplayName)s a changé le sujet du salon en \"%(topic)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",
"Claimed Ed25519 fingerprint key": "Clé empreinte Ed25519 revendiquée",
@ -270,7 +270,7 @@
"Failed to reject invitation": "Échec lors du rejet de l'invitation",
"Failed to save settings": "Échec lors de la sauvegarde des paramètres",
"Failed to send email": "Échec lors de lenvoi de le-mail",
"Failed to send request": "Échec lors de lenvoi de la requête",
"Failed to send request.": "Échec lors de lenvoi de la requête.",
"Failed to set display name": "Échec lors de l'enregistrement du nom d'affichage",
"Failed to set up conference call": "Échec lors de létablissement de lappel",
"Failed to toggle moderator status": "Échec lors de létablissement du statut de modérateur",
@ -294,7 +294,7 @@
"Filter room members": "Filtrer les membres par nom",
"Forget room": "Oublier le salon",
"Forgot your password?": "Mot de passe perdu ?",
"For security, this session has been signed out. Please sign in again": "Par sécurité, la session a expiré. Merci de vous authentifer à nouveau",
"For security, this session has been signed out. Please sign in again.": "Par sécurité, la session a expiré. Merci de vous authentifer à nouveau.",
"Found a bug?": "Trouvé un problème ?",
"%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s de %(fromPowerLevel)s à %(toPowerLevel)s",
"Guest users can't create new rooms. Please register to create room and start a chat": "Les utilisateurs invités ne peuvent créer de nouveaux salons. Merci de vous enregistrer pour commencer une discussion",
@ -371,5 +371,15 @@
"NOT verified": "NON vérifié",
"No devices with registered encryption keys": "Pas dappareil avec des clés dencryption enregistrées",
"No more results": "Fin des résultats",
"No results": "Pas de résultats"
"No results": "Pas de résultats",
"unknown error code": "Code erreur inconnu",
"OK": "OK",
"Once encryption is enabled for a room it cannot be turned off again (for now)": "Une fois le chiffrement activé dans un salon il ne peut pas être désactivé (pour le moment)",
"Only people who have been invited": "Seul les personnes ayant été invitées",
"or": "ou",
"Password": "Mot de passe",
"Passwords can't be empty": "Le mot de passe ne peut pas être vide",
"People": "Personne",
"Permissions": "Permissions",
"Phone": "Téléphone"
}

View file

@ -94,11 +94,11 @@
"Forget room": "Esquecer sala",
"Forgot your password?": "Esqueceu sua senha?",
"For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.": "Por segurança, deslogar irá remover qualquer chave de criptografia ponta-a-ponta deste navegador. Caso deseje descriptografar o histórico das suas conversas E2E em sessões Riot futuras, por favor exporte as chaves da sala para sua garantia.",
"For security, this session has been signed out. Please sign in again": "Por questões de segurança, esta sessão foi encerrada. Por gentileza conecte-se novamente",
"For security, this session has been signed out. Please sign in again.": "Por questões de segurança, esta sessão foi encerrada. Por gentileza conecte-se novamente.",
"Found a bug?": "Encontrou um problema de funcionamento do sistema?",
"Guests cannot join this room even if explicitly invited": "Visitantes não podem entrar nesta sala, mesmo se forem explicitamente convidadas/os",
"Guests can't set avatars. Please register": "Convidados não podem definir uma foto do perfil. Por favor, registre-se",
"Guests can't use labs features. Please register": "Convidados não podem usar as funcionalidades de laboratório (lab), por gentileza se registre",
"Guests cannot join this room even if explicitly invited.": "Visitantes não podem entrar nesta sala, mesmo se forem explicitamente convidadas/os.",
"Guests can't set avatars. Please register.": "Convidados não podem definir uma foto do perfil. Por favor, registre-se.",
"Guests can't use labs features. Please register.": "Convidados não podem usar as funcionalidades de laboratório (lab), por gentileza se registre.",
"Guest users can't upload files. Please register to upload": "Usuários não podem fazer envio de arquivos. Por favor se cadastre para enviar arquivos",
"had": "teve",
"Hangup": "Desligar",
@ -162,7 +162,7 @@
"Privacy warning": "Alerta sobre privacidade",
"Privileged Users": "Usuárias/os privilegiadas/os",
"Profile": "Perfil",
"Refer a friend to Riot: ": "Indicar um amigo para participar",
"Refer a friend to Riot:": "Indicar um amigo para participar",
"rejected": "recusou",
"rejected the invitation.": "rejeitou o convite.",
"Reject invitation": "Rejeitar convite",
@ -171,7 +171,7 @@
"removed their profile picture": "removeu sua foto de perfil",
"Remove": "Remover",
"requested a VoIP conference": "requisitou uma conferência VoIP",
"Resetting password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved": "Atualmente, ao alterar sua senha, você também zera todas as chaves de criptografia ponta-a-ponta em todos os dipositivos, fazendo com que o histórico de conversas da sala não possa mais ser lido, a não ser que você antes exporte suas chaves de sala e as reimporte após a alteração da senha. No futuro, isso será melhorado",
"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.": "Atualmente, ao alterar sua senha, você também zera todas as chaves de criptografia ponta-a-ponta em todos os dipositivos, fazendo com que o histórico de conversas da sala não possa mais ser lido, a não ser que você antes exporte suas chaves de sala e as reimporte após a alteração da senha. No futuro, isso será melhorado.",
"restore": "restaurar",
"Return to app": "Retornar ao aplicativo",
"Return to login screen": "Retornar à tela de login",
@ -233,7 +233,7 @@
"turned on end-to-end encryption (algorithm": "acionou a encriptação ponta-a-ponta (algoritmo",
"Unable to add email address": "Não foi possível adicionar endereço de email",
"Unable to remove contact information": "Não foi possível remover informação de contato",
"Unable to verify email address": "Não foi possível verificar o endereço de email",
"Unable to verify email address.": "Não foi possível verificar o endereço de email.",
"Unban": "Desfazer banimento",
"Unencrypted room": "Sala não criptografada",
"unencrypted": "não criptografado",
@ -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",
@ -312,14 +312,14 @@
"%(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.",
"anyone.": "qualquer pessoa",
"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",
"%(senderDisplayName)s changed the topic to \"%(topic)s\"": "%(senderDisplayName)s alterou o tópico para \"%(topic)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",
"Conference calling is in development and may not be reliable": "Chamadas de conferência estão em desenvolvimento e portanto podem não funcionar",
@ -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",
@ -354,18 +354,18 @@
"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",
"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",
@ -401,7 +401,7 @@
"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 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",
"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ê:",
"Upload an avatar:": "Envie uma imagem de perfil para identificar você:",

View file

@ -36,7 +36,7 @@
"changed their profile picture": "alterou sua foto de perfil",
"changed the power level of": "mudou o nível de permissões de",
"changed the room name to": "mudou o nome da sala para",
"%(senderDisplayName)s changed the topic to \"%(topic)s\"": "%(senderDisplayName)s mudou o tópico para \"%(topic)s\"",
"%(senderDisplayName)s changed the topic to \"%(topic)s\".": "%(senderDisplayName)s mudou o tópico para \"%(topic)s\".",
"Changes to who can read history will only apply to future messages in this room": "As mudanças sobre quem pode ler o histórico da sala só serão aplicadas às mensagens futuras nesta sala",
"Changes your display nickname": "Troca o seu apelido",
"Claimed Ed25519 fingerprint key": "Chave reivindicada da Impressão Digital Ed25519",
@ -97,11 +97,11 @@
"Forget room": "Esquecer sala",
"Forgot your password?": "Esqueceu sua senha?",
"For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.": "Por segurança, deslogar irá remover qualquer chave de criptografia ponta-a-ponta deste navegador. Caso deseje descriptografar o histórico das suas conversas E2E em sessões Riot futuras, por favor exporte as chaves da sala para sua garantia.",
"For security, this session has been signed out. Please sign in again": "Por questões de segurança, esta sessão foi encerrada. Por gentileza conecte-se novamente",
"For security, this session has been signed out. Please sign in again.": "Por questões de segurança, esta sessão foi encerrada. Por gentileza conecte-se novamente.",
"Found a bug?": "Encontrou um problema de funcionamento do sistema?",
"Guests cannot join this room even if explicitly invited": "Visitantes não podem entrar nesta sala, mesmo se forem explicitamente convidadas/os",
"Guests can't set avatars. Please register": "Convidados não podem definir uma foto do perfil. Por favor, registre-se",
"Guests can't use labs features. Please register": "Convidados não podem usar as funcionalidades de laboratório (lab), por gentileza se registre",
"Guests cannot join this room even if explicitly invited.": "Visitantes não podem entrar nesta sala, mesmo se forem explicitamente convidadas/os.",
"Guests can't set avatars. Please register.": "Convidados não podem definir uma foto do perfil. Por favor, registre-se.",
"Guests can't use labs features. Please register.": "Convidados não podem usar as funcionalidades de laboratório (lab), por gentileza se registre.",
"Guest users can't upload files. Please register to upload": "Usuários não podem fazer envio de arquivos. Por favor se cadastre para enviar arquivos",
"had": "teve",
"Hangup": "Desligar",
@ -166,7 +166,7 @@
"Privacy warning": "Alerta sobre privacidade",
"Privileged Users": "Usuárias/os privilegiadas/os",
"Profile": "Perfil",
"Refer a friend to Riot: ": "Indicar um amigo para participar",
"Refer a friend to Riot:": "Indicar um amigo para participar",
"rejected": "recusou",
"rejected the invitation.": "rejeitou o convite.",
"Reject invitation": "Rejeitar convite",
@ -175,7 +175,7 @@
"removed their profile picture": "removeu sua foto de perfil",
"Remove": "Remover",
"requested a VoIP conference": "requisitou uma conferência VoIP",
"Resetting password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved": "Atualmente, ao alterar sua senha, você também zera todas as chaves de criptografia ponta-a-ponta em todos os dipositivos, fazendo com que o histórico de conversas da sala não possa mais ser lido, a não ser que você antes exporte suas chaves de sala e as reimporte após a alteração da senha. No futuro, isso será melhorado",
"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.": "Atualmente, ao alterar sua senha, você também zera todas as chaves de criptografia ponta-a-ponta em todos os dipositivos, fazendo com que o histórico de conversas da sala não possa mais ser lido, a não ser que você antes exporte suas chaves de sala e as reimporte após a alteração da senha. No futuro, isso será melhorado.",
"restore": "restaurar",
"Return to app": "Retornar ao aplicativo",
"Return to login screen": "Retornar à tela de login",
@ -238,7 +238,7 @@
"turned on end-to-end encryption (algorithm": "acionou a encriptação ponta-a-ponta (algoritmo",
"Unable to add email address": "Não foi possível adicionar endereço de email",
"Unable to remove contact information": "Não foi possível remover informação de contato",
"Unable to verify email address": "Não foi possível verificar o endereço de email",
"Unable to verify email address.": "Não foi possível verificar o endereço de email.",
"Unban": "Desfazer banimento",
"Unencrypted room": "Sala não criptografada",
"unencrypted": "não criptografado",
@ -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",
@ -317,13 +317,13 @@
"%(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.",
"anyone.": "qualquer pessoa",
"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",
@ -358,18 +358,18 @@
"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",
"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",
@ -406,7 +406,7 @@
"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 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",
"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ê:",
"Upload an avatar:": "Envie uma imagem de perfil para identificar você:",

View file

@ -16,7 +16,7 @@
"An email has been sent to": "Email был отправлен",
"A new password must be entered.": "Введите новый пароль.",
"answered the call.": "принятый звонок.",
"anyone.": "кто угодно",
"anyone": "кто угодно",
"Anyone who knows the room's link, apart from guests": "Любой, кто знает ссылку на комнату, кроме гостей",
"Anyone who knows the room's link, including guests": "Любой, кто знает ссылку комнаты, включая гостей",
"Are you sure you want to reject the invitation?": "Вы уверены что вы хотите отклонить приглашение?",
@ -88,7 +88,7 @@
"Filter room members": "Фильтр участников комнаты",
"Forget room": "Забыть комнату",
"Forgot your password?": "Вы забыли пароль?",
"For security, this session has been signed out. Please sign in again": "Для обеспечения безопасности, эта сессия была подписана. Войдите в систему еще раз.",
"For security, this session has been signed out. Please sign in again.": "Для обеспечения безопасности, эта сессия была подписана. Войдите в систему еще раз.",
"Found a bug?": "Нашли ошибку?",
"had": "имеет",
"Hangup": "Отключение",
@ -167,7 +167,7 @@
"turned on end-to-end encryption (algorithm": "turned on end-to-end encryption (algorithm",
"Unable to add email address": "Невозможно добавить email адрес",
"Unable to remove contact information": "Невозможно удалить контактную информацию",
"Unable to verify email address": "Невозможно проверить адрес электронной почты",
"Unable to verify email address.": "Невозможно проверить адрес электронной почты.",
"Unban": "Отменить запрет",
"Unencrypted room": "Незашифрованная комната",
"unencrypted": "незашифрованно",
@ -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,11 +227,11 @@
"%(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",
"%(senderDisplayName)s changed the topic to \"%(topic)s\"": "%(senderDisplayName)s измененная тема на %(topic)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": "Конференц-вызов находится в процессе и может не быть надежным",
"Conference calls are not supported in encrypted rooms": "Конференц-вызовы не поддерживаются в зашифрованных комнатах",
@ -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": "Фев.",
@ -385,12 +385,12 @@
"Thu": "Чт",
"Fri": "Пя",
"Sat": "Сб",
"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": "Вам необходимо снова войти в генерировать сквозное шифрование (е2е) ключей для этого устройства и предоставить публичный ключ Вашему домашнему серверу. Это после выключения; приносим извинения за причиненные неудобства",
"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.": "Вам необходимо снова войти в генерировать сквозное шифрование (е2е) ключей для этого устройства и предоставить публичный ключ Вашему домашнему серверу. Это после выключения; приносим извинения за причиненные неудобства.",
"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.": "Для его использования, просто подождите результатов автозаполнения для загрузки на вкладке и через них.",
"%(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": "Невозможно записать снимок экрана",
@ -449,7 +449,7 @@
"sx": "Суту",
"zh-hk": "Китайский (Гонконг)",
"A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "На +%(msisdn)s было отправлено текстовое сообщение. Пожалуйста, введите проверочный код из него",
"and %(overflowCount)s others...": "и %(overflowCounts)s других...",
"and %(overflowCount)s others...": "и %(overflowCount)s других...",
"Are you sure?": "Вы уверены?",
"Autoplay GIFs and videos": "Проигрывать GIF и видео автоматически",
"Can't connect to homeserver - please check your connectivity and ensure your %(urlStart)s homeserver's SSL certificate %(urlEnd)s is trusted": "Невозможно соединиться с домашним сервером - проверьте своё соединение и убедитесь, что %(urlStart)s SSL-сертификат вашего домашнего сервера %(urlEnd)s включён в доверяемые",
@ -537,11 +537,11 @@
"%(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": "На данный момент сброс пароля сбросит все ключи шифрования на всех устройствах, зашифрованная история общения будет нечитаема, если вы сперва не скачаете ваши ключи от комнаты и не загрузите их после. В будущем это будет улучшено",
"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": "восстановить",
"Return to app": "Вернуться в приложение",
"Riot does not have permission to send you notifications - please check your browser settings": "Riot не имеет права для отправки вам уведомлений, пожалуйста, проверьте настройки вашего браузера",