Localazy: Convert more strings (#11675)

This commit is contained in:
R Midhun Suresh 2023-09-28 12:51:30 +05:30 committed by GitHub
parent ef5a93b702
commit 0518af70ac
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
60 changed files with 2915 additions and 2567 deletions

View file

@ -130,7 +130,7 @@ export default class CreateKeyBackupDialog extends React.PureComponent<IProps, I
private renderPhaseDone(): JSX.Element {
return (
<div>
<p>{_t("Your keys are being backed up (the first backup could take a few minutes).")}</p>
<p>{_t("settings|key_backup|backup_in_progress")}</p>
<DialogButtons primaryButton={_t("action|ok")} onPrimaryButtonClick={this.onDone} hasCancel={false} />
</div>
);
@ -139,11 +139,11 @@ export default class CreateKeyBackupDialog extends React.PureComponent<IProps, I
private titleForPhase(phase: Phase): string {
switch (phase) {
case Phase.BackingUp:
return _t("Starting backup…");
return _t("settings|key_backup|backup_starting");
case Phase.Done:
return _t("Success!");
return _t("settings|key_backup|backup_success");
default:
return _t("Create key backup");
return _t("settings|key_backup|create_title");
}
}
@ -152,7 +152,7 @@ export default class CreateKeyBackupDialog extends React.PureComponent<IProps, I
if (this.state.error) {
content = (
<div>
<p>{_t("Unable to create key backup")}</p>
<p>{_t("settings|key_backup|cannot_create_backup")}</p>
<DialogButtons
primaryButton={_t("action|retry")}
onPrimaryButtonClick={this.createBackup}

View file

@ -541,13 +541,9 @@ export default class CreateSecretStorageDialog extends React.PureComponent<IProp
>
<div className="mx_CreateSecretStorageDialog_optionTitle">
<span className="mx_CreateSecretStorageDialog_optionIcon mx_CreateSecretStorageDialog_optionIcon_secureBackup" />
{_t("Generate a Security Key")}
</div>
<div>
{_t(
"We'll generate a Security Key for you to store somewhere safe, like a password manager or a safe.",
)}
{_t("settings|key_backup|setup_secure_backup|generate_security_key_title")}
</div>
<div>{_t("settings|key_backup|setup_secure_backup|generate_security_key_description")}</div>
</StyledRadioButton>
);
}
@ -564,11 +560,9 @@ export default class CreateSecretStorageDialog extends React.PureComponent<IProp
>
<div className="mx_CreateSecretStorageDialog_optionTitle">
<span className="mx_CreateSecretStorageDialog_optionIcon mx_CreateSecretStorageDialog_optionIcon_securePhrase" />
{_t("Enter a Security Phrase")}
</div>
<div>
{_t("Use a secret phrase only you know, and optionally save a Security Key to use for backup.")}
{_t("settings|key_backup|setup_secure_backup|enter_phrase_title")}
</div>
<div>{_t("settings|key_backup|setup_secure_backup|use_phrase_only_you_know")}</div>
</StyledRadioButton>
);
}
@ -583,9 +577,7 @@ export default class CreateSecretStorageDialog extends React.PureComponent<IProp
return (
<form onSubmit={this.onChooseKeyPassphraseFormSubmit}>
<p className="mx_CreateSecretStorageDialog_centeredBody">
{_t(
"Safeguard against losing access to encrypted messages & data by backing up encryption keys on your server.",
)}
{_t("settings|key_backup|setup_secure_backup|description")}
</p>
<div className="mx_CreateSecretStorageDialog_primaryContainer" role="radiogroup">
{optionKey}
@ -607,7 +599,7 @@ export default class CreateSecretStorageDialog extends React.PureComponent<IProp
if (this.state.canUploadKeysWithPasswordOnly) {
authPrompt = (
<div>
<div>{_t("Enter your account password to confirm the upgrade:")}</div>
<div>{_t("settings|key_backup|setup_secure_backup|requires_password_confirmation")}</div>
<div>
<Field
id="mx_CreateSecretStorageDialog_password"
@ -624,21 +616,17 @@ export default class CreateSecretStorageDialog extends React.PureComponent<IProp
} else if (!this.state.backupTrustInfo?.trusted) {
authPrompt = (
<div>
<div>{_t("Restore your key backup to upgrade your encryption")}</div>
<div>{_t("settings|key_backup|setup_secure_backup|requires_key_restore")}</div>
</div>
);
nextCaption = _t("action|restore");
} else {
authPrompt = <p>{_t("You'll need to authenticate with the server to confirm the upgrade.")}</p>;
authPrompt = <p>{_t("settings|key_backup|setup_secure_backup|requires_server_authentication")}</p>;
}
return (
<form onSubmit={this.onMigrateFormSubmit}>
<p>
{_t(
"Upgrade this session to allow it to verify other sessions, granting them access to encrypted messages and marking them as trusted for other users.",
)}
</p>
<p>{_t("settings|key_backup|setup_secure_backup|session_upgrade_description")}</p>
<div>{authPrompt}</div>
<DialogButtons
primaryButton={nextCaption}
@ -657,11 +645,7 @@ export default class CreateSecretStorageDialog extends React.PureComponent<IProp
private renderPhasePassPhrase(): JSX.Element {
return (
<form onSubmit={this.onPassPhraseNextClick}>
<p>
{_t(
"Enter a Security Phrase only you know, as it's used to safeguard your data. To be secure, you shouldn't re-use your account password.",
)}
</p>
<p>{_t("settings|key_backup|setup_secure_backup|enter_phrase_description")}</p>
<div className="mx_CreateSecretStorageDialog_passPhraseContainer">
<PassphraseField
@ -672,10 +656,10 @@ export default class CreateSecretStorageDialog extends React.PureComponent<IProp
onValidate={this.onPassPhraseValidate}
fieldRef={this.passphraseField}
autoFocus={true}
label={_td("Enter a Security Phrase")}
labelEnterPassword={_td("Enter a Security Phrase")}
labelStrongPassword={_td("Great! This Security Phrase looks strong enough.")}
labelAllowedButUnsafe={_td("Great! This Security Phrase looks strong enough.")}
label={_td("settings|key_backup|setup_secure_backup|enter_phrase_title")}
labelEnterPassword={_td("settings|key_backup|setup_secure_backup|enter_phrase_title")}
labelStrongPassword={_td("settings|key_backup|setup_secure_backup|phrase_strong_enough")}
labelAllowedButUnsafe={_td("settings|key_backup|setup_secure_backup|phrase_strong_enough")}
/>
</div>
@ -697,8 +681,8 @@ export default class CreateSecretStorageDialog extends React.PureComponent<IProp
let matchText;
let changeText;
if (this.state.passPhraseConfirm === this.state.passPhrase) {
matchText = _t("That matches!");
changeText = _t("Use a different passphrase?");
matchText = _t("settings|key_backup|setup_secure_backup|pass_phrase_match_success");
changeText = _t("settings|key_backup|setup_secure_backup|use_different_passphrase");
} else if (!this.state.passPhrase.startsWith(this.state.passPhraseConfirm)) {
// only tell them they're wrong if they've actually gone wrong.
// Security conscious readers will note that if you left element-web unattended
@ -707,8 +691,8 @@ export default class CreateSecretStorageDialog extends React.PureComponent<IProp
// 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.");
matchText = _t("settings|key_backup|setup_secure_backup|pass_phrase_match_failed");
changeText = _t("settings|key_backup|setup_secure_backup|set_phrase_again");
}
let passPhraseMatch: JSX.Element | undefined;
@ -724,14 +708,14 @@ export default class CreateSecretStorageDialog extends React.PureComponent<IProp
}
return (
<form onSubmit={this.onPassPhraseConfirmNextClick}>
<p>{_t("Enter your Security Phrase a second time to confirm it.")}</p>
<p>{_t("settings|key_backup|setup_secure_backup|enter_phrase_to_confirm")}</p>
<div className="mx_CreateSecretStorageDialog_passPhraseContainer">
<Field
type="password"
onChange={this.onPassPhraseConfirmChange}
value={this.state.passPhraseConfirm}
className="mx_CreateSecretStorageDialog_passPhraseField"
label={_t("Confirm your Security Phrase")}
label={_t("settings|key_backup|setup_secure_backup|confirm_security_phrase")}
autoFocus={true}
autoComplete="new-password"
/>
@ -772,11 +756,7 @@ export default class CreateSecretStorageDialog extends React.PureComponent<IProp
return (
<div>
<p>
{_t(
"Store your Security Key somewhere safe, like a password manager or a safe, as it's used to safeguard your encrypted data.",
)}
</p>
<p>{_t("settings|key_backup|setup_secure_backup|security_key_safety_reminder")}</p>
<div className="mx_CreateSecretStorageDialog_primaryContainer mx_CreateSecretStorageDialog_recoveryKeyPrimarycontainer">
<div className="mx_CreateSecretStorageDialog_recoveryKeyContainer">
<div className="mx_CreateSecretStorageDialog_recoveryKey">
@ -792,7 +772,7 @@ export default class CreateSecretStorageDialog extends React.PureComponent<IProp
{_t("action|download")}
</AccessibleButton>
<span>
{_t("%(downloadButton)s or %(copyButton)s", {
{_t("settings|key_backup|setup_secure_backup|download_or_copy", {
downloadButton: "",
copyButton: "",
})}
@ -824,7 +804,9 @@ export default class CreateSecretStorageDialog extends React.PureComponent<IProp
private renderStoredPhase(): JSX.Element {
return (
<>
<p className="mx_Dialog_content">{_t("Your keys are now being backed up from this device.")}</p>
<p className="mx_Dialog_content">
{_t("settings|key_backup|setup_secure_backup|backup_setup_success_description")}
</p>
<DialogButtons
primaryButton={_t("action|done")}
onPrimaryButtonClick={() => this.props.onFinished(true)}
@ -837,7 +819,7 @@ export default class CreateSecretStorageDialog extends React.PureComponent<IProp
private renderPhaseLoadError(): JSX.Element {
return (
<div>
<p>{_t("Unable to query secret storage status")}</p>
<p>{_t("settings|key_backup|setup_secure_backup|secret_storage_query_failure")}</p>
<div className="mx_Dialog_buttons">
<DialogButtons
primaryButton={_t("action|retry")}
@ -853,10 +835,8 @@ export default class CreateSecretStorageDialog extends React.PureComponent<IProp
private renderPhaseSkipConfirm(): JSX.Element {
return (
<div>
<p>
{_t("If you cancel now, you may lose encrypted messages & data if you lose access to your logins.")}
</p>
<p>{_t("You can also set up Secure Backup & manage your keys in Settings.")}</p>
<p>{_t("settings|key_backup|setup_secure_backup|cancel_warning")}</p>
<p>{_t("settings|key_backup|setup_secure_backup|settings_reminder")}</p>
<DialogButtons
primaryButton={_t("action|go_back")}
onPrimaryButtonClick={this.onGoBackClick}
@ -875,19 +855,19 @@ export default class CreateSecretStorageDialog extends React.PureComponent<IProp
case Phase.ChooseKeyPassphrase:
return _t("encryption|set_up_toast_title");
case Phase.Migrate:
return _t("Upgrade your encryption");
return _t("settings|key_backup|setup_secure_backup|title_upgrade_encryption");
case Phase.Passphrase:
return _t("Set a Security Phrase");
return _t("settings|key_backup|setup_secure_backup|title_set_phrase");
case Phase.PassphraseConfirm:
return _t("Confirm Security Phrase");
return _t("settings|key_backup|setup_secure_backup|title_confirm_phrase");
case Phase.ConfirmSkip:
return _t("Are you sure?");
case Phase.ShowKey:
return _t("Save your Security Key");
return _t("settings|key_backup|setup_secure_backup|title_save_key");
case Phase.Storing:
return _t("encryption|bootstrap_title");
case Phase.Stored:
return _t("Secure Backup successful");
return _t("settings|key_backup|setup_secure_backup|backup_setup_success_title");
default:
return "";
}
@ -912,7 +892,7 @@ export default class CreateSecretStorageDialog extends React.PureComponent<IProp
if (this.state.error) {
content = (
<div>
<p>{_t("Unable to set up secret storage")}</p>
<p>{_t("settings|key_backup|setup_secure_backup|unable_to_setup")}</p>
<div className="mx_Dialog_buttons">
<DialogButtons
primaryButton={_t("action|retry")}

View file

@ -158,29 +158,21 @@ export default class ExportE2eKeysDialog extends React.Component<IProps, IState>
<BaseDialog
className="mx_exportE2eKeysDialog"
onFinished={this.props.onFinished}
title={_t("Export room keys")}
title={_t("settings|key_export_import|export_title")}
>
<form onSubmit={this.onPassphraseFormSubmit}>
<div className="mx_Dialog_content">
<p>
{_t(
"This process allows you to export the keys for messages you have received in encrypted rooms to a local file. You will then be able to import the file into another Matrix client in the future, so that client will also be able to decrypt these messages.",
)}
</p>
<p>
{_t(
"The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a unique passphrase below, which will only be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.",
)}
</p>
<p>{_t("settings|key_export_import|export_description_1")}</p>
<p>{_t("settings|key_export_import|export_description_2")}</p>
<div className="error">{this.state.errStr}</div>
<div className="mx_E2eKeysDialog_inputTable">
<div className="mx_E2eKeysDialog_inputRow">
<PassphraseField
minScore={3}
label={_td("Enter passphrase")}
labelEnterPassword={_td("Enter passphrase")}
labelStrongPassword={_td("Great! This passphrase looks strong enough")}
labelAllowedButUnsafe={_td("Great! This passphrase looks strong enough")}
label={_td("settings|key_export_import|enter_passphrase")}
labelEnterPassword={_td("settings|key_export_import|enter_passphrase")}
labelStrongPassword={_td("settings|key_export_import|phrase_strong_enough")}
labelAllowedButUnsafe={_td("settings|key_export_import|phrase_strong_enough")}
value={this.state.passphrase1}
onChange={(e: ChangeEvent<HTMLInputElement>) =>
this.onPassphraseChange(e, "passphrase1")
@ -196,9 +188,9 @@ export default class ExportE2eKeysDialog extends React.Component<IProps, IState>
<div className="mx_E2eKeysDialog_inputRow">
<PassphraseConfirmField
password={this.state.passphrase1}
label={_td("Confirm passphrase")}
labelRequired={_td("Passphrase must not be empty")}
labelInvalid={_td("Passphrases must match")}
label={_td("settings|key_export_import|confirm_passphrase")}
labelRequired={_td("settings|key_export_import|phrase_cannot_be_empty")}
labelInvalid={_td("settings|key_export_import|phrase_must_match")}
value={this.state.passphrase2}
onChange={(e: ChangeEvent<HTMLInputElement>) =>
this.onPassphraseChange(e, "passphrase2")

View file

@ -140,25 +140,19 @@ export default class ImportE2eKeysDialog extends React.Component<IProps, IState>
<BaseDialog
className="mx_importE2eKeysDialog"
onFinished={this.props.onFinished}
title={_t("Import room keys")}
title={_t("settings|key_export_import|import_title")}
>
<form onSubmit={this.onFormSubmit}>
<div className="mx_Dialog_content">
<p>
{_t(
"This process allows you to import encryption keys that you had previously exported from another Matrix client. You will then be able to decrypt any messages that the other client could decrypt.",
)}
</p>
<p>
{_t(
"The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.",
)}
</p>
<p>{_t("settings|key_export_import|import_description_1")}</p>
<p>{_t("settings|key_export_import|import_description_2")}</p>
<div className="error">{this.state.errStr}</div>
<div className="mx_E2eKeysDialog_inputTable">
<div className="mx_E2eKeysDialog_inputRow">
<div className="mx_E2eKeysDialog_inputLabel">
<label htmlFor="importFile">{_t("File to import")}</label>
<label htmlFor="importFile">
{_t("settings|key_export_import|file_to_import")}
</label>
</div>
<div className="mx_E2eKeysDialog_inputCell">
<input
@ -173,7 +167,7 @@ export default class ImportE2eKeysDialog extends React.Component<IProps, IState>
</div>
<div className="mx_E2eKeysDialog_inputRow">
<Field
label={_t("Enter passphrase")}
label={_t("settings|key_export_import|enter_passphrase")}
value={this.state.passphrase}
onChange={this.onPassphraseChange}
size={64}

View file

@ -55,29 +55,27 @@ export default class NewRecoveryMethodDialog extends React.PureComponent<IProps>
};
public render(): React.ReactNode {
const title = <span className="mx_KeyBackupFailedDialog_title">{_t("New Recovery Method")}</span>;
const newMethodDetected = <p>{_t("A new Security Phrase and key for Secure Messages have been detected.")}</p>;
const hackWarning = (
<p className="warning">
{_t(
"If you didn't set the new recovery method, an attacker may be trying to access your account. Change your account password and set a new recovery method immediately in Settings.",
)}
</p>
const title = (
<span className="mx_KeyBackupFailedDialog_title">
{_t("encryption|new_recovery_method_detected|title")}
</span>
);
const newMethodDetected = <p>{_t("encryption|new_recovery_method_detected|description_1")}</p>;
const hackWarning = <p className="warning">{_t("encryption|new_recovery_method_detected|warning")}</p>;
let content: JSX.Element | undefined;
if (MatrixClientPeg.safeGet().getKeyBackupEnabled()) {
content = (
<div>
{newMethodDetected}
<p>{_t("This session is encrypting history using the new recovery method.")}</p>
<p>{_t("encryption|new_recovery_method_detected|description_2")}</p>
{hackWarning}
<DialogButtons
primaryButton={_t("action|ok")}
onPrimaryButtonClick={this.onOkClick}
cancelButton={_t("Go to Settings")}
cancelButton={_t("common|go_to_settings")}
onCancel={this.onGoToSettingsClick}
/>
</div>
@ -88,9 +86,9 @@ export default class NewRecoveryMethodDialog extends React.PureComponent<IProps>
{newMethodDetected}
{hackWarning}
<DialogButtons
primaryButton={_t("Set up Secure Messages")}
primaryButton={_t("common|setup_secure_messages")}
onPrimaryButtonClick={this.onSetupClick}
cancelButton={_t("Go to Settings")}
cancelButton={_t("common|go_to_settings")}
onCancel={this.onGoToSettingsClick}
/>
</div>

View file

@ -46,30 +46,20 @@ export default class RecoveryMethodRemovedDialog extends React.PureComponent<IPr
};
public render(): React.ReactNode {
const title = <span className="mx_KeyBackupFailedDialog_title">{_t("Recovery Method Removed")}</span>;
const title = (
<span className="mx_KeyBackupFailedDialog_title">{_t("encryption|recovery_method_removed|title")}</span>
);
return (
<BaseDialog className="mx_KeyBackupFailedDialog" onFinished={this.props.onFinished} title={title}>
<div>
<p>
{_t(
"This session has detected that your Security Phrase and key for Secure Messages have been removed.",
)}
</p>
<p>
{_t(
"If you did this accidentally, you can setup Secure Messages on this session which will re-encrypt this session's message history with a new recovery method.",
)}
</p>
<p className="warning">
{_t(
"If you didn't remove the recovery method, an attacker may be trying to access your account. Change your account password and set a new recovery method immediately in Settings.",
)}
</p>
<p>{_t("encryption|recovery_method_removed|description_1")}</p>
<p>{_t("encryption|recovery_method_removed|description_2")}</p>
<p className="warning">{_t("encryption|recovery_method_removed|warning")}</p>
<DialogButtons
primaryButton={_t("Set up Secure Messages")}
primaryButton={_t("common|setup_secure_messages")}
onPrimaryButtonClick={this.onSetupClick}
cancelButton={_t("Go to Settings")}
cancelButton={_t("common|go_to_settings")}
onCancel={this.onGoToSettingsClick}
/>
</div>