2f6b542f24
An unlocked phone was enough to read the 24-word recovery phrase. The phrase, backup export and import, the duress PIN, a longer auto-lock, turning off screen security, enabling biometrics and deleting the account now ask for the PIN (or biometrics with biometricOnly) every time. The duress session never shows the phrase. PIN checks outside the lock screen count towards the same failure throttle.
1831 lines
48 KiB
Dart
1831 lines
48 KiB
Dart
// ignore: unused_import
|
|
import 'package:intl/intl.dart' as intl;
|
|
import 'app_localizations.dart';
|
|
|
|
// ignore_for_file: type=lint
|
|
|
|
/// The translations for Italian (`it`).
|
|
class AppLocalizationsIt extends AppLocalizations {
|
|
AppLocalizationsIt([String locale = 'it']) : super(locale);
|
|
|
|
@override
|
|
String get appTitle => 'Šepot';
|
|
|
|
@override
|
|
String get settingsLanguage => 'Lingua dell\'app';
|
|
|
|
@override
|
|
String get languageSystem => 'Predefinita di sistema';
|
|
|
|
@override
|
|
String get commonUnknownContact => 'Sconosciuto';
|
|
|
|
@override
|
|
String get verifyVerified => 'Verificato';
|
|
|
|
@override
|
|
String get verifyUnverified => 'Non verificato';
|
|
|
|
@override
|
|
String get chatMenuVerifyContact => 'Verifica contatto';
|
|
|
|
@override
|
|
String get chatDisappearingMessages => 'Messaggi a scomparsa';
|
|
|
|
@override
|
|
String get chatMenuUnblockContact => 'Sblocca contatto';
|
|
|
|
@override
|
|
String get chatMenuBlockContact => 'Blocca contatto';
|
|
|
|
@override
|
|
String get reportAndBlock => 'Segnala e blocca';
|
|
|
|
@override
|
|
String errorGeneric(String error) {
|
|
return 'Errore: $error';
|
|
}
|
|
|
|
@override
|
|
String get groupsYouLeftGroup => 'Non sei più nel gruppo';
|
|
|
|
@override
|
|
String groupsMemberCount(int count) {
|
|
String _temp0 = intl.Intl.pluralLogic(
|
|
count,
|
|
locale: localeName,
|
|
other: '$count membri',
|
|
one: '1 membro',
|
|
);
|
|
return '$_temp0';
|
|
}
|
|
|
|
@override
|
|
String get groupsMembers => 'Membri';
|
|
|
|
@override
|
|
String get groupsRename => 'Rinomina gruppo';
|
|
|
|
@override
|
|
String get groupsLeave => 'Abbandona il gruppo';
|
|
|
|
@override
|
|
String get groupsLeftBanner =>
|
|
'Non sei più nel gruppo. La cronologia resta, i nuovi messaggi non arriveranno.';
|
|
|
|
@override
|
|
String get groupsYou => 'Tu';
|
|
|
|
@override
|
|
String get groupsFounder => 'Fondatore';
|
|
|
|
@override
|
|
String get groupsAdmin => 'Amministratore';
|
|
|
|
@override
|
|
String get groupsMakeAdmin => 'Rendi amministratore';
|
|
|
|
@override
|
|
String get groupsDismissAdmin => 'Rimuovi ruolo di amministratore';
|
|
|
|
@override
|
|
String get groupsRemoveMember => 'Rimuovi dal gruppo';
|
|
|
|
@override
|
|
String groupsRemoveMemberConfirmTitle(String name) {
|
|
return 'Rimuovere $name dal gruppo?';
|
|
}
|
|
|
|
@override
|
|
String get groupsRemoveMemberConfirmBody =>
|
|
'Non riceverà più i nuovi messaggi del gruppo. La cronologia esistente resta.';
|
|
|
|
@override
|
|
String get groupsRemoveAction => 'Rimuovi';
|
|
|
|
@override
|
|
String get groupsViewContact => 'Vedi contatto';
|
|
|
|
@override
|
|
String get groupsAdminOnlyHint =>
|
|
'Solo gli amministratori possono cambiare nome, membri e amministratori del gruppo.';
|
|
|
|
@override
|
|
String get groupsAdminOnlyCompatHint =>
|
|
'Solo gli amministratori possono rinominare il gruppo o cambiare gli amministratori. Per ora chiunque può aggiungere persone, perché qualcuno nel gruppo ha una versione precedente di Šepot.';
|
|
|
|
@override
|
|
String groupsAdminActionFailed(String error) {
|
|
return 'Modifica non riuscita: $error';
|
|
}
|
|
|
|
@override
|
|
String get groupsResyncNotice =>
|
|
'Il gruppo si sta allineando con l\'amministratore. Le modifiche ai membri potrebbero arrivare in ritardo.';
|
|
|
|
@override
|
|
String get groupsRejectedChangeNotice =>
|
|
'Qualcuno senza permesso ha provato a modificare il gruppo. La modifica non è stata applicata.';
|
|
|
|
@override
|
|
String get errorGroupNotAdmin =>
|
|
'Solo un amministratore del gruppo può farlo.';
|
|
|
|
@override
|
|
String get errorGroupLastAdmin =>
|
|
'Sei l\'unico amministratore. Prima rendi amministratore qualcun altro.';
|
|
|
|
@override
|
|
String get groupsNameHint => 'Nome del gruppo';
|
|
|
|
@override
|
|
String get commonCancel => 'Annulla';
|
|
|
|
@override
|
|
String get commonSave => 'Salva';
|
|
|
|
@override
|
|
String groupsRenameFailed(String error) {
|
|
return 'Rinomina non riuscita: $error';
|
|
}
|
|
|
|
@override
|
|
String get groupsLeaveConfirmTitle => 'Abbandonare il gruppo?';
|
|
|
|
@override
|
|
String get groupsLeaveConfirmBody =>
|
|
'Gli altri vedranno che non sei più nel gruppo. La cronologia ti resterà, ma non riceverai più nuovi messaggi e per rientrare qualcuno dovrà invitarti.';
|
|
|
|
@override
|
|
String get groupsLeaveAction => 'Abbandona';
|
|
|
|
@override
|
|
String groupsLeaveFailed(String error) {
|
|
return 'Uscita non riuscita: $error';
|
|
}
|
|
|
|
@override
|
|
String get chatBlockedBanner =>
|
|
'Il contatto è bloccato. Non ricevi i suoi messaggi e non puoi scrivergli.';
|
|
|
|
@override
|
|
String get chatUnblock => 'Sblocca';
|
|
|
|
@override
|
|
String chatContactBlocked(String name) {
|
|
return 'Contatto $name bloccato';
|
|
}
|
|
|
|
@override
|
|
String chatContactUnblocked(String name) {
|
|
return 'Contatto $name sbloccato';
|
|
}
|
|
|
|
@override
|
|
String reportAndBlockBody(String name) {
|
|
return 'Bloccheremo il contatto $name e smetterai di ricevere i suoi messaggi. Poi ti proporremo un modulo per farci sapere cosa è successo — non vediamo il contenuto dei messaggi, quindi senza la tua descrizione non ne sappiamo nulla.';
|
|
}
|
|
|
|
@override
|
|
String get chatEmptyEncrypted => 'I messaggi sono cifrati end-to-end.';
|
|
|
|
@override
|
|
String get chatEmptyNoOneElse => 'Nessun altro può leggerli.';
|
|
|
|
@override
|
|
String get commonToday => 'Oggi';
|
|
|
|
@override
|
|
String get commonYesterday => 'Ieri';
|
|
|
|
@override
|
|
String get chatMessageHint => 'Scrivi un messaggio…';
|
|
|
|
@override
|
|
String get chatDiscardRecording => 'Scarta';
|
|
|
|
@override
|
|
String get chatRecording => 'Registrazione…';
|
|
|
|
@override
|
|
String get chatMicPermissionMissing =>
|
|
'Manca l\'autorizzazione per il microfono';
|
|
|
|
@override
|
|
String chatRecordingFailed(String error) {
|
|
return 'Registrazione non riuscita: $error';
|
|
}
|
|
|
|
@override
|
|
String chatVoiceSendFailed(String error) {
|
|
return 'Invio del messaggio vocale non riuscito: $error';
|
|
}
|
|
|
|
@override
|
|
String get chatDeletedMessagePreview => 'Messaggio eliminato';
|
|
|
|
@override
|
|
String get chatVoiceMessagePreview => '🎤 Messaggio vocale';
|
|
|
|
@override
|
|
String get chatPhotoPreview => '📷 Foto';
|
|
|
|
@override
|
|
String get chatAttachmentPreview => '📎 Allegato';
|
|
|
|
@override
|
|
String get chatEditingMessage => 'Modifica messaggio';
|
|
|
|
@override
|
|
String get chatReply => 'Risposta';
|
|
|
|
@override
|
|
String get chatActionReply => 'Rispondi';
|
|
|
|
@override
|
|
String get chatActionForward => 'Inoltra';
|
|
|
|
@override
|
|
String get forwardTitle => 'Inoltra a…';
|
|
|
|
@override
|
|
String get forwardSearchHint => 'Cerca contatto o gruppo';
|
|
|
|
@override
|
|
String get forwardEmpty => 'Nessun risultato';
|
|
|
|
@override
|
|
String forwardDone(String name) {
|
|
return 'Inoltrato a $name';
|
|
}
|
|
|
|
@override
|
|
String forwardFailed(String error) {
|
|
return 'Inoltro non riuscito: $error';
|
|
}
|
|
|
|
@override
|
|
String get commonCopy => 'Copia';
|
|
|
|
@override
|
|
String get commonEdit => 'Modifica';
|
|
|
|
@override
|
|
String get chatDeleteForMe => 'Elimina per me';
|
|
|
|
@override
|
|
String get chatDeleteForEveryone => 'Elimina per tutti';
|
|
|
|
@override
|
|
String get commonOff => 'Disattivato';
|
|
|
|
@override
|
|
String get chatDisappearing30s => '30 secondi';
|
|
|
|
@override
|
|
String get chatDisappearing5m => '5 minuti';
|
|
|
|
@override
|
|
String get chatDisappearing1h => '1 ora';
|
|
|
|
@override
|
|
String get chatDisappearing1d => '1 giorno';
|
|
|
|
@override
|
|
String get chatDisappearing1w => '1 settimana';
|
|
|
|
@override
|
|
String get chatDisappearingDescription =>
|
|
'I nuovi messaggi verranno eliminati allo scadere del tempo, sia per te che per l\'altra persona.';
|
|
|
|
@override
|
|
String get chatDisappearingDisabled => 'Messaggi a scomparsa disattivati';
|
|
|
|
@override
|
|
String chatDisappearingEnabled(String duration) {
|
|
return 'I nuovi messaggi scompariranno dopo: $duration';
|
|
}
|
|
|
|
@override
|
|
String get attachmentGallery => 'Foto dalla galleria';
|
|
|
|
@override
|
|
String get attachmentTakePhoto => 'Scatta foto';
|
|
|
|
@override
|
|
String get attachmentDocument => 'Documento';
|
|
|
|
@override
|
|
String attachmentTooLarge(int maxMb) {
|
|
return 'Il file è troppo grande (max $maxMb MB)';
|
|
}
|
|
|
|
@override
|
|
String get attachmentKeepsMetadataTitle => 'La foto includerà la posizione';
|
|
|
|
@override
|
|
String get attachmentKeepsMetadataBody =>
|
|
'Non riesco a rimuovere i metadati da questo formato (ad es. HEIC). Verrebbe inviata in originale, compresi il luogo dello scatto e i dati del telefono. È più sicuro inviarla dalla Galleria, dove i metadati vengono rimossi.';
|
|
|
|
@override
|
|
String get attachmentSendOriginal => 'Invia originale';
|
|
|
|
@override
|
|
String attachmentPickFailed(String error) {
|
|
return 'Selezione dell\'allegato non riuscita: $error';
|
|
}
|
|
|
|
@override
|
|
String attachmentSendFailed(String error) {
|
|
return 'Invio dell\'allegato non riuscito: $error';
|
|
}
|
|
|
|
@override
|
|
String chatSendFailed(String error) {
|
|
return 'Invio non riuscito: $error';
|
|
}
|
|
|
|
@override
|
|
String get chatMessageDeleted => 'Messaggio eliminato';
|
|
|
|
@override
|
|
String get chatEdited => 'modificato';
|
|
|
|
@override
|
|
String get errorTrustRootChanged =>
|
|
'Il trust root del relay è cambiato! Comunicazione rifiutata.';
|
|
|
|
@override
|
|
String get errorRelayUnavailable =>
|
|
'Relay non disponibile (sender certificate)';
|
|
|
|
@override
|
|
String get errorNotYetRegistered =>
|
|
'Šepot si sta ancora connettendo al relay — riprova a inviare tra un istante.';
|
|
|
|
@override
|
|
String get errorContactLinkIncomplete =>
|
|
'Questo link è incompleto — l\'altra persona l\'ha creato prima di connettersi. Chiedile un nuovo link sepot://.';
|
|
|
|
@override
|
|
String errorAttachmentTooLarge(int maxMb) {
|
|
return 'L\'allegato è troppo grande (max $maxMb MB)';
|
|
}
|
|
|
|
@override
|
|
String get errorGroupNeedsMember => 'Il gruppo ha bisogno di almeno 1 membro';
|
|
|
|
@override
|
|
String get errorAttachmentUnavailable =>
|
|
'L\'allegato non è più su questo telefono';
|
|
|
|
@override
|
|
String errorGroupMaxMembers(int maxMembers) {
|
|
return 'Il gruppo può avere al massimo $maxMembers membri';
|
|
}
|
|
|
|
@override
|
|
String errorMemberNoDeliveryAddress(String displayName) {
|
|
return '$displayName non ha un indirizzo di consegna — chiedi un nuovo link';
|
|
}
|
|
|
|
@override
|
|
String get errorContactNoDeliveryAddress =>
|
|
'Il contatto non ha un indirizzo di consegna — chiedigli un nuovo link sepot://';
|
|
|
|
@override
|
|
String get errorIdentityKeyMismatch =>
|
|
'La chiave di identità dal relay NON corrisponde al contatto — possibile MITM! Messaggio non inviato.';
|
|
|
|
@override
|
|
String get settingsTitle => 'Impostazioni';
|
|
|
|
@override
|
|
String get settingsSectionGeneral => 'Generali';
|
|
|
|
@override
|
|
String get settingsSectionSecurity => 'Sicurezza';
|
|
|
|
@override
|
|
String get settingsChangePinTitle => 'Cambia PIN';
|
|
|
|
@override
|
|
String get settingsChangePinSubtitle => 'PIN a 6 cifre per sbloccare';
|
|
|
|
@override
|
|
String get settingsAutoLockTitle => 'Blocco automatico';
|
|
|
|
@override
|
|
String get settingsAutoLock5min => 'Dopo 5 minuti';
|
|
|
|
@override
|
|
String get settingsDecoyPinTitle => 'PIN anti-coercizione';
|
|
|
|
@override
|
|
String get settingsDecoyPinSetSubtitle => 'Impostato — apre un\'app vuota';
|
|
|
|
@override
|
|
String get settingsDecoyPinUnsetSubtitle =>
|
|
'Un secondo PIN che apre un\'app vuota';
|
|
|
|
@override
|
|
String get settingsSectionNotifications => 'Notifiche';
|
|
|
|
@override
|
|
String get settingsSectionConnection => 'Connessione';
|
|
|
|
@override
|
|
String get settingsSectionPrivacy => 'Privacy';
|
|
|
|
@override
|
|
String get settingsReadReceiptsTitle => 'Conferme di lettura';
|
|
|
|
@override
|
|
String get settingsReadReceiptsSubtitle =>
|
|
'Mostra all\'altra persona quando leggi i messaggi (disattivato di default)';
|
|
|
|
@override
|
|
String get settingsScreenSecurityTitle => 'Sicurezza dello schermo';
|
|
|
|
@override
|
|
String get settingsScreenSecuritySubtitle =>
|
|
'Blocca gli screenshot e nasconde il contenuto nelle app recenti';
|
|
|
|
@override
|
|
String get settingsSectionBackup => 'Backup delle chiavi';
|
|
|
|
@override
|
|
String get settingsSeedPhraseTitle => 'Frase di recupero';
|
|
|
|
@override
|
|
String get settingsSeedPhraseSubtitle =>
|
|
'24 parole per ripristinare l\'identità';
|
|
|
|
@override
|
|
String get settingsBackupExportTitle => 'Backup della cronologia';
|
|
|
|
@override
|
|
String get settingsBackupExportSubtitle =>
|
|
'File cifrato con contatti e messaggi';
|
|
|
|
@override
|
|
String get settingsBackupImportTitle => 'Ripristina da backup';
|
|
|
|
@override
|
|
String get settingsBackupImportSubtitle =>
|
|
'Carica un backup (solo con la tua identità)';
|
|
|
|
@override
|
|
String get settingsSectionSafety => 'Protezione';
|
|
|
|
@override
|
|
String get settingsReportAbuseTitle => 'Segnala un abuso';
|
|
|
|
@override
|
|
String get settingsReportAbuseSubtitle =>
|
|
'Molestie, truffe, minori in pericolo';
|
|
|
|
@override
|
|
String get settingsChildSafetyTitle => 'Standard di tutela dei minori';
|
|
|
|
@override
|
|
String get settingsChildSafetySubtitle =>
|
|
'Come agiamo contro gli abusi sui minori';
|
|
|
|
@override
|
|
String get settingsSectionAbout => 'Informazioni';
|
|
|
|
@override
|
|
String get commonAppName => 'Šepot';
|
|
|
|
@override
|
|
String settingsVersion(String version) {
|
|
return 'Versione $version';
|
|
}
|
|
|
|
@override
|
|
String get settingsLicenseTitle => 'Licenza';
|
|
|
|
@override
|
|
String get settingsLicenseSubtitle => 'AGPL-3.0';
|
|
|
|
@override
|
|
String get settingsPrivacyPolicyTitle => 'Informativa sulla privacy';
|
|
|
|
@override
|
|
String get settingsPrivacyPolicySubtitle => 'Cosa sappiamo di te (e cosa no)';
|
|
|
|
@override
|
|
String get settingsTermsTitle => 'Termini di utilizzo';
|
|
|
|
@override
|
|
String get settingsTermsSubtitle => 'sepot.cz/podminky';
|
|
|
|
@override
|
|
String get settingsDataDeletionTitle => 'Eliminazione dei dati';
|
|
|
|
@override
|
|
String get settingsDataDeletionSubtitle => 'Come richiedere la cancellazione';
|
|
|
|
@override
|
|
String get settingsDeleteAllDataButton => 'Elimina tutti i dati';
|
|
|
|
@override
|
|
String settingsLicenseBody(String supportEmail) {
|
|
return 'Šepot è distribuito sotto licenza GNU Affero General Public License versione 3 (AGPL-3.0). Usa la libreria libsignal, anch\'essa AGPL-3.0.\n\nPer ricevere il codice sorgente corrispondente a questa versione scrivi a $supportEmail e te lo invieremo.';
|
|
}
|
|
|
|
@override
|
|
String get commonClose => 'Chiudi';
|
|
|
|
@override
|
|
String get settingsIdCopied => 'ID copiato';
|
|
|
|
@override
|
|
String settingsFingerprint(String fingerprint) {
|
|
return 'Impronta: $fingerprint';
|
|
}
|
|
|
|
@override
|
|
String get backupShareSubject => 'Šepot — backup cifrato';
|
|
|
|
@override
|
|
String backupExportFailed(String error) {
|
|
return 'Backup non riuscito: $error';
|
|
}
|
|
|
|
@override
|
|
String backupRestoredCount(int count) {
|
|
String _temp0 = intl.Intl.pluralLogic(
|
|
count,
|
|
locale: localeName,
|
|
other: 'Ripristinate $count conversazioni dal backup',
|
|
one: 'Ripristinata 1 conversazione dal backup',
|
|
);
|
|
return '$_temp0';
|
|
}
|
|
|
|
@override
|
|
String backupImportFailed(String error) {
|
|
return 'Ripristino dal backup non riuscito: $error';
|
|
}
|
|
|
|
@override
|
|
String get settingsDecoyPinExplain =>
|
|
'Inserendo questo PIN l\'app si apre vuota — senza i tuoi contatti e messaggi. Deve essere diverso dal PIN normale.';
|
|
|
|
@override
|
|
String get commonConfirm => 'Conferma';
|
|
|
|
@override
|
|
String get commonSet => 'Imposta';
|
|
|
|
@override
|
|
String get settingsDecoyPinEnabled => 'PIN anti-coercizione impostato';
|
|
|
|
@override
|
|
String get settingsDecoyPinConflict =>
|
|
'Il PIN anti-coercizione deve essere diverso da quello normale';
|
|
|
|
@override
|
|
String get settingsDecoyPinDisabled => 'PIN anti-coercizione rimosso';
|
|
|
|
@override
|
|
String get settingsSeedPhraseNotFound => 'Frase di recupero non trovata';
|
|
|
|
@override
|
|
String get settingsSeedPhraseWarning =>
|
|
'Queste parole sono l\'unico backup della tua identità. Non mostrarle a nessuno!';
|
|
|
|
@override
|
|
String settingsSeedWordChip(int index, String word) {
|
|
return '$index. $word';
|
|
}
|
|
|
|
@override
|
|
String get settingsAboutTagline => 'Šepot — Messenger privato';
|
|
|
|
@override
|
|
String get settingsAboutBody =>
|
|
'Messenger cifrato E2E e open source.\n\nCrittografia:\n• X25519 (scambio di chiavi)\n• XChaCha20-Poly1305 (cifratura)\n• Ed25519 (firme)\n\n© 2026 ajtak.it';
|
|
|
|
@override
|
|
String get settingsDeleteAccountTitle =>
|
|
'Eliminare l\'account e tutti i dati?';
|
|
|
|
@override
|
|
String get settingsDeleteAccountBody =>
|
|
'Questa azione è irreversibile. Tutti i messaggi, i contatti e le chiavi verranno eliminati da questo dispositivo e l\'account verrà deregistrato dal server. Se non hai la frase di recupero, perderai la tua identità.';
|
|
|
|
@override
|
|
String get settingsDeleteAccountServerOffline =>
|
|
'Il server al momento non è raggiungibile — i dati sul dispositivo sono stati eliminati, ma la registrazione sul server è rimasta. Scrivici a podpora@sepot.cz e cancelleremo il resto.';
|
|
|
|
@override
|
|
String get settingsDeleteAllConfirm => 'Elimina tutto';
|
|
|
|
@override
|
|
String groupsCreateFailed(String error) {
|
|
return 'Impossibile creare il gruppo: $error';
|
|
}
|
|
|
|
@override
|
|
String get groupsNewGroupTitle => 'Nuovo gruppo';
|
|
|
|
@override
|
|
String get groupsCreateAction => 'Crea';
|
|
|
|
@override
|
|
String groupsMembersCounter(int selectedCount, int maxMembers) {
|
|
return 'Membri ($selectedCount/$maxMembers)';
|
|
}
|
|
|
|
@override
|
|
String get groupsEmptyContactsHint =>
|
|
'Prima aggiungi dei contatti — un gruppo è fatto di persone con cui puoi già scrivere.';
|
|
|
|
@override
|
|
String get groupsMemberMissingAddress =>
|
|
'Manca l\'indirizzo di consegna — chiedi un nuovo link';
|
|
|
|
@override
|
|
String attachmentSizeBytes(int bytes) {
|
|
return '$bytes B';
|
|
}
|
|
|
|
@override
|
|
String attachmentSizeKb(String kilobytes) {
|
|
return '$kilobytes kB';
|
|
}
|
|
|
|
@override
|
|
String attachmentSizeMb(String megabytes) {
|
|
return '$megabytes MB';
|
|
}
|
|
|
|
@override
|
|
String get attachmentDownloadFailedTapToRetry =>
|
|
'Download non riuscito — tocca per riprovare';
|
|
|
|
@override
|
|
String get attachmentDownloadFailed => 'Download non riuscito';
|
|
|
|
@override
|
|
String get attachmentDownloading => 'Download in corso…';
|
|
|
|
@override
|
|
String get attachmentSharedFileFallbackName => 'file';
|
|
|
|
@override
|
|
String attachmentOpenFailed(String error) {
|
|
return 'Impossibile aprire l\'allegato: $error';
|
|
}
|
|
|
|
@override
|
|
String get commonFile => 'File';
|
|
|
|
@override
|
|
String get chatListNewConversation => 'Nuova conversazione';
|
|
|
|
@override
|
|
String get chatListReadReceiptPreview => 'Letto';
|
|
|
|
@override
|
|
String get chatListDraft => 'Bozza';
|
|
|
|
@override
|
|
String get notesTitle => 'Note per me';
|
|
|
|
@override
|
|
String get notesSubtitle => 'Solo su questo telefono, cifrato';
|
|
|
|
@override
|
|
String get callVoice => 'Chiama';
|
|
|
|
@override
|
|
String get callVideo => 'Videochiamata';
|
|
|
|
@override
|
|
String get callStatusRinging => 'Squilla…';
|
|
|
|
@override
|
|
String get callIncomingVoice => 'Chiamata in arrivo';
|
|
|
|
@override
|
|
String get callIncomingVideo => 'Videochiamata in arrivo';
|
|
|
|
@override
|
|
String get callStatusConnecting => 'Connessione…';
|
|
|
|
@override
|
|
String get callEnded => 'Chiamata terminata';
|
|
|
|
@override
|
|
String get callEndedBusy => 'Occupato';
|
|
|
|
@override
|
|
String get callEndedRejected => 'Chiamata rifiutata';
|
|
|
|
@override
|
|
String get callEndedUnanswered => 'Nessuna risposta';
|
|
|
|
@override
|
|
String get callEndedFailed => 'Connessione non riuscita';
|
|
|
|
@override
|
|
String get callEncrypted => 'Crittografia end-to-end';
|
|
|
|
@override
|
|
String get callAccept => 'Accetta';
|
|
|
|
@override
|
|
String get callReject => 'Rifiuta';
|
|
|
|
@override
|
|
String get callMute => 'Disattiva microfono';
|
|
|
|
@override
|
|
String get callSpeaker => 'Altoparlante';
|
|
|
|
@override
|
|
String get callCamera => 'Disattiva fotocamera';
|
|
|
|
@override
|
|
String get callSwitchCamera => 'Cambia fotocamera';
|
|
|
|
@override
|
|
String get callHangUp => 'Riaggancia';
|
|
|
|
@override
|
|
String get callLogMissed => 'Chiamata persa';
|
|
|
|
@override
|
|
String get callLogUnanswered => 'Chiamata senza risposta';
|
|
|
|
@override
|
|
String get callLogRejected => 'Chiamata rifiutata';
|
|
|
|
@override
|
|
String get callLogBusy => 'Occupato';
|
|
|
|
@override
|
|
String get callLogFailed => 'Chiamata non riuscita';
|
|
|
|
@override
|
|
String callLogVoice(String duration) {
|
|
return 'Chiamata · $duration';
|
|
}
|
|
|
|
@override
|
|
String callLogVideo(String duration) {
|
|
return 'Videochiamata · $duration';
|
|
}
|
|
|
|
@override
|
|
String get chatListTimeNow => 'adesso';
|
|
|
|
@override
|
|
String chatListTimeMinutes(int minutes) {
|
|
return '$minutes min';
|
|
}
|
|
|
|
@override
|
|
String get qrScanTitle => 'Scansiona codice QR';
|
|
|
|
@override
|
|
String get qrScanInstruction => 'Inquadra il codice QR del contatto';
|
|
|
|
@override
|
|
String get qrScanHint =>
|
|
'Il codice QR contiene la chiave pubblica del contatto';
|
|
|
|
@override
|
|
String get qrNewContactTitle => 'Nuovo contatto';
|
|
|
|
@override
|
|
String qrContactAdded(String name) {
|
|
return 'Contatto $name aggiunto';
|
|
}
|
|
|
|
@override
|
|
String get commonAdd => 'Aggiungi';
|
|
|
|
@override
|
|
String get onboardingWelcomeTitle => 'Ti diamo il benvenuto in Šepot';
|
|
|
|
@override
|
|
String get onboardingWelcomeSubtitle =>
|
|
'Un messenger privato con cifratura end-to-end.\nNessun numero di telefono. Nessuna email.\nSolo le tue chiavi.';
|
|
|
|
@override
|
|
String get onboardingStart => 'Inizia';
|
|
|
|
@override
|
|
String get onboardingRestoreExisting =>
|
|
'Ho già un account — ripristina dalla frase di recupero';
|
|
|
|
@override
|
|
String get onboardingEncryptionTitle => 'I tuoi messaggi, le tue chiavi';
|
|
|
|
@override
|
|
String get onboardingFeatureSignalTitle => 'Protocollo Signal';
|
|
|
|
@override
|
|
String get onboardingFeatureSignalSubtitle =>
|
|
'X3DH + Double Ratchet, forward secrecy';
|
|
|
|
@override
|
|
String get onboardingFeaturePqTitle => 'Protezione post-quantistica';
|
|
|
|
@override
|
|
String get onboardingFeaturePqSubtitle =>
|
|
'Kyber (PQXDH) fin dal primo messaggio';
|
|
|
|
@override
|
|
String get onboardingFeatureLocalKeysTitle =>
|
|
'Chiavi solo sul tuo dispositivo';
|
|
|
|
@override
|
|
String get onboardingFeatureLocalKeysSubtitle => 'Nessun server le possiede';
|
|
|
|
@override
|
|
String get onboardingFeatureDisappearingSubtitle =>
|
|
'Si eliminano automaticamente';
|
|
|
|
@override
|
|
String get commonContinue => 'Continua';
|
|
|
|
@override
|
|
String get onboardingIdentityTitle => 'Crea la tua identità';
|
|
|
|
@override
|
|
String get onboardingIdentitySubtitle =>
|
|
'Nessuna email né telefono. Solo un nome e chiavi crittografiche.';
|
|
|
|
@override
|
|
String get onboardingDisplayNameLabel => 'Nome visualizzato';
|
|
|
|
@override
|
|
String get onboardingDisplayNameHint => 'Es. Marco';
|
|
|
|
@override
|
|
String onboardingSeedPhraseWarning(int count) {
|
|
return 'Annota queste $count parole. Sono l\'unico backup delle tue chiavi!';
|
|
}
|
|
|
|
@override
|
|
String get onboardingSeedSavedConfirm =>
|
|
'Confermo di aver salvato la frase in un luogo sicuro';
|
|
|
|
@override
|
|
String get onboardingGenerateKeys => 'Genera le chiavi';
|
|
|
|
@override
|
|
String get verifyMismatchTitle => 'I numeri NON corrispondono';
|
|
|
|
@override
|
|
String verifyMatchBody(String contactName) {
|
|
return 'Le chiavi corrispondono. $contactName è un contatto verificato.';
|
|
}
|
|
|
|
@override
|
|
String get verifyMismatchBody =>
|
|
'I numeri di sicurezza non corrispondono. Qualcuno potrebbe intercettare la connessione (MITM), oppure stai scansionando il codice di un altro contatto. NON inviare messaggi sensibili e verificatevi di nuovo tramite un altro canale.';
|
|
|
|
@override
|
|
String get commonUnderstood => 'Ho capito';
|
|
|
|
@override
|
|
String get verifyManualConfirmTitle => 'Segnare come verificato?';
|
|
|
|
@override
|
|
String get verifyManualConfirmBody =>
|
|
'Conferma solo se hai confrontato le cifre con l\'altra persona tramite un altro canale affidabile (di persona, con una chiamata…) e corrispondono.';
|
|
|
|
@override
|
|
String get verifyManualConfirmAction => 'Corrispondono, verifica';
|
|
|
|
@override
|
|
String get verifyTitle => 'Verifica del contatto';
|
|
|
|
@override
|
|
String get verifyContactVerifiedBanner => 'Il contatto è verificato';
|
|
|
|
@override
|
|
String verifyIntro(String contactName) {
|
|
return 'Confronta questo numero con $contactName. Se corrisponde, nessuno sta intercettando la vostra cifratura. Il modo più rapido è scansionare a vicenda i codici QR.';
|
|
}
|
|
|
|
@override
|
|
String get verifyScanButton => 'Scansiona il codice dell\'altra persona';
|
|
|
|
@override
|
|
String get verifyManualButton => 'Le cifre corrispondono — segna manualmente';
|
|
|
|
@override
|
|
String get verifyUnverifyButton => 'Rimuovi verifica';
|
|
|
|
@override
|
|
String get verifyScanScreenTitle => 'Scansiona il QR di verifica';
|
|
|
|
@override
|
|
String get reportTitle => 'Segnala';
|
|
|
|
@override
|
|
String get reportSubmitted => 'Segnalazione inviata';
|
|
|
|
@override
|
|
String get reportSubmittedChildSafety =>
|
|
'Diamo priorità a queste segnalazioni. Se un minore è in pericolo immediato, chiama subito il 112 o il 114 (Emergenza Infanzia).';
|
|
|
|
@override
|
|
String get reportSubmittedThanks =>
|
|
'Grazie. L\'esamineremo il prima possibile.';
|
|
|
|
@override
|
|
String get commonDone => 'Fatto';
|
|
|
|
@override
|
|
String get reportPanelE2eNotice =>
|
|
'I messaggi sono cifrati end-to-end, quindi non possiamo vederne il contenuto nemmeno ora. Descrivi con parole tue cosa è successo. Non incollare qui il contenuto dei messaggi né link ad esso — non possiamo conservarlo e non ci serve per la valutazione.';
|
|
|
|
@override
|
|
String get reportPanelCsamWarning =>
|
|
'NON inviarci materiale che mostra abusi su minori. Detenerlo è un reato anche per noi e non ci serve per la segnalazione. Il materiale va segnalato direttamente alla polizia o a una hotline dedicata alla protezione dei minori. Scrivici solo cosa è successo — bloccheremo l\'account e inoltreremo il caso.';
|
|
|
|
@override
|
|
String get reportPanelIpNotice =>
|
|
'La segnalazione non passa dal relay ma dal nostro server web, che al momento dell\'invio vedrà il tuo indirizzo IP.';
|
|
|
|
@override
|
|
String get reportCategoryHeading => 'Oggetto della segnalazione';
|
|
|
|
@override
|
|
String get reportDescriptionHeading => 'Cosa è successo';
|
|
|
|
@override
|
|
String get reportAttachContactId => 'Allega l\'ID del contatto segnalato';
|
|
|
|
@override
|
|
String reportAttachContactIdNamed(String contactName) {
|
|
return 'Allega l\'ID del contatto $contactName';
|
|
}
|
|
|
|
@override
|
|
String get reportReplyToHeading => 'Come contattarti (facoltativo)';
|
|
|
|
@override
|
|
String get reportReplyToHint =>
|
|
'email, nel caso avessimo bisogno di chiarimenti';
|
|
|
|
@override
|
|
String get reportSubmitButton => 'Invia segnalazione';
|
|
|
|
@override
|
|
String get contactsTitle => 'Contatti';
|
|
|
|
@override
|
|
String get contactsAddContact => 'Aggiungi contatto';
|
|
|
|
@override
|
|
String get contactsSearchHint => 'Cerca un contatto...';
|
|
|
|
@override
|
|
String get contactsEmpty => 'Ancora nessun contatto';
|
|
|
|
@override
|
|
String get contactsNoResults => 'Nessun risultato';
|
|
|
|
@override
|
|
String get contactsShareCardTitle => 'Condividi il tuo Šepot ID';
|
|
|
|
@override
|
|
String get contactsShareCardSubtitle => 'Mostra il codice QR o invia un link';
|
|
|
|
@override
|
|
String get contactsAddDialogPrompt =>
|
|
'Incolla la stringa di condivisione (share string) del contatto:';
|
|
|
|
@override
|
|
String get contactsShareStringHint => 'Incolla la share string...';
|
|
|
|
@override
|
|
String get contactsInvalidShareString => 'Share string non valida';
|
|
|
|
@override
|
|
String contactsAdded(String name) {
|
|
return 'Contatto $name aggiunto';
|
|
}
|
|
|
|
@override
|
|
String get verifyContactSubtitle => 'Confronto del numero di sicurezza';
|
|
|
|
@override
|
|
String get contactsDeleteContact => 'Elimina contatto';
|
|
|
|
@override
|
|
String get pinConfirmTitle => 'Conferma il PIN';
|
|
|
|
@override
|
|
String get pinSetupTitle => 'Imposta il tuo PIN';
|
|
|
|
@override
|
|
String get pinConfirmSubtitle => 'Inserisci di nuovo il PIN per confermare';
|
|
|
|
@override
|
|
String get pinSetupSubtitle => 'PIN a 6 cifre per sbloccare l\'app';
|
|
|
|
@override
|
|
String get pinSetupFailed => 'Impostazione del PIN non riuscita. Riprova.';
|
|
|
|
@override
|
|
String get pinMismatchRetry => 'I PIN non corrispondono. Riprova.';
|
|
|
|
@override
|
|
String get pinChangeCurrentTitle => 'Inserisci il PIN attuale';
|
|
|
|
@override
|
|
String get pinChangeCurrentSubtitle => 'Lo verifichiamo sbloccando la chiave';
|
|
|
|
@override
|
|
String get pinChangeNewTitle => 'Inserisci il nuovo PIN';
|
|
|
|
@override
|
|
String get pinChangeNewSubtitle => '6 cifre';
|
|
|
|
@override
|
|
String get pinChangeConfirmTitle => 'Conferma il nuovo PIN';
|
|
|
|
@override
|
|
String get pinChangeConfirmSubtitle => 'Inseriscilo ancora una volta';
|
|
|
|
@override
|
|
String get pinWrong => 'PIN errato.';
|
|
|
|
@override
|
|
String get pinChangeMustDiffer =>
|
|
'Il nuovo PIN deve essere diverso da quello attuale.';
|
|
|
|
@override
|
|
String get pinMismatch => 'I PIN non corrispondono.';
|
|
|
|
@override
|
|
String get pinDecoyConflict =>
|
|
'Questo PIN appartiene già alla modalità anti-coercizione. Scegline un altro.';
|
|
|
|
@override
|
|
String get pinChangeFailed => 'Cambio del PIN non riuscito. Riprova.';
|
|
|
|
@override
|
|
String get pinChanged => 'PIN cambiato';
|
|
|
|
@override
|
|
String get errorCryptoInitTitle => 'Il motore di cifratura non si è avviato';
|
|
|
|
@override
|
|
String get errorStartupTitle => 'Šepot non si è avviato';
|
|
|
|
@override
|
|
String get errorScreenNotRenderedTitle =>
|
|
'Questa schermata non è stata visualizzata';
|
|
|
|
@override
|
|
String get errorStartupBody =>
|
|
'Qualcosa è andato storto subito all\'avvio. Inviami questo testo, per favore (tieni premuto e copia) — mi aiuterà a trovare l\'errore.';
|
|
|
|
@override
|
|
String get errorContactFooter => 'sepot.cz · contattami';
|
|
|
|
@override
|
|
String get pinUnlockTitle => 'Sblocca Šepot';
|
|
|
|
@override
|
|
String get pinEnterPin => 'Inserisci il PIN';
|
|
|
|
@override
|
|
String get pinUnlockWithBiometrics => 'Sblocca con biometria';
|
|
|
|
@override
|
|
String get pinWrong2 => 'PIN errato';
|
|
|
|
@override
|
|
String get pinUnlockError => 'Errore di sblocco';
|
|
|
|
@override
|
|
String pinLockedFor(int seconds) {
|
|
return 'Troppi tentativi. Riprova tra $seconds s.';
|
|
}
|
|
|
|
@override
|
|
String get pushTitle => 'Notifiche push';
|
|
|
|
@override
|
|
String get pushModeOffDesc =>
|
|
'I messaggi verranno scaricati solo all\'apertura dell\'app.';
|
|
|
|
@override
|
|
String get pushModeUp => 'UnifiedPush (senza Google)';
|
|
|
|
@override
|
|
String get pushModeUpDesc =>
|
|
'Senza Google — richiede l\'app ntfy (F-Droid/Play).';
|
|
|
|
@override
|
|
String get pushModeFcm => 'Google (FCM, predefinito)';
|
|
|
|
@override
|
|
String get pushModeFcmDesc =>
|
|
'Affidabile senza altre app. Il token push del dispositivo va a Google; il contenuto dei messaggi mai.';
|
|
|
|
@override
|
|
String pushSetupFailed(String error) {
|
|
return 'Configurazione delle notifiche push non riuscita: $error';
|
|
}
|
|
|
|
@override
|
|
String get pushHintOff =>
|
|
'I messaggi arrivano solo quando apri Šepot — le notifiche non sono configurate.';
|
|
|
|
@override
|
|
String get pushHintFailed =>
|
|
'Le notifiche non funzionano: vedrai i messaggi solo aprendo Šepot.';
|
|
|
|
@override
|
|
String get pushRegistrationFailed =>
|
|
'Le notifiche non arrivano — il distributore ha rifiutato la registrazione. Prova a disattivare e riattivare il push.';
|
|
|
|
@override
|
|
String get pushNoDistributorTitle => 'Nessun distributore';
|
|
|
|
@override
|
|
String get pushNoDistributorBody =>
|
|
'Per notifiche senza Google installa un distributore UnifiedPush, ad es. ntfy (F-Droid o Play). Poi riattiva le notifiche push.';
|
|
|
|
@override
|
|
String get commonOk => 'OK';
|
|
|
|
@override
|
|
String get pushPickDistributorTitle => 'Scegli il distributore';
|
|
|
|
@override
|
|
String pushSubtitleUnifiedPush(String distributor) {
|
|
return 'UnifiedPush · $distributor';
|
|
}
|
|
|
|
@override
|
|
String get pushNoDistributorFallback => 'nessun distributore';
|
|
|
|
@override
|
|
String get pushSubtitleFcm => 'Google (FCM)';
|
|
|
|
@override
|
|
String get restoreErrorNameRequired => 'Inserisci il nome visualizzato.';
|
|
|
|
@override
|
|
String restoreErrorWordCount(int wordCount, int requiredWords) {
|
|
String _temp0 = intl.Intl.pluralLogic(
|
|
wordCount,
|
|
locale: localeName,
|
|
other: 'La frase ha $wordCount parole, ne servono $requiredWords.',
|
|
one: 'La frase ha 1 parola, ne servono $requiredWords.',
|
|
);
|
|
return '$_temp0';
|
|
}
|
|
|
|
@override
|
|
String get restoreErrorInvalidPhrase =>
|
|
'La frase non è valida — controlla le parole e il loro ordine.';
|
|
|
|
@override
|
|
String restoreErrorFailed(String error) {
|
|
return 'Ripristino non riuscito: $error';
|
|
}
|
|
|
|
@override
|
|
String get restoreTitle => 'Ripristina account';
|
|
|
|
@override
|
|
String get restoreHeading => 'Inserisci la tua frase di recupero';
|
|
|
|
@override
|
|
String restoreIntro(int wordCount) {
|
|
return '$wordCount parole, dal backup fatto quando hai creato l\'account. Ripristina la tua identità (stesso codice SEP, i contatti continueranno a riconoscerti).';
|
|
}
|
|
|
|
@override
|
|
String get restoreHistoryWarning =>
|
|
'La cronologia dei messaggi non verrà ripristinata — è salvata solo sul dispositivo originale.';
|
|
|
|
@override
|
|
String get restorePhraseHint => 'parola1 parola2 parola3 …';
|
|
|
|
@override
|
|
String restoreWordCountHelper(int wordCount, int requiredWords) {
|
|
return '$wordCount / $requiredWords parole';
|
|
}
|
|
|
|
@override
|
|
String chatListArchivedCount(int count) {
|
|
return 'Archiviate ($count)';
|
|
}
|
|
|
|
@override
|
|
String get chatListEmptyTitle => 'Ancora nessuna conversazione';
|
|
|
|
@override
|
|
String get chatListEmptySubtitle =>
|
|
'Aggiungi un contatto e inizia a sussurrare!';
|
|
|
|
@override
|
|
String get chatListUnmute => 'Riattiva notifiche';
|
|
|
|
@override
|
|
String get chatListMute => 'Silenzia';
|
|
|
|
@override
|
|
String get chatListArchive => 'Archivia';
|
|
|
|
@override
|
|
String get qrShareTitle => 'Il mio Šepot ID';
|
|
|
|
@override
|
|
String get qrShareConnectingTitle => 'Connessione al relay…';
|
|
|
|
@override
|
|
String get qrShareConnectingBody =>
|
|
'Il tuo codice QR e il link appariranno appena Šepot si connette per la prima volta. Un istante — bastano pochi secondi.';
|
|
|
|
@override
|
|
String get qrIdentityNotFound => 'Identità non trovata';
|
|
|
|
@override
|
|
String get commonCopiedToClipboard => 'Copiato negli appunti';
|
|
|
|
@override
|
|
String qrShareInviteMessage(String shareString) {
|
|
return 'Aggiungimi su Šepot!\n\n$shareString';
|
|
}
|
|
|
|
@override
|
|
String get commonShare => 'Condividi';
|
|
|
|
@override
|
|
String get qrShareInfo =>
|
|
'Il contatto scansiona il tuo codice QR o incolla la stringa di condivisione nell\'app.';
|
|
|
|
@override
|
|
String get reportCategoryChildSafety => 'Minore in pericolo';
|
|
|
|
@override
|
|
String get reportCategoryChildSafetyHint =>
|
|
'Descrivi la situazione con parole tue. Non incollare il contenuto dei messaggi né link al materiale.';
|
|
|
|
@override
|
|
String get reportCategoryHarassment => 'Molestie o minacce';
|
|
|
|
@override
|
|
String get reportCategoryHarassmentHint =>
|
|
'Qualcuno ti intimidisce, ti minaccia o ti molesta.';
|
|
|
|
@override
|
|
String get reportCategorySpam => 'Spam';
|
|
|
|
@override
|
|
String get reportCategorySpamHint => 'Messaggi indesiderati, invii di massa.';
|
|
|
|
@override
|
|
String get reportCategoryFraud => 'Truffa';
|
|
|
|
@override
|
|
String get reportCategoryFraudHint =>
|
|
'Un tentativo di ottenere con l\'inganno denaro, chiavi o dati personali.';
|
|
|
|
@override
|
|
String get reportCategoryOther => 'Altro';
|
|
|
|
@override
|
|
String get reportCategoryOtherHint => 'Qualcos\'altro che dovremmo sapere.';
|
|
|
|
@override
|
|
String get reportErrorEmptyDescription =>
|
|
'Scrivi cosa è successo, per favore.';
|
|
|
|
@override
|
|
String reportErrorConnection(String supportEmail) {
|
|
return 'Impossibile contattare il server. Riprova, oppure scrivi a $supportEmail.';
|
|
}
|
|
|
|
@override
|
|
String reportErrorRateLimited(String supportEmail) {
|
|
return 'Troppe segnalazioni dalla tua rete. Riprova tra un\'ora, oppure scrivi a $supportEmail.';
|
|
}
|
|
|
|
@override
|
|
String reportErrorServer(int statusCode, String supportEmail) {
|
|
return 'Invio non riuscito (codice $statusCode). Scrivi a $supportEmail, per favore.';
|
|
}
|
|
|
|
@override
|
|
String get settingsAutoLockNever => 'Mai';
|
|
|
|
@override
|
|
String get settingsAutoLock1min => 'Dopo 1 minuto';
|
|
|
|
@override
|
|
String get settingsAutoLock15min => 'Dopo 15 minuti';
|
|
|
|
@override
|
|
String torToggleFailed(String error) {
|
|
return 'Impossibile cambiare lo stato di Tor: $error';
|
|
}
|
|
|
|
@override
|
|
String get torConnectionTitle => 'Connessione via Tor';
|
|
|
|
@override
|
|
String get torDialogBody =>
|
|
'Il traffico verso il server passerà dalla rete Tor (nasconde il tuo indirizzo IP). Richiede l\'app Orbot installata e in esecuzione, con proxy SOCKS attivo sulla porta 9050.\n\nSenza Orbot in esecuzione i messaggi non vengono né inviati né ricevuti. La connessione tende a essere più lenta.';
|
|
|
|
@override
|
|
String get commonTurnOn => 'Attiva';
|
|
|
|
@override
|
|
String get torSubtitleOff =>
|
|
'Connessione cifrata diretta (WSS). Attiva per nascondere l\'IP via Tor.';
|
|
|
|
@override
|
|
String get torStatusConnected => 'Connesso via Tor (.onion).';
|
|
|
|
@override
|
|
String get torStatusConnecting =>
|
|
'Connessione via Tor… (Orbot è in esecuzione?)';
|
|
|
|
@override
|
|
String get torStatusWaiting => 'Via Tor — in attesa di Orbot (SOCKS 9050).';
|
|
|
|
@override
|
|
String get biometricsPinRequiredFirst =>
|
|
'Prima imposta un PIN — la biometria è solo un complemento.';
|
|
|
|
@override
|
|
String get biometricsStorageLocked =>
|
|
'La memoria protetta è bloccata — sblocca l\'app con il PIN.';
|
|
|
|
@override
|
|
String get biometricsNotAvailable =>
|
|
'Il dispositivo non ha la biometria configurata.';
|
|
|
|
@override
|
|
String get biometricsEnrollPromptReason =>
|
|
'Conferma l\'attivazione dello sblocco biometrico';
|
|
|
|
@override
|
|
String biometricsSetupFailed(String error) {
|
|
return 'Impossibile configurare la biometria: $error';
|
|
}
|
|
|
|
@override
|
|
String get biometricsTileTitle => 'Biometria';
|
|
|
|
@override
|
|
String get biometricsTileSubtitle =>
|
|
'Sblocco con impronta / volto (il PIN resta di riserva)';
|
|
|
|
@override
|
|
String get backupErrorCorruptedFile => 'File di backup danneggiato';
|
|
|
|
@override
|
|
String get backupErrorUnknownFormat => 'Formato di backup non riconosciuto';
|
|
|
|
@override
|
|
String get backupErrorWrongIdentity =>
|
|
'Impossibile decifrare il backup — appartiene a un\'altra identità?';
|
|
|
|
@override
|
|
String attachmentSharedImageFilename(String ext) {
|
|
return 'sepot-immagine.$ext';
|
|
}
|
|
|
|
@override
|
|
String get attachmentDecryptFailed => 'Impossibile decifrare l\'allegato';
|
|
|
|
@override
|
|
String get pushActionOpen => 'Apri';
|
|
|
|
@override
|
|
String get pushChannelMessagesName => 'Messaggi';
|
|
|
|
@override
|
|
String get pushChannelMessagesDescription =>
|
|
'Avvisi per i nuovi messaggi (senza contenuto)';
|
|
|
|
@override
|
|
String pushNewMessageFrom(String senderName) {
|
|
return 'Nuovo messaggio da $senderName';
|
|
}
|
|
|
|
@override
|
|
String get pushNewMessages => 'Hai nuovi messaggi';
|
|
|
|
@override
|
|
String get archiveTitle => 'Archiviate';
|
|
|
|
@override
|
|
String get archiveEmpty => 'Nessuna conversazione archiviata';
|
|
|
|
@override
|
|
String get archiveUnarchive => 'Rimuovi dall\'archivio';
|
|
|
|
@override
|
|
String restoreErrorMnemonicWordCount(int count, int expected) {
|
|
return 'La frase ha $count parole, ne servono $expected';
|
|
}
|
|
|
|
@override
|
|
String restoreErrorInvalidMnemonic(String message) {
|
|
return 'Frase non valida: $message';
|
|
}
|
|
|
|
@override
|
|
String get contactsErrorAlreadyExists => 'Il contatto esiste già';
|
|
|
|
@override
|
|
String get commonAppTagline => 'Messenger privato';
|
|
|
|
@override
|
|
String get commonE2eBadgeCompact => 'E2E';
|
|
|
|
@override
|
|
String get commonE2eBadgeFull => 'Cifrato end-to-end';
|
|
|
|
@override
|
|
String get photoPreviewCaptionHint => 'Aggiungi una didascalia…';
|
|
|
|
@override
|
|
String get photoPreviewDraw => 'Disegna';
|
|
|
|
@override
|
|
String get photoPreviewAddText => 'Aggiungi testo';
|
|
|
|
@override
|
|
String get photoPreviewRotate => 'Ruota';
|
|
|
|
@override
|
|
String get photoPreviewUndo => 'Annulla';
|
|
|
|
@override
|
|
String get photoPreviewSend => 'Invia';
|
|
|
|
@override
|
|
String get photoPreviewTextDialogTitle => 'Testo sulla foto';
|
|
|
|
@override
|
|
String get photoPreviewRemoveText => 'Rimuovi';
|
|
|
|
@override
|
|
String get photoPreviewDecodeFailed => 'Impossibile caricare la foto';
|
|
|
|
@override
|
|
String get chatActionInfo => 'Info messaggio';
|
|
|
|
@override
|
|
String get messageInfoSent => 'Inviato';
|
|
|
|
@override
|
|
String get messageInfoDelivered => 'Consegnato';
|
|
|
|
@override
|
|
String get messageInfoRead => 'Letto';
|
|
|
|
@override
|
|
String get messageInfoPending => 'non ancora';
|
|
|
|
@override
|
|
String get messageInfoReadReceiptsOff =>
|
|
'Vedi quando i tuoi messaggi vengono letti solo se condividi anche tu le conferme di lettura (Impostazioni).';
|
|
|
|
@override
|
|
String chatStatusReadAt(String time) {
|
|
return 'Letto $time';
|
|
}
|
|
|
|
@override
|
|
String chatStatusDeliveredAt(String time) {
|
|
return 'Consegnato $time';
|
|
}
|
|
|
|
@override
|
|
String get groupsAddMembers => 'Aggiungi membri';
|
|
|
|
@override
|
|
String get groupsAddMembersAction => 'Aggiungi';
|
|
|
|
@override
|
|
String groupsAddMembersFailed(String error) {
|
|
return 'Impossibile aggiungere: $error';
|
|
}
|
|
|
|
@override
|
|
String get groupsNoContactsToAdd =>
|
|
'Tutti i tuoi contatti sono già nel gruppo. Aggiungi prima una nuova persona ai contatti tramite codice QR.';
|
|
|
|
@override
|
|
String get navChats => 'Chat';
|
|
|
|
@override
|
|
String get chatListNewChat => 'Nuova chat';
|
|
|
|
@override
|
|
String get chatListSearchHint => 'Cerca in chat e messaggi';
|
|
|
|
@override
|
|
String get chatFilterAll => 'Tutte';
|
|
|
|
@override
|
|
String get chatFilterUnread => 'Non lette';
|
|
|
|
@override
|
|
String get chatFilterGroups => 'Gruppi';
|
|
|
|
@override
|
|
String get chatFilterArchive => 'Archivio';
|
|
|
|
@override
|
|
String get chatListNoResults => 'Nessun risultato.';
|
|
|
|
@override
|
|
String get chatListFilterEmpty => 'Ancora niente qui.';
|
|
|
|
@override
|
|
String get chatListPin => 'Fissa';
|
|
|
|
@override
|
|
String get chatListUnpin => 'Sblocca';
|
|
|
|
@override
|
|
String get chatOpenProfile => 'Vedi profilo';
|
|
|
|
@override
|
|
String get groupsProfile => 'Info gruppo';
|
|
|
|
@override
|
|
String get chatSearchHint => 'Cerca nella chat';
|
|
|
|
@override
|
|
String get chatSearchNoMatches => 'Nessuno';
|
|
|
|
@override
|
|
String chatSearchCounter(int current, int total) {
|
|
return '$current di $total';
|
|
}
|
|
|
|
@override
|
|
String get chatSearchOlder => 'Risultato precedente';
|
|
|
|
@override
|
|
String get chatSearchNewer => 'Risultato successivo';
|
|
|
|
@override
|
|
String chatUnreadDivider(int count) {
|
|
String _temp0 = intl.Intl.pluralLogic(
|
|
count,
|
|
locale: localeName,
|
|
other: '$count nuovi messaggi',
|
|
one: '1 nuovo messaggio',
|
|
);
|
|
return '$_temp0';
|
|
}
|
|
|
|
@override
|
|
String get chatJumpToLatest => 'Vai ai più recenti';
|
|
|
|
@override
|
|
String get chatAttach => 'Allega';
|
|
|
|
@override
|
|
String get chatSend => 'Invia';
|
|
|
|
@override
|
|
String get chatRecordVoice => 'Registra messaggio vocale';
|
|
|
|
@override
|
|
String get profileSharedMedia => 'Media condivisi';
|
|
|
|
@override
|
|
String get profileMessage => 'Messaggio';
|
|
|
|
@override
|
|
String get profileSearch => 'Cerca';
|
|
|
|
@override
|
|
String get profileUnmute => 'Riattiva';
|
|
|
|
@override
|
|
String get profileDisappearing => 'Effimeri';
|
|
|
|
@override
|
|
String get profileCommonGroups => 'Gruppi in comune';
|
|
|
|
@override
|
|
String get profileSafetyNumber => 'Numero di sicurezza';
|
|
|
|
@override
|
|
String get profileSafetyNumberHint => 'Confronta di persona o con codice QR';
|
|
|
|
@override
|
|
String get profileVerifiedInPerson => 'Verificato di persona';
|
|
|
|
@override
|
|
String get profileVerifyNow => 'Verifica contatto';
|
|
|
|
@override
|
|
String get profileAdd => 'Aggiungi';
|
|
|
|
@override
|
|
String profileGroupSubtitle(String members, String date) {
|
|
return 'Gruppo · $members · creato il $date';
|
|
}
|
|
|
|
@override
|
|
String profileMembersOfMax(int count, int max) {
|
|
return '$count su $max';
|
|
}
|
|
|
|
@override
|
|
String get chatTyping => 'sta scrivendo…';
|
|
|
|
@override
|
|
String chatTypingNamed(String name) {
|
|
return '$name sta scrivendo…';
|
|
}
|
|
|
|
@override
|
|
String get chatTypingSeveral => 'Più persone stanno scrivendo…';
|
|
|
|
@override
|
|
String get settingsTypingTitle => 'Indicatore di scrittura';
|
|
|
|
@override
|
|
String get settingsTypingSubtitle =>
|
|
'Reciproco — se non lo condividi, non lo vedi (disattivato di default)';
|
|
|
|
@override
|
|
String get pollAttach => 'Sondaggio';
|
|
|
|
@override
|
|
String get pollCreateTitle => 'Nuovo sondaggio';
|
|
|
|
@override
|
|
String get pollQuestion => 'Domanda';
|
|
|
|
@override
|
|
String pollOptionHint(int number) {
|
|
return 'Opzione $number';
|
|
}
|
|
|
|
@override
|
|
String get pollAddOption => 'Aggiungi opzione';
|
|
|
|
@override
|
|
String get pollRemoveOption => 'Rimuovi opzione';
|
|
|
|
@override
|
|
String get pollAllowMultiple => 'Consenti più risposte';
|
|
|
|
@override
|
|
String get pollSingle => 'Sondaggio';
|
|
|
|
@override
|
|
String get pollMulti => 'Sondaggio, scelta multipla';
|
|
|
|
@override
|
|
String pollVoters(int count) {
|
|
String _temp0 = intl.Intl.pluralLogic(
|
|
count,
|
|
locale: localeName,
|
|
other: '$count voti',
|
|
one: '1 voto',
|
|
zero: 'ancora nessun voto',
|
|
);
|
|
return '$_temp0';
|
|
}
|
|
|
|
@override
|
|
String pollFallback(String question) {
|
|
return 'Sondaggio: $question';
|
|
}
|
|
|
|
@override
|
|
String get pollFallbackUpdate => 'Aggiorna Šepot per votare.';
|
|
|
|
@override
|
|
String get profilePhotoEdit => 'Cambia foto profilo';
|
|
|
|
@override
|
|
String get profilePhotoPick => 'Scegli foto';
|
|
|
|
@override
|
|
String get profilePhotoRemove => 'Rimuovi foto';
|
|
|
|
@override
|
|
String get profilePhotoHint =>
|
|
'La vedranno solo le persone con cui chatti — cifrata come i messaggi. Posizione e metadati non vengono inviati.';
|
|
|
|
@override
|
|
String profilePhotoFailed(String error) {
|
|
return 'Impossibile impostare la foto: $error';
|
|
}
|
|
|
|
@override
|
|
String get reauthTitle => 'Conferma che sei tu';
|
|
|
|
@override
|
|
String get reauthPinRequired =>
|
|
'Questa azione richiede un PIN. Impostalo prima.';
|
|
|
|
@override
|
|
String get reauthSetPin => 'Imposta PIN';
|
|
|
|
@override
|
|
String get reauthReasonSeed => 'Mostra le 24 parole di recupero';
|
|
|
|
@override
|
|
String get reauthReasonBackupExport => 'Esporta backup';
|
|
|
|
@override
|
|
String get reauthReasonBackupImport => 'Ripristina da backup';
|
|
|
|
@override
|
|
String get reauthReasonDecoyPin => 'Modifica il PIN di emergenza';
|
|
|
|
@override
|
|
String get reauthReasonAutoLock => 'Prolunga il blocco automatico';
|
|
|
|
@override
|
|
String get reauthReasonScreenSecurity => 'Disattiva la protezione schermo';
|
|
|
|
@override
|
|
String get reauthReasonDeleteAccount => 'Elimina l\'account e tutti i dati';
|
|
|
|
@override
|
|
String get reauthReasonBiometrics => 'Attiva la biometria';
|
|
|
|
@override
|
|
String contactRequestName(String name) {
|
|
return '$name (sconosciuto)';
|
|
}
|
|
|
|
@override
|
|
String get pushMessageRequest =>
|
|
'Richiesta di messaggio da un mittente sconosciuto';
|
|
|
|
@override
|
|
String get requestTitle => 'Richiesta di messaggio';
|
|
|
|
@override
|
|
String requestBody(String name) {
|
|
return '«$name» non è tra i tuoi contatti. Nome e foto li ha scelti da sé, quindi potrebbe non essere chi dice di essere. Finché non accetti, non vede che hai letto il messaggio e non può chiamarti.';
|
|
}
|
|
|
|
@override
|
|
String requestLookalikeWarning(String name) {
|
|
return 'Attenzione: il tuo contatto $name ha lo stesso nome. Questa è una chiave diversa, quindi un altro telefono o un\'altra persona. Verifica in un altro modo prima di rispondere (chiama, incontratevi).';
|
|
}
|
|
|
|
@override
|
|
String get requestAccept => 'Accetta';
|
|
|
|
@override
|
|
String get requestAcceptTitle => 'Accetta come contatto';
|
|
|
|
@override
|
|
String get requestAcceptBody =>
|
|
'Dai tu un nome al contatto. Il nome scelto dal mittente non viene ripreso automaticamente.';
|
|
|
|
@override
|
|
String get requestAcceptNameLabel => 'Nome del contatto';
|
|
|
|
@override
|
|
String get requestNameEmpty => 'Inserisci un nome.';
|
|
|
|
@override
|
|
String get requestNameTaken =>
|
|
'Un altro contatto ha già questo nome (o quasi). Scegline uno che non si possa confondere.';
|
|
|
|
@override
|
|
String noticeIdentityChanged(String name) {
|
|
return 'Il codice di sicurezza di $name è cambiato. Al suo indirizzo si è presentata una chiave diversa: nuovo telefono, reinstallazione o un impostore. La verifica è stata annullata. Confrontate di nuovo il codice prima di inviare qualcosa di sensibile.';
|
|
}
|
|
|
|
@override
|
|
String noticeLookalikeRequest(String claimed, String name) {
|
|
return 'Un mittente sconosciuto si è chiamato «$claimed», un nome che si confonde con il tuo contatto $name. Non è questo contatto, il messaggio è arrivato da una chiave diversa. Lo trovi nelle chat come richiesta di messaggio.';
|
|
}
|
|
|
|
@override
|
|
String get noticeVerifyAction => 'Verifica codice';
|
|
|
|
@override
|
|
String get noticePreview => 'Avviso di sicurezza';
|
|
}
|