diff --git a/scripts/check-i18n.pl b/scripts/check-i18n.pl
index b415108b96..4b670a7694 100755
--- a/scripts/check-i18n.pl
+++ b/scripts/check-i18n.pl
@@ -38,8 +38,6 @@ foreach my $tuple (@$src_strings) {
}
}
-#exit;
-
opendir(DIR, $i18ndir) || die $!;
my @files = readdir(DIR);
closedir(DIR);
@@ -105,6 +103,9 @@ sub read_src_strings {
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;
diff --git a/scripts/fix-i18n.pl b/scripts/fix-i18n.pl
index 5d5e8f68b9..d4ae3dfb49 100755
--- a/scripts/fix-i18n.pl
+++ b/scripts/fix-i18n.pl
@@ -40,6 +40,14 @@ VoIP conference finished.
%(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
)];
}
diff --git a/src/components/structures/UserSettings.js b/src/components/structures/UserSettings.js
index 59b8f5a385..0ca1a6c57a 100644
--- a/src/components/structures/UserSettings.js
+++ b/src/components/structures/UserSettings.js
@@ -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:
- { _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.") }.
,
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({
Referral
- {_t("Refer a friend to Riot: ")}
{href}
+ {_t("Refer a friend to Riot:")}
{href}
);
@@ -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;
}
diff --git a/src/components/structures/login/ForgotPassword.js b/src/components/structures/login/ForgotPassword.js
index c7dc35c1a8..6e7cda1365 100644
--- a/src/components/structures/login/ForgotPassword.js
+++ b/src/components/structures/login/ForgotPassword.js
@@ -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 ' +
- '' +
- 'will be improved'
- ) }.
+ 'them afterwards. In future this will be improved.'
+ ) }
,
button: _t('Continue'),
extraButtons: [
diff --git a/src/components/views/login/PasswordLogin.js b/src/components/views/login/PasswordLogin.js
index 8e5229c63d..11d8f2cc7c 100644
--- a/src/components/views/login/PasswordLogin.js
+++ b/src/components/views/login/PasswordLogin.js
@@ -188,7 +188,7 @@ class PasswordLogin extends React.Component {
value={this.state.loginType}
onOptionChange={this.onLoginTypeChange}>
{ _t('my Matrix ID') }
- { _t('Email Address') }
+ { _t('Email address') }
{ _t('Phone') }
diff --git a/src/components/views/room_settings/AliasSettings.js b/src/components/views/room_settings/AliasSettings.js
index b5ef1d8309..b48c5a4fe2 100644
--- a/src/components/views/room_settings/AliasSettings.js
+++ b/src/components/views/room_settings/AliasSettings.js
@@ -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 }),
});
}
},
diff --git a/src/components/views/rooms/RoomHeader.js b/src/components/views/rooms/RoomHeader.js
index c5e3a56922..3463ef948f 100644
--- a/src/components/views/rooms/RoomHeader.js
+++ b/src/components/views/rooms/RoomHeader.js
@@ -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();
},
diff --git a/src/components/views/rooms/RoomSettings.js b/src/components/views/rooms/RoomSettings.js
index e50bcdde46..8125adfe44 100644
--- a/src/components/views/rooms/RoomSettings.js
+++ b/src/components/views/rooms/RoomSettings.js
@@ -762,7 +762,7 @@ module.exports = React.createClass({
if (this.state.join_rule !== "public" && this.state.guest_access === "forbidden") {
inviteGuestWarning =
,
button: _t("Continue"),
diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json
index 20053a28f0..984754ad84 100644
--- a/src/i18n/strings/de_DE.json
+++ b/src/i18n/strings/de_DE.json
@@ -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'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",
diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json
index 27a9105ac6..4105594058 100644
--- a/src/i18n/strings/en_EN.json
+++ b/src/i18n/strings/en_EN.json
@@ -180,6 +180,7 @@
"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",
@@ -230,7 +231,7 @@
"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",
@@ -241,6 +242,7 @@
"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",
@@ -261,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",
@@ -276,10 +279,15 @@
"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, 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",
@@ -294,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",
@@ -334,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",
@@ -360,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've followed the link it contains, click below": "Once you'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",
@@ -376,7 +387,7 @@
"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.",
@@ -385,9 +396,10 @@
"%(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",
+ "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",
@@ -488,7 +500,7 @@
"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",
@@ -501,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",
@@ -541,6 +554,7 @@
"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 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",
diff --git a/src/i18n/strings/pt.json b/src/i18n/strings/pt.json
index 955ee1837c..8b2cafb7a9 100644
--- a/src/i18n/strings/pt.json
+++ b/src/i18n/strings/pt.json
@@ -97,8 +97,8 @@
"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 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",
@@ -354,7 +354,7 @@
"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.",
diff --git a/src/i18n/strings/pt_BR.json b/src/i18n/strings/pt_BR.json
index adc3650c4e..bb67aa4c5f 100644
--- a/src/i18n/strings/pt_BR.json
+++ b/src/i18n/strings/pt_BR.json
@@ -100,8 +100,8 @@
"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 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",
@@ -358,7 +358,7 @@
"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.",
diff --git a/src/i18n/strings/ru.json b/src/i18n/strings/ru.json
index bb7621e69d..5b81b88a92 100644
--- a/src/i18n/strings/ru.json
+++ b/src/i18n/strings/ru.json
@@ -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": "незашифрованно",
@@ -541,7 +541,7 @@
"%(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 не имеет права для отправки вам уведомлений, пожалуйста, проверьте настройки вашего браузера",