Merge pull request #4017 from matrix-org/jryans/e2e-copy-changes
Apply copy edits to security setup flow
This commit is contained in:
commit
2584772bfb
7 changed files with 40 additions and 88 deletions
|
@ -139,7 +139,7 @@ export async function accessSecretStorage(func = async () => { }) {
|
||||||
const { finished } = Modal.createTrackedDialog(
|
const { finished } = Modal.createTrackedDialog(
|
||||||
'Cross-signing keys dialog', '', InteractiveAuthDialog,
|
'Cross-signing keys dialog', '', InteractiveAuthDialog,
|
||||||
{
|
{
|
||||||
title: _t("Send cross-signing keys to homeserver"),
|
title: _t("Setting up keys"),
|
||||||
matrixClient: MatrixClientPeg.get(),
|
matrixClient: MatrixClientPeg.get(),
|
||||||
makeRequest,
|
makeRequest,
|
||||||
},
|
},
|
||||||
|
|
|
@ -71,7 +71,6 @@ export default class CreateKeyBackupDialog extends React.PureComponent {
|
||||||
copied: false,
|
copied: false,
|
||||||
downloaded: false,
|
downloaded: false,
|
||||||
zxcvbnResult: null,
|
zxcvbnResult: null,
|
||||||
setPassPhrase: false,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
if (this.state.secureSecretStorage === undefined) {
|
if (this.state.secureSecretStorage === undefined) {
|
||||||
|
@ -219,7 +218,6 @@ export default class CreateKeyBackupDialog extends React.PureComponent {
|
||||||
_onPassPhraseConfirmNextClick = async () => {
|
_onPassPhraseConfirmNextClick = async () => {
|
||||||
this._keyBackupInfo = await MatrixClientPeg.get().prepareKeyBackupVersion(this.state.passPhrase);
|
this._keyBackupInfo = await MatrixClientPeg.get().prepareKeyBackupVersion(this.state.passPhrase);
|
||||||
this.setState({
|
this.setState({
|
||||||
setPassPhrase: true,
|
|
||||||
copied: false,
|
copied: false,
|
||||||
downloaded: false,
|
downloaded: false,
|
||||||
phase: PHASE_SHOWKEY,
|
phase: PHASE_SHOWKEY,
|
||||||
|
@ -338,7 +336,7 @@ export default class CreateKeyBackupDialog extends React.PureComponent {
|
||||||
<details>
|
<details>
|
||||||
<summary>{_t("Advanced")}</summary>
|
<summary>{_t("Advanced")}</summary>
|
||||||
<p><button onClick={this._onSkipPassPhraseClick} >
|
<p><button onClick={this._onSkipPassPhraseClick} >
|
||||||
{_t("Set up with a Recovery Key")}
|
{_t("Set up with a recovery key")}
|
||||||
</button></p>
|
</button></p>
|
||||||
</details>
|
</details>
|
||||||
</div>;
|
</div>;
|
||||||
|
@ -401,28 +399,17 @@ export default class CreateKeyBackupDialog extends React.PureComponent {
|
||||||
}
|
}
|
||||||
|
|
||||||
_renderPhaseShowKey() {
|
_renderPhaseShowKey() {
|
||||||
let bodyText;
|
|
||||||
if (this.state.setPassPhrase) {
|
|
||||||
bodyText = _t(
|
|
||||||
"As a safety net, you can use it to restore your encrypted message " +
|
|
||||||
"history if you forget your Recovery Passphrase.",
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
bodyText = _t("As a safety net, you can use it to restore your encrypted message history.");
|
|
||||||
}
|
|
||||||
|
|
||||||
return <div>
|
return <div>
|
||||||
<p>{_t(
|
<p>{_t(
|
||||||
"Your recovery key is a safety net - you can use it to restore " +
|
"Your recovery key is a safety net - you can use it to restore " +
|
||||||
"access to your encrypted messages if you forget your passphrase.",
|
"access to your encrypted messages if you forget your passphrase.",
|
||||||
)}</p>
|
)}</p>
|
||||||
<p>{_t(
|
<p>{_t(
|
||||||
"Keep your recovery key somewhere very secure, like a password manager (or a safe).",
|
"Keep a copy of it somewhere secure, like a password manager or even a safe.",
|
||||||
)}</p>
|
)}</p>
|
||||||
<p>{bodyText}</p>
|
|
||||||
<div className="mx_CreateKeyBackupDialog_primaryContainer">
|
<div className="mx_CreateKeyBackupDialog_primaryContainer">
|
||||||
<div className="mx_CreateKeyBackupDialog_recoveryKeyHeader">
|
<div className="mx_CreateKeyBackupDialog_recoveryKeyHeader">
|
||||||
{_t("Your Recovery Key")}
|
{_t("Your recovery key")}
|
||||||
</div>
|
</div>
|
||||||
<div className="mx_CreateKeyBackupDialog_recoveryKeyContainer">
|
<div className="mx_CreateKeyBackupDialog_recoveryKeyContainer">
|
||||||
<div className="mx_CreateKeyBackupDialog_recoveryKey">
|
<div className="mx_CreateKeyBackupDialog_recoveryKey">
|
||||||
|
@ -430,7 +417,7 @@ export default class CreateKeyBackupDialog extends React.PureComponent {
|
||||||
</div>
|
</div>
|
||||||
<div className="mx_CreateKeyBackupDialog_recoveryKeyButtons">
|
<div className="mx_CreateKeyBackupDialog_recoveryKeyButtons">
|
||||||
<button className="mx_Dialog_primary" onClick={this._onCopyClick}>
|
<button className="mx_Dialog_primary" onClick={this._onCopyClick}>
|
||||||
{_t("Copy to clipboard")}
|
{_t("Copy")}
|
||||||
</button>
|
</button>
|
||||||
<button className="mx_Dialog_primary" onClick={this._onDownloadClick}>
|
<button className="mx_Dialog_primary" onClick={this._onDownloadClick}>
|
||||||
{_t("Download")}
|
{_t("Download")}
|
||||||
|
@ -462,7 +449,7 @@ export default class CreateKeyBackupDialog extends React.PureComponent {
|
||||||
<li>{_t("<b>Save it</b> on a USB key or backup drive", {}, {b: s => <b>{s}</b>})}</li>
|
<li>{_t("<b>Save it</b> on a USB key or backup drive", {}, {b: s => <b>{s}</b>})}</li>
|
||||||
<li>{_t("<b>Copy it</b> to your personal cloud storage", {}, {b: s => <b>{s}</b>})}</li>
|
<li>{_t("<b>Copy it</b> to your personal cloud storage", {}, {b: s => <b>{s}</b>})}</li>
|
||||||
</ul>
|
</ul>
|
||||||
<DialogButtons primaryButton={_t("OK")}
|
<DialogButtons primaryButton={_t("Continue")}
|
||||||
onPrimaryButtonClick={this._createBackup}
|
onPrimaryButtonClick={this._createBackup}
|
||||||
hasCancel={false}>
|
hasCancel={false}>
|
||||||
<button onClick={this._onKeepItSafeBackClick}>{_t("Back")}</button>
|
<button onClick={this._onKeepItSafeBackClick}>{_t("Back")}</button>
|
||||||
|
@ -515,15 +502,14 @@ export default class CreateKeyBackupDialog extends React.PureComponent {
|
||||||
case PHASE_OPTOUT_CONFIRM:
|
case PHASE_OPTOUT_CONFIRM:
|
||||||
return _t('Warning!');
|
return _t('Warning!');
|
||||||
case PHASE_SHOWKEY:
|
case PHASE_SHOWKEY:
|
||||||
return _t('Recovery key');
|
|
||||||
case PHASE_KEEPITSAFE:
|
case PHASE_KEEPITSAFE:
|
||||||
return _t('Keep it safe');
|
return _t('Make a copy of your recovery key');
|
||||||
case PHASE_BACKINGUP:
|
case PHASE_BACKINGUP:
|
||||||
return _t('Starting backup...');
|
return _t('Starting backup...');
|
||||||
case PHASE_DONE:
|
case PHASE_DONE:
|
||||||
return _t('Success!');
|
return _t('Success!');
|
||||||
default:
|
default:
|
||||||
return _t("Create Key Backup");
|
return _t("Create key backup");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -76,7 +76,6 @@ export default class CreateSecretStorageDialog extends React.PureComponent {
|
||||||
copied: false,
|
copied: false,
|
||||||
downloaded: false,
|
downloaded: false,
|
||||||
zxcvbnResult: null,
|
zxcvbnResult: null,
|
||||||
setPassPhrase: false,
|
|
||||||
backupInfo: null,
|
backupInfo: null,
|
||||||
backupSigStatus: null,
|
backupSigStatus: null,
|
||||||
// does the server offer a UI auth flow with just m.login.password
|
// does the server offer a UI auth flow with just m.login.password
|
||||||
|
@ -84,9 +83,6 @@ export default class CreateSecretStorageDialog extends React.PureComponent {
|
||||||
canUploadKeysWithPasswordOnly: null,
|
canUploadKeysWithPasswordOnly: null,
|
||||||
accountPassword: props.accountPassword,
|
accountPassword: props.accountPassword,
|
||||||
accountPasswordCorrect: null,
|
accountPasswordCorrect: null,
|
||||||
// set if we are 'upgrading' encryption (making an SSSS store from
|
|
||||||
// an existing key backup secret).
|
|
||||||
doingUpgrade: null,
|
|
||||||
// status of the key backup toggle switch
|
// status of the key backup toggle switch
|
||||||
useKeyBackup: true,
|
useKeyBackup: true,
|
||||||
};
|
};
|
||||||
|
@ -117,8 +113,6 @@ export default class CreateSecretStorageDialog extends React.PureComponent {
|
||||||
phase,
|
phase,
|
||||||
backupInfo,
|
backupInfo,
|
||||||
backupSigStatus,
|
backupSigStatus,
|
||||||
// remember this after this phase so we can use appropriate copy
|
|
||||||
doingUpgrade: phase === PHASE_MIGRATE,
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -205,7 +199,7 @@ export default class CreateSecretStorageDialog extends React.PureComponent {
|
||||||
const { finished } = Modal.createTrackedDialog(
|
const { finished } = Modal.createTrackedDialog(
|
||||||
'Cross-signing keys dialog', '', InteractiveAuthDialog,
|
'Cross-signing keys dialog', '', InteractiveAuthDialog,
|
||||||
{
|
{
|
||||||
title: _t("Send cross-signing keys to homeserver"),
|
title: _t("Setting up keys"),
|
||||||
matrixClient: MatrixClientPeg.get(),
|
matrixClient: MatrixClientPeg.get(),
|
||||||
makeRequest,
|
makeRequest,
|
||||||
},
|
},
|
||||||
|
@ -325,7 +319,6 @@ export default class CreateSecretStorageDialog extends React.PureComponent {
|
||||||
this._keyInfo = keyInfo;
|
this._keyInfo = keyInfo;
|
||||||
this._encodedRecoveryKey = encodedRecoveryKey;
|
this._encodedRecoveryKey = encodedRecoveryKey;
|
||||||
this.setState({
|
this.setState({
|
||||||
setPassPhrase: true,
|
|
||||||
copied: false,
|
copied: false,
|
||||||
downloaded: false,
|
downloaded: false,
|
||||||
phase: PHASE_SHOWKEY,
|
phase: PHASE_SHOWKEY,
|
||||||
|
@ -588,19 +581,6 @@ export default class CreateSecretStorageDialog extends React.PureComponent {
|
||||||
}
|
}
|
||||||
|
|
||||||
_renderPhaseShowKey() {
|
_renderPhaseShowKey() {
|
||||||
let bodyText;
|
|
||||||
if (this.state.setPassPhrase) {
|
|
||||||
bodyText = _t(
|
|
||||||
"As a safety net, you can use it to restore your access to encrypted " +
|
|
||||||
"messages if you forget your passphrase.",
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
bodyText = _t(
|
|
||||||
"As a safety net, you can use it to restore your access to encrypted " +
|
|
||||||
"messages.",
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
const AccessibleButton = sdk.getComponent('elements.AccessibleButton');
|
const AccessibleButton = sdk.getComponent('elements.AccessibleButton');
|
||||||
return <div>
|
return <div>
|
||||||
<p>{_t(
|
<p>{_t(
|
||||||
|
@ -608,12 +588,11 @@ export default class CreateSecretStorageDialog extends React.PureComponent {
|
||||||
"access to your encrypted messages if you forget your passphrase.",
|
"access to your encrypted messages if you forget your passphrase.",
|
||||||
)}</p>
|
)}</p>
|
||||||
<p>{_t(
|
<p>{_t(
|
||||||
"Keep your recovery key somewhere very secure, like a password manager (or a safe).",
|
"Keep a copy of it somewhere secure, like a password manager or even a safe.",
|
||||||
)}</p>
|
)}</p>
|
||||||
<p>{bodyText}</p>
|
|
||||||
<div className="mx_CreateSecretStorageDialog_primaryContainer">
|
<div className="mx_CreateSecretStorageDialog_primaryContainer">
|
||||||
<div className="mx_CreateSecretStorageDialog_recoveryKeyHeader">
|
<div className="mx_CreateSecretStorageDialog_recoveryKeyHeader">
|
||||||
{_t("Your Recovery Key")}
|
{_t("Your recovery key")}
|
||||||
</div>
|
</div>
|
||||||
<div className="mx_CreateSecretStorageDialog_recoveryKeyContainer">
|
<div className="mx_CreateSecretStorageDialog_recoveryKeyContainer">
|
||||||
<div className="mx_CreateSecretStorageDialog_recoveryKey">
|
<div className="mx_CreateSecretStorageDialog_recoveryKey">
|
||||||
|
@ -621,7 +600,7 @@ export default class CreateSecretStorageDialog extends React.PureComponent {
|
||||||
</div>
|
</div>
|
||||||
<div className="mx_CreateSecretStorageDialog_recoveryKeyButtons">
|
<div className="mx_CreateSecretStorageDialog_recoveryKeyButtons">
|
||||||
<AccessibleButton kind='primary' className="mx_Dialog_primary" onClick={this._onCopyClick}>
|
<AccessibleButton kind='primary' className="mx_Dialog_primary" onClick={this._onCopyClick}>
|
||||||
{_t("Copy to clipboard")}
|
{_t("Copy")}
|
||||||
</AccessibleButton>
|
</AccessibleButton>
|
||||||
<AccessibleButton kind='primary' className="mx_Dialog_primary" onClick={this._onDownloadClick}>
|
<AccessibleButton kind='primary' className="mx_Dialog_primary" onClick={this._onDownloadClick}>
|
||||||
{_t("Download")}
|
{_t("Download")}
|
||||||
|
@ -653,7 +632,7 @@ export default class CreateSecretStorageDialog extends React.PureComponent {
|
||||||
<li>{_t("<b>Save it</b> on a USB key or backup drive", {}, {b: s => <b>{s}</b>})}</li>
|
<li>{_t("<b>Save it</b> on a USB key or backup drive", {}, {b: s => <b>{s}</b>})}</li>
|
||||||
<li>{_t("<b>Copy it</b> to your personal cloud storage", {}, {b: s => <b>{s}</b>})}</li>
|
<li>{_t("<b>Copy it</b> to your personal cloud storage", {}, {b: s => <b>{s}</b>})}</li>
|
||||||
</ul>
|
</ul>
|
||||||
<DialogButtons primaryButton={_t("OK")}
|
<DialogButtons primaryButton={_t("Continue")}
|
||||||
onPrimaryButtonClick={this._bootstrapSecretStorage}
|
onPrimaryButtonClick={this._bootstrapSecretStorage}
|
||||||
hasCancel={false}>
|
hasCancel={false}>
|
||||||
<button onClick={this._onKeepItSafeBackClick}>{_t("Back")}</button>
|
<button onClick={this._onKeepItSafeBackClick}>{_t("Back")}</button>
|
||||||
|
@ -672,11 +651,8 @@ export default class CreateSecretStorageDialog extends React.PureComponent {
|
||||||
const DialogButtons = sdk.getComponent('views.elements.DialogButtons');
|
const DialogButtons = sdk.getComponent('views.elements.DialogButtons');
|
||||||
return <div>
|
return <div>
|
||||||
<p>{_t(
|
<p>{_t(
|
||||||
"This session can now verify other sessions, granting them access " +
|
"You can now verify your other devices, " +
|
||||||
"to encrypted messages and marking them as trusted for other users.",
|
"and other users to keep your chats safe.",
|
||||||
)}</p>
|
|
||||||
<p>{_t(
|
|
||||||
"Verify other users in their profile.",
|
|
||||||
)}</p>
|
)}</p>
|
||||||
<DialogButtons primaryButton={_t('OK')}
|
<DialogButtons primaryButton={_t('OK')}
|
||||||
onPrimaryButtonClick={this._onDone}
|
onPrimaryButtonClick={this._onDone}
|
||||||
|
@ -712,13 +688,12 @@ export default class CreateSecretStorageDialog extends React.PureComponent {
|
||||||
case PHASE_CONFIRM_SKIP:
|
case PHASE_CONFIRM_SKIP:
|
||||||
return _t('Are you sure?');
|
return _t('Are you sure?');
|
||||||
case PHASE_SHOWKEY:
|
case PHASE_SHOWKEY:
|
||||||
return _t('Recovery key');
|
|
||||||
case PHASE_KEEPITSAFE:
|
case PHASE_KEEPITSAFE:
|
||||||
return _t('Keep it safe');
|
return _t('Make a copy of your recovery key');
|
||||||
case PHASE_STORING:
|
case PHASE_STORING:
|
||||||
return _t('Storing secrets...');
|
return _t('Setting up keys');
|
||||||
case PHASE_DONE:
|
case PHASE_DONE:
|
||||||
return this.state.doingUpgrade ? _t('Encryption upgraded') : _t('Encryption setup complete');
|
return _t("You're done!");
|
||||||
default:
|
default:
|
||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
|
|
|
@ -142,7 +142,7 @@ export const PasswordAuthEntry = createReactClass({
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
<p>{ _t("To continue, please enter your password.") }</p>
|
<p>{ _t("Confirm your identity by entering your account password below.") }</p>
|
||||||
<form onSubmit={this._onSubmit} className="mx_InteractiveAuthEntryComponents_passwordSection">
|
<form onSubmit={this._onSubmit} className="mx_InteractiveAuthEntryComponents_passwordSection">
|
||||||
<Field
|
<Field
|
||||||
id="mx_InteractiveAuthEntryComponents_password"
|
id="mx_InteractiveAuthEntryComponents_password"
|
||||||
|
|
|
@ -248,7 +248,7 @@ export default class RestoreKeyBackupDialog extends React.PureComponent {
|
||||||
} else if (this.state.restoreError) {
|
} else if (this.state.restoreError) {
|
||||||
if (this.state.restoreError.errcode === MatrixClient.RESTORE_BACKUP_ERROR_BAD_KEY) {
|
if (this.state.restoreError.errcode === MatrixClient.RESTORE_BACKUP_ERROR_BAD_KEY) {
|
||||||
if (this.state.restoreType === RESTORE_TYPE_RECOVERYKEY) {
|
if (this.state.restoreType === RESTORE_TYPE_RECOVERYKEY) {
|
||||||
title = _t("Recovery Key Mismatch");
|
title = _t("Recovery key mismatch");
|
||||||
content = <div>
|
content = <div>
|
||||||
<p>{_t(
|
<p>{_t(
|
||||||
"Backup could not be decrypted with this key: " +
|
"Backup could not be decrypted with this key: " +
|
||||||
|
@ -256,7 +256,7 @@ export default class RestoreKeyBackupDialog extends React.PureComponent {
|
||||||
)}</p>
|
)}</p>
|
||||||
</div>;
|
</div>;
|
||||||
} else {
|
} else {
|
||||||
title = _t("Incorrect Recovery Passphrase");
|
title = _t("Incorrect recovery passphrase");
|
||||||
content = <div>
|
content = <div>
|
||||||
<p>{_t(
|
<p>{_t(
|
||||||
"Backup could not be decrypted with this passphrase: " +
|
"Backup could not be decrypted with this passphrase: " +
|
||||||
|
@ -273,7 +273,7 @@ export default class RestoreKeyBackupDialog extends React.PureComponent {
|
||||||
content = _t("No backup found!");
|
content = _t("No backup found!");
|
||||||
} else if (this.state.recoverInfo) {
|
} else if (this.state.recoverInfo) {
|
||||||
const DialogButtons = sdk.getComponent('views.elements.DialogButtons');
|
const DialogButtons = sdk.getComponent('views.elements.DialogButtons');
|
||||||
title = _t("Backup Restored");
|
title = _t("Backup restored");
|
||||||
let failedToDecrypt;
|
let failedToDecrypt;
|
||||||
if (this.state.recoverInfo.total > this.state.recoverInfo.imported) {
|
if (this.state.recoverInfo.total > this.state.recoverInfo.imported) {
|
||||||
failedToDecrypt = <p>{_t(
|
failedToDecrypt = <p>{_t(
|
||||||
|
@ -293,7 +293,7 @@ export default class RestoreKeyBackupDialog extends React.PureComponent {
|
||||||
} else if (backupHasPassphrase && !this.state.forceRecoveryKey) {
|
} else if (backupHasPassphrase && !this.state.forceRecoveryKey) {
|
||||||
const DialogButtons = sdk.getComponent('views.elements.DialogButtons');
|
const DialogButtons = sdk.getComponent('views.elements.DialogButtons');
|
||||||
const AccessibleButton = sdk.getComponent('elements.AccessibleButton');
|
const AccessibleButton = sdk.getComponent('elements.AccessibleButton');
|
||||||
title = _t("Enter Recovery Passphrase");
|
title = _t("Enter recovery passphrase");
|
||||||
content = <div>
|
content = <div>
|
||||||
<p>{_t(
|
<p>{_t(
|
||||||
"<b>Warning</b>: you should only set up key backup " +
|
"<b>Warning</b>: you should only set up key backup " +
|
||||||
|
@ -340,7 +340,7 @@ export default class RestoreKeyBackupDialog extends React.PureComponent {
|
||||||
})}
|
})}
|
||||||
</div>;
|
</div>;
|
||||||
} else {
|
} else {
|
||||||
title = _t("Enter Recovery Key");
|
title = _t("Enter recovery key");
|
||||||
const DialogButtons = sdk.getComponent('views.elements.DialogButtons');
|
const DialogButtons = sdk.getComponent('views.elements.DialogButtons');
|
||||||
const AccessibleButton = sdk.getComponent('elements.AccessibleButton');
|
const AccessibleButton = sdk.getComponent('elements.AccessibleButton');
|
||||||
|
|
||||||
|
|
|
@ -39,7 +39,7 @@ export default class SetupEncryptionToast extends React.PureComponent {
|
||||||
switch (this.props.kind) {
|
switch (this.props.kind) {
|
||||||
case 'set_up_encryption':
|
case 'set_up_encryption':
|
||||||
case 'upgrade_encryption':
|
case 'upgrade_encryption':
|
||||||
return _t('Verify your other sessions easier');
|
return _t('Verify yourself & others to keep your chats safe');
|
||||||
case 'verify_this_session':
|
case 'verify_this_session':
|
||||||
return _t('Other users may not trust it');
|
return _t('Other users may not trust it');
|
||||||
}
|
}
|
||||||
|
|
|
@ -60,7 +60,7 @@
|
||||||
"Server may be unavailable, overloaded, or you hit a bug.": "Server may be unavailable, overloaded, or you hit a bug.",
|
"Server may be unavailable, overloaded, or you hit a bug.": "Server may be unavailable, overloaded, or you hit a bug.",
|
||||||
"The server does not support the room version specified.": "The server does not support the room version specified.",
|
"The server does not support the room version specified.": "The server does not support the room version specified.",
|
||||||
"Failure to create room": "Failure to create room",
|
"Failure to create room": "Failure to create room",
|
||||||
"Send cross-signing keys to homeserver": "Send cross-signing keys to homeserver",
|
"Setting up keys": "Setting up keys",
|
||||||
"Send anyway": "Send anyway",
|
"Send anyway": "Send anyway",
|
||||||
"Send": "Send",
|
"Send": "Send",
|
||||||
"Sun": "Sun",
|
"Sun": "Sun",
|
||||||
|
@ -518,7 +518,7 @@
|
||||||
"Headphones": "Headphones",
|
"Headphones": "Headphones",
|
||||||
"Folder": "Folder",
|
"Folder": "Folder",
|
||||||
"Pin": "Pin",
|
"Pin": "Pin",
|
||||||
"Verify your other sessions easier": "Verify your other sessions easier",
|
"Verify yourself & others to keep your chats safe": "Verify yourself & others to keep your chats safe",
|
||||||
"Other users may not trust it": "Other users may not trust it",
|
"Other users may not trust it": "Other users may not trust it",
|
||||||
"Upgrade": "Upgrade",
|
"Upgrade": "Upgrade",
|
||||||
"Verify": "Verify",
|
"Verify": "Verify",
|
||||||
|
@ -1649,20 +1649,20 @@
|
||||||
"Access your secure message history and your cross-signing identity for verifying other sessions by entering your recovery key.": "Access your secure message history and your cross-signing identity for verifying other sessions by entering your recovery key.",
|
"Access your secure message history and your cross-signing identity for verifying other sessions by entering your recovery key.": "Access your secure message history and your cross-signing identity for verifying other sessions by entering your recovery key.",
|
||||||
"If you've forgotten your recovery key you can <button>set up new recovery options</button>.": "If you've forgotten your recovery key you can <button>set up new recovery options</button>.",
|
"If you've forgotten your recovery key you can <button>set up new recovery options</button>.": "If you've forgotten your recovery key you can <button>set up new recovery options</button>.",
|
||||||
"Unable to load backup status": "Unable to load backup status",
|
"Unable to load backup status": "Unable to load backup status",
|
||||||
"Recovery Key Mismatch": "Recovery Key Mismatch",
|
"Recovery key mismatch": "Recovery key mismatch",
|
||||||
"Backup could not be decrypted with this key: please verify that you entered the correct recovery key.": "Backup could not be decrypted with this key: please verify that you entered the correct recovery key.",
|
"Backup could not be decrypted with this key: please verify that you entered the correct recovery key.": "Backup could not be decrypted with this key: please verify that you entered the correct recovery key.",
|
||||||
"Incorrect Recovery Passphrase": "Incorrect Recovery Passphrase",
|
"Incorrect recovery passphrase": "Incorrect recovery passphrase",
|
||||||
"Backup could not be decrypted with this passphrase: please verify that you entered the correct recovery passphrase.": "Backup could not be decrypted with this passphrase: please verify that you entered the correct recovery passphrase.",
|
"Backup could not be decrypted with this passphrase: please verify that you entered the correct recovery passphrase.": "Backup could not be decrypted with this passphrase: please verify that you entered the correct recovery passphrase.",
|
||||||
"Unable to restore backup": "Unable to restore backup",
|
"Unable to restore backup": "Unable to restore backup",
|
||||||
"No backup found!": "No backup found!",
|
"No backup found!": "No backup found!",
|
||||||
"Backup Restored": "Backup Restored",
|
"Backup restored": "Backup restored",
|
||||||
"Failed to decrypt %(failedCount)s sessions!": "Failed to decrypt %(failedCount)s sessions!",
|
"Failed to decrypt %(failedCount)s sessions!": "Failed to decrypt %(failedCount)s sessions!",
|
||||||
"Restored %(sessionCount)s session keys": "Restored %(sessionCount)s session keys",
|
"Restored %(sessionCount)s session keys": "Restored %(sessionCount)s session keys",
|
||||||
"Enter Recovery Passphrase": "Enter Recovery Passphrase",
|
"Enter recovery passphrase": "Enter recovery passphrase",
|
||||||
"<b>Warning</b>: you should only set up key backup from a trusted computer.": "<b>Warning</b>: you should only set up key backup from a trusted computer.",
|
"<b>Warning</b>: you should only set up key backup from a trusted computer.": "<b>Warning</b>: you should only set up key backup from a trusted computer.",
|
||||||
"Access your secure message history and set up secure messaging by entering your recovery passphrase.": "Access your secure message history and set up secure messaging by entering your recovery passphrase.",
|
"Access your secure message history and set up secure messaging by entering your recovery passphrase.": "Access your secure message history and set up secure messaging by entering your recovery passphrase.",
|
||||||
"If you've forgotten your recovery passphrase you can <button1>use your recovery key</button1> or <button2>set up new recovery options</button2>": "If you've forgotten your recovery passphrase you can <button1>use your recovery key</button1> or <button2>set up new recovery options</button2>",
|
"If you've forgotten your recovery passphrase you can <button1>use your recovery key</button1> or <button2>set up new recovery options</button2>": "If you've forgotten your recovery passphrase you can <button1>use your recovery key</button1> or <button2>set up new recovery options</button2>",
|
||||||
"Enter Recovery Key": "Enter Recovery Key",
|
"Enter recovery key": "Enter recovery key",
|
||||||
"<b>Warning</b>: You should only set up key backup from a trusted computer.": "<b>Warning</b>: You should only set up key backup from a trusted computer.",
|
"<b>Warning</b>: You should only set up key backup from a trusted computer.": "<b>Warning</b>: You should only set up key backup from a trusted computer.",
|
||||||
"Access your secure message history and set up secure messaging by entering your recovery key.": "Access your secure message history and set up secure messaging by entering your recovery key.",
|
"Access your secure message history and set up secure messaging by entering your recovery key.": "Access your secure message history and set up secure messaging by entering your recovery key.",
|
||||||
"If you've forgotten your recovery key you can <button>set up new recovery options</button>": "If you've forgotten your recovery key you can <button>set up new recovery options</button>",
|
"If you've forgotten your recovery key you can <button>set up new recovery options</button>": "If you've forgotten your recovery key you can <button>set up new recovery options</button>",
|
||||||
|
@ -1717,7 +1717,7 @@
|
||||||
"Country Dropdown": "Country Dropdown",
|
"Country Dropdown": "Country Dropdown",
|
||||||
"Custom Server Options": "Custom Server Options",
|
"Custom Server Options": "Custom Server Options",
|
||||||
"You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use this app with an existing Matrix account on a different homeserver.": "You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use this app with an existing Matrix account on a different homeserver.",
|
"You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use this app with an existing Matrix account on a different homeserver.": "You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use this app with an existing Matrix account on a different homeserver.",
|
||||||
"To continue, please enter your password.": "To continue, please enter your password.",
|
"Confirm your identity by entering your account password below.": "Confirm your identity by entering your account password below.",
|
||||||
"Missing captcha public key in homeserver configuration. Please report this to your homeserver administrator.": "Missing captcha public key in homeserver configuration. Please report this to your homeserver administrator.",
|
"Missing captcha public key in homeserver configuration. Please report this to your homeserver administrator.": "Missing captcha public key in homeserver configuration. Please report this to your homeserver administrator.",
|
||||||
"Please review and accept all of the homeserver's policies": "Please review and accept all of the homeserver's policies",
|
"Please review and accept all of the homeserver's policies": "Please review and accept all of the homeserver's policies",
|
||||||
"Please review and accept the policies of this homeserver:": "Please review and accept the policies of this homeserver:",
|
"Please review and accept the policies of this homeserver:": "Please review and accept the policies of this homeserver:",
|
||||||
|
@ -2043,43 +2043,34 @@
|
||||||
"Go back to set it again.": "Go back to set it again.",
|
"Go back to set it again.": "Go back to set it again.",
|
||||||
"Enter your passphrase a second time to confirm it.": "Enter your passphrase a second time to confirm it.",
|
"Enter your passphrase a second time to confirm it.": "Enter your passphrase a second time to confirm it.",
|
||||||
"Confirm your passphrase": "Confirm your passphrase",
|
"Confirm your passphrase": "Confirm your passphrase",
|
||||||
"As a safety net, you can use it to restore your access to encrypted messages if you forget your passphrase.": "As a safety net, you can use it to restore your access to encrypted messages if you forget your passphrase.",
|
|
||||||
"As a safety net, you can use it to restore your access to encrypted messages.": "As a safety net, you can use it to restore your access to encrypted messages.",
|
|
||||||
"Your recovery key is a safety net - you can use it to restore access to your encrypted messages if you forget your passphrase.": "Your recovery key is a safety net - you can use it to restore access to your encrypted messages if you forget your passphrase.",
|
"Your recovery key is a safety net - you can use it to restore access to your encrypted messages if you forget your passphrase.": "Your recovery key is a safety net - you can use it to restore access to your encrypted messages if you forget your passphrase.",
|
||||||
"Keep your recovery key somewhere very secure, like a password manager (or a safe).": "Keep your recovery key somewhere very secure, like a password manager (or a safe).",
|
"Keep a copy of it somewhere secure, like a password manager or even a safe.": "Keep a copy of it somewhere secure, like a password manager or even a safe.",
|
||||||
"Your Recovery Key": "Your Recovery Key",
|
"Your recovery key": "Your recovery key",
|
||||||
"Copy to clipboard": "Copy to clipboard",
|
"Copy": "Copy",
|
||||||
"Download": "Download",
|
"Download": "Download",
|
||||||
"Your recovery key has been <b>copied to your clipboard</b>, paste it to:": "Your recovery key has been <b>copied to your clipboard</b>, paste it to:",
|
"Your recovery key has been <b>copied to your clipboard</b>, paste it to:": "Your recovery key has been <b>copied to your clipboard</b>, paste it to:",
|
||||||
"Your recovery key is in your <b>Downloads</b> folder.": "Your recovery key is in your <b>Downloads</b> folder.",
|
"Your recovery key is in your <b>Downloads</b> folder.": "Your recovery key is in your <b>Downloads</b> folder.",
|
||||||
"<b>Print it</b> and store it somewhere safe": "<b>Print it</b> and store it somewhere safe",
|
"<b>Print it</b> and store it somewhere safe": "<b>Print it</b> and store it somewhere safe",
|
||||||
"<b>Save it</b> on a USB key or backup drive": "<b>Save it</b> on a USB key or backup drive",
|
"<b>Save it</b> on a USB key or backup drive": "<b>Save it</b> on a USB key or backup drive",
|
||||||
"<b>Copy it</b> to your personal cloud storage": "<b>Copy it</b> to your personal cloud storage",
|
"<b>Copy it</b> to your personal cloud storage": "<b>Copy it</b> to your personal cloud storage",
|
||||||
"This session can now verify other sessions, granting them access to encrypted messages and marking them as trusted for other users.": "This session can now verify other sessions, granting them access to encrypted messages and marking them as trusted for other users.",
|
"You can now verify your other devices, and other users to keep your chats safe.": "You can now verify your other devices, and other users to keep your chats safe.",
|
||||||
"Verify other users in their profile.": "Verify other users in their profile.",
|
|
||||||
"Upgrade your encryption": "Upgrade your encryption",
|
"Upgrade your encryption": "Upgrade your encryption",
|
||||||
"Recovery key": "Recovery key",
|
"Make a copy of your recovery key": "Make a copy of your recovery key",
|
||||||
"Keep it safe": "Keep it safe",
|
"You're done!": "You're done!",
|
||||||
"Storing secrets...": "Storing secrets...",
|
|
||||||
"Encryption upgraded": "Encryption upgraded",
|
|
||||||
"Encryption setup complete": "Encryption setup complete",
|
|
||||||
"Unable to set up secret storage": "Unable to set up secret storage",
|
"Unable to set up secret storage": "Unable to set up secret storage",
|
||||||
"Retry": "Retry",
|
"Retry": "Retry",
|
||||||
"We'll store an encrypted copy of your keys on our server. Protect your backup with a passphrase to keep it secure.": "We'll store an encrypted copy of your keys on our server. Protect your backup with a passphrase to keep it secure.",
|
"We'll store an encrypted copy of your keys on our server. Protect your backup with a passphrase to keep it secure.": "We'll store an encrypted copy of your keys on our server. Protect your backup with a passphrase to keep it secure.",
|
||||||
"For maximum security, this should be different from your account password.": "For maximum security, this should be different from your account password.",
|
"For maximum security, this should be different from your account password.": "For maximum security, this should be different from your account password.",
|
||||||
"Enter a passphrase...": "Enter a passphrase...",
|
"Enter a passphrase...": "Enter a passphrase...",
|
||||||
"Set up with a Recovery Key": "Set up with a Recovery Key",
|
|
||||||
"Please enter your passphrase a second time to confirm.": "Please enter your passphrase a second time to confirm.",
|
"Please enter your passphrase a second time to confirm.": "Please enter your passphrase a second time to confirm.",
|
||||||
"Repeat your passphrase...": "Repeat your passphrase...",
|
"Repeat your passphrase...": "Repeat your passphrase...",
|
||||||
"As a safety net, you can use it to restore your encrypted message history if you forget your Recovery Passphrase.": "As a safety net, you can use it to restore your encrypted message history if you forget your Recovery Passphrase.",
|
|
||||||
"As a safety net, you can use it to restore your encrypted message history.": "As a safety net, you can use it to restore your encrypted message history.",
|
|
||||||
"Your keys are being backed up (the first backup could take a few minutes).": "Your keys are being backed up (the first backup could take a few minutes).",
|
"Your keys are being backed up (the first backup could take a few minutes).": "Your keys are being backed up (the first backup could take a few minutes).",
|
||||||
"Without setting up Secure Message Recovery, you won't be able to restore your encrypted message history if you log out or use another session.": "Without setting up Secure Message Recovery, you won't be able to restore your encrypted message history if you log out or use another session.",
|
"Without setting up Secure Message Recovery, you won't be able to restore your encrypted message history if you log out or use another session.": "Without setting up Secure Message Recovery, you won't be able to restore your encrypted message history if you log out or use another session.",
|
||||||
"Set up Secure Message Recovery": "Set up Secure Message Recovery",
|
"Set up Secure Message Recovery": "Set up Secure Message Recovery",
|
||||||
"Secure your backup with a passphrase": "Secure your backup with a passphrase",
|
"Secure your backup with a passphrase": "Secure your backup with a passphrase",
|
||||||
"Starting backup...": "Starting backup...",
|
"Starting backup...": "Starting backup...",
|
||||||
"Success!": "Success!",
|
"Success!": "Success!",
|
||||||
"Create Key Backup": "Create Key Backup",
|
"Create key backup": "Create key backup",
|
||||||
"Unable to create key backup": "Unable to create key backup",
|
"Unable to create key backup": "Unable to create key backup",
|
||||||
"Without setting up Secure Message Recovery, you'll lose your secure message history when you log out.": "Without setting up Secure Message Recovery, you'll lose your secure message history when you log out.",
|
"Without setting up Secure Message Recovery, you'll lose your secure message history when you log out.": "Without setting up Secure Message Recovery, you'll lose your secure message history when you log out.",
|
||||||
"If you don't want to set this up now, you can later in Settings.": "If you don't want to set this up now, you can later in Settings.",
|
"If you don't want to set this up now, you can later in Settings.": "If you don't want to set this up now, you can later in Settings.",
|
||||||
|
|
Loading…
Reference in a new issue