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.
1821 lines
46 KiB
Dart
1821 lines
46 KiB
Dart
// ignore: unused_import
|
|
import 'package:intl/intl.dart' as intl;
|
|
import 'app_localizations.dart';
|
|
|
|
// ignore_for_file: type=lint
|
|
|
|
/// The translations for Czech (`cs`).
|
|
class AppLocalizationsCs extends AppLocalizations {
|
|
AppLocalizationsCs([String locale = 'cs']) : super(locale);
|
|
|
|
@override
|
|
String get appTitle => 'Šepot';
|
|
|
|
@override
|
|
String get settingsLanguage => 'Jazyk aplikace';
|
|
|
|
@override
|
|
String get languageSystem => 'Podle systému';
|
|
|
|
@override
|
|
String get commonUnknownContact => 'Neznámý';
|
|
|
|
@override
|
|
String get verifyVerified => 'Ověřeno';
|
|
|
|
@override
|
|
String get verifyUnverified => 'Neověřeno';
|
|
|
|
@override
|
|
String get chatMenuVerifyContact => 'Ověřit kontakt';
|
|
|
|
@override
|
|
String get chatDisappearingMessages => 'Mizící zprávy';
|
|
|
|
@override
|
|
String get chatMenuUnblockContact => 'Odblokovat kontakt';
|
|
|
|
@override
|
|
String get chatMenuBlockContact => 'Blokovat kontakt';
|
|
|
|
@override
|
|
String get reportAndBlock => 'Nahlásit a zablokovat';
|
|
|
|
@override
|
|
String errorGeneric(String error) {
|
|
return 'Chyba: $error';
|
|
}
|
|
|
|
@override
|
|
String get groupsYouLeftGroup => 'Už nejsi ve skupině';
|
|
|
|
@override
|
|
String groupsMemberCount(int count) {
|
|
String _temp0 = intl.Intl.pluralLogic(
|
|
count,
|
|
locale: localeName,
|
|
other: '$count členů',
|
|
many: '$count člena',
|
|
few: '$count členové',
|
|
one: '1 člen',
|
|
);
|
|
return '$_temp0';
|
|
}
|
|
|
|
@override
|
|
String get groupsMembers => 'Členové';
|
|
|
|
@override
|
|
String get groupsRename => 'Přejmenovat skupinu';
|
|
|
|
@override
|
|
String get groupsLeave => 'Opustit skupinu';
|
|
|
|
@override
|
|
String get groupsLeftBanner =>
|
|
'Už nejsi ve skupině. Historie zůstává, nové zprávy nedorazí.';
|
|
|
|
@override
|
|
String get groupsYou => 'Ty';
|
|
|
|
@override
|
|
String get groupsFounder => 'Zakladatel';
|
|
|
|
@override
|
|
String get groupsAdmin => 'Správce';
|
|
|
|
@override
|
|
String get groupsMakeAdmin => 'Udělat správcem';
|
|
|
|
@override
|
|
String get groupsDismissAdmin => 'Odebrat roli správce';
|
|
|
|
@override
|
|
String get groupsRemoveMember => 'Odebrat ze skupiny';
|
|
|
|
@override
|
|
String groupsRemoveMemberConfirmTitle(String name) {
|
|
return 'Odebrat $name ze skupiny?';
|
|
}
|
|
|
|
@override
|
|
String get groupsRemoveMemberConfirmBody =>
|
|
'Přestanou mu chodit nové zprávy skupiny. Dosavadní historie mu zůstane.';
|
|
|
|
@override
|
|
String get groupsRemoveAction => 'Odebrat';
|
|
|
|
@override
|
|
String get groupsViewContact => 'Zobrazit kontakt';
|
|
|
|
@override
|
|
String get groupsAdminOnlyHint =>
|
|
'Jméno, členy a správce skupiny mění jen správci.';
|
|
|
|
@override
|
|
String get groupsAdminOnlyCompatHint =>
|
|
'Jméno a správce mění jen správci. Přidávat lidi zatím může každý, protože někdo ve skupině má starší verzi Šepotu.';
|
|
|
|
@override
|
|
String groupsAdminActionFailed(String error) {
|
|
return 'Změna se nepovedla: $error';
|
|
}
|
|
|
|
@override
|
|
String get groupsResyncNotice =>
|
|
'Stav skupiny se srovnává se správcem. Změny členů se můžou chvíli opozdit.';
|
|
|
|
@override
|
|
String get groupsRejectedChangeNotice =>
|
|
'Někdo bez oprávnění zkusil skupinu změnit. Změna se neprovedla.';
|
|
|
|
@override
|
|
String get errorGroupNotAdmin => 'Tohle může udělat jen správce skupiny.';
|
|
|
|
@override
|
|
String get errorGroupLastAdmin =>
|
|
'Jsi jediný správce. Nejdřív udělej správcem někoho dalšího.';
|
|
|
|
@override
|
|
String get groupsNameHint => 'Název skupiny';
|
|
|
|
@override
|
|
String get commonCancel => 'Zrušit';
|
|
|
|
@override
|
|
String get commonSave => 'Uložit';
|
|
|
|
@override
|
|
String groupsRenameFailed(String error) {
|
|
return 'Přejmenování selhalo: $error';
|
|
}
|
|
|
|
@override
|
|
String get groupsLeaveConfirmTitle => 'Opustit skupinu?';
|
|
|
|
@override
|
|
String get groupsLeaveConfirmBody =>
|
|
'Ostatní uvidí, že už ve skupině nejsi. Historie ti zůstane, ale nové zprávy už nedostaneš a zpět tě musí někdo pozvat.';
|
|
|
|
@override
|
|
String get groupsLeaveAction => 'Opustit';
|
|
|
|
@override
|
|
String groupsLeaveFailed(String error) {
|
|
return 'Odchod selhal: $error';
|
|
}
|
|
|
|
@override
|
|
String get chatBlockedBanner =>
|
|
'Kontakt je zablokovaný. Nedostáváš od něj zprávy a nemůžeš mu psát.';
|
|
|
|
@override
|
|
String get chatUnblock => 'Odblokovat';
|
|
|
|
@override
|
|
String chatContactBlocked(String name) {
|
|
return 'Kontakt $name je zablokovaný';
|
|
}
|
|
|
|
@override
|
|
String chatContactUnblocked(String name) {
|
|
return 'Kontakt $name je odblokovaný';
|
|
}
|
|
|
|
@override
|
|
String reportAndBlockBody(String name) {
|
|
return 'Kontakt $name zablokujeme a přestaneš od něj dostávat zprávy. Pak ti nabídneme formulář, kterým nám dáš vědět, co se stalo — obsah zpráv nevidíme, takže bez tvého popisu o tom nevíme.';
|
|
}
|
|
|
|
@override
|
|
String get chatEmptyEncrypted => 'Zprávy jsou end-to-end šifrované.';
|
|
|
|
@override
|
|
String get chatEmptyNoOneElse => 'Nikdo jiný je nemůže číst.';
|
|
|
|
@override
|
|
String get commonToday => 'Dnes';
|
|
|
|
@override
|
|
String get commonYesterday => 'Včera';
|
|
|
|
@override
|
|
String get chatMessageHint => 'Napiš zprávu…';
|
|
|
|
@override
|
|
String get chatDiscardRecording => 'Zahodit';
|
|
|
|
@override
|
|
String get chatRecording => 'Nahrávám…';
|
|
|
|
@override
|
|
String get chatMicPermissionMissing => 'Chybí oprávnění k mikrofonu';
|
|
|
|
@override
|
|
String chatRecordingFailed(String error) {
|
|
return 'Nahrávání selhalo: $error';
|
|
}
|
|
|
|
@override
|
|
String chatVoiceSendFailed(String error) {
|
|
return 'Odeslání hlasové zprávy selhalo: $error';
|
|
}
|
|
|
|
@override
|
|
String get chatDeletedMessagePreview => 'Smazaná zpráva';
|
|
|
|
@override
|
|
String get chatVoiceMessagePreview => '🎤 Hlasová zpráva';
|
|
|
|
@override
|
|
String get chatPhotoPreview => '📷 Fotka';
|
|
|
|
@override
|
|
String get chatAttachmentPreview => '📎 Příloha';
|
|
|
|
@override
|
|
String get chatEditingMessage => 'Úprava zprávy';
|
|
|
|
@override
|
|
String get chatReply => 'Odpověď';
|
|
|
|
@override
|
|
String get chatActionReply => 'Odpovědět';
|
|
|
|
@override
|
|
String get chatActionForward => 'Přeposlat';
|
|
|
|
@override
|
|
String get forwardTitle => 'Přeposlat do…';
|
|
|
|
@override
|
|
String get forwardSearchHint => 'Hledat kontakt nebo skupinu';
|
|
|
|
@override
|
|
String get forwardEmpty => 'Nic tu není';
|
|
|
|
@override
|
|
String forwardDone(String name) {
|
|
return 'Přeposláno: $name';
|
|
}
|
|
|
|
@override
|
|
String forwardFailed(String error) {
|
|
return 'Přeposlání se nepovedlo: $error';
|
|
}
|
|
|
|
@override
|
|
String get commonCopy => 'Kopírovat';
|
|
|
|
@override
|
|
String get commonEdit => 'Upravit';
|
|
|
|
@override
|
|
String get chatDeleteForMe => 'Smazat u mě';
|
|
|
|
@override
|
|
String get chatDeleteForEveryone => 'Smazat pro všechny';
|
|
|
|
@override
|
|
String get commonOff => 'Vypnuto';
|
|
|
|
@override
|
|
String get chatDisappearing30s => '30 sekund';
|
|
|
|
@override
|
|
String get chatDisappearing5m => '5 minut';
|
|
|
|
@override
|
|
String get chatDisappearing1h => '1 hodina';
|
|
|
|
@override
|
|
String get chatDisappearing1d => '1 den';
|
|
|
|
@override
|
|
String get chatDisappearing1w => '1 týden';
|
|
|
|
@override
|
|
String get chatDisappearingDescription =>
|
|
'Nové zprávy se po uplynutí doby smažou u tebe i u protistrany.';
|
|
|
|
@override
|
|
String get chatDisappearingDisabled => 'Mizící zprávy vypnuty';
|
|
|
|
@override
|
|
String chatDisappearingEnabled(String duration) {
|
|
return 'Nové zprávy zmizí po: $duration';
|
|
}
|
|
|
|
@override
|
|
String get attachmentGallery => 'Fotka z galerie';
|
|
|
|
@override
|
|
String get attachmentTakePhoto => 'Vyfotit';
|
|
|
|
@override
|
|
String get attachmentDocument => 'Dokument';
|
|
|
|
@override
|
|
String attachmentTooLarge(int maxMb) {
|
|
return 'Soubor je příliš velký (max $maxMb MB)';
|
|
}
|
|
|
|
@override
|
|
String get attachmentKeepsMetadataTitle => 'Fotka odejde i s polohou';
|
|
|
|
@override
|
|
String get attachmentKeepsMetadataBody =>
|
|
'Tenhle formát fotky (třeba HEIC) neumím zbavit metadat. Odešla by v originále včetně polohy, kde vznikla, a údajů o telefonu. Bezpečnější je poslat ji přes Galerii, kde se metadata odstraní.';
|
|
|
|
@override
|
|
String get attachmentSendOriginal => 'Poslat originál';
|
|
|
|
@override
|
|
String attachmentPickFailed(String error) {
|
|
return 'Výběr přílohy selhal: $error';
|
|
}
|
|
|
|
@override
|
|
String attachmentSendFailed(String error) {
|
|
return 'Odeslání přílohy selhalo: $error';
|
|
}
|
|
|
|
@override
|
|
String chatSendFailed(String error) {
|
|
return 'Odeslání selhalo: $error';
|
|
}
|
|
|
|
@override
|
|
String get chatMessageDeleted => 'Zpráva smazána';
|
|
|
|
@override
|
|
String get chatEdited => 'upraveno';
|
|
|
|
@override
|
|
String get errorTrustRootChanged =>
|
|
'Trust root relaye se změnil! Odmítám komunikovat.';
|
|
|
|
@override
|
|
String get errorRelayUnavailable => 'Relay nedostupný (sender certificate)';
|
|
|
|
@override
|
|
String get errorNotYetRegistered =>
|
|
'Šepot se ještě připojuje k relayi — zkus zprávu poslat za chvíli.';
|
|
|
|
@override
|
|
String get errorContactLinkIncomplete =>
|
|
'Odkaz je neúplný — protistrana ho vytvořila dřív, než se stihla připojit. Požádej ji o nový sepot:// odkaz.';
|
|
|
|
@override
|
|
String errorAttachmentTooLarge(int maxMb) {
|
|
return 'Příloha je příliš velká (max $maxMb MB)';
|
|
}
|
|
|
|
@override
|
|
String get errorGroupNeedsMember => 'Skupina potřebuje aspoň 1 člena';
|
|
|
|
@override
|
|
String get errorAttachmentUnavailable => 'Příloha už v telefonu není';
|
|
|
|
@override
|
|
String errorGroupMaxMembers(int maxMembers) {
|
|
return 'Skupina může mít nejvýš $maxMembers členů';
|
|
}
|
|
|
|
@override
|
|
String errorMemberNoDeliveryAddress(String displayName) {
|
|
return '$displayName nemá doručovací adresu — požádej o nový odkaz';
|
|
}
|
|
|
|
@override
|
|
String get errorContactNoDeliveryAddress =>
|
|
'Kontakt nemá doručovací adresu — požádej ho o nový sepot:// odkaz';
|
|
|
|
@override
|
|
String get errorIdentityKeyMismatch =>
|
|
'Identity klíč z relaye NESEDÍ s kontaktem — možný MITM! Zpráva neodeslána.';
|
|
|
|
@override
|
|
String get settingsTitle => 'Nastavení';
|
|
|
|
@override
|
|
String get settingsSectionGeneral => 'Obecné';
|
|
|
|
@override
|
|
String get settingsSectionSecurity => 'Zabezpečení';
|
|
|
|
@override
|
|
String get settingsChangePinTitle => 'Změnit PIN';
|
|
|
|
@override
|
|
String get settingsChangePinSubtitle => '6místný PIN pro odemknutí';
|
|
|
|
@override
|
|
String get settingsAutoLockTitle => 'Automatický zámek';
|
|
|
|
@override
|
|
String get settingsAutoLock5min => 'Po 5 minutách';
|
|
|
|
@override
|
|
String get settingsDecoyPinTitle => 'Nátlakový PIN';
|
|
|
|
@override
|
|
String get settingsDecoyPinSetSubtitle =>
|
|
'Nastaven — otevře prázdnou aplikaci';
|
|
|
|
@override
|
|
String get settingsDecoyPinUnsetSubtitle =>
|
|
'Druhý PIN, který otevře prázdnou aplikaci';
|
|
|
|
@override
|
|
String get settingsSectionNotifications => 'Notifikace';
|
|
|
|
@override
|
|
String get settingsSectionConnection => 'Připojení';
|
|
|
|
@override
|
|
String get settingsSectionPrivacy => 'Soukromí';
|
|
|
|
@override
|
|
String get settingsReadReceiptsTitle => 'Potvrzení přečtení';
|
|
|
|
@override
|
|
String get settingsReadReceiptsSubtitle =>
|
|
'Ukazovat protistraně přečtení zpráv (výchozí vypnuto)';
|
|
|
|
@override
|
|
String get settingsScreenSecurityTitle => 'Zabezpečení obrazovky';
|
|
|
|
@override
|
|
String get settingsScreenSecuritySubtitle =>
|
|
'Blokovat screenshoty a skrýt obsah v přepínači aplikací';
|
|
|
|
@override
|
|
String get settingsSectionBackup => 'Záloha klíčů';
|
|
|
|
@override
|
|
String get settingsSeedPhraseTitle => 'Zálohovací fráze';
|
|
|
|
@override
|
|
String get settingsSeedPhraseSubtitle => '24 slov pro obnovu identity';
|
|
|
|
@override
|
|
String get settingsBackupExportTitle => 'Zálohovat historii';
|
|
|
|
@override
|
|
String get settingsBackupExportSubtitle =>
|
|
'Šifrovaný soubor s kontakty a zprávami';
|
|
|
|
@override
|
|
String get settingsBackupImportTitle => 'Obnovit ze zálohy';
|
|
|
|
@override
|
|
String get settingsBackupImportSubtitle =>
|
|
'Načíst zálohu (jen s tvojí identitou)';
|
|
|
|
@override
|
|
String get settingsSectionSafety => 'Bezpečnost';
|
|
|
|
@override
|
|
String get settingsReportAbuseTitle => 'Nahlásit zneužití';
|
|
|
|
@override
|
|
String get settingsReportAbuseSubtitle =>
|
|
'Obtěžování, podvod, ohrožení dítěte';
|
|
|
|
@override
|
|
String get settingsChildSafetyTitle => 'Standardy ochrany dětí';
|
|
|
|
@override
|
|
String get settingsChildSafetySubtitle =>
|
|
'Jak postupujeme proti zneužívání dětí';
|
|
|
|
@override
|
|
String get settingsSectionAbout => 'O aplikaci';
|
|
|
|
@override
|
|
String get commonAppName => 'Šepot';
|
|
|
|
@override
|
|
String settingsVersion(String version) {
|
|
return 'Verze $version';
|
|
}
|
|
|
|
@override
|
|
String get settingsLicenseTitle => 'Licence';
|
|
|
|
@override
|
|
String get settingsLicenseSubtitle => 'AGPL-3.0';
|
|
|
|
@override
|
|
String get settingsPrivacyPolicyTitle => 'Zásady ochrany soukromí';
|
|
|
|
@override
|
|
String get settingsPrivacyPolicySubtitle => 'Co o tobě víme (a co ne)';
|
|
|
|
@override
|
|
String get settingsTermsTitle => 'Podmínky použití';
|
|
|
|
@override
|
|
String get settingsTermsSubtitle => 'sepot.cz/podminky';
|
|
|
|
@override
|
|
String get settingsDataDeletionTitle => 'Smazání dat';
|
|
|
|
@override
|
|
String get settingsDataDeletionSubtitle => 'Jak požádat o výmaz';
|
|
|
|
@override
|
|
String get settingsDeleteAllDataButton => 'Smazat všechna data';
|
|
|
|
@override
|
|
String settingsLicenseBody(String supportEmail) {
|
|
return 'Šepot je šířen pod licencí GNU Affero General Public License verze 3 (AGPL-3.0). Používá knihovnu libsignal, rovněž AGPL-3.0.\n\nO zdrojový kód odpovídající této verzi si můžeš napsat na $supportEmail a pošleme ti ho.';
|
|
}
|
|
|
|
@override
|
|
String get commonClose => 'Zavřít';
|
|
|
|
@override
|
|
String get settingsIdCopied => 'ID zkopírováno';
|
|
|
|
@override
|
|
String settingsFingerprint(String fingerprint) {
|
|
return 'Otisk: $fingerprint';
|
|
}
|
|
|
|
@override
|
|
String get backupShareSubject => 'Šepot — šifrovaná záloha';
|
|
|
|
@override
|
|
String backupExportFailed(String error) {
|
|
return 'Záloha selhala: $error';
|
|
}
|
|
|
|
@override
|
|
String backupRestoredCount(int count) {
|
|
String _temp0 = intl.Intl.pluralLogic(
|
|
count,
|
|
locale: localeName,
|
|
other: 'Obnoveno $count konverzací ze zálohy',
|
|
many: 'Obnoveno $count konverzace ze zálohy',
|
|
few: 'Obnoveny $count konverzace ze zálohy',
|
|
one: 'Obnovena 1 konverzace ze zálohy',
|
|
);
|
|
return '$_temp0';
|
|
}
|
|
|
|
@override
|
|
String backupImportFailed(String error) {
|
|
return 'Obnova ze zálohy selhala: $error';
|
|
}
|
|
|
|
@override
|
|
String get settingsDecoyPinExplain =>
|
|
'Zadáním tohoto PINu se aplikace otevře prázdná — bez tvých kontaktů a zpráv. Musí být jiný než běžný PIN.';
|
|
|
|
@override
|
|
String get commonConfirm => 'Potvrdit';
|
|
|
|
@override
|
|
String get commonSet => 'Nastavit';
|
|
|
|
@override
|
|
String get settingsDecoyPinEnabled => 'Nátlakový PIN nastaven';
|
|
|
|
@override
|
|
String get settingsDecoyPinConflict =>
|
|
'Nátlakový PIN musí být jiný než běžný';
|
|
|
|
@override
|
|
String get settingsDecoyPinDisabled => 'Nátlakový PIN zrušen';
|
|
|
|
@override
|
|
String get settingsSeedPhraseNotFound => 'Zálohovací fráze nebyla nalezena';
|
|
|
|
@override
|
|
String get settingsSeedPhraseWarning =>
|
|
'Tato slova jsou jedinou zálohou tvé identity. Nikomu je neukazuj!';
|
|
|
|
@override
|
|
String settingsSeedWordChip(int index, String word) {
|
|
return '$index. $word';
|
|
}
|
|
|
|
@override
|
|
String get settingsAboutTagline => 'Šepot — Soukromý Messenger';
|
|
|
|
@override
|
|
String get settingsAboutBody =>
|
|
'E2E šifrovaný messenger s otevřeným zdrojovým kódem.\n\nKryptografie:\n• X25519 (výměna klíčů)\n• XChaCha20-Poly1305 (šifrování)\n• Ed25519 (podpisy)\n\n© 2026 ajtak.it';
|
|
|
|
@override
|
|
String get settingsDeleteAccountTitle => 'Smazat účet a všechna data?';
|
|
|
|
@override
|
|
String get settingsDeleteAccountBody =>
|
|
'Tato akce je nevratná. Všechny zprávy, kontakty a klíče budou smazány z tohoto zařízení a účet bude odregistrován ze serveru. Pokud nemáš zálohovací frázi, přijdeš o svou identitu.';
|
|
|
|
@override
|
|
String get settingsDeleteAccountServerOffline =>
|
|
'Server je teď nedostupný — data v zařízení jsou smazaná, registrace na serveru zůstala. Zbytek smažeme na podpora@sepot.cz.';
|
|
|
|
@override
|
|
String get settingsDeleteAllConfirm => 'Smazat vše';
|
|
|
|
@override
|
|
String groupsCreateFailed(String error) {
|
|
return 'Skupinu se nepovedlo založit: $error';
|
|
}
|
|
|
|
@override
|
|
String get groupsNewGroupTitle => 'Nová skupina';
|
|
|
|
@override
|
|
String get groupsCreateAction => 'Založit';
|
|
|
|
@override
|
|
String groupsMembersCounter(int selectedCount, int maxMembers) {
|
|
return 'Členové ($selectedCount/$maxMembers)';
|
|
}
|
|
|
|
@override
|
|
String get groupsEmptyContactsHint =>
|
|
'Nejdřív si přidej kontakty — skupina se skládá z lidí, se kterými si už můžeš psát.';
|
|
|
|
@override
|
|
String get groupsMemberMissingAddress =>
|
|
'Chybí doručovací adresa — požádej o nový odkaz';
|
|
|
|
@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 =>
|
|
'Stažení selhalo — klepni pro opakování';
|
|
|
|
@override
|
|
String get attachmentDownloadFailed => 'Stažení selhalo';
|
|
|
|
@override
|
|
String get attachmentDownloading => 'Stahuji…';
|
|
|
|
@override
|
|
String get attachmentSharedFileFallbackName => 'soubor';
|
|
|
|
@override
|
|
String attachmentOpenFailed(String error) {
|
|
return 'Otevření přílohy selhalo: $error';
|
|
}
|
|
|
|
@override
|
|
String get commonFile => 'Soubor';
|
|
|
|
@override
|
|
String get chatListNewConversation => 'Nová konverzace';
|
|
|
|
@override
|
|
String get chatListReadReceiptPreview => 'Přečteno';
|
|
|
|
@override
|
|
String get chatListDraft => 'Koncept';
|
|
|
|
@override
|
|
String get notesTitle => 'Poznámky pro sebe';
|
|
|
|
@override
|
|
String get notesSubtitle => 'Jen v tomto telefonu, šifrovaně';
|
|
|
|
@override
|
|
String get callVoice => 'Zavolat';
|
|
|
|
@override
|
|
String get callVideo => 'Videohovor';
|
|
|
|
@override
|
|
String get callStatusRinging => 'Vyzvání…';
|
|
|
|
@override
|
|
String get callIncomingVoice => 'Příchozí hovor';
|
|
|
|
@override
|
|
String get callIncomingVideo => 'Příchozí videohovor';
|
|
|
|
@override
|
|
String get callStatusConnecting => 'Spojuji…';
|
|
|
|
@override
|
|
String get callEnded => 'Hovor skončil';
|
|
|
|
@override
|
|
String get callEndedBusy => 'Obsazeno';
|
|
|
|
@override
|
|
String get callEndedRejected => 'Hovor odmítnut';
|
|
|
|
@override
|
|
String get callEndedUnanswered => 'Nikdo to nevzal';
|
|
|
|
@override
|
|
String get callEndedFailed => 'Spojení se nepodařilo';
|
|
|
|
@override
|
|
String get callEncrypted => 'Šifrováno end-to-end';
|
|
|
|
@override
|
|
String get callAccept => 'Přijmout';
|
|
|
|
@override
|
|
String get callReject => 'Odmítnout';
|
|
|
|
@override
|
|
String get callMute => 'Ztlumit mikrofon';
|
|
|
|
@override
|
|
String get callSpeaker => 'Reproduktor';
|
|
|
|
@override
|
|
String get callCamera => 'Vypnout kameru';
|
|
|
|
@override
|
|
String get callSwitchCamera => 'Přepnout kameru';
|
|
|
|
@override
|
|
String get callHangUp => 'Zavěsit';
|
|
|
|
@override
|
|
String get callLogMissed => 'Zmeškaný hovor';
|
|
|
|
@override
|
|
String get callLogUnanswered => 'Nepřijatý hovor';
|
|
|
|
@override
|
|
String get callLogRejected => 'Odmítnutý hovor';
|
|
|
|
@override
|
|
String get callLogBusy => 'Obsazeno';
|
|
|
|
@override
|
|
String get callLogFailed => 'Hovor se nespojil';
|
|
|
|
@override
|
|
String callLogVoice(String duration) {
|
|
return 'Hovor · $duration';
|
|
}
|
|
|
|
@override
|
|
String callLogVideo(String duration) {
|
|
return 'Videohovor · $duration';
|
|
}
|
|
|
|
@override
|
|
String get chatListTimeNow => 'teď';
|
|
|
|
@override
|
|
String chatListTimeMinutes(int minutes) {
|
|
return '$minutes min';
|
|
}
|
|
|
|
@override
|
|
String get qrScanTitle => 'Skenovat QR kód';
|
|
|
|
@override
|
|
String get qrScanInstruction => 'Namiř kameru na QR kód kontaktu';
|
|
|
|
@override
|
|
String get qrScanHint => 'QR kód obsahuje veřejný klíč kontaktu';
|
|
|
|
@override
|
|
String get qrNewContactTitle => 'Nový kontakt';
|
|
|
|
@override
|
|
String qrContactAdded(String name) {
|
|
return '$name přidán/a';
|
|
}
|
|
|
|
@override
|
|
String get commonAdd => 'Přidat';
|
|
|
|
@override
|
|
String get onboardingWelcomeTitle => 'Vítej v Šepotu';
|
|
|
|
@override
|
|
String get onboardingWelcomeSubtitle =>
|
|
'Soukromý messenger s end-to-end šifrováním.\nŽádné telefonní číslo. Žádný email.\nJen tvoje klíče.';
|
|
|
|
@override
|
|
String get onboardingStart => 'Začít';
|
|
|
|
@override
|
|
String get onboardingRestoreExisting =>
|
|
'Už mám účet — obnovit ze zálohovací fráze';
|
|
|
|
@override
|
|
String get onboardingEncryptionTitle => 'Tvoje zprávy, tvoje klíče';
|
|
|
|
@override
|
|
String get onboardingFeatureSignalTitle => 'Signal protokol';
|
|
|
|
@override
|
|
String get onboardingFeatureSignalSubtitle =>
|
|
'X3DH + Double Ratchet, forward secrecy';
|
|
|
|
@override
|
|
String get onboardingFeaturePqTitle => 'Post-kvantová ochrana';
|
|
|
|
@override
|
|
String get onboardingFeaturePqSubtitle => 'Kyber (PQXDH) od první zprávy';
|
|
|
|
@override
|
|
String get onboardingFeatureLocalKeysTitle => 'Klíče jen na tvém zařízení';
|
|
|
|
@override
|
|
String get onboardingFeatureLocalKeysSubtitle => 'Žádný server je nemá';
|
|
|
|
@override
|
|
String get onboardingFeatureDisappearingSubtitle => 'Automaticky se smaží';
|
|
|
|
@override
|
|
String get commonContinue => 'Pokračovat';
|
|
|
|
@override
|
|
String get onboardingIdentityTitle => 'Vytvoř svoji identitu';
|
|
|
|
@override
|
|
String get onboardingIdentitySubtitle =>
|
|
'Žádný email ani telefon. Jen jméno a kryptografické klíče.';
|
|
|
|
@override
|
|
String get onboardingDisplayNameLabel => 'Zobrazované jméno';
|
|
|
|
@override
|
|
String get onboardingDisplayNameHint => 'Např. Jan';
|
|
|
|
@override
|
|
String onboardingSeedPhraseWarning(int count) {
|
|
return 'Zapiš si těchto $count slov. Jsou jedinou zálohou tvých klíčů!';
|
|
}
|
|
|
|
@override
|
|
String get onboardingSeedSavedConfirm =>
|
|
'Potvrzuji, že jsem si frázi bezpečně uložil/a';
|
|
|
|
@override
|
|
String get onboardingGenerateKeys => 'Vygenerovat klíče';
|
|
|
|
@override
|
|
String get verifyMismatchTitle => 'Čísla NESOUHLASÍ';
|
|
|
|
@override
|
|
String verifyMatchBody(String contactName) {
|
|
return 'Klíče si odpovídají. $contactName je ověřený kontakt.';
|
|
}
|
|
|
|
@override
|
|
String get verifyMismatchBody =>
|
|
'Bezpečnostní čísla nesedí. Někdo může odposlouchávat spojení (MITM), nebo skenuješ kód jiného kontaktu. NEposílej citlivé zprávy a ověřte se znovu jiným kanálem.';
|
|
|
|
@override
|
|
String get commonUnderstood => 'Rozumím';
|
|
|
|
@override
|
|
String get verifyManualConfirmTitle => 'Označit jako ověřené?';
|
|
|
|
@override
|
|
String get verifyManualConfirmBody =>
|
|
'Potvrď jen v případě, že sis číslice porovnal/a s protistranou jiným důvěryhodným kanálem (osobně, hovorem…) a souhlasí.';
|
|
|
|
@override
|
|
String get verifyManualConfirmAction => 'Souhlasí, ověřit';
|
|
|
|
@override
|
|
String get verifyTitle => 'Ověření kontaktu';
|
|
|
|
@override
|
|
String get verifyContactVerifiedBanner => 'Kontakt je ověřený';
|
|
|
|
@override
|
|
String verifyIntro(String contactName) {
|
|
return 'Porovnej toto číslo s $contactName. Když souhlasí, vaše šifrování nikdo neodposlouchává. Nejrychlejší je vzájemně si naskenovat QR kódy.';
|
|
}
|
|
|
|
@override
|
|
String get verifyScanButton => 'Naskenovat kód protistrany';
|
|
|
|
@override
|
|
String get verifyManualButton => 'Číslice souhlasí — označit ručně';
|
|
|
|
@override
|
|
String get verifyUnverifyButton => 'Zrušit ověření';
|
|
|
|
@override
|
|
String get verifyScanScreenTitle => 'Naskenuj ověřovací QR';
|
|
|
|
@override
|
|
String get reportTitle => 'Nahlásit';
|
|
|
|
@override
|
|
String get reportSubmitted => 'Hlášení odesláno';
|
|
|
|
@override
|
|
String get reportSubmittedChildSafety =>
|
|
'Hlášení řešíme přednostně. Pokud je dítě v bezprostředním ohrožení, zavolej 158 nebo linku 116 111.';
|
|
|
|
@override
|
|
String get reportSubmittedThanks => 'Díky. Podíváme se na to co nejdřív.';
|
|
|
|
@override
|
|
String get commonDone => 'Hotovo';
|
|
|
|
@override
|
|
String get reportPanelE2eNotice =>
|
|
'Zprávy jsou end-to-end šifrované, takže jejich obsah nevidíme ani teď. Popiš prosím vlastními slovy, co se stalo. Nevkládej sem obsah zpráv ani odkazy na něj — nesmíme ho držet a k posouzení ho nepotřebujeme.';
|
|
|
|
@override
|
|
String get reportPanelCsamWarning =>
|
|
'Materiál zobrazující zneužívání dítěte nám NEPOSÍLEJ. Jeho držení je trestné i pro nás a pro nahlášení ho nepotřebujeme. Materiál patří přímo na STOPonline.cz nebo Policii ČR (158). Nám napiš jen to, co se stalo — zablokujeme účet a předáme věc dál.';
|
|
|
|
@override
|
|
String get reportPanelIpNotice =>
|
|
'Hlášení nejde přes relay, ale na náš webový server. Ten se při odeslání dozví tvou IP adresu.';
|
|
|
|
@override
|
|
String get reportCategoryHeading => 'Čeho se hlášení týká';
|
|
|
|
@override
|
|
String get reportDescriptionHeading => 'Co se stalo';
|
|
|
|
@override
|
|
String get reportAttachContactId => 'Přiložit ID nahlášeného kontaktu';
|
|
|
|
@override
|
|
String reportAttachContactIdNamed(String contactName) {
|
|
return 'Přiložit ID kontaktu $contactName';
|
|
}
|
|
|
|
@override
|
|
String get reportReplyToHeading => 'Kontakt na tebe (nepovinné)';
|
|
|
|
@override
|
|
String get reportReplyToHint => 'e-mail, kdybychom se potřebovali doptat';
|
|
|
|
@override
|
|
String get reportSubmitButton => 'Odeslat hlášení';
|
|
|
|
@override
|
|
String get contactsTitle => 'Kontakty';
|
|
|
|
@override
|
|
String get contactsAddContact => 'Přidat kontakt';
|
|
|
|
@override
|
|
String get contactsSearchHint => 'Hledat kontakt...';
|
|
|
|
@override
|
|
String get contactsEmpty => 'Zatím žádné kontakty';
|
|
|
|
@override
|
|
String get contactsNoResults => 'Žádné výsledky';
|
|
|
|
@override
|
|
String get contactsShareCardTitle => 'Sdílej svůj Šepot ID';
|
|
|
|
@override
|
|
String get contactsShareCardSubtitle => 'Ukaž QR kód nebo pošli odkaz';
|
|
|
|
@override
|
|
String get contactsAddDialogPrompt =>
|
|
'Vlož sdílený řetězec (share string) kontaktu:';
|
|
|
|
@override
|
|
String get contactsShareStringHint => 'Vložit share string...';
|
|
|
|
@override
|
|
String get contactsInvalidShareString => 'Neplatný share string';
|
|
|
|
@override
|
|
String contactsAdded(String name) {
|
|
return 'Kontakt $name přidán';
|
|
}
|
|
|
|
@override
|
|
String get verifyContactSubtitle => 'Porovnání bezpečnostního čísla';
|
|
|
|
@override
|
|
String get contactsDeleteContact => 'Smazat kontakt';
|
|
|
|
@override
|
|
String get pinConfirmTitle => 'Potvrď PIN';
|
|
|
|
@override
|
|
String get pinSetupTitle => 'Nastav si PIN';
|
|
|
|
@override
|
|
String get pinConfirmSubtitle => 'Zadej PIN znovu pro potvrzení';
|
|
|
|
@override
|
|
String get pinSetupSubtitle => '6-místný PIN pro odemknutí aplikace';
|
|
|
|
@override
|
|
String get pinSetupFailed => 'Nastavení PINu selhalo. Zkus to znovu.';
|
|
|
|
@override
|
|
String get pinMismatchRetry => 'PINy se neshodují. Zkus to znovu.';
|
|
|
|
@override
|
|
String get pinChangeCurrentTitle => 'Zadej současný PIN';
|
|
|
|
@override
|
|
String get pinChangeCurrentSubtitle => 'Ověříme ho odemčením klíče';
|
|
|
|
@override
|
|
String get pinChangeNewTitle => 'Zadej nový PIN';
|
|
|
|
@override
|
|
String get pinChangeNewSubtitle => '6 číslic';
|
|
|
|
@override
|
|
String get pinChangeConfirmTitle => 'Potvrď nový PIN';
|
|
|
|
@override
|
|
String get pinChangeConfirmSubtitle => 'Zadej ho ještě jednou';
|
|
|
|
@override
|
|
String get pinWrong => 'Špatný PIN.';
|
|
|
|
@override
|
|
String get pinChangeMustDiffer => 'Nový PIN se musí lišit od současného.';
|
|
|
|
@override
|
|
String get pinMismatch => 'PINy se neshodují.';
|
|
|
|
@override
|
|
String get pinDecoyConflict =>
|
|
'Tenhle PIN už patří nátlakovému režimu. Zvol jiný.';
|
|
|
|
@override
|
|
String get pinChangeFailed => 'Změna PINu selhala. Zkus to znovu.';
|
|
|
|
@override
|
|
String get pinChanged => 'PIN změněn';
|
|
|
|
@override
|
|
String get errorCryptoInitTitle => 'Šifrovací jádro se nespustilo';
|
|
|
|
@override
|
|
String get errorStartupTitle => 'Šepot se nespustil';
|
|
|
|
@override
|
|
String get errorScreenNotRenderedTitle => 'Tahle obrazovka se nevykreslila';
|
|
|
|
@override
|
|
String get errorStartupBody =>
|
|
'Něco se pokazilo hned při startu. Pošli mi prosím tenhle text (podrž prst a zkopíruj) — pomůže mi to najít chybu.';
|
|
|
|
@override
|
|
String get errorContactFooter => 'sepot.cz · napiš mi na kontakt';
|
|
|
|
@override
|
|
String get pinUnlockTitle => 'Odemkni Šepot';
|
|
|
|
@override
|
|
String get pinEnterPin => 'Zadej PIN';
|
|
|
|
@override
|
|
String get pinUnlockWithBiometrics => 'Odemknout biometrií';
|
|
|
|
@override
|
|
String get pinWrong2 => 'Špatný PIN';
|
|
|
|
@override
|
|
String get pinUnlockError => 'Chyba odemčení';
|
|
|
|
@override
|
|
String pinLockedFor(int seconds) {
|
|
return 'Příliš mnoho pokusů. Zkus to za $seconds s.';
|
|
}
|
|
|
|
@override
|
|
String get pushTitle => 'Push notifikace';
|
|
|
|
@override
|
|
String get pushModeOffDesc => 'Zprávy se stáhnou až po otevření appky.';
|
|
|
|
@override
|
|
String get pushModeUp => 'UnifiedPush (bez Googlu)';
|
|
|
|
@override
|
|
String get pushModeUpDesc =>
|
|
'Degooglované — potřebuje aplikaci ntfy (F-Droid/Play).';
|
|
|
|
@override
|
|
String get pushModeFcm => 'Google (FCM, výchozí)';
|
|
|
|
@override
|
|
String get pushModeFcmDesc =>
|
|
'Spolehlivé bez další aplikace. Push token zařízení jde Googlu; obsah zpráv nikdy.';
|
|
|
|
@override
|
|
String pushSetupFailed(String error) {
|
|
return 'Nastavení pushů selhalo: $error';
|
|
}
|
|
|
|
@override
|
|
String get pushHintOff =>
|
|
'Zprávy ti přijdou, až Šepot otevřeš — budíčky nejsou nastavené.';
|
|
|
|
@override
|
|
String get pushHintFailed =>
|
|
'Budíčky nefungují, zprávy uvidíš až po otevření Šepotu.';
|
|
|
|
@override
|
|
String get pushRegistrationFailed =>
|
|
'Budíčky nechodí — distributor registraci odmítl. Zkus push vypnout a znovu zapnout.';
|
|
|
|
@override
|
|
String get pushNoDistributorTitle => 'Žádný distributor';
|
|
|
|
@override
|
|
String get pushNoDistributorBody =>
|
|
'Pro degooglované notifikace nainstaluj UnifiedPush distributor, např. ntfy (F-Droid nebo Play). Pak push zapni znovu.';
|
|
|
|
@override
|
|
String get commonOk => 'OK';
|
|
|
|
@override
|
|
String get pushPickDistributorTitle => 'Vyber distributora';
|
|
|
|
@override
|
|
String pushSubtitleUnifiedPush(String distributor) {
|
|
return 'UnifiedPush · $distributor';
|
|
}
|
|
|
|
@override
|
|
String get pushNoDistributorFallback => 'bez distributora';
|
|
|
|
@override
|
|
String get pushSubtitleFcm => 'Google (FCM)';
|
|
|
|
@override
|
|
String get restoreErrorNameRequired => 'Zadej zobrazované jméno.';
|
|
|
|
@override
|
|
String restoreErrorWordCount(int wordCount, int requiredWords) {
|
|
String _temp0 = intl.Intl.pluralLogic(
|
|
wordCount,
|
|
locale: localeName,
|
|
other: 'Fráze má $wordCount slov, potřebuji $requiredWords.',
|
|
many: 'Fráze má $wordCount slova, potřebuji $requiredWords.',
|
|
few: 'Fráze má $wordCount slova, potřebuji $requiredWords.',
|
|
one: 'Fráze má 1 slovo, potřebuji $requiredWords.',
|
|
);
|
|
return '$_temp0';
|
|
}
|
|
|
|
@override
|
|
String get restoreErrorInvalidPhrase =>
|
|
'Fráze není platná — zkontroluj slova i jejich pořadí.';
|
|
|
|
@override
|
|
String restoreErrorFailed(String error) {
|
|
return 'Obnova selhala: $error';
|
|
}
|
|
|
|
@override
|
|
String get restoreTitle => 'Obnovit účet';
|
|
|
|
@override
|
|
String get restoreHeading => 'Zadej svoji zálohovací frázi';
|
|
|
|
@override
|
|
String restoreIntro(int wordCount) {
|
|
return '$wordCount slov, ze zálohy vytvořené při zakládání účtu. Obnoví tvoji identitu (stejný SEP kód, kontakty tě dál poznají).';
|
|
}
|
|
|
|
@override
|
|
String get restoreHistoryWarning =>
|
|
'Historie zpráv se neobnoví — je uložená jen na původním zařízení.';
|
|
|
|
@override
|
|
String get restorePhraseHint => 'slovo1 slovo2 slovo3 …';
|
|
|
|
@override
|
|
String restoreWordCountHelper(int wordCount, int requiredWords) {
|
|
return '$wordCount / $requiredWords slov';
|
|
}
|
|
|
|
@override
|
|
String chatListArchivedCount(int count) {
|
|
return 'Archivované ($count)';
|
|
}
|
|
|
|
@override
|
|
String get chatListEmptyTitle => 'Zatím žádné konverzace';
|
|
|
|
@override
|
|
String get chatListEmptySubtitle => 'Přidej kontakt a začni šeptat!';
|
|
|
|
@override
|
|
String get chatListUnmute => 'Zrušit ztlumení';
|
|
|
|
@override
|
|
String get chatListMute => 'Ztlumit';
|
|
|
|
@override
|
|
String get chatListArchive => 'Archivovat';
|
|
|
|
@override
|
|
String get qrShareTitle => 'Můj Šepot ID';
|
|
|
|
@override
|
|
String get qrShareConnectingTitle => 'Připojuji k relayi…';
|
|
|
|
@override
|
|
String get qrShareConnectingBody =>
|
|
'Až se Šepot poprvé připojí, objeví se tvůj QR kód a odkaz. Chvilku strpení — stačí pár sekund.';
|
|
|
|
@override
|
|
String get qrIdentityNotFound => 'Identita nebyla nalezena';
|
|
|
|
@override
|
|
String get commonCopiedToClipboard => 'Zkopírováno do schránky';
|
|
|
|
@override
|
|
String qrShareInviteMessage(String shareString) {
|
|
return 'Přidej mě na Šepotu!\n\n$shareString';
|
|
}
|
|
|
|
@override
|
|
String get commonShare => 'Sdílet';
|
|
|
|
@override
|
|
String get qrShareInfo =>
|
|
'Kontakt naskenuje tvůj QR kód nebo vloží sdílený řetězec do aplikace.';
|
|
|
|
@override
|
|
String get reportCategoryChildSafety => 'Ohrožení dítěte';
|
|
|
|
@override
|
|
String get reportCategoryChildSafetyHint =>
|
|
'Popiš situaci vlastními slovy. Nevkládej obsah zpráv ani odkazy na materiál.';
|
|
|
|
@override
|
|
String get reportCategoryHarassment => 'Obtěžování nebo výhrůžky';
|
|
|
|
@override
|
|
String get reportCategoryHarassmentHint =>
|
|
'Někdo tě zastrašuje, vyhrožuje nebo obtěžuje.';
|
|
|
|
@override
|
|
String get reportCategorySpam => 'Spam';
|
|
|
|
@override
|
|
String get reportCategorySpamHint =>
|
|
'Nevyžádané zprávy, hromadné rozesílání.';
|
|
|
|
@override
|
|
String get reportCategoryFraud => 'Podvod';
|
|
|
|
@override
|
|
String get reportCategoryFraudHint =>
|
|
'Pokus vylákat peníze, klíče nebo osobní údaje.';
|
|
|
|
@override
|
|
String get reportCategoryOther => 'Jiné';
|
|
|
|
@override
|
|
String get reportCategoryOtherHint => 'Něco jiného, co bychom měli vědět.';
|
|
|
|
@override
|
|
String get reportErrorEmptyDescription => 'Napiš prosím, co se stalo.';
|
|
|
|
@override
|
|
String reportErrorConnection(String supportEmail) {
|
|
return 'Nepodařilo se spojit se serverem. Zkus to znovu, nebo napiš na $supportEmail.';
|
|
}
|
|
|
|
@override
|
|
String reportErrorRateLimited(String supportEmail) {
|
|
return 'Z tvé sítě přišlo příliš mnoho hlášení. Zkus to za hodinu, nebo napiš na $supportEmail.';
|
|
}
|
|
|
|
@override
|
|
String reportErrorServer(int statusCode, String supportEmail) {
|
|
return 'Odeslání selhalo (kód $statusCode). Napiš prosím na $supportEmail.';
|
|
}
|
|
|
|
@override
|
|
String get settingsAutoLockNever => 'Nikdy';
|
|
|
|
@override
|
|
String get settingsAutoLock1min => 'Po 1 minutě';
|
|
|
|
@override
|
|
String get settingsAutoLock15min => 'Po 15 minutách';
|
|
|
|
@override
|
|
String torToggleFailed(String error) {
|
|
return 'Přepnutí Toru selhalo: $error';
|
|
}
|
|
|
|
@override
|
|
String get torConnectionTitle => 'Připojení přes Tor';
|
|
|
|
@override
|
|
String get torDialogBody =>
|
|
'Provoz na server půjde přes síť Tor (skryje tvou IP adresu). Vyžaduje nainstalovanou a spuštěnou aplikaci Orbot s aktivním SOCKS proxy na portu 9050.\n\nBez běžícího Orbotu se zprávy neodešlou ani nepřijmou. Spojení bývá pomalejší.';
|
|
|
|
@override
|
|
String get commonTurnOn => 'Zapnout';
|
|
|
|
@override
|
|
String get torSubtitleOff =>
|
|
'Přímé šifrované spojení (WSS). Zapni pro skrytí IP přes Tor.';
|
|
|
|
@override
|
|
String get torStatusConnected => 'Připojeno přes Tor (.onion).';
|
|
|
|
@override
|
|
String get torStatusConnecting => 'Připojuji přes Tor… (běží Orbot?)';
|
|
|
|
@override
|
|
String get torStatusWaiting => 'Přes Tor — čekám na Orbot (SOCKS 9050).';
|
|
|
|
@override
|
|
String get biometricsPinRequiredFirst =>
|
|
'Nejdřív nastav PIN — biometrie ho jen doplňuje.';
|
|
|
|
@override
|
|
String get biometricsStorageLocked =>
|
|
'Úložiště je zamčené — odemkni appku PINem.';
|
|
|
|
@override
|
|
String get biometricsNotAvailable => 'Zařízení nemá nastavenou biometrii.';
|
|
|
|
@override
|
|
String get biometricsEnrollPromptReason =>
|
|
'Potvrď zapnutí biometrického odemčení';
|
|
|
|
@override
|
|
String biometricsSetupFailed(String error) {
|
|
return 'Biometrii se nepodařilo nastavit: $error';
|
|
}
|
|
|
|
@override
|
|
String get biometricsTileTitle => 'Biometrie';
|
|
|
|
@override
|
|
String get biometricsTileSubtitle =>
|
|
'Odemknutí otiskem prstu / obličejem (PIN zůstává záloha)';
|
|
|
|
@override
|
|
String get backupErrorCorruptedFile => 'Poškozený soubor zálohy';
|
|
|
|
@override
|
|
String get backupErrorUnknownFormat => 'Nerozpoznaný formát zálohy';
|
|
|
|
@override
|
|
String get backupErrorWrongIdentity =>
|
|
'Zálohu nelze dešifrovat — patří k jiné identitě?';
|
|
|
|
@override
|
|
String attachmentSharedImageFilename(String ext) {
|
|
return 'sepot-obrazek.$ext';
|
|
}
|
|
|
|
@override
|
|
String get attachmentDecryptFailed => 'Přílohu se nepodařilo dešifrovat';
|
|
|
|
@override
|
|
String get pushActionOpen => 'Otevřít';
|
|
|
|
@override
|
|
String get pushChannelMessagesName => 'Zprávy';
|
|
|
|
@override
|
|
String get pushChannelMessagesDescription =>
|
|
'Upozornění na nové zprávy (bez obsahu)';
|
|
|
|
@override
|
|
String pushNewMessageFrom(String senderName) {
|
|
return 'Nová zpráva od $senderName';
|
|
}
|
|
|
|
@override
|
|
String get pushNewMessages => 'Máš nové zprávy';
|
|
|
|
@override
|
|
String get archiveTitle => 'Archivované';
|
|
|
|
@override
|
|
String get archiveEmpty => 'Žádné archivované konverzace';
|
|
|
|
@override
|
|
String get archiveUnarchive => 'Zrušit archivaci';
|
|
|
|
@override
|
|
String restoreErrorMnemonicWordCount(int count, int expected) {
|
|
return 'Fráze má $count slov, očekávám $expected';
|
|
}
|
|
|
|
@override
|
|
String restoreErrorInvalidMnemonic(String message) {
|
|
return 'Neplatná fráze: $message';
|
|
}
|
|
|
|
@override
|
|
String get contactsErrorAlreadyExists => 'Kontakt již existuje';
|
|
|
|
@override
|
|
String get commonAppTagline => 'Soukromý messenger';
|
|
|
|
@override
|
|
String get commonE2eBadgeCompact => 'E2E';
|
|
|
|
@override
|
|
String get commonE2eBadgeFull => 'End-to-end šifrováno';
|
|
|
|
@override
|
|
String get photoPreviewCaptionHint => 'Přidat popisek…';
|
|
|
|
@override
|
|
String get photoPreviewDraw => 'Kreslit';
|
|
|
|
@override
|
|
String get photoPreviewAddText => 'Přidat text';
|
|
|
|
@override
|
|
String get photoPreviewRotate => 'Otočit';
|
|
|
|
@override
|
|
String get photoPreviewUndo => 'Zpět';
|
|
|
|
@override
|
|
String get photoPreviewSend => 'Poslat';
|
|
|
|
@override
|
|
String get photoPreviewTextDialogTitle => 'Text na fotce';
|
|
|
|
@override
|
|
String get photoPreviewRemoveText => 'Odebrat';
|
|
|
|
@override
|
|
String get photoPreviewDecodeFailed => 'Fotku se nepodařilo načíst';
|
|
|
|
@override
|
|
String get chatActionInfo => 'Info o zprávě';
|
|
|
|
@override
|
|
String get messageInfoSent => 'Odesláno';
|
|
|
|
@override
|
|
String get messageInfoDelivered => 'Doručeno';
|
|
|
|
@override
|
|
String get messageInfoRead => 'Přečteno';
|
|
|
|
@override
|
|
String get messageInfoPending => 'zatím ne';
|
|
|
|
@override
|
|
String get messageInfoReadReceiptsOff =>
|
|
'Kdy si zprávu přečetli, uvidíš, jen když sám sdílíš potvrzení přečtení (Nastavení).';
|
|
|
|
@override
|
|
String chatStatusReadAt(String time) {
|
|
return 'Přečteno $time';
|
|
}
|
|
|
|
@override
|
|
String chatStatusDeliveredAt(String time) {
|
|
return 'Doručeno $time';
|
|
}
|
|
|
|
@override
|
|
String get groupsAddMembers => 'Přidat členy';
|
|
|
|
@override
|
|
String get groupsAddMembersAction => 'Přidat';
|
|
|
|
@override
|
|
String groupsAddMembersFailed(String error) {
|
|
return 'Přidání se nepovedlo: $error';
|
|
}
|
|
|
|
@override
|
|
String get groupsNoContactsToAdd =>
|
|
'Všechny tvoje kontakty už ve skupině jsou. Nového člověka nejdřív přidej do kontaktů přes QR kód.';
|
|
|
|
@override
|
|
String get navChats => 'Chaty';
|
|
|
|
@override
|
|
String get chatListNewChat => 'Nový chat';
|
|
|
|
@override
|
|
String get chatListSearchHint => 'Hledat v chatech a zprávách';
|
|
|
|
@override
|
|
String get chatFilterAll => 'Vše';
|
|
|
|
@override
|
|
String get chatFilterUnread => 'Nepřečtené';
|
|
|
|
@override
|
|
String get chatFilterGroups => 'Skupiny';
|
|
|
|
@override
|
|
String get chatFilterArchive => 'Archiv';
|
|
|
|
@override
|
|
String get chatListNoResults => 'Nic nenalezeno.';
|
|
|
|
@override
|
|
String get chatListFilterEmpty => 'Tady zatím nic není.';
|
|
|
|
@override
|
|
String get chatListPin => 'Připnout';
|
|
|
|
@override
|
|
String get chatListUnpin => 'Odepnout';
|
|
|
|
@override
|
|
String get chatOpenProfile => 'Zobrazit profil';
|
|
|
|
@override
|
|
String get groupsProfile => 'Profil skupiny';
|
|
|
|
@override
|
|
String get chatSearchHint => 'Hledat v konverzaci';
|
|
|
|
@override
|
|
String get chatSearchNoMatches => 'Nic';
|
|
|
|
@override
|
|
String chatSearchCounter(int current, int total) {
|
|
return '$current z $total';
|
|
}
|
|
|
|
@override
|
|
String get chatSearchOlder => 'Starší shoda';
|
|
|
|
@override
|
|
String get chatSearchNewer => 'Novější shoda';
|
|
|
|
@override
|
|
String chatUnreadDivider(int count) {
|
|
String _temp0 = intl.Intl.pluralLogic(
|
|
count,
|
|
locale: localeName,
|
|
other: '$count nových zpráv',
|
|
few: '$count nové zprávy',
|
|
one: '1 nová zpráva',
|
|
);
|
|
return '$_temp0';
|
|
}
|
|
|
|
@override
|
|
String get chatJumpToLatest => 'Na nejnovější zprávy';
|
|
|
|
@override
|
|
String get chatAttach => 'Přiložit';
|
|
|
|
@override
|
|
String get chatSend => 'Odeslat';
|
|
|
|
@override
|
|
String get chatRecordVoice => 'Nahrát hlasovou zprávu';
|
|
|
|
@override
|
|
String get profileSharedMedia => 'Sdílená média';
|
|
|
|
@override
|
|
String get profileMessage => 'Zpráva';
|
|
|
|
@override
|
|
String get profileSearch => 'Hledat';
|
|
|
|
@override
|
|
String get profileUnmute => 'Zvuk';
|
|
|
|
@override
|
|
String get profileDisappearing => 'Mizení';
|
|
|
|
@override
|
|
String get profileCommonGroups => 'Společné skupiny';
|
|
|
|
@override
|
|
String get profileSafetyNumber => 'Bezpečnostní číslo';
|
|
|
|
@override
|
|
String get profileSafetyNumberHint => 'Porovnejte osobně nebo QR kódem';
|
|
|
|
@override
|
|
String get profileVerifiedInPerson => 'Ověřeno osobně';
|
|
|
|
@override
|
|
String get profileVerifyNow => 'Ověřit kontakt';
|
|
|
|
@override
|
|
String get profileAdd => 'Přidat';
|
|
|
|
@override
|
|
String profileGroupSubtitle(String members, String date) {
|
|
return 'Skupina · $members · založena $date';
|
|
}
|
|
|
|
@override
|
|
String profileMembersOfMax(int count, int max) {
|
|
return '$count ze $max';
|
|
}
|
|
|
|
@override
|
|
String get chatTyping => 'píše…';
|
|
|
|
@override
|
|
String chatTypingNamed(String name) {
|
|
return '$name píše…';
|
|
}
|
|
|
|
@override
|
|
String get chatTypingSeveral => 'Několik lidí píše…';
|
|
|
|
@override
|
|
String get settingsTypingTitle => 'Ukazovat, že píšu';
|
|
|
|
@override
|
|
String get settingsTypingSubtitle =>
|
|
'Oboustranné — kdo nesdílí, nevidí (výchozí vypnuto)';
|
|
|
|
@override
|
|
String get pollAttach => 'Anketa';
|
|
|
|
@override
|
|
String get pollCreateTitle => 'Nová anketa';
|
|
|
|
@override
|
|
String get pollQuestion => 'Otázka';
|
|
|
|
@override
|
|
String pollOptionHint(int number) {
|
|
return 'Možnost $number';
|
|
}
|
|
|
|
@override
|
|
String get pollAddOption => 'Přidat možnost';
|
|
|
|
@override
|
|
String get pollRemoveOption => 'Odebrat možnost';
|
|
|
|
@override
|
|
String get pollAllowMultiple => 'Povolit víc odpovědí';
|
|
|
|
@override
|
|
String get pollSingle => 'Anketa';
|
|
|
|
@override
|
|
String get pollMulti => 'Anketa, více voleb';
|
|
|
|
@override
|
|
String pollVoters(int count) {
|
|
String _temp0 = intl.Intl.pluralLogic(
|
|
count,
|
|
locale: localeName,
|
|
other: '$count hlasů',
|
|
few: '$count hlasy',
|
|
one: '1 hlas',
|
|
zero: 'zatím bez hlasů',
|
|
);
|
|
return '$_temp0';
|
|
}
|
|
|
|
@override
|
|
String pollFallback(String question) {
|
|
return 'Anketa: $question';
|
|
}
|
|
|
|
@override
|
|
String get pollFallbackUpdate => 'Hlasovat jde v aktuální verzi Šepotu.';
|
|
|
|
@override
|
|
String get profilePhotoEdit => 'Změnit profilovou fotku';
|
|
|
|
@override
|
|
String get profilePhotoPick => 'Vybrat fotku';
|
|
|
|
@override
|
|
String get profilePhotoRemove => 'Odebrat fotku';
|
|
|
|
@override
|
|
String get profilePhotoHint =>
|
|
'Fotku uvidí jen lidé, se kterými si píšeš — šifrovaně, stejně jako zprávy. Poloha ani údaje o fotce se neposílají.';
|
|
|
|
@override
|
|
String profilePhotoFailed(String error) {
|
|
return 'Fotku se nepodařilo nastavit: $error';
|
|
}
|
|
|
|
@override
|
|
String get reauthTitle => 'Potvrď, že jsi to ty';
|
|
|
|
@override
|
|
String get reauthPinRequired =>
|
|
'Tahle akce potřebuje PIN. Nejdřív si ho nastav.';
|
|
|
|
@override
|
|
String get reauthSetPin => 'Nastavit PIN';
|
|
|
|
@override
|
|
String get reauthReasonSeed => 'Zobrazení 24 slov pro obnovu účtu';
|
|
|
|
@override
|
|
String get reauthReasonBackupExport => 'Export zálohy';
|
|
|
|
@override
|
|
String get reauthReasonBackupImport => 'Obnova ze zálohy';
|
|
|
|
@override
|
|
String get reauthReasonDecoyPin => 'Změna nátlakového PINu';
|
|
|
|
@override
|
|
String get reauthReasonAutoLock => 'Prodloužení automatického zámku';
|
|
|
|
@override
|
|
String get reauthReasonScreenSecurity => 'Vypnutí ochrany obrazovky';
|
|
|
|
@override
|
|
String get reauthReasonDeleteAccount => 'Smazání účtu a všech dat';
|
|
|
|
@override
|
|
String get reauthReasonBiometrics => 'Zapnutí biometrie';
|
|
|
|
@override
|
|
String contactRequestName(String name) {
|
|
return '$name (neznámý)';
|
|
}
|
|
|
|
@override
|
|
String get pushMessageRequest => 'Žádost o zprávu od neznámého odesílatele';
|
|
|
|
@override
|
|
String get requestTitle => 'Žádost o zprávu';
|
|
|
|
@override
|
|
String requestBody(String name) {
|
|
return '„$name“ není ve tvých kontaktech. Jméno i fotku si zvolil sám, takže nemusí jít o toho, za koho se vydává. Dokud ho nepřijmeš, neuvidí, že jsi zprávu četl, a nemůže ti volat.';
|
|
}
|
|
|
|
@override
|
|
String requestLookalikeWarning(String name) {
|
|
return 'Pozor: stejně se jmenuje tvůj kontakt $name. Tohle je jiný klíč, tedy jiný telefon nebo jiný člověk. Než odpovíš, ověř si to jinou cestou (zavolej, potkejte se).';
|
|
}
|
|
|
|
@override
|
|
String get requestAccept => 'Přijmout';
|
|
|
|
@override
|
|
String get requestAcceptTitle => 'Přijmout jako kontakt';
|
|
|
|
@override
|
|
String get requestAcceptBody =>
|
|
'Pojmenuj kontakt sám. Jméno, které si odesílatel zvolil, se nepřebírá automaticky.';
|
|
|
|
@override
|
|
String get requestAcceptNameLabel => 'Jméno kontaktu';
|
|
|
|
@override
|
|
String get requestNameEmpty => 'Zadej jméno.';
|
|
|
|
@override
|
|
String get requestNameTaken =>
|
|
'Tak (nebo skoro tak) se už jmenuje jiný kontakt. Zvol jméno, které je nezamění.';
|
|
|
|
@override
|
|
String noticeIdentityChanged(String name) {
|
|
return 'Bezpečnostní kód kontaktu $name se změnil. Pod jeho adresou se ozval jiný klíč: nový telefon, přeinstalace, nebo podvrh. Ověření je zrušené. Než pošleš něco citlivého, porovnejte kód znovu.';
|
|
}
|
|
|
|
@override
|
|
String noticeLookalikeRequest(String claimed, String name) {
|
|
return 'Neznámý odesílatel si dal jméno „$claimed“, které se plete s kontaktem $name. Tento kontakt to není, zpráva přišla z jiného klíče. Najdeš ji v chatech jako žádost o zprávu.';
|
|
}
|
|
|
|
@override
|
|
String get noticeVerifyAction => 'Ověřit kód';
|
|
|
|
@override
|
|
String get noticePreview => 'Bezpečnostní upozornění';
|
|
}
|