{_t("You'll need to authenticate with the server to confirm the upgrade.")} @@ -411,9 +463,9 @@ export default class CreateSecretStorageDialog extends React.PureComponent { return
; + } + + _renderPhasePassPhraseConfirm() { + const AccessibleButton = sdk.getComponent('elements.AccessibleButton'); + const Field = sdk.getComponent('views.elements.Field'); + + let matchText; + let changeText; + if (this.state.passPhraseConfirm === this.state.passPhrase) { + matchText = _t("That matches!"); + changeText = _t("Use a different passphrase?"); + } else if (!this.state.passPhrase.startsWith(this.state.passPhraseConfirm)) { + // only tell them they're wrong if they've actually gone wrong. + // Security concious readers will note that if you left riot-web unattended + // on this screen, this would make it easy for a malicious person to guess + // your passphrase one letter at a time, but they could get this faster by + // just opening the browser's developer tools and reading it. + // Note that not having typed anything at all will not hit this clause and + // fall through so empty box === no hint. + matchText = _t("That doesn't match."); + changeText = _t("Go back to set it again."); } + let passPhraseMatch = null; + if (matchText) { + passPhraseMatch ={_t( - "Store your Recovery Key somewhere safe, it can be used to unlock your encrypted messages & data.", + "Your recovery key is a safety net - you can use it to restore " + + "access to your encrypted messages if you forget your recovery passphrase.", + )}
+{_t( + "Keep a copy of it somewhere secure, like a password manager or even a safe.", )}
{this._recoveryKey.encodedPrivateKey}
{_t("Unable to query secret storage status")}
{_t( - "Create a Recovery Key to store encryption keys & secrets with your account data. " + - "If you lose access to this login you’ll need it to unlock your data.", + "You can now verify your other devices, " + + "and other users to keep your chats safe.", )}
-{_t("Unable to set up secret storage")}
{_t( @@ -224,67 +154,13 @@ export default class SetupEncryptionBody extends React.Component {
//
to start it with a slash.": "Truco: Comeza a mensaxe con //
para comezar cun trazo.",
+ "Send as message": "Enviar como mensaxe",
+ "Failed to connect to integration manager": "Fallou a conexión co xestor de integracións",
+ "Add some now": "Engade algún agora",
+ "Failed to revoke invite": "Fallo ao revogar o convite",
+ "Could not revoke the invite. The server may be experiencing a temporary problem or you do not have sufficient permissions to revoke the invite.": "Non se revogou o convite. O servidor podería estar experimentando un problema temporal ou non tes permisos suficientes para revogar o convite.",
+ "Revoke invite": "Revogar convite",
+ "Invited by %(sender)s": "Convidada por %(sender)s",
+ "Mark all as read": "Marcar todo como lido",
+ "Error updating main address": "Fallo ao actualizar o enderezo principal",
+ "There was an error updating the room's main address. It may not be allowed by the server or a temporary failure occurred.": "Algo fallou ao actualizar o enderezo principal da sala. Podería non estar autorizado polo servidor ou ser un fallo temporal.",
+ "Error creating address": "Fallo ao crear o enderezo",
+ "There was an error creating that address. It may not be allowed by the server or a temporary failure occurred.": "Algo fallou ao crear ese enderezo. Podería non estar autorizado polo servidor ou ser un fallo temporal.",
+ "You don't have permission to delete the address.": "Non tes permiso para eliminar o enderezo.",
+ "There was an error removing that address. It may no longer exist or a temporary error occurred.": "Houbo un erro ao eliminar o enderezo. Podería non existir ou ser un fallo temporal.",
+ "Error removing address": "Erro ao eliminar o enderezo",
+ "Main address": "Enderezo principal",
+ "Local address": "Enderezo local",
+ "Published Addresses": "Enderezos publicados",
+ "Other published addresses:": "Outros enderezos publicados:",
+ "No other published addresses yet, add one below": "Aínda non hai outros enderezos publicados, engade un embaixo",
+ "New published address (e.g. #alias:server)": "Novo enderezo publicado (ex. #alias:servidor)",
+ "Local Addresses": "Enderezos locais",
+ "Room Name": "Nome da sala",
+ "Room Topic": "Asunto da sala",
+ "Room avatar": "Avatar da sala",
+ "Waiting for you to accept on your other session…": "Agardando a que aceptes na túa outra sesión…",
+ "Waiting for %(displayName)s to accept…": "Agardando a que %(displayName)s acepte…",
+ "Accepting…": "Aceptando…",
+ "Start Verification": "Comezar a Verificación",
+ "Your messages are secured and only you and the recipient have the unique keys to unlock them.": "As túas mensaxes están seguras e só ti e o correspondente tedes as únicas chaves que as desbloquean.",
+ "In encrypted rooms, your messages are secured and only you and the recipient have the unique keys to unlock them.": "Nas salas cifradas, as túas mensaxes están seguras e só ti e o correspondente tedes as únicas chaves que as desbloquean.",
+ "Verify User": "Verificar Usuaria",
+ "For extra security, verify this user by checking a one-time code on both of your devices.": "Para maior seguridade, verifica esta usuaria comprobando o código temporal en dous dos teus dispositivos.",
+ "Your messages are not secure": "As túas mensaxes non están aseguradas",
+ "One of the following may be compromised:": "Un dos seguintes podería estar comprometido:",
+ "Your homeserver": "O teu servidor",
+ "The homeserver the user you’re verifying is connected to": "O servidor ao que a usuaria que estás a verificar está conectada",
+ "Yours, or the other users’ internet connection": "A túa, ou a conexión a internet da outra usuaria",
+ "Yours, or the other users’ session": "A túa, ou a sesión da outra usuaria",
+ "Trusted": "Confiable",
+ "Not trusted": "Non confiable",
+ "%(count)s verified sessions|other": "%(count)s sesións verificadas",
+ "Use the improved room list (in development - will refresh to apply changes)": "Usar a lista de salas mellorada (desenvolvemento - actualizar para aplicar)",
+ "%(count)s verified sessions|one": "1 sesión verificada",
+ "Hide verified sessions": "Agochar sesións verificadas",
+ "%(count)s sessions|other": "%(count)s sesións",
+ "%(count)s sessions|one": "%(count)s sesión",
+ "Hide sessions": "Agochar sesións",
+ "Direct message": "Mensaxe directa",
+ "No recent messages by %(user)s found": "Non se atoparon mensaxes recentes de %(user)s",
+ "Try scrolling up in the timeline to see if there are any earlier ones.": "Desprázate na cronoloxía para ver se hai algúns máis recentes.",
+ "Remove recent messages by %(user)s": "Eliminar mensaxes recentes de %(user)s",
+ "You are about to remove %(count)s messages by %(user)s. This cannot be undone. Do you wish to continue?|other": "Vas eliminar %(count)s mensaxes de %(user)s. Esto non ten volta, ¿desexas continuar?",
+ "You are about to remove %(count)s messages by %(user)s. This cannot be undone. Do you wish to continue?|one": "Vas eliminar unha mensaxe de %(user)s. Esto non ten volta, ¿desexas continuar?",
+ "For a large amount of messages, this might take some time. Please don't refresh your client in the meantime.": "Podería demorar un tempo se é un número grande de mensaxes. Non actualices o cliente mentras tanto.",
+ "Remove %(count)s messages|other": "Eliminar %(count)s mensaxes",
+ "Remove %(count)s messages|one": "Eliminar 1 mensaxe",
+ "Remove recent messages": "Eliminar mensaxes recentes",
+ "%(role)s in %(roomName)s": "%(role)s en %(roomName)s",
+ "Deactivate user?": "¿Desactivar usuaria?",
+ "Deactivating this user will log them out and prevent them from logging back in. Additionally, they will leave all the rooms they are in. This action cannot be reversed. Are you sure you want to deactivate this user?": "Ao desactivar esta usuaria ficará desconectada e non poderá voltar a conectar. Ademáis deixará todas as salas nas que estivese. Esta acción non ten volta, ¿desexas desactivar esta usuaria?",
+ "Deactivate user": "Desactivar usuaria",
+ "Failed to deactivate user": "Fallo ao desactivar a usuaria",
+ "This client does not support end-to-end encryption.": "Este cliente non soporta o cifrado extremo-a-extremo.",
+ "Security": "Seguridade",
+ "The session you are trying to verify doesn't support scanning a QR code or emoji verification, which is what Riot supports. Try with a different client.": "A sesión que intentas verificar non soporta a verificación por código QR ou por emoticonas, que é o que soporta Riot. Inténtao cun cliente diferente.",
+ "Verify by scanning": "Verificar escaneando",
+ "Ask %(displayName)s to scan your code:": "Pídelle a %(displayName)s que escanee o teu código:",
+ "If you can't scan the code above, verify by comparing unique emoji.": "Se non podes escanear o código superior, verifica comparando as emoticonas.",
+ "Verify by comparing unique emoji.": "Verficación por comparación de emoticonas.",
+ "Verify by emoji": "Verificar por emoticonas",
+ "Almost there! Is your other session showing the same shield?": "Case feito! ¿Podes ver as mesmas na túa outra sesión?",
+ "Almost there! Is %(displayName)s showing the same shield?": "Case feito! ¿está %(displayName)s mostrando as mesmas emoticonas?",
+ "Yes": "Si",
+ "Verify all users in a room to ensure it's secure.": "Verificar todas as usuarias da sala para asegurar que é segura.",
+ "Use the improved room list (will refresh to apply changes)": "Usa a lista de salas mellorada (actualizará para aplicar)",
+ "Strikethrough": "Sobrescrito",
+ "In encrypted rooms, verify all users to ensure it’s secure.": "En salas cifradas, verifica todas as usuarias para asegurar que é segura.",
+ "You've successfully verified your device!": "Verificaches correctamente o teu dispositivo!",
+ "You've successfully verified %(deviceName)s (%(deviceId)s)!": "Verificaches correctamente %(deviceName)s (%(deviceId)s)!",
+ "You've successfully verified %(displayName)s!": "Verificaches correctamente a %(displayName)s!",
+ "Verified": "Verficiado",
+ "Got it": "Vale",
+ "Start verification again from the notification.": "Inicia o proceso de novo desde a notificación.",
+ "Start verification again from their profile.": "Inicia a verificación outra vez desde o seu perfil.",
+ "Verification timed out.": "Verificación caducada.",
+ "You cancelled verification on your other session.": "Cancelaches a verificación na túa outra sesión.",
+ "%(displayName)s cancelled verification.": "%(displayName)s cancelou a verificación.",
+ "You cancelled verification.": "Cancelaches a verificación.",
+ "Verification cancelled": "Verificación cancelada",
+ "Compare emoji": "Comparar emoticonas",
+ "Encryption enabled": "Cifrado activado",
+ "Encryption not enabled": "Cifrado desactivado",
+ "The encryption used by this room isn't supported.": "O cifrado desta sala non está soportado.",
+ "React": "Reacciona",
+ "Message Actions": "Accións da mensaxe",
+ "Show image": "Mostrar imaxe",
+ "You have ignored this user, so their message is hidden. Show anyways.": "Estás a ignorar a esta usuaria, polo que a imaxe está agochada. Mostrar igualmente.",
+ "You verified %(name)s": "Verificaches a %(name)s",
+ "You cancelled verifying %(name)s": "Cancelaches a verificación de %(name)s",
+ "%(name)s cancelled verifying": "%(name)s cancelou a verificación",
+ "You accepted": "Aceptaches",
+ "%(name)s accepted": "%(name)s aceptou",
+ "You declined": "Declinaches",
+ "You cancelled": "Cancelaches",
+ "%(name)s declined": "%(name)s declinou",
+ "%(name)s cancelled": "%(name)s cancelou",
+ "Accepting …": "Aceptando…",
+ "Declining …": "Declinando…",
+ "%(name)s wants to verify": "%(name)s desexa verificar",
+ "You sent a verification request": "Enviaches unha solicitude de verificación",
+ "Show all": "Mostrar todo",
+ "Reactions": "Reaccións",
+ "