i18n: Add 247 missing translation keys across all 13 languages

Replace hardcoded English strings in 32 Dart source files with l10n
references. Covers settings labels, UI actions, map/SAR features,
device config, notifications, profiles, spectrum scan, and status
messages for sl, de, hr, pl, es, fr, it, el, ru, tr, uk, zh, pt.
This commit is contained in:
Janez T
2026-03-17 10:36:58 +01:00
parent bbd5d108cb
commit fa2b586ab7
70 changed files with 16366 additions and 742 deletions

View File

@@ -1638,5 +1638,252 @@
"contactFailedToClearRoute": "Pfad konnte nicht gelöscht werden: {error}",
"contactRouteCleared": "Pfad gelöscht",
"contactRouteSet": "Pfad gesetzt: {route}",
"contactFailedToSetRoute": "Pfad konnte nicht gesetzt werden: {error}"
"contactFailedToSetRoute": "Pfad konnte nicht gesetzt werden: {error}",
"rssi": "RSSI",
"snr": "SNR",
"ackTimeout": "ACK-Zeitüberschreitung",
"opcode": "Opcode",
"payload": "Nutzlast",
"hops": "Hops",
"hashSize": "Hash-Größe",
"pathBytes": "Pfad-Bytes",
"selectedPath": "Ausgewählter Pfad",
"estimatedTx": "Geschätzte Sendung",
"senderToReceipt": "Sender bis Empfang",
"receivedCopies": "Empfangene Kopien",
"retryCause": "Wiederholungsursache",
"retryMode": "Wiederholungsmodus",
"retryResult": "Wiederholungsergebnis",
"lastRetry": "Letzter Versuch",
"rxPackets": "RX-Pakete",
"mesh": "Mesh",
"rate": "Rate",
"window": "Fenster",
"posttxDelay": "Sendeverzögerung",
"bandpass": "Bandpass",
"bandpassFilterVoice": "Bandpassfilter Sprache",
"frequency": "Frequenz",
"australia": "Australien",
"australiaNarrow": "Australien (Schmal)",
"australiaQld": "Australien: QLD",
"australiaSaWa": "Australien: SA, WA",
"newZealand": "Neuseeland",
"newZealandNarrow": "Neuseeland (Schmal)",
"switzerland": "Schweiz",
"portugal433": "Portugal 433",
"portugal868": "Portugal 868",
"czechRepublicNarrow": "Tschechien (Schmal)",
"eu433mhzLongRange": "EU 433MHz (Langstrecke)",
"euukDeprecated": "EU/UK (Veraltet)",
"euukNarrow": "EU/UK (Schmal)",
"usacanadaRecommended": "USA/Kanada (Empfohlen)",
"vietnamDeprecated": "Vietnam (Veraltet)",
"vietnamNarrow": "Vietnam (Schmal)",
"active": "Aktiv",
"addContact": "Kontakt hinzufügen",
"all": "Alle",
"autoResolve": "Automatisch auflösen",
"clearAllLabel": "Alle löschen",
"clearRelays": "Relais löschen",
"clearFilters": "Filter löschen",
"clearRoute": "Route löschen",
"clearMessages": "Nachrichten löschen",
"clearScale": "Maßstab löschen",
"clearDiscoveries": "Entdeckungen löschen",
"clearOnlineTraceDatabase": "Online-Trace-Datenbank löschen",
"clearAllChannels": "Alle Kanäle löschen",
"clearAllContacts": "Alle Kontakte löschen",
"clearChannels": "Kanäle löschen",
"clearContacts": "Kontakte löschen",
"clearPathOnMaxRetry": "Pfad bei max. Wiederholung löschen",
"create": "Erstellen",
"custom": "Benutzerdefiniert",
"defaultValue": "Standard",
"duplicate": "Duplizieren",
"editName": "Name bearbeiten",
"open": "Öffnen",
"paste": "Einfügen",
"preview": "Vorschau",
"remove": "Entfernen",
"rename": "Umbenennen",
"resolveAll": "Alle auflösen",
"send": "Senden",
"sendAnyway": "Trotzdem senden",
"share": "Teilen",
"shareContact": "Kontakt teilen",
"trace": "Trace",
"use": "Verwenden",
"useSelectedFrequency": "Ausgewählte Frequenz verwenden",
"discovery": "Erkennung",
"discoverRepeaters": "Repeater entdecken",
"discoverSensors": "Sensoren entdecken",
"repeaterDiscoverySent": "Repeater-Erkennung gesendet",
"sensorDiscoverySent": "Sensor-Erkennung gesendet",
"clearedPendingDiscoveries": "Ausstehende Entdeckungen gelöscht.",
"autoDiscovery": "Automatische Erkennung",
"enableAutomaticAdding": "Automatisches Hinzufügen aktivieren",
"autoaddRepeaters": "Repeater automatisch hinzufügen",
"autoaddRoomServers": "Raumserver automatisch hinzufügen",
"autoaddSensors": "Sensoren automatisch hinzufügen",
"autoaddUsers": "Benutzer automatisch hinzufügen",
"overwriteOldestWhenFull": "Älteste bei vollem Speicher überschreiben",
"storage": "Speicher",
"dangerZone": "Gefahrenbereich",
"profiles": "Profile",
"favourites": "Favoriten",
"sensors": "Sensoren",
"others": "Andere",
"gpsModule": "GPS-Modul",
"liveTraffic": "Live-Verkehr",
"repeatersMap": "Repeater-Karte",
"spectrumScan": "Spektrum-Scan",
"blePacketLogs": "BLE-Paketprotokolle",
"onlineTraceDatabase": "Online-Trace-Datenbank",
"routePathByteSize": "Pfad-Bytegröße",
"messageNotifications": "Nachrichtenbenachrichtigungen",
"sarAlerts": "SAR-Alarme",
"discoveryNotifications": "Erkennungsbenachrichtigungen",
"updateNotifications": "Updatebenachrichtigungen",
"muteWhileAppIsOpen": "Stumm bei geöffneter App",
"disableContacts": "Kontakte deaktivieren",
"enableSensorsTab": "Sensoren-Tab aktivieren",
"enableProfiles": "Profile aktivieren",
"autoRouteRotation": "Automatische Routenrotation",
"nearestRepeaterFallback": "Nächster Repeater als Fallback",
"deleteAllStoredMessageHistory": "Gesamten Nachrichtenverlauf löschen",
"messageFontSize": "Nachrichtenschriftgröße",
"rotateMapWithHeading": "Karte mit Richtung drehen",
"showMapDebugInfo": "Karten-Debug-Info anzeigen",
"openMapInFullscreen": "Karte im Vollbild öffnen",
"showSarMarkersLabel": "SAR-Markierungen anzeigen",
"displaySarMarkersOnTheMainMap": "SAR-Markierungen auf der Hauptkarte anzeigen",
"showAllContactTrailsLabel": "Alle Kontaktpfade anzeigen",
"hideRepeatersOnMap": "Repeater auf Karte ausblenden",
"setMapScale": "Kartenmaßstab einstellen",
"customMapScaleSaved": "Benutzerdefinierter Kartenmaßstab gespeichert",
"voiceBitrate": "Sprach-Bitrate",
"voiceCompressor": "Sprachkompressor",
"balancesQuietAndLoudSpeechLevels": "Gleicht leise und laute Sprache aus",
"voiceLimiter": "Sprach-Limiter",
"preventsClippingPeaksBeforeEncoding": "Verhindert Clipping-Spitzen vor der Kodierung",
"micAutoGain": "Mikrofon-Automatik",
"letsTheRecorderAdjustInputLevel": "Lässt den Rekorder den Eingangspegel anpassen",
"echoCancellation": "Echounterdrückung",
"noiseSuppression": "Rauschunterdrückung",
"trimSilenceInVoiceMessages": "Stille in Sprachnachrichten trimmen",
"compressor": "Kompressor",
"limiter": "Limiter",
"autoGain": "Automatische Verstärkung",
"echoCancel": "Echo",
"noiseSuppress": "Rauschen",
"silenceTrim": "Stille",
"maxImageSize": "Maximale Bildgröße",
"imageCompression": "Bildkomprimierung",
"grayscale": "Graustufen",
"ultraMode": "Ultra-Modus",
"fastPrivateGpsUpdates": "Schnelle private GPS-Updates",
"movementThreshold": "Bewegungsschwelle",
"fastGpsMovementThreshold": "Schneller GPS-Bewegungsschwellenwert",
"fastGpsActiveuseInterval": "Schnelles GPS aktive Nutzung Intervall",
"activeuseUpdateInterval": "Aktive Nutzung Updateintervall",
"repeatNearbyTraffic": "Nahverkehr wiederholen",
"relayThroughRepeatersAcrossTheMesh": "Über Repeater im Mesh weiterleiten",
"nearbyOnlyWithoutRepeaterFlooding": "Nur in der Nähe, ohne Repeater-Flooding",
"multihop": "Multi-Hop",
"createProfile": "Profil erstellen",
"renameProfile": "Profil umbenennen",
"newProfile": "Neues Profil",
"manageProfiles": "Profile verwalten",
"enableProfilesToStartManagingThem": "Aktivieren Sie Profile, um sie zu verwalten.",
"openMessage": "Nachricht öffnen",
"jumpToTheRelatedSarMessage": "Zur zugehörigen SAR-Nachricht springen",
"removeSarMarker": "SAR-Markierung entfernen",
"pleaseSelectADestinationToSendSarMarker": "Bitte wählen Sie ein Ziel zum Senden der SAR-Markierung",
"sarMarkerBroadcastToPublicChannel": "SAR-Markierung an öffentlichen Kanal gesendet",
"sarMarkerSentToRoom": "SAR-Markierung an Raum gesendet",
"loadFromGallery": "Aus Galerie laden",
"replaceImage": "Bild ersetzen",
"selectFromGallery": "Aus Galerie auswählen",
"team": "Team",
"found": "Gefunden",
"staging": "Sammelpunkt",
"object": "Objekt",
"quiet": "Ruhig",
"moderate": "Mäßig",
"busy": "Beschäftigt",
"spectrumScanReturnedNoCandidateFrequencies": "Spektrum-Scan hat keine Kandidatenfrequenzen gefunden",
"searchMessages": "Nachrichten suchen",
"sendImageFromGallery": "Bild aus Galerie senden",
"takePhoto": "Foto aufnehmen",
"dmOnly": "Nur Direktnachricht",
"allMessages": "Alle Nachrichten",
"sendToPublicChannel": "An öffentlichen Kanal senden?",
"selectMarkerTypeAndDestination": "Markierungstyp und Ziel auswählen",
"noDestinationsAvailableLabel": "Keine Ziele verfügbar",
"image": "Bild",
"format": "Format",
"dimensions": "Abmessungen",
"segments": "Segmente",
"transfers": "Übertragungen",
"downloadedBy": "Heruntergeladen von",
"saveDiscoverySettings": "Erkennungseinstellungen speichern",
"savePublicInfo": "Öffentliche Info speichern",
"saveRadioSettings": "Funkeinstellungen speichern",
"savePath": "Pfad speichern",
"wipeDeviceData": "Gerätedaten löschen",
"wipeDevice": "Gerät löschen",
"destructiveDeviceActions": "Destruktive Geräteaktionen.",
"chooseAPresetOrFinetuneCustomRadioSettings": "Wählen Sie eine Voreinstellung oder passen Sie die Funkeinstellungen an.",
"chooseTheNameAndLocationThisDeviceShares": "Wählen Sie den Namen und Standort, den dieses Gerät teilt.",
"availableSpaceOnThisDevice": "Verfügbarer Speicherplatz auf diesem Gerät.",
"used": "Belegt",
"total": "Gesamt",
"renameValue": "Wert umbenennen",
"customizeFields": "Felder anpassen",
"livePreview": "Live-Vorschau",
"refreshSchedule": "Aktualisierungsplan",
"noResponse": "Keine Antwort",
"refreshing": "Wird aktualisiert",
"unavailable": "Nicht verfügbar",
"pickARelayOrNodeToWatchInSensors": "Wählen Sie einen Relay oder Knoten zur Beobachtung.",
"publicKeyLabel": "Öffentlicher Schlüssel",
"alreadyInContacts": "Bereits in Kontakten",
"connectToADeviceBeforeAddingContacts": "Verbinden Sie sich mit einem Gerät, bevor Sie Kontakte hinzufügen",
"fromContacts": "Aus Kontakten",
"onlineOnly": "Nur online",
"inBoth": "In beiden",
"source": "Quelle",
"manualRouteEdit": "Manuelle Routenbearbeitung",
"observedMeshRoute": "Beobachtete Mesh-Route",
"allMessagesCleared": "Alle Nachrichten gelöscht",
"onlineTraceDatabaseCleared": "Online-Trace-Datenbank gelöscht",
"packetLogsCleared": "Paketprotokolle gelöscht",
"hexDataCopiedToClipboard": "Hex-Daten in die Zwischenablage kopiert",
"developerModeEnabled": "Entwicklermodus aktiviert",
"developerModeDisabled": "Entwicklermodus deaktiviert",
"clipboardIsEmpty": "Zwischenablage ist leer",
"contactImported": "Kontakt importiert",
"contactLinkCopiedToClipboard": "Kontaktlink in Zwischenablage kopiert",
"failedToExportContact": "Kontaktexport fehlgeschlagen",
"noLogsToExport": "Keine Protokolle zum Exportieren",
"exportAsCsv": "Als CSV exportieren",
"exportAsText": "Als Text exportieren",
"receivedRfc3339": "Empfangen (RFC3339)",
"buildTime": "Build-Zeit",
"downloadUrlNotAvailable": "Download-URL nicht verfügbar",
"cannotOpenDownloadUrl": "Download-URL kann nicht geöffnet werden",
"updateCheckIsOnlyAvailableOnAndroid": "Update-Prüfung nur auf Android verfügbar",
"youAreRunningTheLatestVersion": "Sie verwenden die neueste Version",
"updateAvailableButDownloadUrlNotFound": "Update verfügbar, aber Download-URL nicht gefunden",
"startTictactoe": "Tic-Tac-Toe starten",
"tictactoeUnavailable": "Tic-Tac-Toe nicht verfügbar",
"tictactoeOpponentUnknown": "Tic-Tac-Toe: Gegner unbekannt",
"tictactoeWaitingForStart": "Tic-Tac-Toe: Warten auf Start",
"acceptsShareLinks": "Akzeptiert freigegebene Links",
"supportsRawHex": "Unterstützt rohes Hex",
"clipboardfriendly": "Zwischenablage-freundlich",
"captured": "Erfasst",
"size": "Größe",
"noCustomChannelsToClear": "Keine benutzerdefinierten Kanäle zum Löschen.",
"noDeviceContactsToClear": "Keine Gerätekontakte zum Löschen."
}

View File

@@ -2303,5 +2303,252 @@
"contactFailedToClearRoute": "Αποτυχία εκκαθάρισης διαδρομής: {error}",
"contactRouteCleared": "Η διαδρομή εκκαθαρίστηκε",
"contactRouteSet": "Ορίστηκε διαδρομή: {route}",
"contactFailedToSetRoute": "Αποτυχία ορισμού διαδρομής: {error}"
"contactFailedToSetRoute": "Αποτυχία ορισμού διαδρομής: {error}",
"rssi": "RSSI",
"snr": "SNR",
"ackTimeout": "Λήξη χρόνου ACK",
"opcode": "Opcode",
"payload": "Ωφέλιμο φορτίο",
"hops": "Αναπηδήσεις",
"hashSize": "Μέγεθος hash",
"pathBytes": "Bytes διαδρομής",
"selectedPath": "Επιλεγμένη διαδρομή",
"estimatedTx": "Εκτιμώμενη εκπομπή",
"senderToReceipt": "Αποστολέας σε απόδειξη",
"receivedCopies": "Ληφθέντα αντίγραφα",
"retryCause": "Αιτία επανάληψης",
"retryMode": "Λειτουργία επανάληψης",
"retryResult": "Αποτέλεσμα επανάληψης",
"lastRetry": "Τελευταία επανάληψη",
"rxPackets": "Πακέτα RX",
"mesh": "Mesh",
"rate": "Ρυθμός",
"window": "Παράθυρο",
"posttxDelay": "Καθυστέρηση μετά-tx",
"bandpass": "Ζωνοπερατό",
"bandpassFilterVoice": "Ζωνοπερατό φίλτρο φωνής",
"frequency": "Συχνότητα",
"australia": "Αυστραλία",
"australiaNarrow": "Αυστραλία (Στενό)",
"australiaQld": "Αυστραλία: QLD",
"australiaSaWa": "Αυστραλία: SA, WA",
"newZealand": "Νέα Ζηλανδία",
"newZealandNarrow": "Νέα Ζηλανδία (Στενό)",
"switzerland": "Ελβετία",
"portugal433": "Πορτογαλία 433",
"portugal868": "Πορτογαλία 868",
"czechRepublicNarrow": "Τσεχία (Στενό)",
"eu433mhzLongRange": "ΕΕ 433MHz (Μεγάλη Εμβέλεια)",
"euukDeprecated": "ΕΕ/ΗΒ (Παρωχημένο)",
"euukNarrow": "ΕΕ/ΗΒ (Στενό)",
"usacanadaRecommended": "ΗΠΑ/Καναδάς (Προτεινόμενο)",
"vietnamDeprecated": "Βιετνάμ (Παρωχημένο)",
"vietnamNarrow": "Βιετνάμ (Στενό)",
"active": "Ενεργό",
"addContact": "Προσθήκη επαφής",
"all": "Όλα",
"autoResolve": "Αυτόματη επίλυση",
"clearAllLabel": "Εκκαθάριση όλων",
"clearRelays": "Εκκαθάριση αναμεταδοτών",
"clearFilters": "Εκκαθάριση φίλτρων",
"clearRoute": "Εκκαθάριση διαδρομής",
"clearMessages": "Εκκαθάριση μηνυμάτων",
"clearScale": "Εκκαθάριση κλίμακας",
"clearDiscoveries": "Εκκαθάριση ανακαλύψεων",
"clearOnlineTraceDatabase": "Εκκαθάριση βάσης ιχνών",
"clearAllChannels": "Εκκαθάριση όλων των καναλιών",
"clearAllContacts": "Εκκαθάριση όλων των επαφών",
"clearChannels": "Εκκαθάριση καναλιών",
"clearContacts": "Εκκαθάριση επαφών",
"clearPathOnMaxRetry": "Εκκαθάριση μονοπατιού στο μέγιστο",
"create": "Δημιουργία",
"custom": "Προσαρμοσμένο",
"defaultValue": "Προεπιλογή",
"duplicate": "Αντιγραφή",
"editName": "Επεξεργασία ονόματος",
"open": "Άνοιγμα",
"paste": "Επικόλληση",
"preview": "Προεπισκόπηση",
"remove": "Αφαίρεση",
"rename": "Μετονομασία",
"resolveAll": "Επίλυση όλων",
"send": "Αποστολή",
"sendAnyway": "Αποστολή ούτως ή άλλως",
"share": "Κοινοποίηση",
"shareContact": "Κοινοποίηση επαφής",
"trace": "Ίχνος",
"use": "Χρήση",
"useSelectedFrequency": "Χρήση επιλεγμένης συχνότητας",
"discovery": "Ανακάλυψη",
"discoverRepeaters": "Ανακάλυψη αναμεταδοτών",
"discoverSensors": "Ανακάλυψη αισθητήρων",
"repeaterDiscoverySent": "Αποστολή ανακάλυψης αναμεταδοτών",
"sensorDiscoverySent": "Αποστολή ανακάλυψης αισθητήρων",
"clearedPendingDiscoveries": "Εκκαθάριση εκκρεμών ανακαλύψεων.",
"autoDiscovery": "Αυτόματη ανακάλυψη",
"enableAutomaticAdding": "Ενεργοποίηση αυτόματης προσθήκης",
"autoaddRepeaters": "Αυτόματη προσθήκη αναμεταδοτών",
"autoaddRoomServers": "Αυτόματη προσθήκη διακομιστών δωματίου",
"autoaddSensors": "Αυτόματη προσθήκη αισθητήρων",
"autoaddUsers": "Αυτόματη προσθήκη χρηστών",
"overwriteOldestWhenFull": "Αντικατάσταση παλαιότερων όταν γεμίσει",
"storage": "Αποθήκευση",
"dangerZone": "Ζώνη κινδύνου",
"profiles": "Προφίλ",
"favourites": "Αγαπημένα",
"sensors": "Αισθητήρες",
"others": "Άλλοι",
"gpsModule": "Μονάδα GPS",
"liveTraffic": "Ζωντανή κίνηση",
"repeatersMap": "Χάρτης αναμεταδοτών",
"spectrumScan": "Σάρωση φάσματος",
"blePacketLogs": "Αρχεία πακέτων BLE",
"onlineTraceDatabase": "Βάση δεδομένων ιχνών",
"routePathByteSize": "Μέγεθος διαδρομής σε bytes",
"messageNotifications": "Ειδοποιήσεις μηνυμάτων",
"sarAlerts": "Ειδοποιήσεις SAR",
"discoveryNotifications": "Ειδοποιήσεις ανακάλυψης",
"updateNotifications": "Ειδοποιήσεις ενημερώσεων",
"muteWhileAppIsOpen": "Σίγαση με ανοιχτή εφαρμογή",
"disableContacts": "Απενεργοποίηση επαφών",
"enableSensorsTab": "Ενεργοποίηση καρτέλας Αισθητήρων",
"enableProfiles": "Ενεργοποίηση προφίλ",
"autoRouteRotation": "Αυτόματη εναλλαγή διαδρομής",
"nearestRepeaterFallback": "Πλησιέστερος αναμεταδότης ως εφεδρεία",
"deleteAllStoredMessageHistory": "Διαγραφή όλου του ιστορικού",
"messageFontSize": "Μέγεθος γραμματοσειράς μηνυμάτων",
"rotateMapWithHeading": "Περιστροφή χάρτη με κατεύθυνση",
"showMapDebugInfo": "Εμφάνιση πληροφοριών αποσφαλμάτωσης",
"openMapInFullscreen": "Άνοιγμα χάρτη σε πλήρη οθόνη",
"showSarMarkersLabel": "Εμφάνιση δεικτών SAR",
"displaySarMarkersOnTheMainMap": "Εμφάνιση δεικτών SAR στον κύριο χάρτη",
"showAllContactTrailsLabel": "Εμφάνιση όλων των ιχνών επαφών",
"hideRepeatersOnMap": "Απόκρυψη αναμεταδοτών στον χάρτη",
"setMapScale": "Ρύθμιση κλίμακας χάρτη",
"customMapScaleSaved": "Προσαρμοσμένη κλίμακα χάρτη αποθηκεύτηκε",
"voiceBitrate": "Ρυθμός bit φωνής",
"voiceCompressor": "Συμπιεστής φωνής",
"balancesQuietAndLoudSpeechLevels": "Εξισορρόπηση χαμηλών και δυνατών επιπέδων",
"voiceLimiter": "Περιοριστής φωνής",
"preventsClippingPeaksBeforeEncoding": "Αποτρέπει κοπή κορυφών πριν την κωδικοποίηση",
"micAutoGain": "Αυτόματη ενίσχυση μικροφώνου",
"letsTheRecorderAdjustInputLevel": "Αφήνει τη συσκευή να ρυθμίσει την ένταση",
"echoCancellation": "Ακύρωση ηχούς",
"noiseSuppression": "Καταστολή θορύβου",
"trimSilenceInVoiceMessages": "Περικοπή σιωπής σε φωνητικά μηνύματα",
"compressor": "Συμπιεστής",
"limiter": "Περιοριστής",
"autoGain": "Αυτόματη ενίσχυση",
"echoCancel": "Ηχώ",
"noiseSuppress": "Θόρυβος",
"silenceTrim": "Σιωπή",
"maxImageSize": "Μέγιστο μέγεθος εικόνας",
"imageCompression": "Συμπίεση εικόνας",
"grayscale": "Κλίμακα του γκρι",
"ultraMode": "Λειτουργία ultra",
"fastPrivateGpsUpdates": "Γρήγορες ιδιωτικές ενημερώσεις GPS",
"movementThreshold": "Κατώφλι κίνησης",
"fastGpsMovementThreshold": "Κατώφλι κίνησης γρήγορου GPS",
"fastGpsActiveuseInterval": "Διάστημα ενεργής χρήσης γρήγορου GPS",
"activeuseUpdateInterval": "Διάστημα ενημέρωσης ενεργής χρήσης",
"repeatNearbyTraffic": "Επανάληψη κοντινής κίνησης",
"relayThroughRepeatersAcrossTheMesh": "Αναμετάδοση μέσω αναμεταδοτών στο δίκτυο",
"nearbyOnlyWithoutRepeaterFlooding": "Μόνο κοντά, χωρίς πλημμυρισμό",
"multihop": "Πολλαπλών αναπηδήσεων",
"createProfile": "Δημιουργία προφίλ",
"renameProfile": "Μετονομασία προφίλ",
"newProfile": "Νέο προφίλ",
"manageProfiles": "Διαχείριση προφίλ",
"enableProfilesToStartManagingThem": "Ενεργοποιήστε τα προφίλ για να τα διαχειριστείτε.",
"openMessage": "Άνοιγμα μηνύματος",
"jumpToTheRelatedSarMessage": "Μετάβαση στο σχετικό μήνυμα SAR",
"removeSarMarker": "Αφαίρεση δείκτη SAR",
"pleaseSelectADestinationToSendSarMarker": "Επιλέξτε προορισμό για αποστολή δείκτη SAR",
"sarMarkerBroadcastToPublicChannel": "Δείκτης SAR εκπεμπόμενος στο δημόσιο κανάλι",
"sarMarkerSentToRoom": "Δείκτης SAR εστάλη στο δωμάτιο",
"loadFromGallery": "Φόρτωση από τη γκαλερί",
"replaceImage": "Αντικατάσταση εικόνας",
"selectFromGallery": "Επιλογή από τη γκαλερί",
"team": "Ομάδα",
"found": "Βρέθηκε",
"staging": "Χώρος συγκέντρωσης",
"object": "Αντικείμενο",
"quiet": "Ήσυχο",
"moderate": "Μέτριο",
"busy": "Απασχολημένο",
"spectrumScanReturnedNoCandidateFrequencies": "Η σάρωση φάσματος δεν βρήκε υποψήφιες συχνότητες",
"searchMessages": "Αναζήτηση μηνυμάτων",
"sendImageFromGallery": "Αποστολή εικόνας από τη γκαλερί",
"takePhoto": "Λήψη φωτογραφίας",
"dmOnly": "Μόνο απευθείας",
"allMessages": "Όλα τα μηνύματα",
"sendToPublicChannel": "Αποστολή στο δημόσιο κανάλι;",
"selectMarkerTypeAndDestination": "Επιλέξτε τύπο δείκτη και προορισμό",
"noDestinationsAvailableLabel": "Δεν υπάρχουν διαθέσιμοι προορισμοί",
"image": "Εικόνα",
"format": "Μορφή",
"dimensions": "Διαστάσεις",
"segments": "Τμήματα",
"transfers": "Μεταφορές",
"downloadedBy": "Λήφθηκε από",
"saveDiscoverySettings": "Αποθήκευση ρυθμίσεων ανακάλυψης",
"savePublicInfo": "Αποθήκευση δημόσιων πληροφοριών",
"saveRadioSettings": "Αποθήκευση ρυθμίσεων ραδιοφώνου",
"savePath": "Αποθήκευση διαδρομής",
"wipeDeviceData": "Διαγραφή δεδομένων συσκευής",
"wipeDevice": "Διαγραφή συσκευής",
"destructiveDeviceActions": "Καταστροφικές ενέργειες συσκευής.",
"chooseAPresetOrFinetuneCustomRadioSettings": "Επιλέξτε μια προεπιλογή ή ρυθμίστε τις ρυθμίσεις ραδιοφώνου.",
"chooseTheNameAndLocationThisDeviceShares": "Επιλέξτε το όνομα και την τοποθεσία που μοιράζεται αυτή η συσκευή.",
"availableSpaceOnThisDevice": "Διαθέσιμος χώρος σε αυτή τη συσκευή.",
"used": "Χρησιμοποιήθηκε",
"total": "Σύνολο",
"renameValue": "Μετονομασία τιμής",
"customizeFields": "Προσαρμογή πεδίων",
"livePreview": "Ζωντανή προεπισκόπηση",
"refreshSchedule": "Χρονοδιάγραμμα ανανέωσης",
"noResponse": "Χωρίς απάντηση",
"refreshing": "Ανανέωση",
"unavailable": "Μη διαθέσιμο",
"pickARelayOrNodeToWatchInSensors": "Επιλέξτε ένα relay ή κόμβο για παρακολούθηση.",
"publicKeyLabel": "Δημόσιο κλειδί",
"alreadyInContacts": "Ήδη στις επαφές",
"connectToADeviceBeforeAddingContacts": "Συνδεθείτε σε μια συσκευή πριν προσθέσετε επαφές",
"fromContacts": "Από τις επαφές",
"onlineOnly": "Μόνο συνδεδεμένοι",
"inBoth": "Σε αμφότερα",
"source": "Πηγή",
"manualRouteEdit": "Χειροκίνητη επεξεργασία διαδρομής",
"observedMeshRoute": "Παρατηρούμενη διαδρομή δικτύου",
"allMessagesCleared": "Όλα τα μηνύματα διαγράφηκαν",
"onlineTraceDatabaseCleared": "Βάση δεδομένων ιχνών εκκαθαρίστηκε",
"packetLogsCleared": "Τα αρχεία πακέτων εκκαθαρίστηκαν",
"hexDataCopiedToClipboard": "Τα δεδομένα hex αντιγράφηκαν",
"developerModeEnabled": "Λειτουργία προγραμματιστή ενεργοποιήθηκε",
"developerModeDisabled": "Λειτουργία προγραμματιστή απενεργοποιήθηκε",
"clipboardIsEmpty": "Το πρόχειρο είναι κενό",
"contactImported": "Επαφή εισήχθη",
"contactLinkCopiedToClipboard": "Ο σύνδεσμος επαφής αντιγράφηκε",
"failedToExportContact": "Αποτυχία εξαγωγής επαφής",
"noLogsToExport": "Δεν υπάρχουν αρχεία για εξαγωγή",
"exportAsCsv": "Εξαγωγή ως CSV",
"exportAsText": "Εξαγωγή ως κείμενο",
"receivedRfc3339": "Ελήφθη (RFC3339)",
"buildTime": "Ώρα κατασκευής",
"downloadUrlNotAvailable": "Η URL λήψης δεν είναι διαθέσιμη",
"cannotOpenDownloadUrl": "Αδυναμία ανοίγματος URL λήψης",
"updateCheckIsOnlyAvailableOnAndroid": "Ο έλεγχος ενημερώσεων είναι διαθέσιμος μόνο σε Android",
"youAreRunningTheLatestVersion": "Χρησιμοποιείτε την πιο πρόσφατη έκδοση",
"updateAvailableButDownloadUrlNotFound": "Διαθέσιμη ενημέρωση αλλά η URL λήψης δεν βρέθηκε",
"startTictactoe": "Εκκίνηση Tic-Tac-Toe",
"tictactoeUnavailable": "Tic-Tac-Toe μη διαθέσιμο",
"tictactoeOpponentUnknown": "Tic-Tac-Toe: άγνωστος αντίπαλος",
"tictactoeWaitingForStart": "Tic-Tac-Toe: αναμονή για εκκίνηση",
"acceptsShareLinks": "Αποδέχεται κοινόχρηστους συνδέσμους",
"supportsRawHex": "Υποστηρίζει ακατέργαστο hex",
"clipboardfriendly": "Φιλικό προς πρόχειρο",
"captured": "Καταγράφηκε",
"size": "Μέγεθος",
"noCustomChannelsToClear": "Δεν υπάρχουν προσαρμοσμένα κανάλια.",
"noDeviceContactsToClear": "Δεν υπάρχουν επαφές συσκευής."
}

View File

@@ -2228,80 +2228,55 @@
"description": "Message when there are no chat contacts to send to"
},
"reply": "Reply",
"@reply": {
},
"@reply": {},
"technicalDetails": "Technical details",
"@technicalDetails": {
},
"@technicalDetails": {},
"messageTechnicalDetails": "Message technical details",
"@messageTechnicalDetails": {
},
"@messageTechnicalDetails": {},
"linkQuality": "Link quality",
"@linkQuality": {
},
"@linkQuality": {},
"delivery": "Delivery",
"@delivery": {
},
"@delivery": {},
"status": "Status",
"@status": {
},
"@status": {},
"expectedAckTag": "Expected ACK tag",
"@expectedAckTag": {
},
"@expectedAckTag": {},
"roundTrip": "Round-trip",
"@roundTrip": {
},
"@roundTrip": {},
"retryAttempt": "Retry attempt",
"@retryAttempt": {
},
"@retryAttempt": {},
"floodFallback": "Flood fallback",
"@floodFallback": {
},
"@floodFallback": {},
"identity": "Identity",
"@identity": {
},
"@identity": {},
"messageId": "Message ID",
"@messageId": {
},
"@messageId": {},
"sender": "Sender",
"@sender": {
},
"@sender": {},
"senderKey": "Sender key",
"@senderKey": {
},
"@senderKey": {},
"recipient": "Recipient",
"@recipient": {
},
"@recipient": {},
"recipientKey": "Recipient key",
"@recipientKey": {
},
"@recipientKey": {},
"voice": "Voice",
"@voice": {
},
"@voice": {},
"voiceId": "Voice ID",
"@voiceId": {
},
"@voiceId": {},
"envelope": "Envelope",
"@envelope": {
},
"@envelope": {},
"sessionProgress": "Session progress",
"@sessionProgress": {
},
"@sessionProgress": {},
"complete": "Complete",
"@complete": {
},
"@complete": {},
"rawDump": "Raw dump",
"@rawDump": {
},
"@rawDump": {},
"cannotRetryMissingRecipient": "Cannot retry: recipient information missing",
"@cannotRetryMissingRecipient": {
},
"@cannotRetryMissingRecipient": {},
"voiceUnavailable": "Voice unavailable right now",
"@voiceUnavailable": {
},
"@voiceUnavailable": {},
"requestingVoice": "Requesting voice",
"@requestingVoice": {
},
"@requestingVoice": {},
"device": "device",
"@device": {
"description": "Generic device label"
@@ -2542,5 +2517,258 @@
"type": "String"
}
}
}
},
"rssi": "RSSI",
"@rssi": {
"description": "Received signal strength indicator"
},
"snr": "SNR",
"@snr": {
"description": "Signal-to-noise ratio"
},
"ackTimeout": "ACK timeout",
"opcode": "Opcode",
"payload": "Payload",
"hops": "Hops",
"hashSize": "Hash size",
"pathBytes": "Path bytes",
"selectedPath": "Selected path",
"estimatedTx": "Estimated tx",
"senderToReceipt": "Sender to receipt",
"receivedCopies": "Received copies",
"retryCause": "Retry cause",
"retryMode": "Retry mode",
"retryResult": "Retry result",
"lastRetry": "Last retry",
"rxPackets": "RX packets",
"mesh": "Mesh",
"rate": "Rate",
"window": "Window",
"posttxDelay": "Post-tx delay",
"bandpass": "Band-pass",
"bandpassFilterVoice": "Band-pass filter voice",
"frequency": "Frequency",
"australia": "Australia",
"australiaNarrow": "Australia (Narrow)",
"australiaQld": "Australia: QLD",
"australiaSaWa": "Australia: SA, WA",
"newZealand": "New Zealand",
"newZealandNarrow": "New Zealand (Narrow)",
"switzerland": "Switzerland",
"portugal433": "Portugal 433",
"portugal868": "Portugal 868",
"czechRepublicNarrow": "Czech Republic (Narrow)",
"eu433mhzLongRange": "EU 433MHz (Long Range)",
"euukDeprecated": "EU/UK (Deprecated)",
"euukNarrow": "EU/UK (Narrow)",
"usacanadaRecommended": "USA/Canada (Recommended)",
"vietnamDeprecated": "Vietnam (Deprecated)",
"vietnamNarrow": "Vietnam (Narrow)",
"active": "Active",
"addContact": "Add Contact",
"all": "All",
"autoResolve": "Auto resolve",
"clearAllLabel": "Clear all",
"clearRelays": "Clear relays",
"clearFilters": "Clear filters",
"clearRoute": "Clear Route",
"clearMessages": "Clear Messages",
"clearScale": "Clear scale",
"clearDiscoveries": "Clear discoveries",
"clearOnlineTraceDatabase": "Clear online trace database",
"clearAllChannels": "Clear all channels",
"clearAllContacts": "Clear all contacts",
"clearChannels": "Clear channels",
"clearContacts": "Clear contacts",
"clearPathOnMaxRetry": "Clear path on max retry",
"create": "Create",
"custom": "Custom",
"defaultValue": "Default",
"duplicate": "Duplicate",
"editName": "Edit name",
"open": "Open",
"paste": "Paste",
"preview": "Preview",
"remove": "Remove",
"rename": "Rename",
"resolveAll": "Resolve all",
"send": "Send",
"sendAnyway": "Send anyway",
"share": "Share",
"shareContact": "Share Contact",
"trace": "Trace",
"use": "Use",
"useSelectedFrequency": "Use selected frequency",
"discovery": "Discovery",
"discoverRepeaters": "Discover repeaters",
"discoverSensors": "Discover sensors",
"repeaterDiscoverySent": "Repeater discovery sent",
"sensorDiscoverySent": "Sensor discovery sent",
"clearedPendingDiscoveries": "Cleared pending discoveries.",
"autoDiscovery": "Auto discovery",
"enableAutomaticAdding": "Enable automatic adding",
"autoaddRepeaters": "Auto-add repeaters",
"autoaddRoomServers": "Auto-add room servers",
"autoaddSensors": "Auto-add sensors",
"autoaddUsers": "Auto-add users",
"overwriteOldestWhenFull": "Overwrite oldest when full",
"storage": "Storage",
"dangerZone": "Danger zone",
"profiles": "Profiles",
"favourites": "Favourites",
"sensors": "Sensors",
"others": "Others",
"gpsModule": "GPS Module",
"liveTraffic": "Live Traffic",
"repeatersMap": "Repeaters Map",
"spectrumScan": "Spectrum Scan",
"blePacketLogs": "BLE Packet Logs",
"onlineTraceDatabase": "Online trace database",
"routePathByteSize": "Route path byte size",
"messageNotifications": "Message notifications",
"sarAlerts": "SAR alerts",
"discoveryNotifications": "Discovery notifications",
"updateNotifications": "Update notifications",
"muteWhileAppIsOpen": "Mute while app is open",
"disableContacts": "Disable Contacts",
"enableSensorsTab": "Enable Sensors tab",
"enableProfiles": "Enable Profiles",
"autoRouteRotation": "Auto route rotation",
"nearestRepeaterFallback": "Nearest repeater fallback",
"deleteAllStoredMessageHistory": "Delete all stored message history",
"messageFontSize": "Message font size",
"rotateMapWithHeading": "Rotate map with heading",
"showMapDebugInfo": "Show map debug info",
"openMapInFullscreen": "Open map in fullscreen",
"showSarMarkersLabel": "Show SAR markers",
"displaySarMarkersOnTheMainMap": "Display SAR markers on the main map",
"showAllContactTrailsLabel": "Show all contact trails",
"hideRepeatersOnMap": "Hide repeaters on map",
"setMapScale": "Set map scale",
"customMapScaleSaved": "Custom map scale saved",
"voiceBitrate": "Voice bitrate",
"voiceCompressor": "Voice compressor",
"balancesQuietAndLoudSpeechLevels": "Balances quiet and loud speech levels",
"voiceLimiter": "Voice limiter",
"preventsClippingPeaksBeforeEncoding": "Prevents clipping peaks before encoding",
"micAutoGain": "Mic auto gain",
"letsTheRecorderAdjustInputLevel": "Lets the recorder adjust input level",
"echoCancellation": "Echo cancellation",
"noiseSuppression": "Noise suppression",
"trimSilenceInVoiceMessages": "Trim silence in voice messages",
"compressor": "Compressor",
"limiter": "Limiter",
"autoGain": "Auto gain",
"echoCancel": "Echo cancel",
"noiseSuppress": "Noise suppress",
"silenceTrim": "Silence trim",
"maxImageSize": "Max image size",
"imageCompression": "Image compression",
"grayscale": "Grayscale",
"ultraMode": "Ultra mode",
"fastPrivateGpsUpdates": "Fast private GPS updates",
"movementThreshold": "Movement threshold",
"fastGpsMovementThreshold": "Fast GPS movement threshold",
"fastGpsActiveuseInterval": "Fast GPS active-use interval",
"activeuseUpdateInterval": "Active-use update interval",
"repeatNearbyTraffic": "Repeat nearby traffic",
"relayThroughRepeatersAcrossTheMesh": "Relay through repeaters across the mesh",
"nearbyOnlyWithoutRepeaterFlooding": "Nearby only, without repeater flooding",
"multihop": "Multi-hop",
"createProfile": "Create Profile",
"renameProfile": "Rename Profile",
"newProfile": "New Profile",
"manageProfiles": "Manage profiles",
"enableProfilesToStartManagingThem": "Enable profiles to start managing them.",
"openMessage": "Open message",
"jumpToTheRelatedSarMessage": "Jump to the related SAR message",
"removeSarMarker": "Remove SAR marker",
"pleaseSelectADestinationToSendSarMarker": "Please select a destination to send SAR marker",
"sarMarkerBroadcastToPublicChannel": "SAR marker broadcast to public channel",
"sarMarkerSentToRoom": "SAR marker sent to room",
"loadFromGallery": "Load from gallery",
"replaceImage": "Replace image",
"selectFromGallery": "Select from gallery",
"team": "Team",
"found": "Found",
"staging": "Staging",
"object": "Object",
"quiet": "Quiet",
"moderate": "Moderate",
"busy": "Busy",
"spectrumScanReturnedNoCandidateFrequencies": "Spectrum scan returned no candidate frequencies",
"searchMessages": "Search messages",
"sendImageFromGallery": "Send image from gallery",
"takePhoto": "Take photo",
"dmOnly": "DM only",
"allMessages": "All messages",
"sendToPublicChannel": "Send to Public Channel?",
"selectMarkerTypeAndDestination": "Select marker type and destination",
"noDestinationsAvailableLabel": "No destinations available",
"image": "Image",
"format": "Format",
"dimensions": "Dimensions",
"segments": "Segments",
"transfers": "Transfers",
"downloadedBy": "Downloaded by",
"saveDiscoverySettings": "Save discovery settings",
"savePublicInfo": "Save public info",
"saveRadioSettings": "Save radio settings",
"savePath": "Save Path",
"wipeDeviceData": "Wipe device data",
"wipeDevice": "Wipe device",
"destructiveDeviceActions": "Destructive device actions.",
"chooseAPresetOrFinetuneCustomRadioSettings": "Choose a preset or fine-tune custom radio settings.",
"chooseTheNameAndLocationThisDeviceShares": "Choose the name and location this device shares.",
"availableSpaceOnThisDevice": "Available space on this device.",
"used": "Used",
"total": "Total",
"renameValue": "Rename value",
"customizeFields": "Customize fields",
"livePreview": "Live preview",
"refreshSchedule": "Refresh schedule",
"noResponse": "No response",
"refreshing": "Refreshing",
"unavailable": "Unavailable",
"pickARelayOrNodeToWatchInSensors": "Pick a relay or node to watch in Sensors.",
"publicKeyLabel": "Public key",
"alreadyInContacts": "Already in contacts",
"connectToADeviceBeforeAddingContacts": "Connect to a device before adding contacts",
"fromContacts": "From contacts",
"onlineOnly": "Online only",
"inBoth": "In both",
"source": "Source",
"manualRouteEdit": "Manual route edit",
"observedMeshRoute": "Observed mesh route",
"allMessagesCleared": "All messages cleared",
"onlineTraceDatabaseCleared": "Online trace database cleared",
"packetLogsCleared": "Packet logs cleared",
"hexDataCopiedToClipboard": "Hex data copied to clipboard",
"developerModeEnabled": "Developer mode enabled",
"developerModeDisabled": "Developer mode disabled",
"clipboardIsEmpty": "Clipboard is empty",
"contactImported": "Contact imported",
"contactLinkCopiedToClipboard": "Contact link copied to clipboard",
"failedToExportContact": "Failed to export contact",
"noLogsToExport": "No logs to export",
"exportAsCsv": "Export as CSV",
"exportAsText": "Export as Text",
"receivedRfc3339": "Received (RFC3339)",
"buildTime": "Build Time",
"downloadUrlNotAvailable": "Download URL not available",
"cannotOpenDownloadUrl": "Cannot open download URL",
"updateCheckIsOnlyAvailableOnAndroid": "Update check is only available on Android",
"youAreRunningTheLatestVersion": "You are running the latest version",
"updateAvailableButDownloadUrlNotFound": "Update available but download URL not found",
"startTictactoe": "Start Tic-Tac-Toe",
"tictactoeUnavailable": "Tic-Tac-Toe unavailable",
"tictactoeOpponentUnknown": "Tic-Tac-Toe: opponent unknown",
"tictactoeWaitingForStart": "Tic-Tac-Toe: waiting for start",
"acceptsShareLinks": "Accepts share links",
"supportsRawHex": "Supports raw hex",
"clipboardfriendly": "Clipboard-friendly",
"captured": "Captured",
"size": "Size",
"noCustomChannelsToClear": "No custom channels to clear.",
"noDeviceContactsToClear": "No device contacts to clear."
}

View File

@@ -1638,5 +1638,252 @@
"contactFailedToClearRoute": "No se pudo borrar la ruta: {error}",
"contactRouteCleared": "Ruta borrada",
"contactRouteSet": "Ruta establecida: {route}",
"contactFailedToSetRoute": "No se pudo establecer la ruta: {error}"
"contactFailedToSetRoute": "No se pudo establecer la ruta: {error}",
"rssi": "RSSI",
"snr": "SNR",
"ackTimeout": "Tiempo de espera ACK",
"opcode": "Código de operación",
"payload": "Carga útil",
"hops": "Saltos",
"hashSize": "Tamaño del hash",
"pathBytes": "Bytes de ruta",
"selectedPath": "Ruta seleccionada",
"estimatedTx": "Transmisión estimada",
"senderToReceipt": "Del remitente al recibo",
"receivedCopies": "Copias recibidas",
"retryCause": "Causa del reintento",
"retryMode": "Modo de reintento",
"retryResult": "Resultado del reintento",
"lastRetry": "Último reintento",
"rxPackets": "Paquetes RX",
"mesh": "Mesh",
"rate": "Velocidad",
"window": "Ventana",
"posttxDelay": "Retardo post-tx",
"bandpass": "Paso de banda",
"bandpassFilterVoice": "Filtro de paso de banda de voz",
"frequency": "Frecuencia",
"australia": "Australia",
"australiaNarrow": "Australia (Estrecho)",
"australiaQld": "Australia: QLD",
"australiaSaWa": "Australia: SA, WA",
"newZealand": "Nueva Zelanda",
"newZealandNarrow": "Nueva Zelanda (Estrecho)",
"switzerland": "Suiza",
"portugal433": "Portugal 433",
"portugal868": "Portugal 868",
"czechRepublicNarrow": "República Checa (Estrecho)",
"eu433mhzLongRange": "EU 433MHz (Largo Alcance)",
"euukDeprecated": "UE/RU (Obsoleto)",
"euukNarrow": "UE/RU (Estrecho)",
"usacanadaRecommended": "EE.UU./Canadá (Recomendado)",
"vietnamDeprecated": "Vietnam (Obsoleto)",
"vietnamNarrow": "Vietnam (Estrecho)",
"active": "Activo",
"addContact": "Añadir contacto",
"all": "Todo",
"autoResolve": "Resolver automáticamente",
"clearAllLabel": "Borrar todo",
"clearRelays": "Borrar repetidores",
"clearFilters": "Borrar filtros",
"clearRoute": "Borrar ruta",
"clearMessages": "Borrar mensajes",
"clearScale": "Borrar escala",
"clearDiscoveries": "Borrar descubrimientos",
"clearOnlineTraceDatabase": "Borrar base de datos de trazas",
"clearAllChannels": "Borrar todos los canales",
"clearAllContacts": "Borrar todos los contactos",
"clearChannels": "Borrar canales",
"clearContacts": "Borrar contactos",
"clearPathOnMaxRetry": "Borrar ruta en máximo reintento",
"create": "Crear",
"custom": "Personalizado",
"defaultValue": "Predeterminado",
"duplicate": "Duplicar",
"editName": "Editar nombre",
"open": "Abrir",
"paste": "Pegar",
"preview": "Vista previa",
"remove": "Eliminar",
"rename": "Renombrar",
"resolveAll": "Resolver todo",
"send": "Enviar",
"sendAnyway": "Enviar de todos modos",
"share": "Compartir",
"shareContact": "Compartir contacto",
"trace": "Traza",
"use": "Usar",
"useSelectedFrequency": "Usar frecuencia seleccionada",
"discovery": "Descubrimiento",
"discoverRepeaters": "Descubrir repetidores",
"discoverSensors": "Descubrir sensores",
"repeaterDiscoverySent": "Descubrimiento de repetidores enviado",
"sensorDiscoverySent": "Descubrimiento de sensores enviado",
"clearedPendingDiscoveries": "Descubrimientos pendientes borrados.",
"autoDiscovery": "Descubrimiento automático",
"enableAutomaticAdding": "Habilitar adición automática",
"autoaddRepeaters": "Añadir repetidores automáticamente",
"autoaddRoomServers": "Añadir servidores de sala automáticamente",
"autoaddSensors": "Añadir sensores automáticamente",
"autoaddUsers": "Añadir usuarios automáticamente",
"overwriteOldestWhenFull": "Sobrescribir más antiguos cuando esté lleno",
"storage": "Almacenamiento",
"dangerZone": "Zona de peligro",
"profiles": "Perfiles",
"favourites": "Favoritos",
"sensors": "Sensores",
"others": "Otros",
"gpsModule": "Módulo GPS",
"liveTraffic": "Tráfico en vivo",
"repeatersMap": "Mapa de repetidores",
"spectrumScan": "Escaneo de espectro",
"blePacketLogs": "Registros de paquetes BLE",
"onlineTraceDatabase": "Base de datos de trazas",
"routePathByteSize": "Tamaño en bytes de la ruta",
"messageNotifications": "Notificaciones de mensajes",
"sarAlerts": "Alertas SAR",
"discoveryNotifications": "Notificaciones de descubrimiento",
"updateNotifications": "Notificaciones de actualización",
"muteWhileAppIsOpen": "Silenciar con la app abierta",
"disableContacts": "Desactivar contactos",
"enableSensorsTab": "Habilitar pestaña Sensores",
"enableProfiles": "Habilitar perfiles",
"autoRouteRotation": "Rotación automática de ruta",
"nearestRepeaterFallback": "Repetidor más cercano como reserva",
"deleteAllStoredMessageHistory": "Eliminar todo el historial de mensajes",
"messageFontSize": "Tamaño de fuente de mensajes",
"rotateMapWithHeading": "Rotar mapa con rumbo",
"showMapDebugInfo": "Mostrar info de depuración del mapa",
"openMapInFullscreen": "Abrir mapa en pantalla completa",
"showSarMarkersLabel": "Mostrar marcadores SAR",
"displaySarMarkersOnTheMainMap": "Mostrar marcadores SAR en el mapa principal",
"showAllContactTrailsLabel": "Mostrar todos los rastros de contactos",
"hideRepeatersOnMap": "Ocultar repetidores en el mapa",
"setMapScale": "Establecer escala del mapa",
"customMapScaleSaved": "Escala de mapa personalizada guardada",
"voiceBitrate": "Tasa de bits de voz",
"voiceCompressor": "Compresor de voz",
"balancesQuietAndLoudSpeechLevels": "Equilibra niveles de habla suaves y altos",
"voiceLimiter": "Limitador de voz",
"preventsClippingPeaksBeforeEncoding": "Previene recorte de picos antes de codificar",
"micAutoGain": "Ganancia automática del micrófono",
"letsTheRecorderAdjustInputLevel": "Permite al grabador ajustar el nivel de entrada",
"echoCancellation": "Cancelación de eco",
"noiseSuppression": "Supresión de ruido",
"trimSilenceInVoiceMessages": "Recortar silencio en mensajes de voz",
"compressor": "Compresor",
"limiter": "Limitador",
"autoGain": "Ganancia automática",
"echoCancel": "Eco",
"noiseSuppress": "Ruido",
"silenceTrim": "Silencio",
"maxImageSize": "Tamaño máximo de imagen",
"imageCompression": "Compresión de imagen",
"grayscale": "Escala de grises",
"ultraMode": "Modo ultra",
"fastPrivateGpsUpdates": "Actualizaciones GPS privadas rápidas",
"movementThreshold": "Umbral de movimiento",
"fastGpsMovementThreshold": "Umbral de movimiento GPS rápido",
"fastGpsActiveuseInterval": "Intervalo de uso activo GPS rápido",
"activeuseUpdateInterval": "Intervalo de actualización de uso activo",
"repeatNearbyTraffic": "Repetir tráfico cercano",
"relayThroughRepeatersAcrossTheMesh": "Retransmitir a través de repetidores en la red",
"nearbyOnlyWithoutRepeaterFlooding": "Solo cercanos, sin inundación de repetidores",
"multihop": "Multi-salto",
"createProfile": "Crear perfil",
"renameProfile": "Renombrar perfil",
"newProfile": "Nuevo perfil",
"manageProfiles": "Gestionar perfiles",
"enableProfilesToStartManagingThem": "Habilite los perfiles para comenzar a gestionarlos.",
"openMessage": "Abrir mensaje",
"jumpToTheRelatedSarMessage": "Ir al mensaje SAR relacionado",
"removeSarMarker": "Eliminar marcador SAR",
"pleaseSelectADestinationToSendSarMarker": "Seleccione un destino para enviar el marcador SAR",
"sarMarkerBroadcastToPublicChannel": "Marcador SAR transmitido al canal público",
"sarMarkerSentToRoom": "Marcador SAR enviado a la sala",
"loadFromGallery": "Cargar desde galería",
"replaceImage": "Reemplazar imagen",
"selectFromGallery": "Seleccionar de galería",
"team": "Equipo",
"found": "Encontrado",
"staging": "Área de reunión",
"object": "Objeto",
"quiet": "Silencioso",
"moderate": "Moderado",
"busy": "Ocupado",
"spectrumScanReturnedNoCandidateFrequencies": "El escaneo de espectro no encontró frecuencias candidatas",
"searchMessages": "Buscar mensajes",
"sendImageFromGallery": "Enviar imagen desde galería",
"takePhoto": "Tomar foto",
"dmOnly": "Solo mensaje directo",
"allMessages": "Todos los mensajes",
"sendToPublicChannel": "¿Enviar al canal público?",
"selectMarkerTypeAndDestination": "Seleccione tipo de marcador y destino",
"noDestinationsAvailableLabel": "No hay destinos disponibles",
"image": "Imagen",
"format": "Formato",
"dimensions": "Dimensiones",
"segments": "Segmentos",
"transfers": "Transferencias",
"downloadedBy": "Descargado por",
"saveDiscoverySettings": "Guardar ajustes de descubrimiento",
"savePublicInfo": "Guardar información pública",
"saveRadioSettings": "Guardar ajustes de radio",
"savePath": "Guardar ruta",
"wipeDeviceData": "Borrar datos del dispositivo",
"wipeDevice": "Borrar dispositivo",
"destructiveDeviceActions": "Acciones destructivas del dispositivo.",
"chooseAPresetOrFinetuneCustomRadioSettings": "Elija un preajuste o ajuste la configuración de radio.",
"chooseTheNameAndLocationThisDeviceShares": "Elija el nombre y la ubicación que comparte este dispositivo.",
"availableSpaceOnThisDevice": "Espacio disponible en este dispositivo.",
"used": "Usado",
"total": "Total",
"renameValue": "Renombrar valor",
"customizeFields": "Personalizar campos",
"livePreview": "Vista previa en vivo",
"refreshSchedule": "Programación de actualización",
"noResponse": "Sin respuesta",
"refreshing": "Actualizando",
"unavailable": "No disponible",
"pickARelayOrNodeToWatchInSensors": "Elija un relay o nodo para observar.",
"publicKeyLabel": "Clave pública",
"alreadyInContacts": "Ya en contactos",
"connectToADeviceBeforeAddingContacts": "Conéctese a un dispositivo antes de añadir contactos",
"fromContacts": "De contactos",
"onlineOnly": "Solo en línea",
"inBoth": "En ambos",
"source": "Fuente",
"manualRouteEdit": "Edición manual de ruta",
"observedMeshRoute": "Ruta mesh observada",
"allMessagesCleared": "Todos los mensajes borrados",
"onlineTraceDatabaseCleared": "Base de datos de trazas borrada",
"packetLogsCleared": "Registros de paquetes borrados",
"hexDataCopiedToClipboard": "Datos hex copiados al portapapeles",
"developerModeEnabled": "Modo desarrollador activado",
"developerModeDisabled": "Modo desarrollador desactivado",
"clipboardIsEmpty": "El portapapeles está vacío",
"contactImported": "Contacto importado",
"contactLinkCopiedToClipboard": "Enlace de contacto copiado al portapapeles",
"failedToExportContact": "Error al exportar el contacto",
"noLogsToExport": "No hay registros para exportar",
"exportAsCsv": "Exportar como CSV",
"exportAsText": "Exportar como texto",
"receivedRfc3339": "Recibido (RFC3339)",
"buildTime": "Hora de compilación",
"downloadUrlNotAvailable": "URL de descarga no disponible",
"cannotOpenDownloadUrl": "No se puede abrir la URL de descarga",
"updateCheckIsOnlyAvailableOnAndroid": "La comprobación de actualizaciones solo está disponible en Android",
"youAreRunningTheLatestVersion": "Está ejecutando la última versión",
"updateAvailableButDownloadUrlNotFound": "Actualización disponible pero URL de descarga no encontrada",
"startTictactoe": "Iniciar Tic-Tac-Toe",
"tictactoeUnavailable": "Tic-Tac-Toe no disponible",
"tictactoeOpponentUnknown": "Tic-Tac-Toe: oponente desconocido",
"tictactoeWaitingForStart": "Tic-Tac-Toe: esperando inicio",
"acceptsShareLinks": "Acepta enlaces compartidos",
"supportsRawHex": "Soporta hex sin procesar",
"clipboardfriendly": "Compatible con portapapeles",
"captured": "Capturado",
"size": "Tamaño",
"noCustomChannelsToClear": "No hay canales personalizados que borrar.",
"noDeviceContactsToClear": "No hay contactos del dispositivo que borrar."
}

View File

@@ -1641,5 +1641,252 @@
"contactFailedToClearRoute": "Échec de l'effacement de la route : {error}",
"contactRouteCleared": "Route effacée",
"contactRouteSet": "Route définie : {route}",
"contactFailedToSetRoute": "Échec du réglage de la route : {error}"
"contactFailedToSetRoute": "Échec du réglage de la route : {error}",
"rssi": "RSSI",
"snr": "SNR",
"ackTimeout": "Délai ACK expiré",
"opcode": "Opcode",
"payload": "Charge utile",
"hops": "Sauts",
"hashSize": "Taille du hash",
"pathBytes": "Octets du chemin",
"selectedPath": "Chemin sélectionné",
"estimatedTx": "Émission estimée",
"senderToReceipt": "Émetteur au reçu",
"receivedCopies": "Copies reçues",
"retryCause": "Cause de la relance",
"retryMode": "Mode de relance",
"retryResult": "Résultat de la relance",
"lastRetry": "Dernière relance",
"rxPackets": "Paquets RX",
"mesh": "Mesh",
"rate": "Débit",
"window": "Fenêtre",
"posttxDelay": "Délai post-émission",
"bandpass": "Passe-bande",
"bandpassFilterVoice": "Filtre passe-bande voix",
"frequency": "Fréquence",
"australia": "Australie",
"australiaNarrow": "Australie (Étroit)",
"australiaQld": "Australie: QLD",
"australiaSaWa": "Australie: SA, WA",
"newZealand": "Nouvelle-Zélande",
"newZealandNarrow": "Nouvelle-Zélande (Étroit)",
"switzerland": "Suisse",
"portugal433": "Portugal 433",
"portugal868": "Portugal 868",
"czechRepublicNarrow": "République tchèque (Étroit)",
"eu433mhzLongRange": "UE 433MHz (Longue Portée)",
"euukDeprecated": "UE/RU (Obsolète)",
"euukNarrow": "UE/RU (Étroit)",
"usacanadaRecommended": "USA/Canada (Recommandé)",
"vietnamDeprecated": "Vietnam (Obsolète)",
"vietnamNarrow": "Vietnam (Étroit)",
"active": "Actif",
"addContact": "Ajouter un contact",
"all": "Tout",
"autoResolve": "Résolution automatique",
"clearAllLabel": "Tout effacer",
"clearRelays": "Effacer les relais",
"clearFilters": "Effacer les filtres",
"clearRoute": "Effacer la route",
"clearMessages": "Effacer les messages",
"clearScale": "Effacer l'échelle",
"clearDiscoveries": "Effacer les découvertes",
"clearOnlineTraceDatabase": "Effacer la base de traces",
"clearAllChannels": "Effacer tous les canaux",
"clearAllContacts": "Effacer tous les contacts",
"clearChannels": "Effacer les canaux",
"clearContacts": "Effacer les contacts",
"clearPathOnMaxRetry": "Effacer le chemin au max de relances",
"create": "Créer",
"custom": "Personnalisé",
"defaultValue": "Par défaut",
"duplicate": "Dupliquer",
"editName": "Modifier le nom",
"open": "Ouvrir",
"paste": "Coller",
"preview": "Aperçu",
"remove": "Supprimer",
"rename": "Renommer",
"resolveAll": "Résoudre tout",
"send": "Envoyer",
"sendAnyway": "Envoyer quand même",
"share": "Partager",
"shareContact": "Partager le contact",
"trace": "Trace",
"use": "Utiliser",
"useSelectedFrequency": "Utiliser la fréquence sélectionnée",
"discovery": "Découverte",
"discoverRepeaters": "Découvrir les répéteurs",
"discoverSensors": "Découvrir les capteurs",
"repeaterDiscoverySent": "Découverte de répéteurs envoyée",
"sensorDiscoverySent": "Découverte de capteurs envoyée",
"clearedPendingDiscoveries": "Découvertes en attente effacées.",
"autoDiscovery": "Découverte automatique",
"enableAutomaticAdding": "Activer l'ajout automatique",
"autoaddRepeaters": "Ajout auto des répéteurs",
"autoaddRoomServers": "Ajout auto des serveurs de salle",
"autoaddSensors": "Ajout auto des capteurs",
"autoaddUsers": "Ajout auto des utilisateurs",
"overwriteOldestWhenFull": "Écraser les plus anciens si plein",
"storage": "Stockage",
"dangerZone": "Zone de danger",
"profiles": "Profils",
"favourites": "Favoris",
"sensors": "Capteurs",
"others": "Autres",
"gpsModule": "Module GPS",
"liveTraffic": "Trafic en direct",
"repeatersMap": "Carte des répéteurs",
"spectrumScan": "Scan spectral",
"blePacketLogs": "Journaux de paquets BLE",
"onlineTraceDatabase": "Base de données de traces",
"routePathByteSize": "Taille en octets du chemin",
"messageNotifications": "Notifications de messages",
"sarAlerts": "Alertes SAR",
"discoveryNotifications": "Notifications de découverte",
"updateNotifications": "Notifications de mise à jour",
"muteWhileAppIsOpen": "Muet quand l'appli est ouverte",
"disableContacts": "Désactiver les contacts",
"enableSensorsTab": "Activer l'onglet Capteurs",
"enableProfiles": "Activer les profils",
"autoRouteRotation": "Rotation automatique de route",
"nearestRepeaterFallback": "Répéteur le plus proche en repli",
"deleteAllStoredMessageHistory": "Supprimer tout l'historique",
"messageFontSize": "Taille de police des messages",
"rotateMapWithHeading": "Tourner la carte avec le cap",
"showMapDebugInfo": "Afficher les infos de débogage",
"openMapInFullscreen": "Ouvrir la carte en plein écran",
"showSarMarkersLabel": "Afficher les marqueurs SAR",
"displaySarMarkersOnTheMainMap": "Afficher les marqueurs SAR sur la carte",
"showAllContactTrailsLabel": "Afficher toutes les traces de contacts",
"hideRepeatersOnMap": "Masquer les répéteurs sur la carte",
"setMapScale": "Définir l'échelle de la carte",
"customMapScaleSaved": "Échelle de carte personnalisée enregistrée",
"voiceBitrate": "Débit vocal",
"voiceCompressor": "Compresseur vocal",
"balancesQuietAndLoudSpeechLevels": "Équilibre les niveaux faibles et forts",
"voiceLimiter": "Limiteur vocal",
"preventsClippingPeaksBeforeEncoding": "Empêche l'écrêtage avant l'encodage",
"micAutoGain": "Gain auto du micro",
"letsTheRecorderAdjustInputLevel": "Laisse l'enregistreur ajuster le niveau d'entrée",
"echoCancellation": "Annulation d'écho",
"noiseSuppression": "Suppression du bruit",
"trimSilenceInVoiceMessages": "Couper le silence dans les messages vocaux",
"compressor": "Compresseur",
"limiter": "Limiteur",
"autoGain": "Gain automatique",
"echoCancel": "Écho",
"noiseSuppress": "Bruit",
"silenceTrim": "Silence",
"maxImageSize": "Taille d'image maximale",
"imageCompression": "Compression d'image",
"grayscale": "Niveaux de gris",
"ultraMode": "Mode ultra",
"fastPrivateGpsUpdates": "Mises à jour GPS privées rapides",
"movementThreshold": "Seuil de mouvement",
"fastGpsMovementThreshold": "Seuil de mouvement GPS rapide",
"fastGpsActiveuseInterval": "Intervalle d'utilisation active GPS rapide",
"activeuseUpdateInterval": "Intervalle de mise à jour en utilisation active",
"repeatNearbyTraffic": "Répéter le trafic proche",
"relayThroughRepeatersAcrossTheMesh": "Relayer via les répéteurs du réseau",
"nearbyOnlyWithoutRepeaterFlooding": "Proximité seulement, sans inondation",
"multihop": "Multi-saut",
"createProfile": "Créer un profil",
"renameProfile": "Renommer le profil",
"newProfile": "Nouveau profil",
"manageProfiles": "Gérer les profils",
"enableProfilesToStartManagingThem": "Activez les profils pour commencer à les gérer.",
"openMessage": "Ouvrir le message",
"jumpToTheRelatedSarMessage": "Aller au message SAR associé",
"removeSarMarker": "Supprimer le marqueur SAR",
"pleaseSelectADestinationToSendSarMarker": "Sélectionnez une destination pour envoyer le marqueur",
"sarMarkerBroadcastToPublicChannel": "Marqueur SAR diffusé sur le canal public",
"sarMarkerSentToRoom": "Marqueur SAR envoyé à la salle",
"loadFromGallery": "Charger depuis la galerie",
"replaceImage": "Remplacer l'image",
"selectFromGallery": "Sélectionner depuis la galerie",
"team": "Équipe",
"found": "Trouvé",
"staging": "Zone de regroupement",
"object": "Objet",
"quiet": "Calme",
"moderate": "Modéré",
"busy": "Occupé",
"spectrumScanReturnedNoCandidateFrequencies": "Le scan spectral n'a trouvé aucune fréquence candidate",
"searchMessages": "Rechercher des messages",
"sendImageFromGallery": "Envoyer une image de la galerie",
"takePhoto": "Prendre une photo",
"dmOnly": "Message direct uniquement",
"allMessages": "Tous les messages",
"sendToPublicChannel": "Envoyer au canal public ?",
"selectMarkerTypeAndDestination": "Sélectionnez le type de marqueur et la destination",
"noDestinationsAvailableLabel": "Aucune destination disponible",
"image": "Image",
"format": "Format",
"dimensions": "Dimensions",
"segments": "Segments",
"transfers": "Transferts",
"downloadedBy": "Téléchargé par",
"saveDiscoverySettings": "Enregistrer les paramètres de découverte",
"savePublicInfo": "Enregistrer les infos publiques",
"saveRadioSettings": "Enregistrer les paramètres radio",
"savePath": "Enregistrer le chemin",
"wipeDeviceData": "Effacer les données de l'appareil",
"wipeDevice": "Effacer l'appareil",
"destructiveDeviceActions": "Actions destructives de l'appareil.",
"chooseAPresetOrFinetuneCustomRadioSettings": "Choisissez un préréglage ou ajustez les paramètres radio.",
"chooseTheNameAndLocationThisDeviceShares": "Choisissez le nom et l'emplacement partagés par cet appareil.",
"availableSpaceOnThisDevice": "Espace disponible sur cet appareil.",
"used": "Utilisé",
"total": "Total",
"renameValue": "Renommer la valeur",
"customizeFields": "Personnaliser les champs",
"livePreview": "Aperçu en direct",
"refreshSchedule": "Planification d'actualisation",
"noResponse": "Pas de réponse",
"refreshing": "Actualisation",
"unavailable": "Indisponible",
"pickARelayOrNodeToWatchInSensors": "Choisissez un relais ou nœud à surveiller.",
"publicKeyLabel": "Clé publique",
"alreadyInContacts": "Déjà dans les contacts",
"connectToADeviceBeforeAddingContacts": "Connectez-vous à un appareil avant d'ajouter des contacts",
"fromContacts": "Des contacts",
"onlineOnly": "En ligne uniquement",
"inBoth": "Dans les deux",
"source": "Source",
"manualRouteEdit": "Édition manuelle de route",
"observedMeshRoute": "Route mesh observée",
"allMessagesCleared": "Tous les messages effacés",
"onlineTraceDatabaseCleared": "Base de données de traces effacée",
"packetLogsCleared": "Journaux de paquets effacés",
"hexDataCopiedToClipboard": "Données hex copiées dans le presse-papiers",
"developerModeEnabled": "Mode développeur activé",
"developerModeDisabled": "Mode développeur désactivé",
"clipboardIsEmpty": "Le presse-papiers est vide",
"contactImported": "Contact importé",
"contactLinkCopiedToClipboard": "Lien du contact copié dans le presse-papiers",
"failedToExportContact": "Échec de l'exportation du contact",
"noLogsToExport": "Aucun journal à exporter",
"exportAsCsv": "Exporter en CSV",
"exportAsText": "Exporter en texte",
"receivedRfc3339": "Reçu (RFC3339)",
"buildTime": "Heure de build",
"downloadUrlNotAvailable": "URL de téléchargement non disponible",
"cannotOpenDownloadUrl": "Impossible d'ouvrir l'URL de téléchargement",
"updateCheckIsOnlyAvailableOnAndroid": "La vérification des mises à jour n'est disponible que sur Android",
"youAreRunningTheLatestVersion": "Vous utilisez la dernière version",
"updateAvailableButDownloadUrlNotFound": "Mise à jour disponible mais URL de téléchargement introuvable",
"startTictactoe": "Démarrer Tic-Tac-Toe",
"tictactoeUnavailable": "Tic-Tac-Toe indisponible",
"tictactoeOpponentUnknown": "Tic-Tac-Toe: adversaire inconnu",
"tictactoeWaitingForStart": "Tic-Tac-Toe: en attente du début",
"acceptsShareLinks": "Accepte les liens partagés",
"supportsRawHex": "Supporte le hex brut",
"clipboardfriendly": "Compatible avec le presse-papiers",
"captured": "Capturé",
"size": "Taille",
"noCustomChannelsToClear": "Aucun canal personnalisé à effacer.",
"noDeviceContactsToClear": "Aucun contact de l'appareil à effacer."
}

View File

@@ -563,5 +563,252 @@
"contactFailedToClearRoute": "Brisanje rute nije uspjelo: {error}",
"contactRouteCleared": "Ruta obrisana",
"contactRouteSet": "Ruta postavljena: {route}",
"contactFailedToSetRoute": "Postavljanje rute nije uspjelo: {error}"
"contactFailedToSetRoute": "Postavljanje rute nije uspjelo: {error}",
"rssi": "RSSI",
"snr": "SNR",
"ackTimeout": "ACK istek vremena",
"opcode": "Opkod",
"payload": "Sadržaj",
"hops": "Skokovi",
"hashSize": "Veličina hash-a",
"pathBytes": "Bajtovi putanje",
"selectedPath": "Odabrana putanja",
"estimatedTx": "Procijenjeno slanje",
"senderToReceipt": "Od pošiljatelja do primitka",
"receivedCopies": "Primljene kopije",
"retryCause": "Razlog ponovnog pokušaja",
"retryMode": "Način ponovnog pokušaja",
"retryResult": "Rezultat ponovnog pokušaja",
"lastRetry": "Zadnji pokušaj",
"rxPackets": "RX paketi",
"mesh": "Mesh",
"rate": "Brzina",
"window": "Prozor",
"posttxDelay": "Kašnjenje nakon slanja",
"bandpass": "Pojasni filtar",
"bandpassFilterVoice": "Pojasni filtar glasa",
"frequency": "Frekvencija",
"australia": "Australija",
"australiaNarrow": "Australija (usko)",
"australiaQld": "Australija: QLD",
"australiaSaWa": "Australija: SA, WA",
"newZealand": "Novi Zeland",
"newZealandNarrow": "Novi Zeland (usko)",
"switzerland": "Švicarska",
"portugal433": "Portugal 433",
"portugal868": "Portugal 868",
"czechRepublicNarrow": "Češka (usko)",
"eu433mhzLongRange": "EU 433MHz (veliki domet)",
"euukDeprecated": "EU/UK (zastarjelo)",
"euukNarrow": "EU/UK (usko)",
"usacanadaRecommended": "SAD/Kanada (preporučeno)",
"vietnamDeprecated": "Vijetnam (zastarjelo)",
"vietnamNarrow": "Vijetnam (usko)",
"active": "Aktivno",
"addContact": "Dodaj kontakt",
"all": "Sve",
"autoResolve": "Automatski razriješi",
"clearAllLabel": "Očisti sve",
"clearRelays": "Očisti posrednike",
"clearFilters": "Očisti filtre",
"clearRoute": "Očisti putanju",
"clearMessages": "Očisti poruke",
"clearScale": "Očisti mjerilo",
"clearDiscoveries": "Očisti otkrića",
"clearOnlineTraceDatabase": "Očisti bazu mrežnih tragova",
"clearAllChannels": "Očisti sve kanale",
"clearAllContacts": "Očisti sve kontakte",
"clearChannels": "Očisti kanale",
"clearContacts": "Očisti kontakte",
"clearPathOnMaxRetry": "Očisti putanju kod maks. pokušaja",
"create": "Stvori",
"custom": "Prilagođeno",
"defaultValue": "Zadano",
"duplicate": "Dupliciraj",
"editName": "Uredi ime",
"open": "Otvori",
"paste": "Zalijepi",
"preview": "Pregled",
"remove": "Ukloni",
"rename": "Preimenuj",
"resolveAll": "Razriješi sve",
"send": "Pošalji",
"sendAnyway": "Svejedno pošalji",
"share": "Dijeli",
"shareContact": "Dijeli kontakt",
"trace": "Praćenje",
"use": "Koristi",
"useSelectedFrequency": "Koristi odabranu frekvenciju",
"discovery": "Otkrivanje",
"discoverRepeaters": "Otkrij posrednike",
"discoverSensors": "Otkrij senzore",
"repeaterDiscoverySent": "Otkrivanje posrednika poslano",
"sensorDiscoverySent": "Otkrivanje senzora poslano",
"clearedPendingDiscoveries": "Očišćena čekajuća otkrića.",
"autoDiscovery": "Automatsko otkrivanje",
"enableAutomaticAdding": "Omogući automatsko dodavanje",
"autoaddRepeaters": "Automatski dodaj posrednike",
"autoaddRoomServers": "Automatski dodaj poslužitelje soba",
"autoaddSensors": "Automatski dodaj senzore",
"autoaddUsers": "Automatski dodaj korisnike",
"overwriteOldestWhenFull": "Prepiši najstarije kad je puno",
"storage": "Pohrana",
"dangerZone": "Opasna zona",
"profiles": "Profili",
"favourites": "Favoriti",
"sensors": "Senzori",
"others": "Ostali",
"gpsModule": "GPS modul",
"liveTraffic": "Promet uživo",
"repeatersMap": "Karta posrednika",
"spectrumScan": "Spektralno skeniranje",
"blePacketLogs": "BLE zapisi paketa",
"onlineTraceDatabase": "Baza mrežnih tragova",
"routePathByteSize": "Veličina putanje u bajtima",
"messageNotifications": "Obavijesti o porukama",
"sarAlerts": "SAR upozorenja",
"discoveryNotifications": "Obavijesti o otkrivanju",
"updateNotifications": "Obavijesti o ažuriranju",
"muteWhileAppIsOpen": "Utišaj dok je aplikacija otvorena",
"disableContacts": "Onemogući kontakte",
"enableSensorsTab": "Omogući karticu Senzori",
"enableProfiles": "Omogući profile",
"autoRouteRotation": "Automatsko rotiranje putanje",
"nearestRepeaterFallback": "Najbliži posrednik kao rezerva",
"deleteAllStoredMessageHistory": "Izbriši svu pohranjenu povijest poruka",
"messageFontSize": "Veličina fonta poruka",
"rotateMapWithHeading": "Rotiraj kartu prema smjeru",
"showMapDebugInfo": "Prikaži debug info karte",
"openMapInFullscreen": "Otvori kartu na cijelom zaslonu",
"showSarMarkersLabel": "Prikaži SAR oznake",
"displaySarMarkersOnTheMainMap": "Prikaži SAR oznake na glavnoj karti",
"showAllContactTrailsLabel": "Prikaži sve tragove kontakata",
"hideRepeatersOnMap": "Sakrij posrednike na karti",
"setMapScale": "Postavi mjerilo karte",
"customMapScaleSaved": "Prilagođeno mjerilo karte spremljeno",
"voiceBitrate": "Bitna brzina glasa",
"voiceCompressor": "Kompresor glasa",
"balancesQuietAndLoudSpeechLevels": "Izravnava tihe i glasne razine govora",
"voiceLimiter": "Ograničivač glasa",
"preventsClippingPeaksBeforeEncoding": "Sprječava rezanje vrhova prije kodiranja",
"micAutoGain": "Automatsko pojačanje mikrofona",
"letsTheRecorderAdjustInputLevel": "Dopušta snimaču prilagodbu razine ulaza",
"echoCancellation": "Poništavanje odjeka",
"noiseSuppression": "Potiskivanje šuma",
"trimSilenceInVoiceMessages": "Izreži tišinu u glasovnim porukama",
"compressor": "Kompresor",
"limiter": "Ograničivač",
"autoGain": "Automatsko pojačanje",
"echoCancel": "Odjek",
"noiseSuppress": "Šum",
"silenceTrim": "Tišina",
"maxImageSize": "Maksimalna veličina slike",
"imageCompression": "Kompresija slike",
"grayscale": "Sivine",
"ultraMode": "Ultra način",
"fastPrivateGpsUpdates": "Brza privatna GPS ažuriranja",
"movementThreshold": "Prag kretanja",
"fastGpsMovementThreshold": "Prag kretanja za brzi GPS",
"fastGpsActiveuseInterval": "Interval aktivnog korištenja brzog GPS-a",
"activeuseUpdateInterval": "Interval ažuriranja pri aktivnom korištenju",
"repeatNearbyTraffic": "Ponovi obližnji promet",
"relayThroughRepeatersAcrossTheMesh": "Proslijedi kroz posrednike kroz mrežu",
"nearbyOnlyWithoutRepeaterFlooding": "Samo obližnji, bez preplavljivanja posrednika",
"multihop": "Višeskočno",
"createProfile": "Stvori profil",
"renameProfile": "Preimenuj profil",
"newProfile": "Novi profil",
"manageProfiles": "Upravljaj profilima",
"enableProfilesToStartManagingThem": "Omogućite profile da biste ih počeli upravljati.",
"openMessage": "Otvori poruku",
"jumpToTheRelatedSarMessage": "Skoči na povezanu SAR poruku",
"removeSarMarker": "Ukloni SAR oznaku",
"pleaseSelectADestinationToSendSarMarker": "Odaberite odredište za slanje SAR oznake",
"sarMarkerBroadcastToPublicChannel": "SAR oznaka emitirana na javni kanal",
"sarMarkerSentToRoom": "SAR oznaka poslana u sobu",
"loadFromGallery": "Učitaj iz galerije",
"replaceImage": "Zamijeni sliku",
"selectFromGallery": "Odaberi iz galerije",
"team": "Tim",
"found": "Pronađeno",
"staging": "Sabirno mjesto",
"object": "Objekt",
"quiet": "Tiho",
"moderate": "Umjereno",
"busy": "Zauzeto",
"spectrumScanReturnedNoCandidateFrequencies": "Spektralno skeniranje nije pronašlo prikladne frekvencije",
"searchMessages": "Pretraži poruke",
"sendImageFromGallery": "Pošalji sliku iz galerije",
"takePhoto": "Snimi fotografiju",
"dmOnly": "Samo izravno",
"allMessages": "Sve poruke",
"sendToPublicChannel": "Pošalji na javni kanal?",
"selectMarkerTypeAndDestination": "Odaberite vrstu oznake i odredište",
"noDestinationsAvailableLabel": "Nema dostupnih odredišta",
"image": "Slika",
"format": "Format",
"dimensions": "Dimenzije",
"segments": "Segmenti",
"transfers": "Prijenosi",
"downloadedBy": "Preuzeo",
"saveDiscoverySettings": "Spremi postavke otkrivanja",
"savePublicInfo": "Spremi javne podatke",
"saveRadioSettings": "Spremi radijske postavke",
"savePath": "Spremi putanju",
"wipeDeviceData": "Obriši podatke uređaja",
"wipeDevice": "Obriši uređaj",
"destructiveDeviceActions": "Destruktivne radnje na uređaju.",
"chooseAPresetOrFinetuneCustomRadioSettings": "Odaberite predefiniranu postavku ili fino podesite radijske postavke.",
"chooseTheNameAndLocationThisDeviceShares": "Odaberite ime i lokaciju koju ovaj uređaj dijeli.",
"availableSpaceOnThisDevice": "Raspoloživi prostor na ovom uređaju.",
"used": "Korišteno",
"total": "Ukupno",
"renameValue": "Preimenuj vrijednost",
"customizeFields": "Prilagodi polja",
"livePreview": "Pregled uživo",
"refreshSchedule": "Raspored osvježavanja",
"noResponse": "Nema odgovora",
"refreshing": "Osvježavam",
"unavailable": "Nedostupno",
"pickARelayOrNodeToWatchInSensors": "Odaberite posrednika ili čvor za praćenje.",
"publicKeyLabel": "Javni ključ",
"alreadyInContacts": "Već u kontaktima",
"connectToADeviceBeforeAddingContacts": "Povežite se s uređajem prije dodavanja kontakata",
"fromContacts": "Iz kontakata",
"onlineOnly": "Samo povezani",
"inBoth": "U oba",
"source": "Izvor",
"manualRouteEdit": "Ručno uređivanje putanje",
"observedMeshRoute": "Opažena mrežna putanja",
"allMessagesCleared": "Sve poruke očišćene",
"onlineTraceDatabaseCleared": "Baza mrežnih tragova očišćena",
"packetLogsCleared": "Zapisi paketa očišćeni",
"hexDataCopiedToClipboard": "Hex podaci kopirani u međuspremnik",
"developerModeEnabled": "Razvojni način omogućen",
"developerModeDisabled": "Razvojni način onemogućen",
"clipboardIsEmpty": "Međuspremnik je prazan",
"contactImported": "Kontakt uvezen",
"contactLinkCopiedToClipboard": "Poveznica na kontakt kopirana u međuspremnik",
"failedToExportContact": "Izvoz kontakta nije uspio",
"noLogsToExport": "Nema zapisa za izvoz",
"exportAsCsv": "Izvezi kao CSV",
"exportAsText": "Izvezi kao tekst",
"receivedRfc3339": "Primljeno (RFC3339)",
"buildTime": "Vrijeme gradnje",
"downloadUrlNotAvailable": "URL za preuzimanje nije dostupan",
"cannotOpenDownloadUrl": "Ne mogu otvoriti URL za preuzimanje",
"updateCheckIsOnlyAvailableOnAndroid": "Provjera ažuriranja dostupna je samo na Androidu",
"youAreRunningTheLatestVersion": "Koristite najnoviju verziju",
"updateAvailableButDownloadUrlNotFound": "Ažuriranje dostupno, ali URL za preuzimanje nije pronađen",
"startTictactoe": "Pokreni Tic-Tac-Toe",
"tictactoeUnavailable": "Tic-Tac-Toe nije dostupan",
"tictactoeOpponentUnknown": "Tic-Tac-Toe: protivnik nepoznat",
"tictactoeWaitingForStart": "Tic-Tac-Toe: čekanje na početak",
"acceptsShareLinks": "Prihvaća dijeljene veze",
"supportsRawHex": "Podržava sirovi hex",
"clipboardfriendly": "Pogodno za međuspremnik",
"captured": "Zabilježeno",
"size": "Veličina",
"noCustomChannelsToClear": "Nema prilagođenih kanala za brisanje.",
"noDeviceContactsToClear": "Nema kontakata uređaja za brisanje."
}

View File

@@ -1641,5 +1641,252 @@
"contactFailedToClearRoute": "Impossibile cancellare il percorso: {error}",
"contactRouteCleared": "Percorso cancellato",
"contactRouteSet": "Percorso impostato: {route}",
"contactFailedToSetRoute": "Impossibile impostare il percorso: {error}"
"contactFailedToSetRoute": "Impossibile impostare il percorso: {error}",
"rssi": "RSSI",
"snr": "SNR",
"ackTimeout": "Timeout ACK",
"opcode": "Opcode",
"payload": "Payload",
"hops": "Hop",
"hashSize": "Dimensione hash",
"pathBytes": "Byte percorso",
"selectedPath": "Percorso selezionato",
"estimatedTx": "Trasmissione stimata",
"senderToReceipt": "Mittente a ricevuta",
"receivedCopies": "Copie ricevute",
"retryCause": "Causa del ritentativo",
"retryMode": "Modalità ritentativo",
"retryResult": "Risultato ritentativo",
"lastRetry": "Ultimo ritentativo",
"rxPackets": "Pacchetti RX",
"mesh": "Mesh",
"rate": "Velocità",
"window": "Finestra",
"posttxDelay": "Ritardo post-tx",
"bandpass": "Passa-banda",
"bandpassFilterVoice": "Filtro passa-banda voce",
"frequency": "Frequenza",
"australia": "Australia",
"australiaNarrow": "Australia (Stretto)",
"australiaQld": "Australia: QLD",
"australiaSaWa": "Australia: SA, WA",
"newZealand": "Nuova Zelanda",
"newZealandNarrow": "Nuova Zelanda (Stretto)",
"switzerland": "Svizzera",
"portugal433": "Portogallo 433",
"portugal868": "Portogallo 868",
"czechRepublicNarrow": "Repubblica Ceca (Stretto)",
"eu433mhzLongRange": "UE 433MHz (Lungo Raggio)",
"euukDeprecated": "UE/UK (Deprecato)",
"euukNarrow": "UE/UK (Stretto)",
"usacanadaRecommended": "USA/Canada (Consigliato)",
"vietnamDeprecated": "Vietnam (Deprecato)",
"vietnamNarrow": "Vietnam (Stretto)",
"active": "Attivo",
"addContact": "Aggiungi contatto",
"all": "Tutto",
"autoResolve": "Risolvi automaticamente",
"clearAllLabel": "Cancella tutto",
"clearRelays": "Cancella relay",
"clearFilters": "Cancella filtri",
"clearRoute": "Cancella percorso",
"clearMessages": "Cancella messaggi",
"clearScale": "Cancella scala",
"clearDiscoveries": "Cancella scoperte",
"clearOnlineTraceDatabase": "Cancella database tracce",
"clearAllChannels": "Cancella tutti i canali",
"clearAllContacts": "Cancella tutti i contatti",
"clearChannels": "Cancella canali",
"clearContacts": "Cancella contatti",
"clearPathOnMaxRetry": "Cancella percorso al max ritentativo",
"create": "Crea",
"custom": "Personalizzato",
"defaultValue": "Predefinito",
"duplicate": "Duplica",
"editName": "Modifica nome",
"open": "Apri",
"paste": "Incolla",
"preview": "Anteprima",
"remove": "Rimuovi",
"rename": "Rinomina",
"resolveAll": "Risolvi tutto",
"send": "Invia",
"sendAnyway": "Invia comunque",
"share": "Condividi",
"shareContact": "Condividi contatto",
"trace": "Traccia",
"use": "Usa",
"useSelectedFrequency": "Usa frequenza selezionata",
"discovery": "Scoperta",
"discoverRepeaters": "Scopri ripetitori",
"discoverSensors": "Scopri sensori",
"repeaterDiscoverySent": "Scoperta ripetitori inviata",
"sensorDiscoverySent": "Scoperta sensori inviata",
"clearedPendingDiscoveries": "Scoperte in attesa cancellate.",
"autoDiscovery": "Scoperta automatica",
"enableAutomaticAdding": "Abilita aggiunta automatica",
"autoaddRepeaters": "Aggiungi ripetitori automaticamente",
"autoaddRoomServers": "Aggiungi server stanze automaticamente",
"autoaddSensors": "Aggiungi sensori automaticamente",
"autoaddUsers": "Aggiungi utenti automaticamente",
"overwriteOldestWhenFull": "Sovrascrivi i più vecchi quando pieno",
"storage": "Archiviazione",
"dangerZone": "Zona pericolosa",
"profiles": "Profili",
"favourites": "Preferiti",
"sensors": "Sensori",
"others": "Altri",
"gpsModule": "Modulo GPS",
"liveTraffic": "Traffico in tempo reale",
"repeatersMap": "Mappa ripetitori",
"spectrumScan": "Scansione spettro",
"blePacketLogs": "Log pacchetti BLE",
"onlineTraceDatabase": "Database tracce",
"routePathByteSize": "Dimensione percorso in byte",
"messageNotifications": "Notifiche messaggi",
"sarAlerts": "Avvisi SAR",
"discoveryNotifications": "Notifiche scoperte",
"updateNotifications": "Notifiche aggiornamenti",
"muteWhileAppIsOpen": "Silenzia con l'app aperta",
"disableContacts": "Disabilita contatti",
"enableSensorsTab": "Abilita scheda Sensori",
"enableProfiles": "Abilita profili",
"autoRouteRotation": "Rotazione automatica percorso",
"nearestRepeaterFallback": "Ripetitore più vicino come fallback",
"deleteAllStoredMessageHistory": "Elimina tutta la cronologia messaggi",
"messageFontSize": "Dimensione carattere messaggi",
"rotateMapWithHeading": "Ruota mappa con direzione",
"showMapDebugInfo": "Mostra info debug mappa",
"openMapInFullscreen": "Apri mappa a schermo intero",
"showSarMarkersLabel": "Mostra marcatori SAR",
"displaySarMarkersOnTheMainMap": "Mostra marcatori SAR sulla mappa principale",
"showAllContactTrailsLabel": "Mostra tutti i percorsi contatti",
"hideRepeatersOnMap": "Nascondi ripetitori sulla mappa",
"setMapScale": "Imposta scala mappa",
"customMapScaleSaved": "Scala mappa personalizzata salvata",
"voiceBitrate": "Bitrate voce",
"voiceCompressor": "Compressore voce",
"balancesQuietAndLoudSpeechLevels": "Bilancia i livelli di voce bassi e alti",
"voiceLimiter": "Limitatore voce",
"preventsClippingPeaksBeforeEncoding": "Previene il clipping prima della codifica",
"micAutoGain": "Guadagno automatico microfono",
"letsTheRecorderAdjustInputLevel": "Permette al registratore di regolare il livello",
"echoCancellation": "Cancellazione eco",
"noiseSuppression": "Soppressione rumore",
"trimSilenceInVoiceMessages": "Taglia silenzio nei messaggi vocali",
"compressor": "Compressore",
"limiter": "Limitatore",
"autoGain": "Guadagno automatico",
"echoCancel": "Eco",
"noiseSuppress": "Rumore",
"silenceTrim": "Silenzio",
"maxImageSize": "Dimensione massima immagine",
"imageCompression": "Compressione immagine",
"grayscale": "Scala di grigi",
"ultraMode": "Modalità ultra",
"fastPrivateGpsUpdates": "Aggiornamenti GPS privati veloci",
"movementThreshold": "Soglia di movimento",
"fastGpsMovementThreshold": "Soglia movimento GPS veloce",
"fastGpsActiveuseInterval": "Intervallo uso attivo GPS veloce",
"activeuseUpdateInterval": "Intervallo aggiornamento uso attivo",
"repeatNearbyTraffic": "Ripeti traffico vicino",
"relayThroughRepeatersAcrossTheMesh": "Inoltra tramite ripetitori nella rete",
"nearbyOnlyWithoutRepeaterFlooding": "Solo vicini, senza flood dei ripetitori",
"multihop": "Multi-hop",
"createProfile": "Crea profilo",
"renameProfile": "Rinomina profilo",
"newProfile": "Nuovo profilo",
"manageProfiles": "Gestisci profili",
"enableProfilesToStartManagingThem": "Abilita i profili per iniziare a gestirli.",
"openMessage": "Apri messaggio",
"jumpToTheRelatedSarMessage": "Vai al messaggio SAR correlato",
"removeSarMarker": "Rimuovi marcatore SAR",
"pleaseSelectADestinationToSendSarMarker": "Seleziona una destinazione per inviare il marcatore SAR",
"sarMarkerBroadcastToPublicChannel": "Marcatore SAR trasmesso al canale pubblico",
"sarMarkerSentToRoom": "Marcatore SAR inviato alla stanza",
"loadFromGallery": "Carica dalla galleria",
"replaceImage": "Sostituisci immagine",
"selectFromGallery": "Seleziona dalla galleria",
"team": "Squadra",
"found": "Trovato",
"staging": "Area di raccolta",
"object": "Oggetto",
"quiet": "Silenzioso",
"moderate": "Moderato",
"busy": "Occupato",
"spectrumScanReturnedNoCandidateFrequencies": "La scansione spettro non ha trovato frequenze candidate",
"searchMessages": "Cerca messaggi",
"sendImageFromGallery": "Invia immagine dalla galleria",
"takePhoto": "Scatta foto",
"dmOnly": "Solo messaggio diretto",
"allMessages": "Tutti i messaggi",
"sendToPublicChannel": "Inviare al canale pubblico?",
"selectMarkerTypeAndDestination": "Seleziona tipo marcatore e destinazione",
"noDestinationsAvailableLabel": "Nessuna destinazione disponibile",
"image": "Immagine",
"format": "Formato",
"dimensions": "Dimensioni",
"segments": "Segmenti",
"transfers": "Trasferimenti",
"downloadedBy": "Scaricato da",
"saveDiscoverySettings": "Salva impostazioni scoperta",
"savePublicInfo": "Salva info pubbliche",
"saveRadioSettings": "Salva impostazioni radio",
"savePath": "Salva percorso",
"wipeDeviceData": "Cancella dati dispositivo",
"wipeDevice": "Cancella dispositivo",
"destructiveDeviceActions": "Azioni distruttive del dispositivo.",
"chooseAPresetOrFinetuneCustomRadioSettings": "Scegli un preset o personalizza le impostazioni radio.",
"chooseTheNameAndLocationThisDeviceShares": "Scegli il nome e la posizione condivisi da questo dispositivo.",
"availableSpaceOnThisDevice": "Spazio disponibile su questo dispositivo.",
"used": "Usato",
"total": "Totale",
"renameValue": "Rinomina valore",
"customizeFields": "Personalizza campi",
"livePreview": "Anteprima dal vivo",
"refreshSchedule": "Programma aggiornamento",
"noResponse": "Nessuna risposta",
"refreshing": "Aggiornamento",
"unavailable": "Non disponibile",
"pickARelayOrNodeToWatchInSensors": "Scegli un relay o nodo da monitorare.",
"publicKeyLabel": "Chiave pubblica",
"alreadyInContacts": "Già nei contatti",
"connectToADeviceBeforeAddingContacts": "Connettiti a un dispositivo prima di aggiungere contatti",
"fromContacts": "Dai contatti",
"onlineOnly": "Solo online",
"inBoth": "In entrambi",
"source": "Origine",
"manualRouteEdit": "Modifica manuale percorso",
"observedMeshRoute": "Percorso mesh osservato",
"allMessagesCleared": "Tutti i messaggi cancellati",
"onlineTraceDatabaseCleared": "Database tracce cancellata",
"packetLogsCleared": "Log pacchetti cancellati",
"hexDataCopiedToClipboard": "Dati hex copiati negli appunti",
"developerModeEnabled": "Modalità sviluppatore attivata",
"developerModeDisabled": "Modalità sviluppatore disattivata",
"clipboardIsEmpty": "Gli appunti sono vuoti",
"contactImported": "Contatto importato",
"contactLinkCopiedToClipboard": "Link contatto copiato negli appunti",
"failedToExportContact": "Esportazione contatto fallita",
"noLogsToExport": "Nessun log da esportare",
"exportAsCsv": "Esporta come CSV",
"exportAsText": "Esporta come testo",
"receivedRfc3339": "Ricevuto (RFC3339)",
"buildTime": "Ora build",
"downloadUrlNotAvailable": "URL di download non disponibile",
"cannotOpenDownloadUrl": "Impossibile aprire URL di download",
"updateCheckIsOnlyAvailableOnAndroid": "Il controllo aggiornamenti è disponibile solo su Android",
"youAreRunningTheLatestVersion": "Stai utilizzando l'ultima versione",
"updateAvailableButDownloadUrlNotFound": "Aggiornamento disponibile ma URL di download non trovato",
"startTictactoe": "Avvia Tic-Tac-Toe",
"tictactoeUnavailable": "Tic-Tac-Toe non disponibile",
"tictactoeOpponentUnknown": "Tic-Tac-Toe: avversario sconosciuto",
"tictactoeWaitingForStart": "Tic-Tac-Toe: in attesa dell'inizio",
"acceptsShareLinks": "Accetta link condivisi",
"supportsRawHex": "Supporta hex grezzo",
"clipboardfriendly": "Compatibile con appunti",
"captured": "Catturato",
"size": "Dimensione",
"noCustomChannelsToClear": "Nessun canale personalizzato da cancellare.",
"noDeviceContactsToClear": "Nessun contatto dispositivo da cancellare."
}

File diff suppressed because it is too large Load Diff

View File

@@ -1929,4 +1929,773 @@ class AppLocalizationsDe extends AppLocalizations {
String contactFailedToSetRoute(String error) {
return 'Pfad konnte nicht gesetzt werden: $error';
}
@override
String get rssi => 'RSSI';
@override
String get snr => 'SNR';
@override
String get ackTimeout => 'ACK-Zeitüberschreitung';
@override
String get opcode => 'Opcode';
@override
String get payload => 'Nutzlast';
@override
String get hops => 'Hops';
@override
String get hashSize => 'Hash-Größe';
@override
String get pathBytes => 'Pfad-Bytes';
@override
String get selectedPath => 'Ausgewählter Pfad';
@override
String get estimatedTx => 'Geschätzte Sendung';
@override
String get senderToReceipt => 'Sender bis Empfang';
@override
String get receivedCopies => 'Empfangene Kopien';
@override
String get retryCause => 'Wiederholungsursache';
@override
String get retryMode => 'Wiederholungsmodus';
@override
String get retryResult => 'Wiederholungsergebnis';
@override
String get lastRetry => 'Letzter Versuch';
@override
String get rxPackets => 'RX-Pakete';
@override
String get mesh => 'Mesh';
@override
String get rate => 'Rate';
@override
String get window => 'Fenster';
@override
String get posttxDelay => 'Sendeverzögerung';
@override
String get bandpass => 'Bandpass';
@override
String get bandpassFilterVoice => 'Bandpassfilter Sprache';
@override
String get frequency => 'Frequenz';
@override
String get australia => 'Australien';
@override
String get australiaNarrow => 'Australien (Schmal)';
@override
String get australiaQld => 'Australien: QLD';
@override
String get australiaSaWa => 'Australien: SA, WA';
@override
String get newZealand => 'Neuseeland';
@override
String get newZealandNarrow => 'Neuseeland (Schmal)';
@override
String get switzerland => 'Schweiz';
@override
String get portugal433 => 'Portugal 433';
@override
String get portugal868 => 'Portugal 868';
@override
String get czechRepublicNarrow => 'Tschechien (Schmal)';
@override
String get eu433mhzLongRange => 'EU 433MHz (Langstrecke)';
@override
String get euukDeprecated => 'EU/UK (Veraltet)';
@override
String get euukNarrow => 'EU/UK (Schmal)';
@override
String get usacanadaRecommended => 'USA/Kanada (Empfohlen)';
@override
String get vietnamDeprecated => 'Vietnam (Veraltet)';
@override
String get vietnamNarrow => 'Vietnam (Schmal)';
@override
String get active => 'Aktiv';
@override
String get addContact => 'Kontakt hinzufügen';
@override
String get all => 'Alle';
@override
String get autoResolve => 'Automatisch auflösen';
@override
String get clearAllLabel => 'Alle löschen';
@override
String get clearRelays => 'Relais löschen';
@override
String get clearFilters => 'Filter löschen';
@override
String get clearRoute => 'Route löschen';
@override
String get clearMessages => 'Nachrichten löschen';
@override
String get clearScale => 'Maßstab löschen';
@override
String get clearDiscoveries => 'Entdeckungen löschen';
@override
String get clearOnlineTraceDatabase => 'Online-Trace-Datenbank löschen';
@override
String get clearAllChannels => 'Alle Kanäle löschen';
@override
String get clearAllContacts => 'Alle Kontakte löschen';
@override
String get clearChannels => 'Kanäle löschen';
@override
String get clearContacts => 'Kontakte löschen';
@override
String get clearPathOnMaxRetry => 'Pfad bei max. Wiederholung löschen';
@override
String get create => 'Erstellen';
@override
String get custom => 'Benutzerdefiniert';
@override
String get defaultValue => 'Standard';
@override
String get duplicate => 'Duplizieren';
@override
String get editName => 'Name bearbeiten';
@override
String get open => 'Öffnen';
@override
String get paste => 'Einfügen';
@override
String get preview => 'Vorschau';
@override
String get remove => 'Entfernen';
@override
String get rename => 'Umbenennen';
@override
String get resolveAll => 'Alle auflösen';
@override
String get send => 'Senden';
@override
String get sendAnyway => 'Trotzdem senden';
@override
String get share => 'Teilen';
@override
String get shareContact => 'Kontakt teilen';
@override
String get trace => 'Trace';
@override
String get use => 'Verwenden';
@override
String get useSelectedFrequency => 'Ausgewählte Frequenz verwenden';
@override
String get discovery => 'Erkennung';
@override
String get discoverRepeaters => 'Repeater entdecken';
@override
String get discoverSensors => 'Sensoren entdecken';
@override
String get repeaterDiscoverySent => 'Repeater-Erkennung gesendet';
@override
String get sensorDiscoverySent => 'Sensor-Erkennung gesendet';
@override
String get clearedPendingDiscoveries => 'Ausstehende Entdeckungen gelöscht.';
@override
String get autoDiscovery => 'Automatische Erkennung';
@override
String get enableAutomaticAdding => 'Automatisches Hinzufügen aktivieren';
@override
String get autoaddRepeaters => 'Repeater automatisch hinzufügen';
@override
String get autoaddRoomServers => 'Raumserver automatisch hinzufügen';
@override
String get autoaddSensors => 'Sensoren automatisch hinzufügen';
@override
String get autoaddUsers => 'Benutzer automatisch hinzufügen';
@override
String get overwriteOldestWhenFull =>
'Älteste bei vollem Speicher überschreiben';
@override
String get storage => 'Speicher';
@override
String get dangerZone => 'Gefahrenbereich';
@override
String get profiles => 'Profile';
@override
String get favourites => 'Favoriten';
@override
String get sensors => 'Sensoren';
@override
String get others => 'Andere';
@override
String get gpsModule => 'GPS-Modul';
@override
String get liveTraffic => 'Live-Verkehr';
@override
String get repeatersMap => 'Repeater-Karte';
@override
String get spectrumScan => 'Spektrum-Scan';
@override
String get blePacketLogs => 'BLE-Paketprotokolle';
@override
String get onlineTraceDatabase => 'Online-Trace-Datenbank';
@override
String get routePathByteSize => 'Pfad-Bytegröße';
@override
String get messageNotifications => 'Nachrichtenbenachrichtigungen';
@override
String get sarAlerts => 'SAR-Alarme';
@override
String get discoveryNotifications => 'Erkennungsbenachrichtigungen';
@override
String get updateNotifications => 'Updatebenachrichtigungen';
@override
String get muteWhileAppIsOpen => 'Stumm bei geöffneter App';
@override
String get disableContacts => 'Kontakte deaktivieren';
@override
String get enableSensorsTab => 'Sensoren-Tab aktivieren';
@override
String get enableProfiles => 'Profile aktivieren';
@override
String get autoRouteRotation => 'Automatische Routenrotation';
@override
String get nearestRepeaterFallback => 'Nächster Repeater als Fallback';
@override
String get deleteAllStoredMessageHistory =>
'Gesamten Nachrichtenverlauf löschen';
@override
String get messageFontSize => 'Nachrichtenschriftgröße';
@override
String get rotateMapWithHeading => 'Karte mit Richtung drehen';
@override
String get showMapDebugInfo => 'Karten-Debug-Info anzeigen';
@override
String get openMapInFullscreen => 'Karte im Vollbild öffnen';
@override
String get showSarMarkersLabel => 'SAR-Markierungen anzeigen';
@override
String get displaySarMarkersOnTheMainMap =>
'SAR-Markierungen auf der Hauptkarte anzeigen';
@override
String get showAllContactTrailsLabel => 'Alle Kontaktpfade anzeigen';
@override
String get hideRepeatersOnMap => 'Repeater auf Karte ausblenden';
@override
String get setMapScale => 'Kartenmaßstab einstellen';
@override
String get customMapScaleSaved =>
'Benutzerdefinierter Kartenmaßstab gespeichert';
@override
String get voiceBitrate => 'Sprach-Bitrate';
@override
String get voiceCompressor => 'Sprachkompressor';
@override
String get balancesQuietAndLoudSpeechLevels =>
'Gleicht leise und laute Sprache aus';
@override
String get voiceLimiter => 'Sprach-Limiter';
@override
String get preventsClippingPeaksBeforeEncoding =>
'Verhindert Clipping-Spitzen vor der Kodierung';
@override
String get micAutoGain => 'Mikrofon-Automatik';
@override
String get letsTheRecorderAdjustInputLevel =>
'Lässt den Rekorder den Eingangspegel anpassen';
@override
String get echoCancellation => 'Echounterdrückung';
@override
String get noiseSuppression => 'Rauschunterdrückung';
@override
String get trimSilenceInVoiceMessages =>
'Stille in Sprachnachrichten trimmen';
@override
String get compressor => 'Kompressor';
@override
String get limiter => 'Limiter';
@override
String get autoGain => 'Automatische Verstärkung';
@override
String get echoCancel => 'Echo';
@override
String get noiseSuppress => 'Rauschen';
@override
String get silenceTrim => 'Stille';
@override
String get maxImageSize => 'Maximale Bildgröße';
@override
String get imageCompression => 'Bildkomprimierung';
@override
String get grayscale => 'Graustufen';
@override
String get ultraMode => 'Ultra-Modus';
@override
String get fastPrivateGpsUpdates => 'Schnelle private GPS-Updates';
@override
String get movementThreshold => 'Bewegungsschwelle';
@override
String get fastGpsMovementThreshold => 'Schneller GPS-Bewegungsschwellenwert';
@override
String get fastGpsActiveuseInterval =>
'Schnelles GPS aktive Nutzung Intervall';
@override
String get activeuseUpdateInterval => 'Aktive Nutzung Updateintervall';
@override
String get repeatNearbyTraffic => 'Nahverkehr wiederholen';
@override
String get relayThroughRepeatersAcrossTheMesh =>
'Über Repeater im Mesh weiterleiten';
@override
String get nearbyOnlyWithoutRepeaterFlooding =>
'Nur in der Nähe, ohne Repeater-Flooding';
@override
String get multihop => 'Multi-Hop';
@override
String get createProfile => 'Profil erstellen';
@override
String get renameProfile => 'Profil umbenennen';
@override
String get newProfile => 'Neues Profil';
@override
String get manageProfiles => 'Profile verwalten';
@override
String get enableProfilesToStartManagingThem =>
'Aktivieren Sie Profile, um sie zu verwalten.';
@override
String get openMessage => 'Nachricht öffnen';
@override
String get jumpToTheRelatedSarMessage =>
'Zur zugehörigen SAR-Nachricht springen';
@override
String get removeSarMarker => 'SAR-Markierung entfernen';
@override
String get pleaseSelectADestinationToSendSarMarker =>
'Bitte wählen Sie ein Ziel zum Senden der SAR-Markierung';
@override
String get sarMarkerBroadcastToPublicChannel =>
'SAR-Markierung an öffentlichen Kanal gesendet';
@override
String get sarMarkerSentToRoom => 'SAR-Markierung an Raum gesendet';
@override
String get loadFromGallery => 'Aus Galerie laden';
@override
String get replaceImage => 'Bild ersetzen';
@override
String get selectFromGallery => 'Aus Galerie auswählen';
@override
String get team => 'Team';
@override
String get found => 'Gefunden';
@override
String get staging => 'Sammelpunkt';
@override
String get object => 'Objekt';
@override
String get quiet => 'Ruhig';
@override
String get moderate => 'Mäßig';
@override
String get busy => 'Beschäftigt';
@override
String get spectrumScanReturnedNoCandidateFrequencies =>
'Spektrum-Scan hat keine Kandidatenfrequenzen gefunden';
@override
String get searchMessages => 'Nachrichten suchen';
@override
String get sendImageFromGallery => 'Bild aus Galerie senden';
@override
String get takePhoto => 'Foto aufnehmen';
@override
String get dmOnly => 'Nur Direktnachricht';
@override
String get allMessages => 'Alle Nachrichten';
@override
String get sendToPublicChannel => 'An öffentlichen Kanal senden?';
@override
String get selectMarkerTypeAndDestination =>
'Markierungstyp und Ziel auswählen';
@override
String get noDestinationsAvailableLabel => 'Keine Ziele verfügbar';
@override
String get image => 'Bild';
@override
String get format => 'Format';
@override
String get dimensions => 'Abmessungen';
@override
String get segments => 'Segmente';
@override
String get transfers => 'Übertragungen';
@override
String get downloadedBy => 'Heruntergeladen von';
@override
String get saveDiscoverySettings => 'Erkennungseinstellungen speichern';
@override
String get savePublicInfo => 'Öffentliche Info speichern';
@override
String get saveRadioSettings => 'Funkeinstellungen speichern';
@override
String get savePath => 'Pfad speichern';
@override
String get wipeDeviceData => 'Gerätedaten löschen';
@override
String get wipeDevice => 'Gerät löschen';
@override
String get destructiveDeviceActions => 'Destruktive Geräteaktionen.';
@override
String get chooseAPresetOrFinetuneCustomRadioSettings =>
'Wählen Sie eine Voreinstellung oder passen Sie die Funkeinstellungen an.';
@override
String get chooseTheNameAndLocationThisDeviceShares =>
'Wählen Sie den Namen und Standort, den dieses Gerät teilt.';
@override
String get availableSpaceOnThisDevice =>
'Verfügbarer Speicherplatz auf diesem Gerät.';
@override
String get used => 'Belegt';
@override
String get total => 'Gesamt';
@override
String get renameValue => 'Wert umbenennen';
@override
String get customizeFields => 'Felder anpassen';
@override
String get livePreview => 'Live-Vorschau';
@override
String get refreshSchedule => 'Aktualisierungsplan';
@override
String get noResponse => 'Keine Antwort';
@override
String get refreshing => 'Wird aktualisiert';
@override
String get unavailable => 'Nicht verfügbar';
@override
String get pickARelayOrNodeToWatchInSensors =>
'Wählen Sie einen Relay oder Knoten zur Beobachtung.';
@override
String get publicKeyLabel => 'Öffentlicher Schlüssel';
@override
String get alreadyInContacts => 'Bereits in Kontakten';
@override
String get connectToADeviceBeforeAddingContacts =>
'Verbinden Sie sich mit einem Gerät, bevor Sie Kontakte hinzufügen';
@override
String get fromContacts => 'Aus Kontakten';
@override
String get onlineOnly => 'Nur online';
@override
String get inBoth => 'In beiden';
@override
String get source => 'Quelle';
@override
String get manualRouteEdit => 'Manuelle Routenbearbeitung';
@override
String get observedMeshRoute => 'Beobachtete Mesh-Route';
@override
String get allMessagesCleared => 'Alle Nachrichten gelöscht';
@override
String get onlineTraceDatabaseCleared => 'Online-Trace-Datenbank gelöscht';
@override
String get packetLogsCleared => 'Paketprotokolle gelöscht';
@override
String get hexDataCopiedToClipboard =>
'Hex-Daten in die Zwischenablage kopiert';
@override
String get developerModeEnabled => 'Entwicklermodus aktiviert';
@override
String get developerModeDisabled => 'Entwicklermodus deaktiviert';
@override
String get clipboardIsEmpty => 'Zwischenablage ist leer';
@override
String get contactImported => 'Kontakt importiert';
@override
String get contactLinkCopiedToClipboard =>
'Kontaktlink in Zwischenablage kopiert';
@override
String get failedToExportContact => 'Kontaktexport fehlgeschlagen';
@override
String get noLogsToExport => 'Keine Protokolle zum Exportieren';
@override
String get exportAsCsv => 'Als CSV exportieren';
@override
String get exportAsText => 'Als Text exportieren';
@override
String get receivedRfc3339 => 'Empfangen (RFC3339)';
@override
String get buildTime => 'Build-Zeit';
@override
String get downloadUrlNotAvailable => 'Download-URL nicht verfügbar';
@override
String get cannotOpenDownloadUrl => 'Download-URL kann nicht geöffnet werden';
@override
String get updateCheckIsOnlyAvailableOnAndroid =>
'Update-Prüfung nur auf Android verfügbar';
@override
String get youAreRunningTheLatestVersion =>
'Sie verwenden die neueste Version';
@override
String get updateAvailableButDownloadUrlNotFound =>
'Update verfügbar, aber Download-URL nicht gefunden';
@override
String get startTictactoe => 'Tic-Tac-Toe starten';
@override
String get tictactoeUnavailable => 'Tic-Tac-Toe nicht verfügbar';
@override
String get tictactoeOpponentUnknown => 'Tic-Tac-Toe: Gegner unbekannt';
@override
String get tictactoeWaitingForStart => 'Tic-Tac-Toe: Warten auf Start';
@override
String get acceptsShareLinks => 'Akzeptiert freigegebene Links';
@override
String get supportsRawHex => 'Unterstützt rohes Hex';
@override
String get clipboardfriendly => 'Zwischenablage-freundlich';
@override
String get captured => 'Erfasst';
@override
String get size => 'Größe';
@override
String get noCustomChannelsToClear =>
'Keine benutzerdefinierten Kanäle zum Löschen.';
@override
String get noDeviceContactsToClear => 'Keine Gerätekontakte zum Löschen.';
}

View File

@@ -1936,4 +1936,768 @@ class AppLocalizationsEl extends AppLocalizations {
String contactFailedToSetRoute(String error) {
return 'Αποτυχία ορισμού διαδρομής: $error';
}
@override
String get rssi => 'RSSI';
@override
String get snr => 'SNR';
@override
String get ackTimeout => 'Λήξη χρόνου ACK';
@override
String get opcode => 'Opcode';
@override
String get payload => 'Ωφέλιμο φορτίο';
@override
String get hops => 'Αναπηδήσεις';
@override
String get hashSize => 'Μέγεθος hash';
@override
String get pathBytes => 'Bytes διαδρομής';
@override
String get selectedPath => 'Επιλεγμένη διαδρομή';
@override
String get estimatedTx => 'Εκτιμώμενη εκπομπή';
@override
String get senderToReceipt => 'Αποστολέας σε απόδειξη';
@override
String get receivedCopies => 'Ληφθέντα αντίγραφα';
@override
String get retryCause => 'Αιτία επανάληψης';
@override
String get retryMode => 'Λειτουργία επανάληψης';
@override
String get retryResult => 'Αποτέλεσμα επανάληψης';
@override
String get lastRetry => 'Τελευταία επανάληψη';
@override
String get rxPackets => 'Πακέτα RX';
@override
String get mesh => 'Mesh';
@override
String get rate => 'Ρυθμός';
@override
String get window => 'Παράθυρο';
@override
String get posttxDelay => 'Καθυστέρηση μετά-tx';
@override
String get bandpass => 'Ζωνοπερατό';
@override
String get bandpassFilterVoice => 'Ζωνοπερατό φίλτρο φωνής';
@override
String get frequency => 'Συχνότητα';
@override
String get australia => 'Αυστραλία';
@override
String get australiaNarrow => 'Αυστραλία (Στενό)';
@override
String get australiaQld => 'Αυστραλία: QLD';
@override
String get australiaSaWa => 'Αυστραλία: SA, WA';
@override
String get newZealand => 'Νέα Ζηλανδία';
@override
String get newZealandNarrow => 'Νέα Ζηλανδία (Στενό)';
@override
String get switzerland => 'Ελβετία';
@override
String get portugal433 => 'Πορτογαλία 433';
@override
String get portugal868 => 'Πορτογαλία 868';
@override
String get czechRepublicNarrow => 'Τσεχία (Στενό)';
@override
String get eu433mhzLongRange => 'ΕΕ 433MHz (Μεγάλη Εμβέλεια)';
@override
String get euukDeprecated => 'ΕΕ/ΗΒ (Παρωχημένο)';
@override
String get euukNarrow => 'ΕΕ/ΗΒ (Στενό)';
@override
String get usacanadaRecommended => 'ΗΠΑ/Καναδάς (Προτεινόμενο)';
@override
String get vietnamDeprecated => 'Βιετνάμ (Παρωχημένο)';
@override
String get vietnamNarrow => 'Βιετνάμ (Στενό)';
@override
String get active => 'Ενεργό';
@override
String get addContact => 'Προσθήκη επαφής';
@override
String get all => 'Όλα';
@override
String get autoResolve => 'Αυτόματη επίλυση';
@override
String get clearAllLabel => 'Εκκαθάριση όλων';
@override
String get clearRelays => 'Εκκαθάριση αναμεταδοτών';
@override
String get clearFilters => 'Εκκαθάριση φίλτρων';
@override
String get clearRoute => 'Εκκαθάριση διαδρομής';
@override
String get clearMessages => 'Εκκαθάριση μηνυμάτων';
@override
String get clearScale => 'Εκκαθάριση κλίμακας';
@override
String get clearDiscoveries => 'Εκκαθάριση ανακαλύψεων';
@override
String get clearOnlineTraceDatabase => 'Εκκαθάριση βάσης ιχνών';
@override
String get clearAllChannels => 'Εκκαθάριση όλων των καναλιών';
@override
String get clearAllContacts => 'Εκκαθάριση όλων των επαφών';
@override
String get clearChannels => 'Εκκαθάριση καναλιών';
@override
String get clearContacts => 'Εκκαθάριση επαφών';
@override
String get clearPathOnMaxRetry => 'Εκκαθάριση μονοπατιού στο μέγιστο';
@override
String get create => 'Δημιουργία';
@override
String get custom => 'Προσαρμοσμένο';
@override
String get defaultValue => 'Προεπιλογή';
@override
String get duplicate => 'Αντιγραφή';
@override
String get editName => 'Επεξεργασία ονόματος';
@override
String get open => 'Άνοιγμα';
@override
String get paste => 'Επικόλληση';
@override
String get preview => 'Προεπισκόπηση';
@override
String get remove => 'Αφαίρεση';
@override
String get rename => 'Μετονομασία';
@override
String get resolveAll => 'Επίλυση όλων';
@override
String get send => 'Αποστολή';
@override
String get sendAnyway => 'Αποστολή ούτως ή άλλως';
@override
String get share => 'Κοινοποίηση';
@override
String get shareContact => 'Κοινοποίηση επαφής';
@override
String get trace => 'Ίχνος';
@override
String get use => 'Χρήση';
@override
String get useSelectedFrequency => 'Χρήση επιλεγμένης συχνότητας';
@override
String get discovery => 'Ανακάλυψη';
@override
String get discoverRepeaters => 'Ανακάλυψη αναμεταδοτών';
@override
String get discoverSensors => 'Ανακάλυψη αισθητήρων';
@override
String get repeaterDiscoverySent => 'Αποστολή ανακάλυψης αναμεταδοτών';
@override
String get sensorDiscoverySent => 'Αποστολή ανακάλυψης αισθητήρων';
@override
String get clearedPendingDiscoveries => 'Εκκαθάριση εκκρεμών ανακαλύψεων.';
@override
String get autoDiscovery => 'Αυτόματη ανακάλυψη';
@override
String get enableAutomaticAdding => 'Ενεργοποίηση αυτόματης προσθήκης';
@override
String get autoaddRepeaters => 'Αυτόματη προσθήκη αναμεταδοτών';
@override
String get autoaddRoomServers => 'Αυτόματη προσθήκη διακομιστών δωματίου';
@override
String get autoaddSensors => 'Αυτόματη προσθήκη αισθητήρων';
@override
String get autoaddUsers => 'Αυτόματη προσθήκη χρηστών';
@override
String get overwriteOldestWhenFull =>
'Αντικατάσταση παλαιότερων όταν γεμίσει';
@override
String get storage => 'Αποθήκευση';
@override
String get dangerZone => 'Ζώνη κινδύνου';
@override
String get profiles => 'Προφίλ';
@override
String get favourites => 'Αγαπημένα';
@override
String get sensors => 'Αισθητήρες';
@override
String get others => 'Άλλοι';
@override
String get gpsModule => 'Μονάδα GPS';
@override
String get liveTraffic => 'Ζωντανή κίνηση';
@override
String get repeatersMap => 'Χάρτης αναμεταδοτών';
@override
String get spectrumScan => 'Σάρωση φάσματος';
@override
String get blePacketLogs => 'Αρχεία πακέτων BLE';
@override
String get onlineTraceDatabase => 'Βάση δεδομένων ιχνών';
@override
String get routePathByteSize => 'Μέγεθος διαδρομής σε bytes';
@override
String get messageNotifications => 'Ειδοποιήσεις μηνυμάτων';
@override
String get sarAlerts => 'Ειδοποιήσεις SAR';
@override
String get discoveryNotifications => 'Ειδοποιήσεις ανακάλυψης';
@override
String get updateNotifications => 'Ειδοποιήσεις ενημερώσεων';
@override
String get muteWhileAppIsOpen => 'Σίγαση με ανοιχτή εφαρμογή';
@override
String get disableContacts => 'Απενεργοποίηση επαφών';
@override
String get enableSensorsTab => 'Ενεργοποίηση καρτέλας Αισθητήρων';
@override
String get enableProfiles => 'Ενεργοποίηση προφίλ';
@override
String get autoRouteRotation => 'Αυτόματη εναλλαγή διαδρομής';
@override
String get nearestRepeaterFallback => 'Πλησιέστερος αναμεταδότης ως εφεδρεία';
@override
String get deleteAllStoredMessageHistory => 'Διαγραφή όλου του ιστορικού';
@override
String get messageFontSize => 'Μέγεθος γραμματοσειράς μηνυμάτων';
@override
String get rotateMapWithHeading => 'Περιστροφή χάρτη με κατεύθυνση';
@override
String get showMapDebugInfo => 'Εμφάνιση πληροφοριών αποσφαλμάτωσης';
@override
String get openMapInFullscreen => 'Άνοιγμα χάρτη σε πλήρη οθόνη';
@override
String get showSarMarkersLabel => 'Εμφάνιση δεικτών SAR';
@override
String get displaySarMarkersOnTheMainMap =>
'Εμφάνιση δεικτών SAR στον κύριο χάρτη';
@override
String get showAllContactTrailsLabel => 'Εμφάνιση όλων των ιχνών επαφών';
@override
String get hideRepeatersOnMap => 'Απόκρυψη αναμεταδοτών στον χάρτη';
@override
String get setMapScale => 'Ρύθμιση κλίμακας χάρτη';
@override
String get customMapScaleSaved => 'Προσαρμοσμένη κλίμακα χάρτη αποθηκεύτηκε';
@override
String get voiceBitrate => 'Ρυθμός bit φωνής';
@override
String get voiceCompressor => 'Συμπιεστής φωνής';
@override
String get balancesQuietAndLoudSpeechLevels =>
'Εξισορρόπηση χαμηλών και δυνατών επιπέδων';
@override
String get voiceLimiter => 'Περιοριστής φωνής';
@override
String get preventsClippingPeaksBeforeEncoding =>
'Αποτρέπει κοπή κορυφών πριν την κωδικοποίηση';
@override
String get micAutoGain => 'Αυτόματη ενίσχυση μικροφώνου';
@override
String get letsTheRecorderAdjustInputLevel =>
'Αφήνει τη συσκευή να ρυθμίσει την ένταση';
@override
String get echoCancellation => 'Ακύρωση ηχούς';
@override
String get noiseSuppression => 'Καταστολή θορύβου';
@override
String get trimSilenceInVoiceMessages =>
'Περικοπή σιωπής σε φωνητικά μηνύματα';
@override
String get compressor => 'Συμπιεστής';
@override
String get limiter => 'Περιοριστής';
@override
String get autoGain => 'Αυτόματη ενίσχυση';
@override
String get echoCancel => 'Ηχώ';
@override
String get noiseSuppress => 'Θόρυβος';
@override
String get silenceTrim => 'Σιωπή';
@override
String get maxImageSize => 'Μέγιστο μέγεθος εικόνας';
@override
String get imageCompression => 'Συμπίεση εικόνας';
@override
String get grayscale => 'Κλίμακα του γκρι';
@override
String get ultraMode => 'Λειτουργία ultra';
@override
String get fastPrivateGpsUpdates => 'Γρήγορες ιδιωτικές ενημερώσεις GPS';
@override
String get movementThreshold => 'Κατώφλι κίνησης';
@override
String get fastGpsMovementThreshold => 'Κατώφλι κίνησης γρήγορου GPS';
@override
String get fastGpsActiveuseInterval => 'Διάστημα ενεργής χρήσης γρήγορου GPS';
@override
String get activeuseUpdateInterval => 'Διάστημα ενημέρωσης ενεργής χρήσης';
@override
String get repeatNearbyTraffic => 'Επανάληψη κοντινής κίνησης';
@override
String get relayThroughRepeatersAcrossTheMesh =>
'Αναμετάδοση μέσω αναμεταδοτών στο δίκτυο';
@override
String get nearbyOnlyWithoutRepeaterFlooding =>
'Μόνο κοντά, χωρίς πλημμυρισμό';
@override
String get multihop => 'Πολλαπλών αναπηδήσεων';
@override
String get createProfile => 'Δημιουργία προφίλ';
@override
String get renameProfile => 'Μετονομασία προφίλ';
@override
String get newProfile => 'Νέο προφίλ';
@override
String get manageProfiles => 'Διαχείριση προφίλ';
@override
String get enableProfilesToStartManagingThem =>
'Ενεργοποιήστε τα προφίλ για να τα διαχειριστείτε.';
@override
String get openMessage => 'Άνοιγμα μηνύματος';
@override
String get jumpToTheRelatedSarMessage => 'Μετάβαση στο σχετικό μήνυμα SAR';
@override
String get removeSarMarker => 'Αφαίρεση δείκτη SAR';
@override
String get pleaseSelectADestinationToSendSarMarker =>
'Επιλέξτε προορισμό για αποστολή δείκτη SAR';
@override
String get sarMarkerBroadcastToPublicChannel =>
'Δείκτης SAR εκπεμπόμενος στο δημόσιο κανάλι';
@override
String get sarMarkerSentToRoom => 'Δείκτης SAR εστάλη στο δωμάτιο';
@override
String get loadFromGallery => 'Φόρτωση από τη γκαλερί';
@override
String get replaceImage => 'Αντικατάσταση εικόνας';
@override
String get selectFromGallery => 'Επιλογή από τη γκαλερί';
@override
String get team => 'Ομάδα';
@override
String get found => 'Βρέθηκε';
@override
String get staging => 'Χώρος συγκέντρωσης';
@override
String get object => 'Αντικείμενο';
@override
String get quiet => 'Ήσυχο';
@override
String get moderate => 'Μέτριο';
@override
String get busy => 'Απασχολημένο';
@override
String get spectrumScanReturnedNoCandidateFrequencies =>
'Η σάρωση φάσματος δεν βρήκε υποψήφιες συχνότητες';
@override
String get searchMessages => 'Αναζήτηση μηνυμάτων';
@override
String get sendImageFromGallery => 'Αποστολή εικόνας από τη γκαλερί';
@override
String get takePhoto => 'Λήψη φωτογραφίας';
@override
String get dmOnly => 'Μόνο απευθείας';
@override
String get allMessages => 'Όλα τα μηνύματα';
@override
String get sendToPublicChannel => 'Αποστολή στο δημόσιο κανάλι;';
@override
String get selectMarkerTypeAndDestination =>
'Επιλέξτε τύπο δείκτη και προορισμό';
@override
String get noDestinationsAvailableLabel =>
'Δεν υπάρχουν διαθέσιμοι προορισμοί';
@override
String get image => 'Εικόνα';
@override
String get format => 'Μορφή';
@override
String get dimensions => 'Διαστάσεις';
@override
String get segments => 'Τμήματα';
@override
String get transfers => 'Μεταφορές';
@override
String get downloadedBy => 'Λήφθηκε από';
@override
String get saveDiscoverySettings => 'Αποθήκευση ρυθμίσεων ανακάλυψης';
@override
String get savePublicInfo => 'Αποθήκευση δημόσιων πληροφοριών';
@override
String get saveRadioSettings => 'Αποθήκευση ρυθμίσεων ραδιοφώνου';
@override
String get savePath => 'Αποθήκευση διαδρομής';
@override
String get wipeDeviceData => 'Διαγραφή δεδομένων συσκευής';
@override
String get wipeDevice => 'Διαγραφή συσκευής';
@override
String get destructiveDeviceActions => 'Καταστροφικές ενέργειες συσκευής.';
@override
String get chooseAPresetOrFinetuneCustomRadioSettings =>
'Επιλέξτε μια προεπιλογή ή ρυθμίστε τις ρυθμίσεις ραδιοφώνου.';
@override
String get chooseTheNameAndLocationThisDeviceShares =>
'Επιλέξτε το όνομα και την τοποθεσία που μοιράζεται αυτή η συσκευή.';
@override
String get availableSpaceOnThisDevice =>
'Διαθέσιμος χώρος σε αυτή τη συσκευή.';
@override
String get used => 'Χρησιμοποιήθηκε';
@override
String get total => 'Σύνολο';
@override
String get renameValue => 'Μετονομασία τιμής';
@override
String get customizeFields => 'Προσαρμογή πεδίων';
@override
String get livePreview => 'Ζωντανή προεπισκόπηση';
@override
String get refreshSchedule => 'Χρονοδιάγραμμα ανανέωσης';
@override
String get noResponse => 'Χωρίς απάντηση';
@override
String get refreshing => 'Ανανέωση';
@override
String get unavailable => 'Μη διαθέσιμο';
@override
String get pickARelayOrNodeToWatchInSensors =>
'Επιλέξτε ένα relay ή κόμβο για παρακολούθηση.';
@override
String get publicKeyLabel => 'Δημόσιο κλειδί';
@override
String get alreadyInContacts => 'Ήδη στις επαφές';
@override
String get connectToADeviceBeforeAddingContacts =>
'Συνδεθείτε σε μια συσκευή πριν προσθέσετε επαφές';
@override
String get fromContacts => 'Από τις επαφές';
@override
String get onlineOnly => 'Μόνο συνδεδεμένοι';
@override
String get inBoth => 'Σε αμφότερα';
@override
String get source => 'Πηγή';
@override
String get manualRouteEdit => 'Χειροκίνητη επεξεργασία διαδρομής';
@override
String get observedMeshRoute => 'Παρατηρούμενη διαδρομή δικτύου';
@override
String get allMessagesCleared => 'Όλα τα μηνύματα διαγράφηκαν';
@override
String get onlineTraceDatabaseCleared => 'Βάση δεδομένων ιχνών εκκαθαρίστηκε';
@override
String get packetLogsCleared => 'Τα αρχεία πακέτων εκκαθαρίστηκαν';
@override
String get hexDataCopiedToClipboard => 'Τα δεδομένα hex αντιγράφηκαν';
@override
String get developerModeEnabled => 'Λειτουργία προγραμματιστή ενεργοποιήθηκε';
@override
String get developerModeDisabled =>
'Λειτουργία προγραμματιστή απενεργοποιήθηκε';
@override
String get clipboardIsEmpty => 'Το πρόχειρο είναι κενό';
@override
String get contactImported => 'Επαφή εισήχθη';
@override
String get contactLinkCopiedToClipboard => 'Ο σύνδεσμος επαφής αντιγράφηκε';
@override
String get failedToExportContact => 'Αποτυχία εξαγωγής επαφής';
@override
String get noLogsToExport => 'Δεν υπάρχουν αρχεία για εξαγωγή';
@override
String get exportAsCsv => 'Εξαγωγή ως CSV';
@override
String get exportAsText => 'Εξαγωγή ως κείμενο';
@override
String get receivedRfc3339 => 'Ελήφθη (RFC3339)';
@override
String get buildTime => 'Ώρα κατασκευής';
@override
String get downloadUrlNotAvailable => 'Η URL λήψης δεν είναι διαθέσιμη';
@override
String get cannotOpenDownloadUrl => 'Αδυναμία ανοίγματος URL λήψης';
@override
String get updateCheckIsOnlyAvailableOnAndroid =>
'Ο έλεγχος ενημερώσεων είναι διαθέσιμος μόνο σε Android';
@override
String get youAreRunningTheLatestVersion =>
'Χρησιμοποιείτε την πιο πρόσφατη έκδοση';
@override
String get updateAvailableButDownloadUrlNotFound =>
'Διαθέσιμη ενημέρωση αλλά η URL λήψης δεν βρέθηκε';
@override
String get startTictactoe => 'Εκκίνηση Tic-Tac-Toe';
@override
String get tictactoeUnavailable => 'Tic-Tac-Toe μη διαθέσιμο';
@override
String get tictactoeOpponentUnknown => 'Tic-Tac-Toe: άγνωστος αντίπαλος';
@override
String get tictactoeWaitingForStart => 'Tic-Tac-Toe: αναμονή για εκκίνηση';
@override
String get acceptsShareLinks => 'Αποδέχεται κοινόχρηστους συνδέσμους';
@override
String get supportsRawHex => 'Υποστηρίζει ακατέργαστο hex';
@override
String get clipboardfriendly => 'Φιλικό προς πρόχειρο';
@override
String get captured => 'Καταγράφηκε';
@override
String get size => 'Μέγεθος';
@override
String get noCustomChannelsToClear => 'Δεν υπάρχουν προσαρμοσμένα κανάλια.';
@override
String get noDeviceContactsToClear => 'Δεν υπάρχουν επαφές συσκευής.';
}

View File

@@ -1902,4 +1902,764 @@ class AppLocalizationsEn extends AppLocalizations {
String contactFailedToSetRoute(String error) {
return 'Failed to set route: $error';
}
@override
String get rssi => 'RSSI';
@override
String get snr => 'SNR';
@override
String get ackTimeout => 'ACK timeout';
@override
String get opcode => 'Opcode';
@override
String get payload => 'Payload';
@override
String get hops => 'Hops';
@override
String get hashSize => 'Hash size';
@override
String get pathBytes => 'Path bytes';
@override
String get selectedPath => 'Selected path';
@override
String get estimatedTx => 'Estimated tx';
@override
String get senderToReceipt => 'Sender to receipt';
@override
String get receivedCopies => 'Received copies';
@override
String get retryCause => 'Retry cause';
@override
String get retryMode => 'Retry mode';
@override
String get retryResult => 'Retry result';
@override
String get lastRetry => 'Last retry';
@override
String get rxPackets => 'RX packets';
@override
String get mesh => 'Mesh';
@override
String get rate => 'Rate';
@override
String get window => 'Window';
@override
String get posttxDelay => 'Post-tx delay';
@override
String get bandpass => 'Band-pass';
@override
String get bandpassFilterVoice => 'Band-pass filter voice';
@override
String get frequency => 'Frequency';
@override
String get australia => 'Australia';
@override
String get australiaNarrow => 'Australia (Narrow)';
@override
String get australiaQld => 'Australia: QLD';
@override
String get australiaSaWa => 'Australia: SA, WA';
@override
String get newZealand => 'New Zealand';
@override
String get newZealandNarrow => 'New Zealand (Narrow)';
@override
String get switzerland => 'Switzerland';
@override
String get portugal433 => 'Portugal 433';
@override
String get portugal868 => 'Portugal 868';
@override
String get czechRepublicNarrow => 'Czech Republic (Narrow)';
@override
String get eu433mhzLongRange => 'EU 433MHz (Long Range)';
@override
String get euukDeprecated => 'EU/UK (Deprecated)';
@override
String get euukNarrow => 'EU/UK (Narrow)';
@override
String get usacanadaRecommended => 'USA/Canada (Recommended)';
@override
String get vietnamDeprecated => 'Vietnam (Deprecated)';
@override
String get vietnamNarrow => 'Vietnam (Narrow)';
@override
String get active => 'Active';
@override
String get addContact => 'Add Contact';
@override
String get all => 'All';
@override
String get autoResolve => 'Auto resolve';
@override
String get clearAllLabel => 'Clear all';
@override
String get clearRelays => 'Clear relays';
@override
String get clearFilters => 'Clear filters';
@override
String get clearRoute => 'Clear Route';
@override
String get clearMessages => 'Clear Messages';
@override
String get clearScale => 'Clear scale';
@override
String get clearDiscoveries => 'Clear discoveries';
@override
String get clearOnlineTraceDatabase => 'Clear online trace database';
@override
String get clearAllChannels => 'Clear all channels';
@override
String get clearAllContacts => 'Clear all contacts';
@override
String get clearChannels => 'Clear channels';
@override
String get clearContacts => 'Clear contacts';
@override
String get clearPathOnMaxRetry => 'Clear path on max retry';
@override
String get create => 'Create';
@override
String get custom => 'Custom';
@override
String get defaultValue => 'Default';
@override
String get duplicate => 'Duplicate';
@override
String get editName => 'Edit name';
@override
String get open => 'Open';
@override
String get paste => 'Paste';
@override
String get preview => 'Preview';
@override
String get remove => 'Remove';
@override
String get rename => 'Rename';
@override
String get resolveAll => 'Resolve all';
@override
String get send => 'Send';
@override
String get sendAnyway => 'Send anyway';
@override
String get share => 'Share';
@override
String get shareContact => 'Share Contact';
@override
String get trace => 'Trace';
@override
String get use => 'Use';
@override
String get useSelectedFrequency => 'Use selected frequency';
@override
String get discovery => 'Discovery';
@override
String get discoverRepeaters => 'Discover repeaters';
@override
String get discoverSensors => 'Discover sensors';
@override
String get repeaterDiscoverySent => 'Repeater discovery sent';
@override
String get sensorDiscoverySent => 'Sensor discovery sent';
@override
String get clearedPendingDiscoveries => 'Cleared pending discoveries.';
@override
String get autoDiscovery => 'Auto discovery';
@override
String get enableAutomaticAdding => 'Enable automatic adding';
@override
String get autoaddRepeaters => 'Auto-add repeaters';
@override
String get autoaddRoomServers => 'Auto-add room servers';
@override
String get autoaddSensors => 'Auto-add sensors';
@override
String get autoaddUsers => 'Auto-add users';
@override
String get overwriteOldestWhenFull => 'Overwrite oldest when full';
@override
String get storage => 'Storage';
@override
String get dangerZone => 'Danger zone';
@override
String get profiles => 'Profiles';
@override
String get favourites => 'Favourites';
@override
String get sensors => 'Sensors';
@override
String get others => 'Others';
@override
String get gpsModule => 'GPS Module';
@override
String get liveTraffic => 'Live Traffic';
@override
String get repeatersMap => 'Repeaters Map';
@override
String get spectrumScan => 'Spectrum Scan';
@override
String get blePacketLogs => 'BLE Packet Logs';
@override
String get onlineTraceDatabase => 'Online trace database';
@override
String get routePathByteSize => 'Route path byte size';
@override
String get messageNotifications => 'Message notifications';
@override
String get sarAlerts => 'SAR alerts';
@override
String get discoveryNotifications => 'Discovery notifications';
@override
String get updateNotifications => 'Update notifications';
@override
String get muteWhileAppIsOpen => 'Mute while app is open';
@override
String get disableContacts => 'Disable Contacts';
@override
String get enableSensorsTab => 'Enable Sensors tab';
@override
String get enableProfiles => 'Enable Profiles';
@override
String get autoRouteRotation => 'Auto route rotation';
@override
String get nearestRepeaterFallback => 'Nearest repeater fallback';
@override
String get deleteAllStoredMessageHistory =>
'Delete all stored message history';
@override
String get messageFontSize => 'Message font size';
@override
String get rotateMapWithHeading => 'Rotate map with heading';
@override
String get showMapDebugInfo => 'Show map debug info';
@override
String get openMapInFullscreen => 'Open map in fullscreen';
@override
String get showSarMarkersLabel => 'Show SAR markers';
@override
String get displaySarMarkersOnTheMainMap =>
'Display SAR markers on the main map';
@override
String get showAllContactTrailsLabel => 'Show all contact trails';
@override
String get hideRepeatersOnMap => 'Hide repeaters on map';
@override
String get setMapScale => 'Set map scale';
@override
String get customMapScaleSaved => 'Custom map scale saved';
@override
String get voiceBitrate => 'Voice bitrate';
@override
String get voiceCompressor => 'Voice compressor';
@override
String get balancesQuietAndLoudSpeechLevels =>
'Balances quiet and loud speech levels';
@override
String get voiceLimiter => 'Voice limiter';
@override
String get preventsClippingPeaksBeforeEncoding =>
'Prevents clipping peaks before encoding';
@override
String get micAutoGain => 'Mic auto gain';
@override
String get letsTheRecorderAdjustInputLevel =>
'Lets the recorder adjust input level';
@override
String get echoCancellation => 'Echo cancellation';
@override
String get noiseSuppression => 'Noise suppression';
@override
String get trimSilenceInVoiceMessages => 'Trim silence in voice messages';
@override
String get compressor => 'Compressor';
@override
String get limiter => 'Limiter';
@override
String get autoGain => 'Auto gain';
@override
String get echoCancel => 'Echo cancel';
@override
String get noiseSuppress => 'Noise suppress';
@override
String get silenceTrim => 'Silence trim';
@override
String get maxImageSize => 'Max image size';
@override
String get imageCompression => 'Image compression';
@override
String get grayscale => 'Grayscale';
@override
String get ultraMode => 'Ultra mode';
@override
String get fastPrivateGpsUpdates => 'Fast private GPS updates';
@override
String get movementThreshold => 'Movement threshold';
@override
String get fastGpsMovementThreshold => 'Fast GPS movement threshold';
@override
String get fastGpsActiveuseInterval => 'Fast GPS active-use interval';
@override
String get activeuseUpdateInterval => 'Active-use update interval';
@override
String get repeatNearbyTraffic => 'Repeat nearby traffic';
@override
String get relayThroughRepeatersAcrossTheMesh =>
'Relay through repeaters across the mesh';
@override
String get nearbyOnlyWithoutRepeaterFlooding =>
'Nearby only, without repeater flooding';
@override
String get multihop => 'Multi-hop';
@override
String get createProfile => 'Create Profile';
@override
String get renameProfile => 'Rename Profile';
@override
String get newProfile => 'New Profile';
@override
String get manageProfiles => 'Manage profiles';
@override
String get enableProfilesToStartManagingThem =>
'Enable profiles to start managing them.';
@override
String get openMessage => 'Open message';
@override
String get jumpToTheRelatedSarMessage => 'Jump to the related SAR message';
@override
String get removeSarMarker => 'Remove SAR marker';
@override
String get pleaseSelectADestinationToSendSarMarker =>
'Please select a destination to send SAR marker';
@override
String get sarMarkerBroadcastToPublicChannel =>
'SAR marker broadcast to public channel';
@override
String get sarMarkerSentToRoom => 'SAR marker sent to room';
@override
String get loadFromGallery => 'Load from gallery';
@override
String get replaceImage => 'Replace image';
@override
String get selectFromGallery => 'Select from gallery';
@override
String get team => 'Team';
@override
String get found => 'Found';
@override
String get staging => 'Staging';
@override
String get object => 'Object';
@override
String get quiet => 'Quiet';
@override
String get moderate => 'Moderate';
@override
String get busy => 'Busy';
@override
String get spectrumScanReturnedNoCandidateFrequencies =>
'Spectrum scan returned no candidate frequencies';
@override
String get searchMessages => 'Search messages';
@override
String get sendImageFromGallery => 'Send image from gallery';
@override
String get takePhoto => 'Take photo';
@override
String get dmOnly => 'DM only';
@override
String get allMessages => 'All messages';
@override
String get sendToPublicChannel => 'Send to Public Channel?';
@override
String get selectMarkerTypeAndDestination =>
'Select marker type and destination';
@override
String get noDestinationsAvailableLabel => 'No destinations available';
@override
String get image => 'Image';
@override
String get format => 'Format';
@override
String get dimensions => 'Dimensions';
@override
String get segments => 'Segments';
@override
String get transfers => 'Transfers';
@override
String get downloadedBy => 'Downloaded by';
@override
String get saveDiscoverySettings => 'Save discovery settings';
@override
String get savePublicInfo => 'Save public info';
@override
String get saveRadioSettings => 'Save radio settings';
@override
String get savePath => 'Save Path';
@override
String get wipeDeviceData => 'Wipe device data';
@override
String get wipeDevice => 'Wipe device';
@override
String get destructiveDeviceActions => 'Destructive device actions.';
@override
String get chooseAPresetOrFinetuneCustomRadioSettings =>
'Choose a preset or fine-tune custom radio settings.';
@override
String get chooseTheNameAndLocationThisDeviceShares =>
'Choose the name and location this device shares.';
@override
String get availableSpaceOnThisDevice => 'Available space on this device.';
@override
String get used => 'Used';
@override
String get total => 'Total';
@override
String get renameValue => 'Rename value';
@override
String get customizeFields => 'Customize fields';
@override
String get livePreview => 'Live preview';
@override
String get refreshSchedule => 'Refresh schedule';
@override
String get noResponse => 'No response';
@override
String get refreshing => 'Refreshing';
@override
String get unavailable => 'Unavailable';
@override
String get pickARelayOrNodeToWatchInSensors =>
'Pick a relay or node to watch in Sensors.';
@override
String get publicKeyLabel => 'Public key';
@override
String get alreadyInContacts => 'Already in contacts';
@override
String get connectToADeviceBeforeAddingContacts =>
'Connect to a device before adding contacts';
@override
String get fromContacts => 'From contacts';
@override
String get onlineOnly => 'Online only';
@override
String get inBoth => 'In both';
@override
String get source => 'Source';
@override
String get manualRouteEdit => 'Manual route edit';
@override
String get observedMeshRoute => 'Observed mesh route';
@override
String get allMessagesCleared => 'All messages cleared';
@override
String get onlineTraceDatabaseCleared => 'Online trace database cleared';
@override
String get packetLogsCleared => 'Packet logs cleared';
@override
String get hexDataCopiedToClipboard => 'Hex data copied to clipboard';
@override
String get developerModeEnabled => 'Developer mode enabled';
@override
String get developerModeDisabled => 'Developer mode disabled';
@override
String get clipboardIsEmpty => 'Clipboard is empty';
@override
String get contactImported => 'Contact imported';
@override
String get contactLinkCopiedToClipboard => 'Contact link copied to clipboard';
@override
String get failedToExportContact => 'Failed to export contact';
@override
String get noLogsToExport => 'No logs to export';
@override
String get exportAsCsv => 'Export as CSV';
@override
String get exportAsText => 'Export as Text';
@override
String get receivedRfc3339 => 'Received (RFC3339)';
@override
String get buildTime => 'Build Time';
@override
String get downloadUrlNotAvailable => 'Download URL not available';
@override
String get cannotOpenDownloadUrl => 'Cannot open download URL';
@override
String get updateCheckIsOnlyAvailableOnAndroid =>
'Update check is only available on Android';
@override
String get youAreRunningTheLatestVersion =>
'You are running the latest version';
@override
String get updateAvailableButDownloadUrlNotFound =>
'Update available but download URL not found';
@override
String get startTictactoe => 'Start Tic-Tac-Toe';
@override
String get tictactoeUnavailable => 'Tic-Tac-Toe unavailable';
@override
String get tictactoeOpponentUnknown => 'Tic-Tac-Toe: opponent unknown';
@override
String get tictactoeWaitingForStart => 'Tic-Tac-Toe: waiting for start';
@override
String get acceptsShareLinks => 'Accepts share links';
@override
String get supportsRawHex => 'Supports raw hex';
@override
String get clipboardfriendly => 'Clipboard-friendly';
@override
String get captured => 'Captured';
@override
String get size => 'Size';
@override
String get noCustomChannelsToClear => 'No custom channels to clear.';
@override
String get noDeviceContactsToClear => 'No device contacts to clear.';
}

View File

@@ -1932,4 +1932,774 @@ class AppLocalizationsEs extends AppLocalizations {
String contactFailedToSetRoute(String error) {
return 'No se pudo establecer la ruta: $error';
}
@override
String get rssi => 'RSSI';
@override
String get snr => 'SNR';
@override
String get ackTimeout => 'Tiempo de espera ACK';
@override
String get opcode => 'Código de operación';
@override
String get payload => 'Carga útil';
@override
String get hops => 'Saltos';
@override
String get hashSize => 'Tamaño del hash';
@override
String get pathBytes => 'Bytes de ruta';
@override
String get selectedPath => 'Ruta seleccionada';
@override
String get estimatedTx => 'Transmisión estimada';
@override
String get senderToReceipt => 'Del remitente al recibo';
@override
String get receivedCopies => 'Copias recibidas';
@override
String get retryCause => 'Causa del reintento';
@override
String get retryMode => 'Modo de reintento';
@override
String get retryResult => 'Resultado del reintento';
@override
String get lastRetry => 'Último reintento';
@override
String get rxPackets => 'Paquetes RX';
@override
String get mesh => 'Mesh';
@override
String get rate => 'Velocidad';
@override
String get window => 'Ventana';
@override
String get posttxDelay => 'Retardo post-tx';
@override
String get bandpass => 'Paso de banda';
@override
String get bandpassFilterVoice => 'Filtro de paso de banda de voz';
@override
String get frequency => 'Frecuencia';
@override
String get australia => 'Australia';
@override
String get australiaNarrow => 'Australia (Estrecho)';
@override
String get australiaQld => 'Australia: QLD';
@override
String get australiaSaWa => 'Australia: SA, WA';
@override
String get newZealand => 'Nueva Zelanda';
@override
String get newZealandNarrow => 'Nueva Zelanda (Estrecho)';
@override
String get switzerland => 'Suiza';
@override
String get portugal433 => 'Portugal 433';
@override
String get portugal868 => 'Portugal 868';
@override
String get czechRepublicNarrow => 'República Checa (Estrecho)';
@override
String get eu433mhzLongRange => 'EU 433MHz (Largo Alcance)';
@override
String get euukDeprecated => 'UE/RU (Obsoleto)';
@override
String get euukNarrow => 'UE/RU (Estrecho)';
@override
String get usacanadaRecommended => 'EE.UU./Canadá (Recomendado)';
@override
String get vietnamDeprecated => 'Vietnam (Obsoleto)';
@override
String get vietnamNarrow => 'Vietnam (Estrecho)';
@override
String get active => 'Activo';
@override
String get addContact => 'Añadir contacto';
@override
String get all => 'Todo';
@override
String get autoResolve => 'Resolver automáticamente';
@override
String get clearAllLabel => 'Borrar todo';
@override
String get clearRelays => 'Borrar repetidores';
@override
String get clearFilters => 'Borrar filtros';
@override
String get clearRoute => 'Borrar ruta';
@override
String get clearMessages => 'Borrar mensajes';
@override
String get clearScale => 'Borrar escala';
@override
String get clearDiscoveries => 'Borrar descubrimientos';
@override
String get clearOnlineTraceDatabase => 'Borrar base de datos de trazas';
@override
String get clearAllChannels => 'Borrar todos los canales';
@override
String get clearAllContacts => 'Borrar todos los contactos';
@override
String get clearChannels => 'Borrar canales';
@override
String get clearContacts => 'Borrar contactos';
@override
String get clearPathOnMaxRetry => 'Borrar ruta en máximo reintento';
@override
String get create => 'Crear';
@override
String get custom => 'Personalizado';
@override
String get defaultValue => 'Predeterminado';
@override
String get duplicate => 'Duplicar';
@override
String get editName => 'Editar nombre';
@override
String get open => 'Abrir';
@override
String get paste => 'Pegar';
@override
String get preview => 'Vista previa';
@override
String get remove => 'Eliminar';
@override
String get rename => 'Renombrar';
@override
String get resolveAll => 'Resolver todo';
@override
String get send => 'Enviar';
@override
String get sendAnyway => 'Enviar de todos modos';
@override
String get share => 'Compartir';
@override
String get shareContact => 'Compartir contacto';
@override
String get trace => 'Traza';
@override
String get use => 'Usar';
@override
String get useSelectedFrequency => 'Usar frecuencia seleccionada';
@override
String get discovery => 'Descubrimiento';
@override
String get discoverRepeaters => 'Descubrir repetidores';
@override
String get discoverSensors => 'Descubrir sensores';
@override
String get repeaterDiscoverySent => 'Descubrimiento de repetidores enviado';
@override
String get sensorDiscoverySent => 'Descubrimiento de sensores enviado';
@override
String get clearedPendingDiscoveries =>
'Descubrimientos pendientes borrados.';
@override
String get autoDiscovery => 'Descubrimiento automático';
@override
String get enableAutomaticAdding => 'Habilitar adición automática';
@override
String get autoaddRepeaters => 'Añadir repetidores automáticamente';
@override
String get autoaddRoomServers => 'Añadir servidores de sala automáticamente';
@override
String get autoaddSensors => 'Añadir sensores automáticamente';
@override
String get autoaddUsers => 'Añadir usuarios automáticamente';
@override
String get overwriteOldestWhenFull =>
'Sobrescribir más antiguos cuando esté lleno';
@override
String get storage => 'Almacenamiento';
@override
String get dangerZone => 'Zona de peligro';
@override
String get profiles => 'Perfiles';
@override
String get favourites => 'Favoritos';
@override
String get sensors => 'Sensores';
@override
String get others => 'Otros';
@override
String get gpsModule => 'Módulo GPS';
@override
String get liveTraffic => 'Tráfico en vivo';
@override
String get repeatersMap => 'Mapa de repetidores';
@override
String get spectrumScan => 'Escaneo de espectro';
@override
String get blePacketLogs => 'Registros de paquetes BLE';
@override
String get onlineTraceDatabase => 'Base de datos de trazas';
@override
String get routePathByteSize => 'Tamaño en bytes de la ruta';
@override
String get messageNotifications => 'Notificaciones de mensajes';
@override
String get sarAlerts => 'Alertas SAR';
@override
String get discoveryNotifications => 'Notificaciones de descubrimiento';
@override
String get updateNotifications => 'Notificaciones de actualización';
@override
String get muteWhileAppIsOpen => 'Silenciar con la app abierta';
@override
String get disableContacts => 'Desactivar contactos';
@override
String get enableSensorsTab => 'Habilitar pestaña Sensores';
@override
String get enableProfiles => 'Habilitar perfiles';
@override
String get autoRouteRotation => 'Rotación automática de ruta';
@override
String get nearestRepeaterFallback => 'Repetidor más cercano como reserva';
@override
String get deleteAllStoredMessageHistory =>
'Eliminar todo el historial de mensajes';
@override
String get messageFontSize => 'Tamaño de fuente de mensajes';
@override
String get rotateMapWithHeading => 'Rotar mapa con rumbo';
@override
String get showMapDebugInfo => 'Mostrar info de depuración del mapa';
@override
String get openMapInFullscreen => 'Abrir mapa en pantalla completa';
@override
String get showSarMarkersLabel => 'Mostrar marcadores SAR';
@override
String get displaySarMarkersOnTheMainMap =>
'Mostrar marcadores SAR en el mapa principal';
@override
String get showAllContactTrailsLabel =>
'Mostrar todos los rastros de contactos';
@override
String get hideRepeatersOnMap => 'Ocultar repetidores en el mapa';
@override
String get setMapScale => 'Establecer escala del mapa';
@override
String get customMapScaleSaved => 'Escala de mapa personalizada guardada';
@override
String get voiceBitrate => 'Tasa de bits de voz';
@override
String get voiceCompressor => 'Compresor de voz';
@override
String get balancesQuietAndLoudSpeechLevels =>
'Equilibra niveles de habla suaves y altos';
@override
String get voiceLimiter => 'Limitador de voz';
@override
String get preventsClippingPeaksBeforeEncoding =>
'Previene recorte de picos antes de codificar';
@override
String get micAutoGain => 'Ganancia automática del micrófono';
@override
String get letsTheRecorderAdjustInputLevel =>
'Permite al grabador ajustar el nivel de entrada';
@override
String get echoCancellation => 'Cancelación de eco';
@override
String get noiseSuppression => 'Supresión de ruido';
@override
String get trimSilenceInVoiceMessages =>
'Recortar silencio en mensajes de voz';
@override
String get compressor => 'Compresor';
@override
String get limiter => 'Limitador';
@override
String get autoGain => 'Ganancia automática';
@override
String get echoCancel => 'Eco';
@override
String get noiseSuppress => 'Ruido';
@override
String get silenceTrim => 'Silencio';
@override
String get maxImageSize => 'Tamaño máximo de imagen';
@override
String get imageCompression => 'Compresión de imagen';
@override
String get grayscale => 'Escala de grises';
@override
String get ultraMode => 'Modo ultra';
@override
String get fastPrivateGpsUpdates => 'Actualizaciones GPS privadas rápidas';
@override
String get movementThreshold => 'Umbral de movimiento';
@override
String get fastGpsMovementThreshold => 'Umbral de movimiento GPS rápido';
@override
String get fastGpsActiveuseInterval => 'Intervalo de uso activo GPS rápido';
@override
String get activeuseUpdateInterval =>
'Intervalo de actualización de uso activo';
@override
String get repeatNearbyTraffic => 'Repetir tráfico cercano';
@override
String get relayThroughRepeatersAcrossTheMesh =>
'Retransmitir a través de repetidores en la red';
@override
String get nearbyOnlyWithoutRepeaterFlooding =>
'Solo cercanos, sin inundación de repetidores';
@override
String get multihop => 'Multi-salto';
@override
String get createProfile => 'Crear perfil';
@override
String get renameProfile => 'Renombrar perfil';
@override
String get newProfile => 'Nuevo perfil';
@override
String get manageProfiles => 'Gestionar perfiles';
@override
String get enableProfilesToStartManagingThem =>
'Habilite los perfiles para comenzar a gestionarlos.';
@override
String get openMessage => 'Abrir mensaje';
@override
String get jumpToTheRelatedSarMessage => 'Ir al mensaje SAR relacionado';
@override
String get removeSarMarker => 'Eliminar marcador SAR';
@override
String get pleaseSelectADestinationToSendSarMarker =>
'Seleccione un destino para enviar el marcador SAR';
@override
String get sarMarkerBroadcastToPublicChannel =>
'Marcador SAR transmitido al canal público';
@override
String get sarMarkerSentToRoom => 'Marcador SAR enviado a la sala';
@override
String get loadFromGallery => 'Cargar desde galería';
@override
String get replaceImage => 'Reemplazar imagen';
@override
String get selectFromGallery => 'Seleccionar de galería';
@override
String get team => 'Equipo';
@override
String get found => 'Encontrado';
@override
String get staging => 'Área de reunión';
@override
String get object => 'Objeto';
@override
String get quiet => 'Silencioso';
@override
String get moderate => 'Moderado';
@override
String get busy => 'Ocupado';
@override
String get spectrumScanReturnedNoCandidateFrequencies =>
'El escaneo de espectro no encontró frecuencias candidatas';
@override
String get searchMessages => 'Buscar mensajes';
@override
String get sendImageFromGallery => 'Enviar imagen desde galería';
@override
String get takePhoto => 'Tomar foto';
@override
String get dmOnly => 'Solo mensaje directo';
@override
String get allMessages => 'Todos los mensajes';
@override
String get sendToPublicChannel => '¿Enviar al canal público?';
@override
String get selectMarkerTypeAndDestination =>
'Seleccione tipo de marcador y destino';
@override
String get noDestinationsAvailableLabel => 'No hay destinos disponibles';
@override
String get image => 'Imagen';
@override
String get format => 'Formato';
@override
String get dimensions => 'Dimensiones';
@override
String get segments => 'Segmentos';
@override
String get transfers => 'Transferencias';
@override
String get downloadedBy => 'Descargado por';
@override
String get saveDiscoverySettings => 'Guardar ajustes de descubrimiento';
@override
String get savePublicInfo => 'Guardar información pública';
@override
String get saveRadioSettings => 'Guardar ajustes de radio';
@override
String get savePath => 'Guardar ruta';
@override
String get wipeDeviceData => 'Borrar datos del dispositivo';
@override
String get wipeDevice => 'Borrar dispositivo';
@override
String get destructiveDeviceActions =>
'Acciones destructivas del dispositivo.';
@override
String get chooseAPresetOrFinetuneCustomRadioSettings =>
'Elija un preajuste o ajuste la configuración de radio.';
@override
String get chooseTheNameAndLocationThisDeviceShares =>
'Elija el nombre y la ubicación que comparte este dispositivo.';
@override
String get availableSpaceOnThisDevice =>
'Espacio disponible en este dispositivo.';
@override
String get used => 'Usado';
@override
String get total => 'Total';
@override
String get renameValue => 'Renombrar valor';
@override
String get customizeFields => 'Personalizar campos';
@override
String get livePreview => 'Vista previa en vivo';
@override
String get refreshSchedule => 'Programación de actualización';
@override
String get noResponse => 'Sin respuesta';
@override
String get refreshing => 'Actualizando';
@override
String get unavailable => 'No disponible';
@override
String get pickARelayOrNodeToWatchInSensors =>
'Elija un relay o nodo para observar.';
@override
String get publicKeyLabel => 'Clave pública';
@override
String get alreadyInContacts => 'Ya en contactos';
@override
String get connectToADeviceBeforeAddingContacts =>
'Conéctese a un dispositivo antes de añadir contactos';
@override
String get fromContacts => 'De contactos';
@override
String get onlineOnly => 'Solo en línea';
@override
String get inBoth => 'En ambos';
@override
String get source => 'Fuente';
@override
String get manualRouteEdit => 'Edición manual de ruta';
@override
String get observedMeshRoute => 'Ruta mesh observada';
@override
String get allMessagesCleared => 'Todos los mensajes borrados';
@override
String get onlineTraceDatabaseCleared => 'Base de datos de trazas borrada';
@override
String get packetLogsCleared => 'Registros de paquetes borrados';
@override
String get hexDataCopiedToClipboard => 'Datos hex copiados al portapapeles';
@override
String get developerModeEnabled => 'Modo desarrollador activado';
@override
String get developerModeDisabled => 'Modo desarrollador desactivado';
@override
String get clipboardIsEmpty => 'El portapapeles está vacío';
@override
String get contactImported => 'Contacto importado';
@override
String get contactLinkCopiedToClipboard =>
'Enlace de contacto copiado al portapapeles';
@override
String get failedToExportContact => 'Error al exportar el contacto';
@override
String get noLogsToExport => 'No hay registros para exportar';
@override
String get exportAsCsv => 'Exportar como CSV';
@override
String get exportAsText => 'Exportar como texto';
@override
String get receivedRfc3339 => 'Recibido (RFC3339)';
@override
String get buildTime => 'Hora de compilación';
@override
String get downloadUrlNotAvailable => 'URL de descarga no disponible';
@override
String get cannotOpenDownloadUrl => 'No se puede abrir la URL de descarga';
@override
String get updateCheckIsOnlyAvailableOnAndroid =>
'La comprobación de actualizaciones solo está disponible en Android';
@override
String get youAreRunningTheLatestVersion =>
'Está ejecutando la última versión';
@override
String get updateAvailableButDownloadUrlNotFound =>
'Actualización disponible pero URL de descarga no encontrada';
@override
String get startTictactoe => 'Iniciar Tic-Tac-Toe';
@override
String get tictactoeUnavailable => 'Tic-Tac-Toe no disponible';
@override
String get tictactoeOpponentUnknown => 'Tic-Tac-Toe: oponente desconocido';
@override
String get tictactoeWaitingForStart => 'Tic-Tac-Toe: esperando inicio';
@override
String get acceptsShareLinks => 'Acepta enlaces compartidos';
@override
String get supportsRawHex => 'Soporta hex sin procesar';
@override
String get clipboardfriendly => 'Compatible con portapapeles';
@override
String get captured => 'Capturado';
@override
String get size => 'Tamaño';
@override
String get noCustomChannelsToClear =>
'No hay canales personalizados que borrar.';
@override
String get noDeviceContactsToClear =>
'No hay contactos del dispositivo que borrar.';
}

View File

@@ -1936,4 +1936,774 @@ class AppLocalizationsFr extends AppLocalizations {
String contactFailedToSetRoute(String error) {
return 'Échec du réglage de la route : $error';
}
@override
String get rssi => 'RSSI';
@override
String get snr => 'SNR';
@override
String get ackTimeout => 'Délai ACK expiré';
@override
String get opcode => 'Opcode';
@override
String get payload => 'Charge utile';
@override
String get hops => 'Sauts';
@override
String get hashSize => 'Taille du hash';
@override
String get pathBytes => 'Octets du chemin';
@override
String get selectedPath => 'Chemin sélectionné';
@override
String get estimatedTx => 'Émission estimée';
@override
String get senderToReceipt => 'Émetteur au reçu';
@override
String get receivedCopies => 'Copies reçues';
@override
String get retryCause => 'Cause de la relance';
@override
String get retryMode => 'Mode de relance';
@override
String get retryResult => 'Résultat de la relance';
@override
String get lastRetry => 'Dernière relance';
@override
String get rxPackets => 'Paquets RX';
@override
String get mesh => 'Mesh';
@override
String get rate => 'Débit';
@override
String get window => 'Fenêtre';
@override
String get posttxDelay => 'Délai post-émission';
@override
String get bandpass => 'Passe-bande';
@override
String get bandpassFilterVoice => 'Filtre passe-bande voix';
@override
String get frequency => 'Fréquence';
@override
String get australia => 'Australie';
@override
String get australiaNarrow => 'Australie (Étroit)';
@override
String get australiaQld => 'Australie: QLD';
@override
String get australiaSaWa => 'Australie: SA, WA';
@override
String get newZealand => 'Nouvelle-Zélande';
@override
String get newZealandNarrow => 'Nouvelle-Zélande (Étroit)';
@override
String get switzerland => 'Suisse';
@override
String get portugal433 => 'Portugal 433';
@override
String get portugal868 => 'Portugal 868';
@override
String get czechRepublicNarrow => 'République tchèque (Étroit)';
@override
String get eu433mhzLongRange => 'UE 433MHz (Longue Portée)';
@override
String get euukDeprecated => 'UE/RU (Obsolète)';
@override
String get euukNarrow => 'UE/RU (Étroit)';
@override
String get usacanadaRecommended => 'USA/Canada (Recommandé)';
@override
String get vietnamDeprecated => 'Vietnam (Obsolète)';
@override
String get vietnamNarrow => 'Vietnam (Étroit)';
@override
String get active => 'Actif';
@override
String get addContact => 'Ajouter un contact';
@override
String get all => 'Tout';
@override
String get autoResolve => 'Résolution automatique';
@override
String get clearAllLabel => 'Tout effacer';
@override
String get clearRelays => 'Effacer les relais';
@override
String get clearFilters => 'Effacer les filtres';
@override
String get clearRoute => 'Effacer la route';
@override
String get clearMessages => 'Effacer les messages';
@override
String get clearScale => 'Effacer l\'échelle';
@override
String get clearDiscoveries => 'Effacer les découvertes';
@override
String get clearOnlineTraceDatabase => 'Effacer la base de traces';
@override
String get clearAllChannels => 'Effacer tous les canaux';
@override
String get clearAllContacts => 'Effacer tous les contacts';
@override
String get clearChannels => 'Effacer les canaux';
@override
String get clearContacts => 'Effacer les contacts';
@override
String get clearPathOnMaxRetry => 'Effacer le chemin au max de relances';
@override
String get create => 'Créer';
@override
String get custom => 'Personnalisé';
@override
String get defaultValue => 'Par défaut';
@override
String get duplicate => 'Dupliquer';
@override
String get editName => 'Modifier le nom';
@override
String get open => 'Ouvrir';
@override
String get paste => 'Coller';
@override
String get preview => 'Aperçu';
@override
String get remove => 'Supprimer';
@override
String get rename => 'Renommer';
@override
String get resolveAll => 'Résoudre tout';
@override
String get send => 'Envoyer';
@override
String get sendAnyway => 'Envoyer quand même';
@override
String get share => 'Partager';
@override
String get shareContact => 'Partager le contact';
@override
String get trace => 'Trace';
@override
String get use => 'Utiliser';
@override
String get useSelectedFrequency => 'Utiliser la fréquence sélectionnée';
@override
String get discovery => 'Découverte';
@override
String get discoverRepeaters => 'Découvrir les répéteurs';
@override
String get discoverSensors => 'Découvrir les capteurs';
@override
String get repeaterDiscoverySent => 'Découverte de répéteurs envoyée';
@override
String get sensorDiscoverySent => 'Découverte de capteurs envoyée';
@override
String get clearedPendingDiscoveries => 'Découvertes en attente effacées.';
@override
String get autoDiscovery => 'Découverte automatique';
@override
String get enableAutomaticAdding => 'Activer l\'ajout automatique';
@override
String get autoaddRepeaters => 'Ajout auto des répéteurs';
@override
String get autoaddRoomServers => 'Ajout auto des serveurs de salle';
@override
String get autoaddSensors => 'Ajout auto des capteurs';
@override
String get autoaddUsers => 'Ajout auto des utilisateurs';
@override
String get overwriteOldestWhenFull => 'Écraser les plus anciens si plein';
@override
String get storage => 'Stockage';
@override
String get dangerZone => 'Zone de danger';
@override
String get profiles => 'Profils';
@override
String get favourites => 'Favoris';
@override
String get sensors => 'Capteurs';
@override
String get others => 'Autres';
@override
String get gpsModule => 'Module GPS';
@override
String get liveTraffic => 'Trafic en direct';
@override
String get repeatersMap => 'Carte des répéteurs';
@override
String get spectrumScan => 'Scan spectral';
@override
String get blePacketLogs => 'Journaux de paquets BLE';
@override
String get onlineTraceDatabase => 'Base de données de traces';
@override
String get routePathByteSize => 'Taille en octets du chemin';
@override
String get messageNotifications => 'Notifications de messages';
@override
String get sarAlerts => 'Alertes SAR';
@override
String get discoveryNotifications => 'Notifications de découverte';
@override
String get updateNotifications => 'Notifications de mise à jour';
@override
String get muteWhileAppIsOpen => 'Muet quand l\'appli est ouverte';
@override
String get disableContacts => 'Désactiver les contacts';
@override
String get enableSensorsTab => 'Activer l\'onglet Capteurs';
@override
String get enableProfiles => 'Activer les profils';
@override
String get autoRouteRotation => 'Rotation automatique de route';
@override
String get nearestRepeaterFallback => 'Répéteur le plus proche en repli';
@override
String get deleteAllStoredMessageHistory => 'Supprimer tout l\'historique';
@override
String get messageFontSize => 'Taille de police des messages';
@override
String get rotateMapWithHeading => 'Tourner la carte avec le cap';
@override
String get showMapDebugInfo => 'Afficher les infos de débogage';
@override
String get openMapInFullscreen => 'Ouvrir la carte en plein écran';
@override
String get showSarMarkersLabel => 'Afficher les marqueurs SAR';
@override
String get displaySarMarkersOnTheMainMap =>
'Afficher les marqueurs SAR sur la carte';
@override
String get showAllContactTrailsLabel =>
'Afficher toutes les traces de contacts';
@override
String get hideRepeatersOnMap => 'Masquer les répéteurs sur la carte';
@override
String get setMapScale => 'Définir l\'échelle de la carte';
@override
String get customMapScaleSaved =>
'Échelle de carte personnalisée enregistrée';
@override
String get voiceBitrate => 'Débit vocal';
@override
String get voiceCompressor => 'Compresseur vocal';
@override
String get balancesQuietAndLoudSpeechLevels =>
'Équilibre les niveaux faibles et forts';
@override
String get voiceLimiter => 'Limiteur vocal';
@override
String get preventsClippingPeaksBeforeEncoding =>
'Empêche l\'écrêtage avant l\'encodage';
@override
String get micAutoGain => 'Gain auto du micro';
@override
String get letsTheRecorderAdjustInputLevel =>
'Laisse l\'enregistreur ajuster le niveau d\'entrée';
@override
String get echoCancellation => 'Annulation d\'écho';
@override
String get noiseSuppression => 'Suppression du bruit';
@override
String get trimSilenceInVoiceMessages =>
'Couper le silence dans les messages vocaux';
@override
String get compressor => 'Compresseur';
@override
String get limiter => 'Limiteur';
@override
String get autoGain => 'Gain automatique';
@override
String get echoCancel => 'Écho';
@override
String get noiseSuppress => 'Bruit';
@override
String get silenceTrim => 'Silence';
@override
String get maxImageSize => 'Taille d\'image maximale';
@override
String get imageCompression => 'Compression d\'image';
@override
String get grayscale => 'Niveaux de gris';
@override
String get ultraMode => 'Mode ultra';
@override
String get fastPrivateGpsUpdates => 'Mises à jour GPS privées rapides';
@override
String get movementThreshold => 'Seuil de mouvement';
@override
String get fastGpsMovementThreshold => 'Seuil de mouvement GPS rapide';
@override
String get fastGpsActiveuseInterval =>
'Intervalle d\'utilisation active GPS rapide';
@override
String get activeuseUpdateInterval =>
'Intervalle de mise à jour en utilisation active';
@override
String get repeatNearbyTraffic => 'Répéter le trafic proche';
@override
String get relayThroughRepeatersAcrossTheMesh =>
'Relayer via les répéteurs du réseau';
@override
String get nearbyOnlyWithoutRepeaterFlooding =>
'Proximité seulement, sans inondation';
@override
String get multihop => 'Multi-saut';
@override
String get createProfile => 'Créer un profil';
@override
String get renameProfile => 'Renommer le profil';
@override
String get newProfile => 'Nouveau profil';
@override
String get manageProfiles => 'Gérer les profils';
@override
String get enableProfilesToStartManagingThem =>
'Activez les profils pour commencer à les gérer.';
@override
String get openMessage => 'Ouvrir le message';
@override
String get jumpToTheRelatedSarMessage => 'Aller au message SAR associé';
@override
String get removeSarMarker => 'Supprimer le marqueur SAR';
@override
String get pleaseSelectADestinationToSendSarMarker =>
'Sélectionnez une destination pour envoyer le marqueur';
@override
String get sarMarkerBroadcastToPublicChannel =>
'Marqueur SAR diffusé sur le canal public';
@override
String get sarMarkerSentToRoom => 'Marqueur SAR envoyé à la salle';
@override
String get loadFromGallery => 'Charger depuis la galerie';
@override
String get replaceImage => 'Remplacer l\'image';
@override
String get selectFromGallery => 'Sélectionner depuis la galerie';
@override
String get team => 'Équipe';
@override
String get found => 'Trouvé';
@override
String get staging => 'Zone de regroupement';
@override
String get object => 'Objet';
@override
String get quiet => 'Calme';
@override
String get moderate => 'Modéré';
@override
String get busy => 'Occupé';
@override
String get spectrumScanReturnedNoCandidateFrequencies =>
'Le scan spectral n\'a trouvé aucune fréquence candidate';
@override
String get searchMessages => 'Rechercher des messages';
@override
String get sendImageFromGallery => 'Envoyer une image de la galerie';
@override
String get takePhoto => 'Prendre une photo';
@override
String get dmOnly => 'Message direct uniquement';
@override
String get allMessages => 'Tous les messages';
@override
String get sendToPublicChannel => 'Envoyer au canal public ?';
@override
String get selectMarkerTypeAndDestination =>
'Sélectionnez le type de marqueur et la destination';
@override
String get noDestinationsAvailableLabel => 'Aucune destination disponible';
@override
String get image => 'Image';
@override
String get format => 'Format';
@override
String get dimensions => 'Dimensions';
@override
String get segments => 'Segments';
@override
String get transfers => 'Transferts';
@override
String get downloadedBy => 'Téléchargé par';
@override
String get saveDiscoverySettings =>
'Enregistrer les paramètres de découverte';
@override
String get savePublicInfo => 'Enregistrer les infos publiques';
@override
String get saveRadioSettings => 'Enregistrer les paramètres radio';
@override
String get savePath => 'Enregistrer le chemin';
@override
String get wipeDeviceData => 'Effacer les données de l\'appareil';
@override
String get wipeDevice => 'Effacer l\'appareil';
@override
String get destructiveDeviceActions => 'Actions destructives de l\'appareil.';
@override
String get chooseAPresetOrFinetuneCustomRadioSettings =>
'Choisissez un préréglage ou ajustez les paramètres radio.';
@override
String get chooseTheNameAndLocationThisDeviceShares =>
'Choisissez le nom et l\'emplacement partagés par cet appareil.';
@override
String get availableSpaceOnThisDevice =>
'Espace disponible sur cet appareil.';
@override
String get used => 'Utilisé';
@override
String get total => 'Total';
@override
String get renameValue => 'Renommer la valeur';
@override
String get customizeFields => 'Personnaliser les champs';
@override
String get livePreview => 'Aperçu en direct';
@override
String get refreshSchedule => 'Planification d\'actualisation';
@override
String get noResponse => 'Pas de réponse';
@override
String get refreshing => 'Actualisation';
@override
String get unavailable => 'Indisponible';
@override
String get pickARelayOrNodeToWatchInSensors =>
'Choisissez un relais ou nœud à surveiller.';
@override
String get publicKeyLabel => 'Clé publique';
@override
String get alreadyInContacts => 'Déjà dans les contacts';
@override
String get connectToADeviceBeforeAddingContacts =>
'Connectez-vous à un appareil avant d\'ajouter des contacts';
@override
String get fromContacts => 'Des contacts';
@override
String get onlineOnly => 'En ligne uniquement';
@override
String get inBoth => 'Dans les deux';
@override
String get source => 'Source';
@override
String get manualRouteEdit => 'Édition manuelle de route';
@override
String get observedMeshRoute => 'Route mesh observée';
@override
String get allMessagesCleared => 'Tous les messages effacés';
@override
String get onlineTraceDatabaseCleared => 'Base de données de traces effacée';
@override
String get packetLogsCleared => 'Journaux de paquets effacés';
@override
String get hexDataCopiedToClipboard =>
'Données hex copiées dans le presse-papiers';
@override
String get developerModeEnabled => 'Mode développeur activé';
@override
String get developerModeDisabled => 'Mode développeur désactivé';
@override
String get clipboardIsEmpty => 'Le presse-papiers est vide';
@override
String get contactImported => 'Contact importé';
@override
String get contactLinkCopiedToClipboard =>
'Lien du contact copié dans le presse-papiers';
@override
String get failedToExportContact => 'Échec de l\'exportation du contact';
@override
String get noLogsToExport => 'Aucun journal à exporter';
@override
String get exportAsCsv => 'Exporter en CSV';
@override
String get exportAsText => 'Exporter en texte';
@override
String get receivedRfc3339 => 'Reçu (RFC3339)';
@override
String get buildTime => 'Heure de build';
@override
String get downloadUrlNotAvailable => 'URL de téléchargement non disponible';
@override
String get cannotOpenDownloadUrl =>
'Impossible d\'ouvrir l\'URL de téléchargement';
@override
String get updateCheckIsOnlyAvailableOnAndroid =>
'La vérification des mises à jour n\'est disponible que sur Android';
@override
String get youAreRunningTheLatestVersion =>
'Vous utilisez la dernière version';
@override
String get updateAvailableButDownloadUrlNotFound =>
'Mise à jour disponible mais URL de téléchargement introuvable';
@override
String get startTictactoe => 'Démarrer Tic-Tac-Toe';
@override
String get tictactoeUnavailable => 'Tic-Tac-Toe indisponible';
@override
String get tictactoeOpponentUnknown => 'Tic-Tac-Toe: adversaire inconnu';
@override
String get tictactoeWaitingForStart => 'Tic-Tac-Toe: en attente du début';
@override
String get acceptsShareLinks => 'Accepte les liens partagés';
@override
String get supportsRawHex => 'Supporte le hex brut';
@override
String get clipboardfriendly => 'Compatible avec le presse-papiers';
@override
String get captured => 'Capturé';
@override
String get size => 'Taille';
@override
String get noCustomChannelsToClear => 'Aucun canal personnalisé à effacer.';
@override
String get noDeviceContactsToClear =>
'Aucun contact de l\'appareil à effacer.';
}

View File

@@ -1912,4 +1912,767 @@ class AppLocalizationsHr extends AppLocalizations {
String contactFailedToSetRoute(String error) {
return 'Postavljanje rute nije uspjelo: $error';
}
@override
String get rssi => 'RSSI';
@override
String get snr => 'SNR';
@override
String get ackTimeout => 'ACK istek vremena';
@override
String get opcode => 'Opkod';
@override
String get payload => 'Sadržaj';
@override
String get hops => 'Skokovi';
@override
String get hashSize => 'Veličina hash-a';
@override
String get pathBytes => 'Bajtovi putanje';
@override
String get selectedPath => 'Odabrana putanja';
@override
String get estimatedTx => 'Procijenjeno slanje';
@override
String get senderToReceipt => 'Od pošiljatelja do primitka';
@override
String get receivedCopies => 'Primljene kopije';
@override
String get retryCause => 'Razlog ponovnog pokušaja';
@override
String get retryMode => 'Način ponovnog pokušaja';
@override
String get retryResult => 'Rezultat ponovnog pokušaja';
@override
String get lastRetry => 'Zadnji pokušaj';
@override
String get rxPackets => 'RX paketi';
@override
String get mesh => 'Mesh';
@override
String get rate => 'Brzina';
@override
String get window => 'Prozor';
@override
String get posttxDelay => 'Kašnjenje nakon slanja';
@override
String get bandpass => 'Pojasni filtar';
@override
String get bandpassFilterVoice => 'Pojasni filtar glasa';
@override
String get frequency => 'Frekvencija';
@override
String get australia => 'Australija';
@override
String get australiaNarrow => 'Australija (usko)';
@override
String get australiaQld => 'Australija: QLD';
@override
String get australiaSaWa => 'Australija: SA, WA';
@override
String get newZealand => 'Novi Zeland';
@override
String get newZealandNarrow => 'Novi Zeland (usko)';
@override
String get switzerland => 'Švicarska';
@override
String get portugal433 => 'Portugal 433';
@override
String get portugal868 => 'Portugal 868';
@override
String get czechRepublicNarrow => 'Češka (usko)';
@override
String get eu433mhzLongRange => 'EU 433MHz (veliki domet)';
@override
String get euukDeprecated => 'EU/UK (zastarjelo)';
@override
String get euukNarrow => 'EU/UK (usko)';
@override
String get usacanadaRecommended => 'SAD/Kanada (preporučeno)';
@override
String get vietnamDeprecated => 'Vijetnam (zastarjelo)';
@override
String get vietnamNarrow => 'Vijetnam (usko)';
@override
String get active => 'Aktivno';
@override
String get addContact => 'Dodaj kontakt';
@override
String get all => 'Sve';
@override
String get autoResolve => 'Automatski razriješi';
@override
String get clearAllLabel => 'Očisti sve';
@override
String get clearRelays => 'Očisti posrednike';
@override
String get clearFilters => 'Očisti filtre';
@override
String get clearRoute => 'Očisti putanju';
@override
String get clearMessages => 'Očisti poruke';
@override
String get clearScale => 'Očisti mjerilo';
@override
String get clearDiscoveries => 'Očisti otkrića';
@override
String get clearOnlineTraceDatabase => 'Očisti bazu mrežnih tragova';
@override
String get clearAllChannels => 'Očisti sve kanale';
@override
String get clearAllContacts => 'Očisti sve kontakte';
@override
String get clearChannels => 'Očisti kanale';
@override
String get clearContacts => 'Očisti kontakte';
@override
String get clearPathOnMaxRetry => 'Očisti putanju kod maks. pokušaja';
@override
String get create => 'Stvori';
@override
String get custom => 'Prilagođeno';
@override
String get defaultValue => 'Zadano';
@override
String get duplicate => 'Dupliciraj';
@override
String get editName => 'Uredi ime';
@override
String get open => 'Otvori';
@override
String get paste => 'Zalijepi';
@override
String get preview => 'Pregled';
@override
String get remove => 'Ukloni';
@override
String get rename => 'Preimenuj';
@override
String get resolveAll => 'Razriješi sve';
@override
String get send => 'Pošalji';
@override
String get sendAnyway => 'Svejedno pošalji';
@override
String get share => 'Dijeli';
@override
String get shareContact => 'Dijeli kontakt';
@override
String get trace => 'Praćenje';
@override
String get use => 'Koristi';
@override
String get useSelectedFrequency => 'Koristi odabranu frekvenciju';
@override
String get discovery => 'Otkrivanje';
@override
String get discoverRepeaters => 'Otkrij posrednike';
@override
String get discoverSensors => 'Otkrij senzore';
@override
String get repeaterDiscoverySent => 'Otkrivanje posrednika poslano';
@override
String get sensorDiscoverySent => 'Otkrivanje senzora poslano';
@override
String get clearedPendingDiscoveries => 'Očišćena čekajuća otkrića.';
@override
String get autoDiscovery => 'Automatsko otkrivanje';
@override
String get enableAutomaticAdding => 'Omogući automatsko dodavanje';
@override
String get autoaddRepeaters => 'Automatski dodaj posrednike';
@override
String get autoaddRoomServers => 'Automatski dodaj poslužitelje soba';
@override
String get autoaddSensors => 'Automatski dodaj senzore';
@override
String get autoaddUsers => 'Automatski dodaj korisnike';
@override
String get overwriteOldestWhenFull => 'Prepiši najstarije kad je puno';
@override
String get storage => 'Pohrana';
@override
String get dangerZone => 'Opasna zona';
@override
String get profiles => 'Profili';
@override
String get favourites => 'Favoriti';
@override
String get sensors => 'Senzori';
@override
String get others => 'Ostali';
@override
String get gpsModule => 'GPS modul';
@override
String get liveTraffic => 'Promet uživo';
@override
String get repeatersMap => 'Karta posrednika';
@override
String get spectrumScan => 'Spektralno skeniranje';
@override
String get blePacketLogs => 'BLE zapisi paketa';
@override
String get onlineTraceDatabase => 'Baza mrežnih tragova';
@override
String get routePathByteSize => 'Veličina putanje u bajtima';
@override
String get messageNotifications => 'Obavijesti o porukama';
@override
String get sarAlerts => 'SAR upozorenja';
@override
String get discoveryNotifications => 'Obavijesti o otkrivanju';
@override
String get updateNotifications => 'Obavijesti o ažuriranju';
@override
String get muteWhileAppIsOpen => 'Utišaj dok je aplikacija otvorena';
@override
String get disableContacts => 'Onemogući kontakte';
@override
String get enableSensorsTab => 'Omogući karticu Senzori';
@override
String get enableProfiles => 'Omogući profile';
@override
String get autoRouteRotation => 'Automatsko rotiranje putanje';
@override
String get nearestRepeaterFallback => 'Najbliži posrednik kao rezerva';
@override
String get deleteAllStoredMessageHistory =>
'Izbriši svu pohranjenu povijest poruka';
@override
String get messageFontSize => 'Veličina fonta poruka';
@override
String get rotateMapWithHeading => 'Rotiraj kartu prema smjeru';
@override
String get showMapDebugInfo => 'Prikaži debug info karte';
@override
String get openMapInFullscreen => 'Otvori kartu na cijelom zaslonu';
@override
String get showSarMarkersLabel => 'Prikaži SAR oznake';
@override
String get displaySarMarkersOnTheMainMap =>
'Prikaži SAR oznake na glavnoj karti';
@override
String get showAllContactTrailsLabel => 'Prikaži sve tragove kontakata';
@override
String get hideRepeatersOnMap => 'Sakrij posrednike na karti';
@override
String get setMapScale => 'Postavi mjerilo karte';
@override
String get customMapScaleSaved => 'Prilagođeno mjerilo karte spremljeno';
@override
String get voiceBitrate => 'Bitna brzina glasa';
@override
String get voiceCompressor => 'Kompresor glasa';
@override
String get balancesQuietAndLoudSpeechLevels =>
'Izravnava tihe i glasne razine govora';
@override
String get voiceLimiter => 'Ograničivač glasa';
@override
String get preventsClippingPeaksBeforeEncoding =>
'Sprječava rezanje vrhova prije kodiranja';
@override
String get micAutoGain => 'Automatsko pojačanje mikrofona';
@override
String get letsTheRecorderAdjustInputLevel =>
'Dopušta snimaču prilagodbu razine ulaza';
@override
String get echoCancellation => 'Poništavanje odjeka';
@override
String get noiseSuppression => 'Potiskivanje šuma';
@override
String get trimSilenceInVoiceMessages => 'Izreži tišinu u glasovnim porukama';
@override
String get compressor => 'Kompresor';
@override
String get limiter => 'Ograničivač';
@override
String get autoGain => 'Automatsko pojačanje';
@override
String get echoCancel => 'Odjek';
@override
String get noiseSuppress => 'Šum';
@override
String get silenceTrim => 'Tišina';
@override
String get maxImageSize => 'Maksimalna veličina slike';
@override
String get imageCompression => 'Kompresija slike';
@override
String get grayscale => 'Sivine';
@override
String get ultraMode => 'Ultra način';
@override
String get fastPrivateGpsUpdates => 'Brza privatna GPS ažuriranja';
@override
String get movementThreshold => 'Prag kretanja';
@override
String get fastGpsMovementThreshold => 'Prag kretanja za brzi GPS';
@override
String get fastGpsActiveuseInterval =>
'Interval aktivnog korištenja brzog GPS-a';
@override
String get activeuseUpdateInterval =>
'Interval ažuriranja pri aktivnom korištenju';
@override
String get repeatNearbyTraffic => 'Ponovi obližnji promet';
@override
String get relayThroughRepeatersAcrossTheMesh =>
'Proslijedi kroz posrednike kroz mrežu';
@override
String get nearbyOnlyWithoutRepeaterFlooding =>
'Samo obližnji, bez preplavljivanja posrednika';
@override
String get multihop => 'Višeskočno';
@override
String get createProfile => 'Stvori profil';
@override
String get renameProfile => 'Preimenuj profil';
@override
String get newProfile => 'Novi profil';
@override
String get manageProfiles => 'Upravljaj profilima';
@override
String get enableProfilesToStartManagingThem =>
'Omogućite profile da biste ih počeli upravljati.';
@override
String get openMessage => 'Otvori poruku';
@override
String get jumpToTheRelatedSarMessage => 'Skoči na povezanu SAR poruku';
@override
String get removeSarMarker => 'Ukloni SAR oznaku';
@override
String get pleaseSelectADestinationToSendSarMarker =>
'Odaberite odredište za slanje SAR oznake';
@override
String get sarMarkerBroadcastToPublicChannel =>
'SAR oznaka emitirana na javni kanal';
@override
String get sarMarkerSentToRoom => 'SAR oznaka poslana u sobu';
@override
String get loadFromGallery => 'Učitaj iz galerije';
@override
String get replaceImage => 'Zamijeni sliku';
@override
String get selectFromGallery => 'Odaberi iz galerije';
@override
String get team => 'Tim';
@override
String get found => 'Pronađeno';
@override
String get staging => 'Sabirno mjesto';
@override
String get object => 'Objekt';
@override
String get quiet => 'Tiho';
@override
String get moderate => 'Umjereno';
@override
String get busy => 'Zauzeto';
@override
String get spectrumScanReturnedNoCandidateFrequencies =>
'Spektralno skeniranje nije pronašlo prikladne frekvencije';
@override
String get searchMessages => 'Pretraži poruke';
@override
String get sendImageFromGallery => 'Pošalji sliku iz galerije';
@override
String get takePhoto => 'Snimi fotografiju';
@override
String get dmOnly => 'Samo izravno';
@override
String get allMessages => 'Sve poruke';
@override
String get sendToPublicChannel => 'Pošalji na javni kanal?';
@override
String get selectMarkerTypeAndDestination =>
'Odaberite vrstu oznake i odredište';
@override
String get noDestinationsAvailableLabel => 'Nema dostupnih odredišta';
@override
String get image => 'Slika';
@override
String get format => 'Format';
@override
String get dimensions => 'Dimenzije';
@override
String get segments => 'Segmenti';
@override
String get transfers => 'Prijenosi';
@override
String get downloadedBy => 'Preuzeo';
@override
String get saveDiscoverySettings => 'Spremi postavke otkrivanja';
@override
String get savePublicInfo => 'Spremi javne podatke';
@override
String get saveRadioSettings => 'Spremi radijske postavke';
@override
String get savePath => 'Spremi putanju';
@override
String get wipeDeviceData => 'Obriši podatke uređaja';
@override
String get wipeDevice => 'Obriši uređaj';
@override
String get destructiveDeviceActions => 'Destruktivne radnje na uređaju.';
@override
String get chooseAPresetOrFinetuneCustomRadioSettings =>
'Odaberite predefiniranu postavku ili fino podesite radijske postavke.';
@override
String get chooseTheNameAndLocationThisDeviceShares =>
'Odaberite ime i lokaciju koju ovaj uređaj dijeli.';
@override
String get availableSpaceOnThisDevice =>
'Raspoloživi prostor na ovom uređaju.';
@override
String get used => 'Korišteno';
@override
String get total => 'Ukupno';
@override
String get renameValue => 'Preimenuj vrijednost';
@override
String get customizeFields => 'Prilagodi polja';
@override
String get livePreview => 'Pregled uživo';
@override
String get refreshSchedule => 'Raspored osvježavanja';
@override
String get noResponse => 'Nema odgovora';
@override
String get refreshing => 'Osvježavam';
@override
String get unavailable => 'Nedostupno';
@override
String get pickARelayOrNodeToWatchInSensors =>
'Odaberite posrednika ili čvor za praćenje.';
@override
String get publicKeyLabel => 'Javni ključ';
@override
String get alreadyInContacts => 'Već u kontaktima';
@override
String get connectToADeviceBeforeAddingContacts =>
'Povežite se s uređajem prije dodavanja kontakata';
@override
String get fromContacts => 'Iz kontakata';
@override
String get onlineOnly => 'Samo povezani';
@override
String get inBoth => 'U oba';
@override
String get source => 'Izvor';
@override
String get manualRouteEdit => 'Ručno uređivanje putanje';
@override
String get observedMeshRoute => 'Opažena mrežna putanja';
@override
String get allMessagesCleared => 'Sve poruke očišćene';
@override
String get onlineTraceDatabaseCleared => 'Baza mrežnih tragova očišćena';
@override
String get packetLogsCleared => 'Zapisi paketa očišćeni';
@override
String get hexDataCopiedToClipboard => 'Hex podaci kopirani u međuspremnik';
@override
String get developerModeEnabled => 'Razvojni način omogućen';
@override
String get developerModeDisabled => 'Razvojni način onemogućen';
@override
String get clipboardIsEmpty => 'Međuspremnik je prazan';
@override
String get contactImported => 'Kontakt uvezen';
@override
String get contactLinkCopiedToClipboard =>
'Poveznica na kontakt kopirana u međuspremnik';
@override
String get failedToExportContact => 'Izvoz kontakta nije uspio';
@override
String get noLogsToExport => 'Nema zapisa za izvoz';
@override
String get exportAsCsv => 'Izvezi kao CSV';
@override
String get exportAsText => 'Izvezi kao tekst';
@override
String get receivedRfc3339 => 'Primljeno (RFC3339)';
@override
String get buildTime => 'Vrijeme gradnje';
@override
String get downloadUrlNotAvailable => 'URL za preuzimanje nije dostupan';
@override
String get cannotOpenDownloadUrl => 'Ne mogu otvoriti URL za preuzimanje';
@override
String get updateCheckIsOnlyAvailableOnAndroid =>
'Provjera ažuriranja dostupna je samo na Androidu';
@override
String get youAreRunningTheLatestVersion => 'Koristite najnoviju verziju';
@override
String get updateAvailableButDownloadUrlNotFound =>
'Ažuriranje dostupno, ali URL za preuzimanje nije pronađen';
@override
String get startTictactoe => 'Pokreni Tic-Tac-Toe';
@override
String get tictactoeUnavailable => 'Tic-Tac-Toe nije dostupan';
@override
String get tictactoeOpponentUnknown => 'Tic-Tac-Toe: protivnik nepoznat';
@override
String get tictactoeWaitingForStart => 'Tic-Tac-Toe: čekanje na početak';
@override
String get acceptsShareLinks => 'Prihvaća dijeljene veze';
@override
String get supportsRawHex => 'Podržava sirovi hex';
@override
String get clipboardfriendly => 'Pogodno za međuspremnik';
@override
String get captured => 'Zabilježeno';
@override
String get size => 'Veličina';
@override
String get noCustomChannelsToClear => 'Nema prilagođenih kanala za brisanje.';
@override
String get noDeviceContactsToClear => 'Nema kontakata uređaja za brisanje.';
}

View File

@@ -1927,4 +1927,769 @@ class AppLocalizationsIt extends AppLocalizations {
String contactFailedToSetRoute(String error) {
return 'Impossibile impostare il percorso: $error';
}
@override
String get rssi => 'RSSI';
@override
String get snr => 'SNR';
@override
String get ackTimeout => 'Timeout ACK';
@override
String get opcode => 'Opcode';
@override
String get payload => 'Payload';
@override
String get hops => 'Hop';
@override
String get hashSize => 'Dimensione hash';
@override
String get pathBytes => 'Byte percorso';
@override
String get selectedPath => 'Percorso selezionato';
@override
String get estimatedTx => 'Trasmissione stimata';
@override
String get senderToReceipt => 'Mittente a ricevuta';
@override
String get receivedCopies => 'Copie ricevute';
@override
String get retryCause => 'Causa del ritentativo';
@override
String get retryMode => 'Modalità ritentativo';
@override
String get retryResult => 'Risultato ritentativo';
@override
String get lastRetry => 'Ultimo ritentativo';
@override
String get rxPackets => 'Pacchetti RX';
@override
String get mesh => 'Mesh';
@override
String get rate => 'Velocità';
@override
String get window => 'Finestra';
@override
String get posttxDelay => 'Ritardo post-tx';
@override
String get bandpass => 'Passa-banda';
@override
String get bandpassFilterVoice => 'Filtro passa-banda voce';
@override
String get frequency => 'Frequenza';
@override
String get australia => 'Australia';
@override
String get australiaNarrow => 'Australia (Stretto)';
@override
String get australiaQld => 'Australia: QLD';
@override
String get australiaSaWa => 'Australia: SA, WA';
@override
String get newZealand => 'Nuova Zelanda';
@override
String get newZealandNarrow => 'Nuova Zelanda (Stretto)';
@override
String get switzerland => 'Svizzera';
@override
String get portugal433 => 'Portogallo 433';
@override
String get portugal868 => 'Portogallo 868';
@override
String get czechRepublicNarrow => 'Repubblica Ceca (Stretto)';
@override
String get eu433mhzLongRange => 'UE 433MHz (Lungo Raggio)';
@override
String get euukDeprecated => 'UE/UK (Deprecato)';
@override
String get euukNarrow => 'UE/UK (Stretto)';
@override
String get usacanadaRecommended => 'USA/Canada (Consigliato)';
@override
String get vietnamDeprecated => 'Vietnam (Deprecato)';
@override
String get vietnamNarrow => 'Vietnam (Stretto)';
@override
String get active => 'Attivo';
@override
String get addContact => 'Aggiungi contatto';
@override
String get all => 'Tutto';
@override
String get autoResolve => 'Risolvi automaticamente';
@override
String get clearAllLabel => 'Cancella tutto';
@override
String get clearRelays => 'Cancella relay';
@override
String get clearFilters => 'Cancella filtri';
@override
String get clearRoute => 'Cancella percorso';
@override
String get clearMessages => 'Cancella messaggi';
@override
String get clearScale => 'Cancella scala';
@override
String get clearDiscoveries => 'Cancella scoperte';
@override
String get clearOnlineTraceDatabase => 'Cancella database tracce';
@override
String get clearAllChannels => 'Cancella tutti i canali';
@override
String get clearAllContacts => 'Cancella tutti i contatti';
@override
String get clearChannels => 'Cancella canali';
@override
String get clearContacts => 'Cancella contatti';
@override
String get clearPathOnMaxRetry => 'Cancella percorso al max ritentativo';
@override
String get create => 'Crea';
@override
String get custom => 'Personalizzato';
@override
String get defaultValue => 'Predefinito';
@override
String get duplicate => 'Duplica';
@override
String get editName => 'Modifica nome';
@override
String get open => 'Apri';
@override
String get paste => 'Incolla';
@override
String get preview => 'Anteprima';
@override
String get remove => 'Rimuovi';
@override
String get rename => 'Rinomina';
@override
String get resolveAll => 'Risolvi tutto';
@override
String get send => 'Invia';
@override
String get sendAnyway => 'Invia comunque';
@override
String get share => 'Condividi';
@override
String get shareContact => 'Condividi contatto';
@override
String get trace => 'Traccia';
@override
String get use => 'Usa';
@override
String get useSelectedFrequency => 'Usa frequenza selezionata';
@override
String get discovery => 'Scoperta';
@override
String get discoverRepeaters => 'Scopri ripetitori';
@override
String get discoverSensors => 'Scopri sensori';
@override
String get repeaterDiscoverySent => 'Scoperta ripetitori inviata';
@override
String get sensorDiscoverySent => 'Scoperta sensori inviata';
@override
String get clearedPendingDiscoveries => 'Scoperte in attesa cancellate.';
@override
String get autoDiscovery => 'Scoperta automatica';
@override
String get enableAutomaticAdding => 'Abilita aggiunta automatica';
@override
String get autoaddRepeaters => 'Aggiungi ripetitori automaticamente';
@override
String get autoaddRoomServers => 'Aggiungi server stanze automaticamente';
@override
String get autoaddSensors => 'Aggiungi sensori automaticamente';
@override
String get autoaddUsers => 'Aggiungi utenti automaticamente';
@override
String get overwriteOldestWhenFull => 'Sovrascrivi i più vecchi quando pieno';
@override
String get storage => 'Archiviazione';
@override
String get dangerZone => 'Zona pericolosa';
@override
String get profiles => 'Profili';
@override
String get favourites => 'Preferiti';
@override
String get sensors => 'Sensori';
@override
String get others => 'Altri';
@override
String get gpsModule => 'Modulo GPS';
@override
String get liveTraffic => 'Traffico in tempo reale';
@override
String get repeatersMap => 'Mappa ripetitori';
@override
String get spectrumScan => 'Scansione spettro';
@override
String get blePacketLogs => 'Log pacchetti BLE';
@override
String get onlineTraceDatabase => 'Database tracce';
@override
String get routePathByteSize => 'Dimensione percorso in byte';
@override
String get messageNotifications => 'Notifiche messaggi';
@override
String get sarAlerts => 'Avvisi SAR';
@override
String get discoveryNotifications => 'Notifiche scoperte';
@override
String get updateNotifications => 'Notifiche aggiornamenti';
@override
String get muteWhileAppIsOpen => 'Silenzia con l\'app aperta';
@override
String get disableContacts => 'Disabilita contatti';
@override
String get enableSensorsTab => 'Abilita scheda Sensori';
@override
String get enableProfiles => 'Abilita profili';
@override
String get autoRouteRotation => 'Rotazione automatica percorso';
@override
String get nearestRepeaterFallback => 'Ripetitore più vicino come fallback';
@override
String get deleteAllStoredMessageHistory =>
'Elimina tutta la cronologia messaggi';
@override
String get messageFontSize => 'Dimensione carattere messaggi';
@override
String get rotateMapWithHeading => 'Ruota mappa con direzione';
@override
String get showMapDebugInfo => 'Mostra info debug mappa';
@override
String get openMapInFullscreen => 'Apri mappa a schermo intero';
@override
String get showSarMarkersLabel => 'Mostra marcatori SAR';
@override
String get displaySarMarkersOnTheMainMap =>
'Mostra marcatori SAR sulla mappa principale';
@override
String get showAllContactTrailsLabel => 'Mostra tutti i percorsi contatti';
@override
String get hideRepeatersOnMap => 'Nascondi ripetitori sulla mappa';
@override
String get setMapScale => 'Imposta scala mappa';
@override
String get customMapScaleSaved => 'Scala mappa personalizzata salvata';
@override
String get voiceBitrate => 'Bitrate voce';
@override
String get voiceCompressor => 'Compressore voce';
@override
String get balancesQuietAndLoudSpeechLevels =>
'Bilancia i livelli di voce bassi e alti';
@override
String get voiceLimiter => 'Limitatore voce';
@override
String get preventsClippingPeaksBeforeEncoding =>
'Previene il clipping prima della codifica';
@override
String get micAutoGain => 'Guadagno automatico microfono';
@override
String get letsTheRecorderAdjustInputLevel =>
'Permette al registratore di regolare il livello';
@override
String get echoCancellation => 'Cancellazione eco';
@override
String get noiseSuppression => 'Soppressione rumore';
@override
String get trimSilenceInVoiceMessages =>
'Taglia silenzio nei messaggi vocali';
@override
String get compressor => 'Compressore';
@override
String get limiter => 'Limitatore';
@override
String get autoGain => 'Guadagno automatico';
@override
String get echoCancel => 'Eco';
@override
String get noiseSuppress => 'Rumore';
@override
String get silenceTrim => 'Silenzio';
@override
String get maxImageSize => 'Dimensione massima immagine';
@override
String get imageCompression => 'Compressione immagine';
@override
String get grayscale => 'Scala di grigi';
@override
String get ultraMode => 'Modalità ultra';
@override
String get fastPrivateGpsUpdates => 'Aggiornamenti GPS privati veloci';
@override
String get movementThreshold => 'Soglia di movimento';
@override
String get fastGpsMovementThreshold => 'Soglia movimento GPS veloce';
@override
String get fastGpsActiveuseInterval => 'Intervallo uso attivo GPS veloce';
@override
String get activeuseUpdateInterval => 'Intervallo aggiornamento uso attivo';
@override
String get repeatNearbyTraffic => 'Ripeti traffico vicino';
@override
String get relayThroughRepeatersAcrossTheMesh =>
'Inoltra tramite ripetitori nella rete';
@override
String get nearbyOnlyWithoutRepeaterFlooding =>
'Solo vicini, senza flood dei ripetitori';
@override
String get multihop => 'Multi-hop';
@override
String get createProfile => 'Crea profilo';
@override
String get renameProfile => 'Rinomina profilo';
@override
String get newProfile => 'Nuovo profilo';
@override
String get manageProfiles => 'Gestisci profili';
@override
String get enableProfilesToStartManagingThem =>
'Abilita i profili per iniziare a gestirli.';
@override
String get openMessage => 'Apri messaggio';
@override
String get jumpToTheRelatedSarMessage => 'Vai al messaggio SAR correlato';
@override
String get removeSarMarker => 'Rimuovi marcatore SAR';
@override
String get pleaseSelectADestinationToSendSarMarker =>
'Seleziona una destinazione per inviare il marcatore SAR';
@override
String get sarMarkerBroadcastToPublicChannel =>
'Marcatore SAR trasmesso al canale pubblico';
@override
String get sarMarkerSentToRoom => 'Marcatore SAR inviato alla stanza';
@override
String get loadFromGallery => 'Carica dalla galleria';
@override
String get replaceImage => 'Sostituisci immagine';
@override
String get selectFromGallery => 'Seleziona dalla galleria';
@override
String get team => 'Squadra';
@override
String get found => 'Trovato';
@override
String get staging => 'Area di raccolta';
@override
String get object => 'Oggetto';
@override
String get quiet => 'Silenzioso';
@override
String get moderate => 'Moderato';
@override
String get busy => 'Occupato';
@override
String get spectrumScanReturnedNoCandidateFrequencies =>
'La scansione spettro non ha trovato frequenze candidate';
@override
String get searchMessages => 'Cerca messaggi';
@override
String get sendImageFromGallery => 'Invia immagine dalla galleria';
@override
String get takePhoto => 'Scatta foto';
@override
String get dmOnly => 'Solo messaggio diretto';
@override
String get allMessages => 'Tutti i messaggi';
@override
String get sendToPublicChannel => 'Inviare al canale pubblico?';
@override
String get selectMarkerTypeAndDestination =>
'Seleziona tipo marcatore e destinazione';
@override
String get noDestinationsAvailableLabel => 'Nessuna destinazione disponibile';
@override
String get image => 'Immagine';
@override
String get format => 'Formato';
@override
String get dimensions => 'Dimensioni';
@override
String get segments => 'Segmenti';
@override
String get transfers => 'Trasferimenti';
@override
String get downloadedBy => 'Scaricato da';
@override
String get saveDiscoverySettings => 'Salva impostazioni scoperta';
@override
String get savePublicInfo => 'Salva info pubbliche';
@override
String get saveRadioSettings => 'Salva impostazioni radio';
@override
String get savePath => 'Salva percorso';
@override
String get wipeDeviceData => 'Cancella dati dispositivo';
@override
String get wipeDevice => 'Cancella dispositivo';
@override
String get destructiveDeviceActions => 'Azioni distruttive del dispositivo.';
@override
String get chooseAPresetOrFinetuneCustomRadioSettings =>
'Scegli un preset o personalizza le impostazioni radio.';
@override
String get chooseTheNameAndLocationThisDeviceShares =>
'Scegli il nome e la posizione condivisi da questo dispositivo.';
@override
String get availableSpaceOnThisDevice =>
'Spazio disponibile su questo dispositivo.';
@override
String get used => 'Usato';
@override
String get total => 'Totale';
@override
String get renameValue => 'Rinomina valore';
@override
String get customizeFields => 'Personalizza campi';
@override
String get livePreview => 'Anteprima dal vivo';
@override
String get refreshSchedule => 'Programma aggiornamento';
@override
String get noResponse => 'Nessuna risposta';
@override
String get refreshing => 'Aggiornamento';
@override
String get unavailable => 'Non disponibile';
@override
String get pickARelayOrNodeToWatchInSensors =>
'Scegli un relay o nodo da monitorare.';
@override
String get publicKeyLabel => 'Chiave pubblica';
@override
String get alreadyInContacts => 'Già nei contatti';
@override
String get connectToADeviceBeforeAddingContacts =>
'Connettiti a un dispositivo prima di aggiungere contatti';
@override
String get fromContacts => 'Dai contatti';
@override
String get onlineOnly => 'Solo online';
@override
String get inBoth => 'In entrambi';
@override
String get source => 'Origine';
@override
String get manualRouteEdit => 'Modifica manuale percorso';
@override
String get observedMeshRoute => 'Percorso mesh osservato';
@override
String get allMessagesCleared => 'Tutti i messaggi cancellati';
@override
String get onlineTraceDatabaseCleared => 'Database tracce cancellata';
@override
String get packetLogsCleared => 'Log pacchetti cancellati';
@override
String get hexDataCopiedToClipboard => 'Dati hex copiati negli appunti';
@override
String get developerModeEnabled => 'Modalità sviluppatore attivata';
@override
String get developerModeDisabled => 'Modalità sviluppatore disattivata';
@override
String get clipboardIsEmpty => 'Gli appunti sono vuoti';
@override
String get contactImported => 'Contatto importato';
@override
String get contactLinkCopiedToClipboard =>
'Link contatto copiato negli appunti';
@override
String get failedToExportContact => 'Esportazione contatto fallita';
@override
String get noLogsToExport => 'Nessun log da esportare';
@override
String get exportAsCsv => 'Esporta come CSV';
@override
String get exportAsText => 'Esporta come testo';
@override
String get receivedRfc3339 => 'Ricevuto (RFC3339)';
@override
String get buildTime => 'Ora build';
@override
String get downloadUrlNotAvailable => 'URL di download non disponibile';
@override
String get cannotOpenDownloadUrl => 'Impossibile aprire URL di download';
@override
String get updateCheckIsOnlyAvailableOnAndroid =>
'Il controllo aggiornamenti è disponibile solo su Android';
@override
String get youAreRunningTheLatestVersion =>
'Stai utilizzando l\'ultima versione';
@override
String get updateAvailableButDownloadUrlNotFound =>
'Aggiornamento disponibile ma URL di download non trovato';
@override
String get startTictactoe => 'Avvia Tic-Tac-Toe';
@override
String get tictactoeUnavailable => 'Tic-Tac-Toe non disponibile';
@override
String get tictactoeOpponentUnknown => 'Tic-Tac-Toe: avversario sconosciuto';
@override
String get tictactoeWaitingForStart => 'Tic-Tac-Toe: in attesa dell\'inizio';
@override
String get acceptsShareLinks => 'Accetta link condivisi';
@override
String get supportsRawHex => 'Supporta hex grezzo';
@override
String get clipboardfriendly => 'Compatibile con appunti';
@override
String get captured => 'Catturato';
@override
String get size => 'Dimensione';
@override
String get noCustomChannelsToClear =>
'Nessun canale personalizzato da cancellare.';
@override
String get noDeviceContactsToClear =>
'Nessun contatto dispositivo da cancellare.';
}

View File

@@ -1924,4 +1924,769 @@ class AppLocalizationsPl extends AppLocalizations {
String contactFailedToSetRoute(String error) {
return 'Nie udało się ustawić trasy: $error';
}
@override
String get rssi => 'RSSI';
@override
String get snr => 'SNR';
@override
String get ackTimeout => 'Limit czasu ACK';
@override
String get opcode => 'Opcode';
@override
String get payload => 'Ładunek';
@override
String get hops => 'Skoki';
@override
String get hashSize => 'Rozmiar hash';
@override
String get pathBytes => 'Bajty ścieżki';
@override
String get selectedPath => 'Wybrana ścieżka';
@override
String get estimatedTx => 'Szacowane nadawanie';
@override
String get senderToReceipt => 'Od nadawcy do odbioru';
@override
String get receivedCopies => 'Otrzymane kopie';
@override
String get retryCause => 'Przyczyna ponowienia';
@override
String get retryMode => 'Tryb ponowienia';
@override
String get retryResult => 'Wynik ponowienia';
@override
String get lastRetry => 'Ostatnia próba';
@override
String get rxPackets => 'Pakiety RX';
@override
String get mesh => 'Mesh';
@override
String get rate => 'Szybkość';
@override
String get window => 'Okno';
@override
String get posttxDelay => 'Opóźnienie po nadawaniu';
@override
String get bandpass => 'Pasmowy';
@override
String get bandpassFilterVoice => 'Filtr pasmowy głosu';
@override
String get frequency => 'Częstotliwość';
@override
String get australia => 'Australia';
@override
String get australiaNarrow => 'Australia (wąski)';
@override
String get australiaQld => 'Australia: QLD';
@override
String get australiaSaWa => 'Australia: SA, WA';
@override
String get newZealand => 'Nowa Zelandia';
@override
String get newZealandNarrow => 'Nowa Zelandia (wąski)';
@override
String get switzerland => 'Szwajcaria';
@override
String get portugal433 => 'Portugalia 433';
@override
String get portugal868 => 'Portugalia 868';
@override
String get czechRepublicNarrow => 'Czechy (wąski)';
@override
String get eu433mhzLongRange => 'EU 433MHz (daleki zasięg)';
@override
String get euukDeprecated => 'EU/UK (przestarzały)';
@override
String get euukNarrow => 'EU/UK (wąski)';
@override
String get usacanadaRecommended => 'USA/Kanada (zalecany)';
@override
String get vietnamDeprecated => 'Wietnam (przestarzały)';
@override
String get vietnamNarrow => 'Wietnam (wąski)';
@override
String get active => 'Aktywny';
@override
String get addContact => 'Dodaj kontakt';
@override
String get all => 'Wszystko';
@override
String get autoResolve => 'Automatyczne rozwiązanie';
@override
String get clearAllLabel => 'Wyczyść wszystko';
@override
String get clearRelays => 'Wyczyść przekaźniki';
@override
String get clearFilters => 'Wyczyść filtry';
@override
String get clearRoute => 'Wyczyść trasę';
@override
String get clearMessages => 'Wyczyść wiadomości';
@override
String get clearScale => 'Wyczyść skalę';
@override
String get clearDiscoveries => 'Wyczyść odkrycia';
@override
String get clearOnlineTraceDatabase => 'Wyczyść bazę śladów';
@override
String get clearAllChannels => 'Wyczyść wszystkie kanały';
@override
String get clearAllContacts => 'Wyczyść wszystkie kontakty';
@override
String get clearChannels => 'Wyczyść kanały';
@override
String get clearContacts => 'Wyczyść kontakty';
@override
String get clearPathOnMaxRetry => 'Wyczyść ścieżkę przy maks. próbie';
@override
String get create => 'Utwórz';
@override
String get custom => 'Niestandardowy';
@override
String get defaultValue => 'Domyślny';
@override
String get duplicate => 'Duplikuj';
@override
String get editName => 'Edytuj nazwę';
@override
String get open => 'Otwórz';
@override
String get paste => 'Wklej';
@override
String get preview => 'Podgląd';
@override
String get remove => 'Usuń';
@override
String get rename => 'Zmień nazwę';
@override
String get resolveAll => 'Rozwiąż wszystko';
@override
String get send => 'Wyślij';
@override
String get sendAnyway => 'Wyślij mimo to';
@override
String get share => 'Udostępnij';
@override
String get shareContact => 'Udostępnij kontakt';
@override
String get trace => 'Śledzenie';
@override
String get use => 'Użyj';
@override
String get useSelectedFrequency => 'Użyj wybranej częstotliwości';
@override
String get discovery => 'Wykrywanie';
@override
String get discoverRepeaters => 'Wykryj przekaźniki';
@override
String get discoverSensors => 'Wykryj czujniki';
@override
String get repeaterDiscoverySent => 'Wykrywanie przekaźników wysłane';
@override
String get sensorDiscoverySent => 'Wykrywanie czujników wysłane';
@override
String get clearedPendingDiscoveries => 'Wyczyszczono oczekujące odkrycia.';
@override
String get autoDiscovery => 'Automatyczne wykrywanie';
@override
String get enableAutomaticAdding => 'Włącz automatyczne dodawanie';
@override
String get autoaddRepeaters => 'Automatycznie dodaj przekaźniki';
@override
String get autoaddRoomServers => 'Automatycznie dodaj serwery pokoi';
@override
String get autoaddSensors => 'Automatycznie dodaj czujniki';
@override
String get autoaddUsers => 'Automatycznie dodaj użytkowników';
@override
String get overwriteOldestWhenFull => 'Nadpisz najstarsze gdy pełne';
@override
String get storage => 'Pamięć';
@override
String get dangerZone => 'Strefa zagrożenia';
@override
String get profiles => 'Profile';
@override
String get favourites => 'Ulubione';
@override
String get sensors => 'Czujniki';
@override
String get others => 'Inne';
@override
String get gpsModule => 'Moduł GPS';
@override
String get liveTraffic => 'Ruch na żywo';
@override
String get repeatersMap => 'Mapa przekaźników';
@override
String get spectrumScan => 'Skanowanie spektrum';
@override
String get blePacketLogs => 'Logi pakietów BLE';
@override
String get onlineTraceDatabase => 'Baza śladów';
@override
String get routePathByteSize => 'Rozmiar ścieżki w bajtach';
@override
String get messageNotifications => 'Powiadomienia o wiadomościach';
@override
String get sarAlerts => 'Alerty SAR';
@override
String get discoveryNotifications => 'Powiadomienia o wykrywaniu';
@override
String get updateNotifications => 'Powiadomienia o aktualizacjach';
@override
String get muteWhileAppIsOpen => 'Wycisz gdy aplikacja jest otwarta';
@override
String get disableContacts => 'Wyłącz kontakty';
@override
String get enableSensorsTab => 'Włącz kartę Czujniki';
@override
String get enableProfiles => 'Włącz profile';
@override
String get autoRouteRotation => 'Automatyczna rotacja trasy';
@override
String get nearestRepeaterFallback => 'Najbliższy przekaźnik awaryjny';
@override
String get deleteAllStoredMessageHistory => 'Usuń całą historię wiadomości';
@override
String get messageFontSize => 'Rozmiar czcionki wiadomości';
@override
String get rotateMapWithHeading => 'Obracaj mapę z kierunkiem';
@override
String get showMapDebugInfo => 'Pokaż info debugowania mapy';
@override
String get openMapInFullscreen => 'Otwórz mapę na pełnym ekranie';
@override
String get showSarMarkersLabel => 'Pokaż znaczniki SAR';
@override
String get displaySarMarkersOnTheMainMap =>
'Wyświetlaj znaczniki SAR na głównej mapie';
@override
String get showAllContactTrailsLabel => 'Pokaż wszystkie ślady kontaktów';
@override
String get hideRepeatersOnMap => 'Ukryj przekaźniki na mapie';
@override
String get setMapScale => 'Ustaw skalę mapy';
@override
String get customMapScaleSaved => 'Niestandardowa skala mapy zapisana';
@override
String get voiceBitrate => 'Bitrate głosu';
@override
String get voiceCompressor => 'Kompresor głosu';
@override
String get balancesQuietAndLoudSpeechLevels =>
'Wyrównuje ciche i głośne poziomy mowy';
@override
String get voiceLimiter => 'Limiter głosu';
@override
String get preventsClippingPeaksBeforeEncoding =>
'Zapobiega przycinaniu szczytów przed kodowaniem';
@override
String get micAutoGain => 'Automatyczne wzmocnienie mikrofonu';
@override
String get letsTheRecorderAdjustInputLevel =>
'Pozwala nagrywarkowi dostosować poziom wejścia';
@override
String get echoCancellation => 'Usuwanie echa';
@override
String get noiseSuppression => 'Tłumienie szumu';
@override
String get trimSilenceInVoiceMessages =>
'Przytnij ciszę w wiadomościach głosowych';
@override
String get compressor => 'Kompresor';
@override
String get limiter => 'Limiter';
@override
String get autoGain => 'Automatyczne wzmocnienie';
@override
String get echoCancel => 'Echo';
@override
String get noiseSuppress => 'Szum';
@override
String get silenceTrim => 'Cisza';
@override
String get maxImageSize => 'Maksymalny rozmiar obrazu';
@override
String get imageCompression => 'Kompresja obrazu';
@override
String get grayscale => 'Skala szarości';
@override
String get ultraMode => 'Tryb ultra';
@override
String get fastPrivateGpsUpdates => 'Szybkie prywatne aktualizacje GPS';
@override
String get movementThreshold => 'Próg ruchu';
@override
String get fastGpsMovementThreshold => 'Próg ruchu szybkiego GPS';
@override
String get fastGpsActiveuseInterval =>
'Interwał aktywnego użycia szybkiego GPS';
@override
String get activeuseUpdateInterval =>
'Interwał aktualizacji przy aktywnym użyciu';
@override
String get repeatNearbyTraffic => 'Powtarzaj pobliski ruch';
@override
String get relayThroughRepeatersAcrossTheMesh =>
'Przekazuj przez przekaźniki w sieci';
@override
String get nearbyOnlyWithoutRepeaterFlooding =>
'Tylko w pobliżu, bez zalewania przekaźników';
@override
String get multihop => 'Wieloskokowy';
@override
String get createProfile => 'Utwórz profil';
@override
String get renameProfile => 'Zmień nazwę profilu';
@override
String get newProfile => 'Nowy profil';
@override
String get manageProfiles => 'Zarządzaj profilami';
@override
String get enableProfilesToStartManagingThem =>
'Włącz profile, aby zacząć nimi zarządzać.';
@override
String get openMessage => 'Otwórz wiadomość';
@override
String get jumpToTheRelatedSarMessage =>
'Przejdź do powiązanej wiadomości SAR';
@override
String get removeSarMarker => 'Usuń znacznik SAR';
@override
String get pleaseSelectADestinationToSendSarMarker =>
'Wybierz cel wysłania znacznika SAR';
@override
String get sarMarkerBroadcastToPublicChannel =>
'Znacznik SAR wysłany na kanał publiczny';
@override
String get sarMarkerSentToRoom => 'Znacznik SAR wysłany do pokoju';
@override
String get loadFromGallery => 'Załaduj z galerii';
@override
String get replaceImage => 'Zamień obraz';
@override
String get selectFromGallery => 'Wybierz z galerii';
@override
String get team => 'Zespół';
@override
String get found => 'Znaleziono';
@override
String get staging => 'Punkt zbiórki';
@override
String get object => 'Obiekt';
@override
String get quiet => 'Cicho';
@override
String get moderate => 'Umiarkowane';
@override
String get busy => 'Zajęty';
@override
String get spectrumScanReturnedNoCandidateFrequencies =>
'Skanowanie spektrum nie znalazło częstotliwości kandydatów';
@override
String get searchMessages => 'Szukaj wiadomości';
@override
String get sendImageFromGallery => 'Wyślij obraz z galerii';
@override
String get takePhoto => 'Zrób zdjęcie';
@override
String get dmOnly => 'Tylko wiadomość bezpośrednia';
@override
String get allMessages => 'Wszystkie wiadomości';
@override
String get sendToPublicChannel => 'Wysłać na kanał publiczny?';
@override
String get selectMarkerTypeAndDestination => 'Wybierz typ znacznika i cel';
@override
String get noDestinationsAvailableLabel => 'Brak dostępnych celów';
@override
String get image => 'Obraz';
@override
String get format => 'Format';
@override
String get dimensions => 'Wymiary';
@override
String get segments => 'Segmenty';
@override
String get transfers => 'Transfery';
@override
String get downloadedBy => 'Pobrane przez';
@override
String get saveDiscoverySettings => 'Zapisz ustawienia wykrywania';
@override
String get savePublicInfo => 'Zapisz informacje publiczne';
@override
String get saveRadioSettings => 'Zapisz ustawienia radia';
@override
String get savePath => 'Zapisz ścieżkę';
@override
String get wipeDeviceData => 'Wyczyść dane urządzenia';
@override
String get wipeDevice => 'Wyczyść urządzenie';
@override
String get destructiveDeviceActions => 'Destrukcyjne akcje na urządzeniu.';
@override
String get chooseAPresetOrFinetuneCustomRadioSettings =>
'Wybierz ustawienie wstępne lub dostosuj ustawienia radia.';
@override
String get chooseTheNameAndLocationThisDeviceShares =>
'Wybierz nazwę i lokalizację udostępnianą przez to urządzenie.';
@override
String get availableSpaceOnThisDevice =>
'Dostępne miejsce na tym urządzeniu.';
@override
String get used => 'Użyto';
@override
String get total => 'Razem';
@override
String get renameValue => 'Zmień nazwę wartości';
@override
String get customizeFields => 'Dostosuj pola';
@override
String get livePreview => 'Podgląd na żywo';
@override
String get refreshSchedule => 'Harmonogram odświeżania';
@override
String get noResponse => 'Brak odpowiedzi';
@override
String get refreshing => 'Odświeżanie';
@override
String get unavailable => 'Niedostępny';
@override
String get pickARelayOrNodeToWatchInSensors =>
'Wybierz przekaźnik lub węzeł do obserwacji.';
@override
String get publicKeyLabel => 'Klucz publiczny';
@override
String get alreadyInContacts => 'Już w kontaktach';
@override
String get connectToADeviceBeforeAddingContacts =>
'Połącz się z urządzeniem przed dodaniem kontaktów';
@override
String get fromContacts => 'Z kontaktów';
@override
String get onlineOnly => 'Tylko online';
@override
String get inBoth => 'W obu';
@override
String get source => 'Źródło';
@override
String get manualRouteEdit => 'Ręczna edycja trasy';
@override
String get observedMeshRoute => 'Obserwowana trasa sieci';
@override
String get allMessagesCleared => 'Wszystkie wiadomości wyczyszczone';
@override
String get onlineTraceDatabaseCleared => 'Baza śladów wyczyszczona';
@override
String get packetLogsCleared => 'Logi pakietów wyczyszczone';
@override
String get hexDataCopiedToClipboard => 'Dane hex skopiowane do schowka';
@override
String get developerModeEnabled => 'Tryb programisty włączony';
@override
String get developerModeDisabled => 'Tryb programisty wyłączony';
@override
String get clipboardIsEmpty => 'Schowek jest pusty';
@override
String get contactImported => 'Kontakt zaimportowany';
@override
String get contactLinkCopiedToClipboard =>
'Link kontaktu skopiowany do schowka';
@override
String get failedToExportContact => 'Nie udało się wyeksportować kontaktu';
@override
String get noLogsToExport => 'Brak logów do eksportu';
@override
String get exportAsCsv => 'Eksportuj jako CSV';
@override
String get exportAsText => 'Eksportuj jako tekst';
@override
String get receivedRfc3339 => 'Odebrano (RFC3339)';
@override
String get buildTime => 'Czas budowania';
@override
String get downloadUrlNotAvailable => 'URL pobierania niedostępny';
@override
String get cannotOpenDownloadUrl => 'Nie można otworzyć URL pobierania';
@override
String get updateCheckIsOnlyAvailableOnAndroid =>
'Sprawdzanie aktualizacji dostępne tylko na Androidzie';
@override
String get youAreRunningTheLatestVersion => 'Używasz najnowszej wersji';
@override
String get updateAvailableButDownloadUrlNotFound =>
'Aktualizacja dostępna, ale URL pobierania nie znaleziony';
@override
String get startTictactoe => 'Rozpocznij Tic-Tac-Toe';
@override
String get tictactoeUnavailable => 'Tic-Tac-Toe niedostępny';
@override
String get tictactoeOpponentUnknown => 'Tic-Tac-Toe: przeciwnik nieznany';
@override
String get tictactoeWaitingForStart => 'Tic-Tac-Toe: oczekiwanie na start';
@override
String get acceptsShareLinks => 'Akceptuje udostępnione linki';
@override
String get supportsRawHex => 'Obsługuje surowy hex';
@override
String get clipboardfriendly => 'Przyjazne dla schowka';
@override
String get captured => 'Przechwycone';
@override
String get size => 'Rozmiar';
@override
String get noCustomChannelsToClear =>
'Brak niestandardowych kanałów do wyczyszczenia.';
@override
String get noDeviceContactsToClear =>
'Brak kontaktów urządzenia do wyczyszczenia.';
}

View File

@@ -1931,4 +1931,773 @@ class AppLocalizationsPt extends AppLocalizations {
String contactFailedToSetRoute(String error) {
return 'Falha ao definir a rota: $error';
}
@override
String get rssi => 'RSSI';
@override
String get snr => 'SNR';
@override
String get ackTimeout => 'Tempo limite ACK';
@override
String get opcode => 'Opcode';
@override
String get payload => 'Carga útil';
@override
String get hops => 'Saltos';
@override
String get hashSize => 'Tamanho do hash';
@override
String get pathBytes => 'Bytes do caminho';
@override
String get selectedPath => 'Caminho selecionado';
@override
String get estimatedTx => 'Transmissão estimada';
@override
String get senderToReceipt => 'Do remetente ao recibo';
@override
String get receivedCopies => 'Cópias recebidas';
@override
String get retryCause => 'Causa da nova tentativa';
@override
String get retryMode => 'Modo de nova tentativa';
@override
String get retryResult => 'Resultado da nova tentativa';
@override
String get lastRetry => 'Última tentativa';
@override
String get rxPackets => 'Pacotes RX';
@override
String get mesh => 'Mesh';
@override
String get rate => 'Taxa';
@override
String get window => 'Janela';
@override
String get posttxDelay => 'Atraso pós-tx';
@override
String get bandpass => 'Passa-banda';
@override
String get bandpassFilterVoice => 'Filtro passa-banda de voz';
@override
String get frequency => 'Frequência';
@override
String get australia => 'Austrália';
@override
String get australiaNarrow => 'Austrália (Estreito)';
@override
String get australiaQld => 'Austrália: QLD';
@override
String get australiaSaWa => 'Austrália: SA, WA';
@override
String get newZealand => 'Nova Zelândia';
@override
String get newZealandNarrow => 'Nova Zelândia (Estreito)';
@override
String get switzerland => 'Suíça';
@override
String get portugal433 => 'Portugal 433';
@override
String get portugal868 => 'Portugal 868';
@override
String get czechRepublicNarrow => 'República Checa (Estreito)';
@override
String get eu433mhzLongRange => 'UE 433MHz (Longo Alcance)';
@override
String get euukDeprecated => 'UE/RU (Obsoleto)';
@override
String get euukNarrow => 'UE/RU (Estreito)';
@override
String get usacanadaRecommended => 'EUA/Canadá (Recomendado)';
@override
String get vietnamDeprecated => 'Vietname (Obsoleto)';
@override
String get vietnamNarrow => 'Vietname (Estreito)';
@override
String get active => 'Ativo';
@override
String get addContact => 'Adicionar contacto';
@override
String get all => 'Tudo';
@override
String get autoResolve => 'Resolver automaticamente';
@override
String get clearAllLabel => 'Limpar tudo';
@override
String get clearRelays => 'Limpar relays';
@override
String get clearFilters => 'Limpar filtros';
@override
String get clearRoute => 'Limpar rota';
@override
String get clearMessages => 'Limpar mensagens';
@override
String get clearScale => 'Limpar escala';
@override
String get clearDiscoveries => 'Limpar descobertas';
@override
String get clearOnlineTraceDatabase => 'Limpar base de dados de rastreio';
@override
String get clearAllChannels => 'Limpar todos os canais';
@override
String get clearAllContacts => 'Limpar todos os contactos';
@override
String get clearChannels => 'Limpar canais';
@override
String get clearContacts => 'Limpar contactos';
@override
String get clearPathOnMaxRetry => 'Limpar caminho no máx. de tentativas';
@override
String get create => 'Criar';
@override
String get custom => 'Personalizado';
@override
String get defaultValue => 'Padrão';
@override
String get duplicate => 'Duplicar';
@override
String get editName => 'Editar nome';
@override
String get open => 'Abrir';
@override
String get paste => 'Colar';
@override
String get preview => 'Pré-visualização';
@override
String get remove => 'Remover';
@override
String get rename => 'Renomear';
@override
String get resolveAll => 'Resolver tudo';
@override
String get send => 'Enviar';
@override
String get sendAnyway => 'Enviar mesmo assim';
@override
String get share => 'Partilhar';
@override
String get shareContact => 'Partilhar contacto';
@override
String get trace => 'Rastreio';
@override
String get use => 'Usar';
@override
String get useSelectedFrequency => 'Usar frequência selecionada';
@override
String get discovery => 'Descoberta';
@override
String get discoverRepeaters => 'Descobrir repetidores';
@override
String get discoverSensors => 'Descobrir sensores';
@override
String get repeaterDiscoverySent => 'Descoberta de repetidores enviada';
@override
String get sensorDiscoverySent => 'Descoberta de sensores enviada';
@override
String get clearedPendingDiscoveries => 'Descobertas pendentes limpas.';
@override
String get autoDiscovery => 'Descoberta automática';
@override
String get enableAutomaticAdding => 'Ativar adição automática';
@override
String get autoaddRepeaters => 'Adicionar repetidores automaticamente';
@override
String get autoaddRoomServers =>
'Adicionar servidores de sala automaticamente';
@override
String get autoaddSensors => 'Adicionar sensores automaticamente';
@override
String get autoaddUsers => 'Adicionar utilizadores automaticamente';
@override
String get overwriteOldestWhenFull =>
'Sobrescrever mais antigos quando cheio';
@override
String get storage => 'Armazenamento';
@override
String get dangerZone => 'Zona de perigo';
@override
String get profiles => 'Perfis';
@override
String get favourites => 'Favoritos';
@override
String get sensors => 'Sensores';
@override
String get others => 'Outros';
@override
String get gpsModule => 'Módulo GPS';
@override
String get liveTraffic => 'Tráfego ao vivo';
@override
String get repeatersMap => 'Mapa de repetidores';
@override
String get spectrumScan => 'Varredura de espectro';
@override
String get blePacketLogs => 'Registos de pacotes BLE';
@override
String get onlineTraceDatabase => 'Base de dados de rastreio';
@override
String get routePathByteSize => 'Tamanho do caminho em bytes';
@override
String get messageNotifications => 'Notificações de mensagens';
@override
String get sarAlerts => 'Alertas SAR';
@override
String get discoveryNotifications => 'Notificações de descoberta';
@override
String get updateNotifications => 'Notificações de atualização';
@override
String get muteWhileAppIsOpen => 'Silenciar com a app aberta';
@override
String get disableContacts => 'Desativar contactos';
@override
String get enableSensorsTab => 'Ativar separador Sensores';
@override
String get enableProfiles => 'Ativar perfis';
@override
String get autoRouteRotation => 'Rotação automática de rota';
@override
String get nearestRepeaterFallback => 'Repetidor mais próximo como reserva';
@override
String get deleteAllStoredMessageHistory =>
'Apagar todo o histórico de mensagens';
@override
String get messageFontSize => 'Tamanho da fonte de mensagens';
@override
String get rotateMapWithHeading => 'Rodar mapa com direção';
@override
String get showMapDebugInfo => 'Mostrar info de depuração do mapa';
@override
String get openMapInFullscreen => 'Abrir mapa em ecrã inteiro';
@override
String get showSarMarkersLabel => 'Mostrar marcadores SAR';
@override
String get displaySarMarkersOnTheMainMap =>
'Mostrar marcadores SAR no mapa principal';
@override
String get showAllContactTrailsLabel =>
'Mostrar todos os rastos de contactos';
@override
String get hideRepeatersOnMap => 'Ocultar repetidores no mapa';
@override
String get setMapScale => 'Definir escala do mapa';
@override
String get customMapScaleSaved => 'Escala de mapa personalizada guardada';
@override
String get voiceBitrate => 'Taxa de bits de voz';
@override
String get voiceCompressor => 'Compressor de voz';
@override
String get balancesQuietAndLoudSpeechLevels =>
'Equilibra níveis de fala suaves e altos';
@override
String get voiceLimiter => 'Limitador de voz';
@override
String get preventsClippingPeaksBeforeEncoding =>
'Previne corte de picos antes da codificação';
@override
String get micAutoGain => 'Ganho automático do microfone';
@override
String get letsTheRecorderAdjustInputLevel =>
'Permite ao gravador ajustar o nível de entrada';
@override
String get echoCancellation => 'Cancelamento de eco';
@override
String get noiseSuppression => 'Supressão de ruído';
@override
String get trimSilenceInVoiceMessages =>
'Cortar silêncio em mensagens de voz';
@override
String get compressor => 'Compressor';
@override
String get limiter => 'Limitador';
@override
String get autoGain => 'Ganho automático';
@override
String get echoCancel => 'Eco';
@override
String get noiseSuppress => 'Ruído';
@override
String get silenceTrim => 'Silêncio';
@override
String get maxImageSize => 'Tamanho máximo de imagem';
@override
String get imageCompression => 'Compressão de imagem';
@override
String get grayscale => 'Escala de cinzentos';
@override
String get ultraMode => 'Modo ultra';
@override
String get fastPrivateGpsUpdates => 'Atualizações GPS privadas rápidas';
@override
String get movementThreshold => 'Limiar de movimento';
@override
String get fastGpsMovementThreshold => 'Limiar de movimento GPS rápido';
@override
String get fastGpsActiveuseInterval => 'Intervalo de uso ativo GPS rápido';
@override
String get activeuseUpdateInterval => 'Intervalo de atualização de uso ativo';
@override
String get repeatNearbyTraffic => 'Repetir tráfego próximo';
@override
String get relayThroughRepeatersAcrossTheMesh =>
'Retransmitir através de repetidores na rede';
@override
String get nearbyOnlyWithoutRepeaterFlooding =>
'Apenas próximos, sem flood de repetidores';
@override
String get multihop => 'Multi-salto';
@override
String get createProfile => 'Criar perfil';
@override
String get renameProfile => 'Renomear perfil';
@override
String get newProfile => 'Novo perfil';
@override
String get manageProfiles => 'Gerir perfis';
@override
String get enableProfilesToStartManagingThem =>
'Ative os perfis para começar a geri-los.';
@override
String get openMessage => 'Abrir mensagem';
@override
String get jumpToTheRelatedSarMessage => 'Ir para a mensagem SAR relacionada';
@override
String get removeSarMarker => 'Remover marcador SAR';
@override
String get pleaseSelectADestinationToSendSarMarker =>
'Selecione um destino para enviar o marcador SAR';
@override
String get sarMarkerBroadcastToPublicChannel =>
'Marcador SAR transmitido no canal público';
@override
String get sarMarkerSentToRoom => 'Marcador SAR enviado para a sala';
@override
String get loadFromGallery => 'Carregar da galeria';
@override
String get replaceImage => 'Substituir imagem';
@override
String get selectFromGallery => 'Selecionar da galeria';
@override
String get team => 'Equipa';
@override
String get found => 'Encontrado';
@override
String get staging => 'Área de reunião';
@override
String get object => 'Objeto';
@override
String get quiet => 'Silencioso';
@override
String get moderate => 'Moderado';
@override
String get busy => 'Ocupado';
@override
String get spectrumScanReturnedNoCandidateFrequencies =>
'A varredura de espectro não encontrou frequências candidatas';
@override
String get searchMessages => 'Pesquisar mensagens';
@override
String get sendImageFromGallery => 'Enviar imagem da galeria';
@override
String get takePhoto => 'Tirar foto';
@override
String get dmOnly => 'Apenas mensagem direta';
@override
String get allMessages => 'Todas as mensagens';
@override
String get sendToPublicChannel => 'Enviar para o canal público?';
@override
String get selectMarkerTypeAndDestination =>
'Selecione tipo de marcador e destino';
@override
String get noDestinationsAvailableLabel => 'Nenhum destino disponível';
@override
String get image => 'Imagem';
@override
String get format => 'Formato';
@override
String get dimensions => 'Dimensões';
@override
String get segments => 'Segmentos';
@override
String get transfers => 'Transferências';
@override
String get downloadedBy => 'Transferido por';
@override
String get saveDiscoverySettings => 'Guardar definições de descoberta';
@override
String get savePublicInfo => 'Guardar informação pública';
@override
String get saveRadioSettings => 'Guardar definições de rádio';
@override
String get savePath => 'Guardar caminho';
@override
String get wipeDeviceData => 'Apagar dados do dispositivo';
@override
String get wipeDevice => 'Apagar dispositivo';
@override
String get destructiveDeviceActions => 'Ações destrutivas do dispositivo.';
@override
String get chooseAPresetOrFinetuneCustomRadioSettings =>
'Escolha uma predefinição ou ajuste as definições de rádio.';
@override
String get chooseTheNameAndLocationThisDeviceShares =>
'Escolha o nome e a localização que este dispositivo partilha.';
@override
String get availableSpaceOnThisDevice =>
'Espaço disponível neste dispositivo.';
@override
String get used => 'Usado';
@override
String get total => 'Total';
@override
String get renameValue => 'Renomear valor';
@override
String get customizeFields => 'Personalizar campos';
@override
String get livePreview => 'Pré-visualização ao vivo';
@override
String get refreshSchedule => 'Agenda de atualização';
@override
String get noResponse => 'Sem resposta';
@override
String get refreshing => 'A atualizar';
@override
String get unavailable => 'Indisponível';
@override
String get pickARelayOrNodeToWatchInSensors =>
'Escolha um relay ou nó para observar.';
@override
String get publicKeyLabel => 'Chave pública';
@override
String get alreadyInContacts => 'Já nos contactos';
@override
String get connectToADeviceBeforeAddingContacts =>
'Conecte-se a um dispositivo antes de adicionar contactos';
@override
String get fromContacts => 'Dos contactos';
@override
String get onlineOnly => 'Apenas online';
@override
String get inBoth => 'Em ambos';
@override
String get source => 'Fonte';
@override
String get manualRouteEdit => 'Edição manual de rota';
@override
String get observedMeshRoute => 'Rota mesh observada';
@override
String get allMessagesCleared => 'Todas as mensagens limpas';
@override
String get onlineTraceDatabaseCleared => 'Base de dados de rastreio limpa';
@override
String get packetLogsCleared => 'Registos de pacotes limpos';
@override
String get hexDataCopiedToClipboard =>
'Dados hex copiados para a área de transferência';
@override
String get developerModeEnabled => 'Modo de programador ativado';
@override
String get developerModeDisabled => 'Modo de programador desativado';
@override
String get clipboardIsEmpty => 'A área de transferência está vazia';
@override
String get contactImported => 'Contacto importado';
@override
String get contactLinkCopiedToClipboard =>
'Link do contacto copiado para a área de transferência';
@override
String get failedToExportContact => 'Falha ao exportar contacto';
@override
String get noLogsToExport => 'Sem registos para exportar';
@override
String get exportAsCsv => 'Exportar como CSV';
@override
String get exportAsText => 'Exportar como texto';
@override
String get receivedRfc3339 => 'Recebido (RFC3339)';
@override
String get buildTime => 'Hora de compilação';
@override
String get downloadUrlNotAvailable => 'URL de download não disponível';
@override
String get cannotOpenDownloadUrl => 'Não é possível abrir o URL de download';
@override
String get updateCheckIsOnlyAvailableOnAndroid =>
'A verificação de atualizações só está disponível no Android';
@override
String get youAreRunningTheLatestVersion =>
'Está a usar a versão mais recente';
@override
String get updateAvailableButDownloadUrlNotFound =>
'Atualização disponível mas URL de download não encontrado';
@override
String get startTictactoe => 'Iniciar Tic-Tac-Toe';
@override
String get tictactoeUnavailable => 'Tic-Tac-Toe indisponível';
@override
String get tictactoeOpponentUnknown => 'Tic-Tac-Toe: oponente desconhecido';
@override
String get tictactoeWaitingForStart => 'Tic-Tac-Toe: a aguardar início';
@override
String get acceptsShareLinks => 'Aceita links partilhados';
@override
String get supportsRawHex => 'Suporta hex bruto';
@override
String get clipboardfriendly => 'Compatível com a área de transferência';
@override
String get captured => 'Capturado';
@override
String get size => 'Tamanho';
@override
String get noCustomChannelsToClear =>
'Sem canais personalizados para limpar.';
@override
String get noDeviceContactsToClear =>
'Sem contactos do dispositivo para limpar.';
}

View File

@@ -1921,4 +1921,768 @@ class AppLocalizationsRu extends AppLocalizations {
String contactFailedToSetRoute(String error) {
return 'Не удалось задать маршрут: $error';
}
@override
String get rssi => 'RSSI';
@override
String get snr => 'SNR';
@override
String get ackTimeout => 'Таймаут ACK';
@override
String get opcode => 'Опкод';
@override
String get payload => 'Полезная нагрузка';
@override
String get hops => 'Хопы';
@override
String get hashSize => 'Размер хеша';
@override
String get pathBytes => 'Байты пути';
@override
String get selectedPath => 'Выбранный путь';
@override
String get estimatedTx => 'Ожидаемая передача';
@override
String get senderToReceipt => 'От отправителя до получения';
@override
String get receivedCopies => 'Полученные копии';
@override
String get retryCause => 'Причина повтора';
@override
String get retryMode => 'Режим повтора';
@override
String get retryResult => 'Результат повтора';
@override
String get lastRetry => 'Последний повтор';
@override
String get rxPackets => 'RX-пакеты';
@override
String get mesh => 'Mesh';
@override
String get rate => 'Скорость';
@override
String get window => 'Окно';
@override
String get posttxDelay => 'Задержка после передачи';
@override
String get bandpass => 'Полосовой';
@override
String get bandpassFilterVoice => 'Полосовой фильтр голоса';
@override
String get frequency => 'Частота';
@override
String get australia => 'Австралия';
@override
String get australiaNarrow => 'Австралия (Узкий)';
@override
String get australiaQld => 'Австралия: QLD';
@override
String get australiaSaWa => 'Австралия: SA, WA';
@override
String get newZealand => 'Новая Зеландия';
@override
String get newZealandNarrow => 'Новая Зеландия (Узкий)';
@override
String get switzerland => 'Швейцария';
@override
String get portugal433 => 'Португалия 433';
@override
String get portugal868 => 'Португалия 868';
@override
String get czechRepublicNarrow => 'Чехия (Узкий)';
@override
String get eu433mhzLongRange => 'ЕС 433МГц (Дальний)';
@override
String get euukDeprecated => 'ЕС/Великобритания (Устарело)';
@override
String get euukNarrow => 'ЕС/Великобритания (Узкий)';
@override
String get usacanadaRecommended => 'США/Канада (Рекомендуется)';
@override
String get vietnamDeprecated => 'Вьетнам (Устарело)';
@override
String get vietnamNarrow => 'Вьетнам (Узкий)';
@override
String get active => 'Активно';
@override
String get addContact => 'Добавить контакт';
@override
String get all => 'Все';
@override
String get autoResolve => 'Автоматическое разрешение';
@override
String get clearAllLabel => 'Очистить все';
@override
String get clearRelays => 'Очистить реле';
@override
String get clearFilters => 'Очистить фильтры';
@override
String get clearRoute => 'Очистить маршрут';
@override
String get clearMessages => 'Очистить сообщения';
@override
String get clearScale => 'Очистить масштаб';
@override
String get clearDiscoveries => 'Очистить обнаружения';
@override
String get clearOnlineTraceDatabase => 'Очистить базу трассировок';
@override
String get clearAllChannels => 'Очистить все каналы';
@override
String get clearAllContacts => 'Очистить все контакты';
@override
String get clearChannels => 'Очистить каналы';
@override
String get clearContacts => 'Очистить контакты';
@override
String get clearPathOnMaxRetry => 'Очистить путь при макс. повторе';
@override
String get create => 'Создать';
@override
String get custom => 'Пользовательский';
@override
String get defaultValue => 'По умолчанию';
@override
String get duplicate => 'Дублировать';
@override
String get editName => 'Редактировать имя';
@override
String get open => 'Открыть';
@override
String get paste => 'Вставить';
@override
String get preview => 'Предпросмотр';
@override
String get remove => 'Удалить';
@override
String get rename => 'Переименовать';
@override
String get resolveAll => 'Разрешить все';
@override
String get send => 'Отправить';
@override
String get sendAnyway => 'Отправить все равно';
@override
String get share => 'Поделиться';
@override
String get shareContact => 'Поделиться контактом';
@override
String get trace => 'Трассировка';
@override
String get use => 'Использовать';
@override
String get useSelectedFrequency => 'Использовать выбранную частоту';
@override
String get discovery => 'Обнаружение';
@override
String get discoverRepeaters => 'Обнаружить повторители';
@override
String get discoverSensors => 'Обнаружить датчики';
@override
String get repeaterDiscoverySent => 'Обнаружение повторителей отправлено';
@override
String get sensorDiscoverySent => 'Обнаружение датчиков отправлено';
@override
String get clearedPendingDiscoveries => 'Ожидающие обнаружения очищены.';
@override
String get autoDiscovery => 'Автоматическое обнаружение';
@override
String get enableAutomaticAdding => 'Включить автоматическое добавление';
@override
String get autoaddRepeaters => 'Автодобавление повторителей';
@override
String get autoaddRoomServers => 'Автодобавление серверов комнат';
@override
String get autoaddSensors => 'Автодобавление датчиков';
@override
String get autoaddUsers => 'Автодобавление пользователей';
@override
String get overwriteOldestWhenFull => 'Перезаписать старейшие при заполнении';
@override
String get storage => 'Хранилище';
@override
String get dangerZone => 'Опасная зона';
@override
String get profiles => 'Профили';
@override
String get favourites => 'Избранное';
@override
String get sensors => 'Датчики';
@override
String get others => 'Другие';
@override
String get gpsModule => 'Модуль GPS';
@override
String get liveTraffic => 'Живой трафик';
@override
String get repeatersMap => 'Карта повторителей';
@override
String get spectrumScan => 'Сканирование спектра';
@override
String get blePacketLogs => 'Журналы BLE-пакетов';
@override
String get onlineTraceDatabase => 'База трассировок';
@override
String get routePathByteSize => 'Размер пути в байтах';
@override
String get messageNotifications => 'Уведомления о сообщениях';
@override
String get sarAlerts => 'SAR-оповещения';
@override
String get discoveryNotifications => 'Уведомления об обнаружении';
@override
String get updateNotifications => 'Уведомления об обновлениях';
@override
String get muteWhileAppIsOpen => 'Без звука при открытом приложении';
@override
String get disableContacts => 'Отключить контакты';
@override
String get enableSensorsTab => 'Включить вкладку Датчики';
@override
String get enableProfiles => 'Включить профили';
@override
String get autoRouteRotation => 'Автоматическая ротация маршрута';
@override
String get nearestRepeaterFallback => 'Ближайший повторитель как резерв';
@override
String get deleteAllStoredMessageHistory => 'Удалить всю историю сообщений';
@override
String get messageFontSize => 'Размер шрифта сообщений';
@override
String get rotateMapWithHeading => 'Вращать карту по направлению';
@override
String get showMapDebugInfo => 'Показать отладочную информацию карты';
@override
String get openMapInFullscreen => 'Открыть карту на весь экран';
@override
String get showSarMarkersLabel => 'Показать SAR-маркеры';
@override
String get displaySarMarkersOnTheMainMap =>
'Отображать SAR-маркеры на основной карте';
@override
String get showAllContactTrailsLabel => 'Показать все следы контактов';
@override
String get hideRepeatersOnMap => 'Скрыть повторители на карте';
@override
String get setMapScale => 'Установить масштаб карты';
@override
String get customMapScaleSaved => 'Пользовательский масштаб карты сохранён';
@override
String get voiceBitrate => 'Битрейт голоса';
@override
String get voiceCompressor => 'Компрессор голоса';
@override
String get balancesQuietAndLoudSpeechLevels =>
'Выравнивает тихую и громкую речь';
@override
String get voiceLimiter => 'Лимитер голоса';
@override
String get preventsClippingPeaksBeforeEncoding =>
'Предотвращает обрезку пиков перед кодированием';
@override
String get micAutoGain => 'Автоусиление микрофона';
@override
String get letsTheRecorderAdjustInputLevel =>
'Позволяет рекордеру регулировать уровень входа';
@override
String get echoCancellation => 'Подавление эха';
@override
String get noiseSuppression => 'Подавление шума';
@override
String get trimSilenceInVoiceMessages =>
'Обрезать тишину в голосовых сообщениях';
@override
String get compressor => 'Компрессор';
@override
String get limiter => 'Лимитер';
@override
String get autoGain => 'Автоусиление';
@override
String get echoCancel => 'Эхо';
@override
String get noiseSuppress => 'Шум';
@override
String get silenceTrim => 'Тишина';
@override
String get maxImageSize => 'Максимальный размер изображения';
@override
String get imageCompression => 'Сжатие изображения';
@override
String get grayscale => 'Оттенки серого';
@override
String get ultraMode => 'Режим ультра';
@override
String get fastPrivateGpsUpdates => 'Быстрые приватные GPS-обновления';
@override
String get movementThreshold => 'Порог движения';
@override
String get fastGpsMovementThreshold => 'Порог движения быстрого GPS';
@override
String get fastGpsActiveuseInterval =>
'Интервал активного использования быстрого GPS';
@override
String get activeuseUpdateInterval =>
'Интервал обновления при активном использовании';
@override
String get repeatNearbyTraffic => 'Повторять ближний трафик';
@override
String get relayThroughRepeatersAcrossTheMesh =>
'Ретранслировать через повторители по сети';
@override
String get nearbyOnlyWithoutRepeaterFlooding =>
'Только рядом, без flood повторителей';
@override
String get multihop => 'Многохоповый';
@override
String get createProfile => 'Создать профиль';
@override
String get renameProfile => 'Переименовать профиль';
@override
String get newProfile => 'Новый профиль';
@override
String get manageProfiles => 'Управление профилями';
@override
String get enableProfilesToStartManagingThem =>
'Включите профили, чтобы начать управлять ими.';
@override
String get openMessage => 'Открыть сообщение';
@override
String get jumpToTheRelatedSarMessage => 'Перейти к связанному SAR-сообщению';
@override
String get removeSarMarker => 'Удалить SAR-маркер';
@override
String get pleaseSelectADestinationToSendSarMarker =>
'Выберите назначение для отправки SAR-маркера';
@override
String get sarMarkerBroadcastToPublicChannel =>
'SAR-маркер отправлен в публичный канал';
@override
String get sarMarkerSentToRoom => 'SAR-маркер отправлен в комнату';
@override
String get loadFromGallery => 'Загрузить из галереи';
@override
String get replaceImage => 'Заменить изображение';
@override
String get selectFromGallery => 'Выбрать из галереи';
@override
String get team => 'Команда';
@override
String get found => 'Найдено';
@override
String get staging => 'Место сбора';
@override
String get object => 'Объект';
@override
String get quiet => 'Тихо';
@override
String get moderate => 'Умеренно';
@override
String get busy => 'Занято';
@override
String get spectrumScanReturnedNoCandidateFrequencies =>
'Сканирование спектра не нашло частот-кандидатов';
@override
String get searchMessages => 'Поиск сообщений';
@override
String get sendImageFromGallery => 'Отправить изображение из галереи';
@override
String get takePhoto => 'Сделать фото';
@override
String get dmOnly => 'Только личные сообщения';
@override
String get allMessages => 'Все сообщения';
@override
String get sendToPublicChannel => 'Отправить в публичный канал?';
@override
String get selectMarkerTypeAndDestination =>
'Выберите тип маркера и назначение';
@override
String get noDestinationsAvailableLabel => 'Нет доступных назначений';
@override
String get image => 'Изображение';
@override
String get format => 'Формат';
@override
String get dimensions => 'Размеры';
@override
String get segments => 'Сегменты';
@override
String get transfers => 'Передачи';
@override
String get downloadedBy => 'Загружено';
@override
String get saveDiscoverySettings => 'Сохранить настройки обнаружения';
@override
String get savePublicInfo => 'Сохранить публичную информацию';
@override
String get saveRadioSettings => 'Сохранить настройки радио';
@override
String get savePath => 'Сохранить путь';
@override
String get wipeDeviceData => 'Стереть данные устройства';
@override
String get wipeDevice => 'Стереть устройство';
@override
String get destructiveDeviceActions => 'Деструктивные действия устройства.';
@override
String get chooseAPresetOrFinetuneCustomRadioSettings =>
'Выберите пресет или настройте радио вручную.';
@override
String get chooseTheNameAndLocationThisDeviceShares =>
'Выберите имя и местоположение, которыми делится устройство.';
@override
String get availableSpaceOnThisDevice =>
'Доступное место на этом устройстве.';
@override
String get used => 'Использовано';
@override
String get total => 'Всего';
@override
String get renameValue => 'Переименовать значение';
@override
String get customizeFields => 'Настроить поля';
@override
String get livePreview => 'Предпросмотр в реальном времени';
@override
String get refreshSchedule => 'Расписание обновления';
@override
String get noResponse => 'Нет ответа';
@override
String get refreshing => 'Обновление';
@override
String get unavailable => 'Недоступно';
@override
String get pickARelayOrNodeToWatchInSensors =>
'Выберите реле или узел для наблюдения.';
@override
String get publicKeyLabel => 'Публичный ключ';
@override
String get alreadyInContacts => 'Уже в контактах';
@override
String get connectToADeviceBeforeAddingContacts =>
'Подключитесь к устройству перед добавлением контактов';
@override
String get fromContacts => 'Из контактов';
@override
String get onlineOnly => 'Только онлайн';
@override
String get inBoth => 'В обоих';
@override
String get source => 'Источник';
@override
String get manualRouteEdit => 'Ручное редактирование маршрута';
@override
String get observedMeshRoute => 'Наблюдаемый mesh-маршрут';
@override
String get allMessagesCleared => 'Все сообщения очищены';
@override
String get onlineTraceDatabaseCleared => 'База трассировок очищена';
@override
String get packetLogsCleared => 'Журналы пакетов очищены';
@override
String get hexDataCopiedToClipboard => 'Hex-данные скопированы в буфер';
@override
String get developerModeEnabled => 'Режим разработчика включён';
@override
String get developerModeDisabled => 'Режим разработчика отключён';
@override
String get clipboardIsEmpty => 'Буфер обмена пуст';
@override
String get contactImported => 'Контакт импортирован';
@override
String get contactLinkCopiedToClipboard =>
'Ссылка на контакт скопирована в буфер';
@override
String get failedToExportContact => 'Не удалось экспортировать контакт';
@override
String get noLogsToExport => 'Нет журналов для экспорта';
@override
String get exportAsCsv => 'Экспортировать как CSV';
@override
String get exportAsText => 'Экспортировать как текст';
@override
String get receivedRfc3339 => 'Получено (RFC3339)';
@override
String get buildTime => 'Время сборки';
@override
String get downloadUrlNotAvailable => 'URL загрузки недоступен';
@override
String get cannotOpenDownloadUrl => 'Не удаётся открыть URL загрузки';
@override
String get updateCheckIsOnlyAvailableOnAndroid =>
'Проверка обновлений доступна только на Android';
@override
String get youAreRunningTheLatestVersion => 'Вы используете последнюю версию';
@override
String get updateAvailableButDownloadUrlNotFound =>
'Обновление доступно, но URL загрузки не найден';
@override
String get startTictactoe => 'Начать Tic-Tac-Toe';
@override
String get tictactoeUnavailable => 'Tic-Tac-Toe недоступно';
@override
String get tictactoeOpponentUnknown => 'Tic-Tac-Toe: противник неизвестен';
@override
String get tictactoeWaitingForStart => 'Tic-Tac-Toe: ожидание начала';
@override
String get acceptsShareLinks => 'Принимает общие ссылки';
@override
String get supportsRawHex => 'Поддерживает raw hex';
@override
String get clipboardfriendly => 'Удобно для буфера';
@override
String get captured => 'Захвачено';
@override
String get size => 'Размер';
@override
String get noCustomChannelsToClear =>
'Нет пользовательских каналов для очистки.';
@override
String get noDeviceContactsToClear => 'Нет контактов устройства для очистки.';
}

View File

@@ -1912,4 +1912,767 @@ class AppLocalizationsSl extends AppLocalizations {
String contactFailedToSetRoute(String error) {
return 'Nastavitev poti ni uspela: $error';
}
@override
String get rssi => 'RSSI';
@override
String get snr => 'SNR';
@override
String get ackTimeout => 'Časovna omejitev ACK';
@override
String get opcode => 'Opkoda';
@override
String get payload => 'Vsebina';
@override
String get hops => 'Skoki';
@override
String get hashSize => 'Velikost zgoščevalne vrednosti';
@override
String get pathBytes => 'Bajti poti';
@override
String get selectedPath => 'Izbrana pot';
@override
String get estimatedTx => 'Ocenjeni čas oddaje';
@override
String get senderToReceipt => 'Od pošiljatelja do prejema';
@override
String get receivedCopies => 'Prejete kopije';
@override
String get retryCause => 'Razlog ponovitve';
@override
String get retryMode => 'Način ponovitve';
@override
String get retryResult => 'Rezultat ponovitve';
@override
String get lastRetry => 'Zadnja ponovitev';
@override
String get rxPackets => 'RX paketi';
@override
String get mesh => 'Mesh';
@override
String get rate => 'Hitrost';
@override
String get window => 'Okno';
@override
String get posttxDelay => 'Zakasnitev po oddaji';
@override
String get bandpass => 'Pasovno sito';
@override
String get bandpassFilterVoice => 'Pasovno sito za glas';
@override
String get frequency => 'Frekvenca';
@override
String get australia => 'Avstralija';
@override
String get australiaNarrow => 'Avstralija (ozko)';
@override
String get australiaQld => 'Avstralija: QLD';
@override
String get australiaSaWa => 'Avstralija: SA, WA';
@override
String get newZealand => 'Nova Zelandija';
@override
String get newZealandNarrow => 'Nova Zelandija (ozko)';
@override
String get switzerland => 'Švica';
@override
String get portugal433 => 'Portugalska 433';
@override
String get portugal868 => 'Portugalska 868';
@override
String get czechRepublicNarrow => 'Češka (ozko)';
@override
String get eu433mhzLongRange => 'EU 433MHz (dolg doseg)';
@override
String get euukDeprecated => 'EU/UK (zastarelo)';
@override
String get euukNarrow => 'EU/UK (ozko)';
@override
String get usacanadaRecommended => 'ZDA/Kanada (priporočeno)';
@override
String get vietnamDeprecated => 'Vietnam (zastarelo)';
@override
String get vietnamNarrow => 'Vietnam (ozko)';
@override
String get active => 'Aktivno';
@override
String get addContact => 'Dodaj stik';
@override
String get all => 'Vse';
@override
String get autoResolve => 'Samodejno razreši';
@override
String get clearAllLabel => 'Počisti vse';
@override
String get clearRelays => 'Počisti posrednike';
@override
String get clearFilters => 'Počisti filtre';
@override
String get clearRoute => 'Počisti pot';
@override
String get clearMessages => 'Počisti sporočila';
@override
String get clearScale => 'Počisti merilo';
@override
String get clearDiscoveries => 'Počisti odkritja';
@override
String get clearOnlineTraceDatabase => 'Počisti bazo sledi';
@override
String get clearAllChannels => 'Počisti vse kanale';
@override
String get clearAllContacts => 'Počisti vse stike';
@override
String get clearChannels => 'Počisti kanale';
@override
String get clearContacts => 'Počisti stike';
@override
String get clearPathOnMaxRetry => 'Počisti pot ob maks. ponovitvi';
@override
String get create => 'Ustvari';
@override
String get custom => 'Po meri';
@override
String get defaultValue => 'Privzeto';
@override
String get duplicate => 'Podvoji';
@override
String get editName => 'Uredi ime';
@override
String get open => 'Odpri';
@override
String get paste => 'Prilepi';
@override
String get preview => 'Predogled';
@override
String get remove => 'Odstrani';
@override
String get rename => 'Preimenuj';
@override
String get resolveAll => 'Razreši vse';
@override
String get send => 'Pošlji';
@override
String get sendAnyway => 'Vseeno pošlji';
@override
String get share => 'Deli';
@override
String get shareContact => 'Deli stik';
@override
String get trace => 'Sledenje';
@override
String get use => 'Uporabi';
@override
String get useSelectedFrequency => 'Uporabi izbrano frekvenco';
@override
String get discovery => 'Odkrivanje';
@override
String get discoverRepeaters => 'Odkrij posrednike';
@override
String get discoverSensors => 'Odkrij senzorje';
@override
String get repeaterDiscoverySent => 'Odkrivanje posrednikov poslano';
@override
String get sensorDiscoverySent => 'Odkrivanje senzorjev poslano';
@override
String get clearedPendingDiscoveries => 'Čakalna odkritja počiščena.';
@override
String get autoDiscovery => 'Samodejno odkrivanje';
@override
String get enableAutomaticAdding => 'Omogoči samodejno dodajanje';
@override
String get autoaddRepeaters => 'Samodejno dodaj posrednike';
@override
String get autoaddRoomServers => 'Samodejno dodaj strežnike sob';
@override
String get autoaddSensors => 'Samodejno dodaj senzorje';
@override
String get autoaddUsers => 'Samodejno dodaj uporabnike';
@override
String get overwriteOldestWhenFull => 'Prepiši najstarejše ob polnem';
@override
String get storage => 'Shramba';
@override
String get dangerZone => 'Nevarno območje';
@override
String get profiles => 'Profili';
@override
String get favourites => 'Priljubljeni';
@override
String get sensors => 'Senzorji';
@override
String get others => 'Ostali';
@override
String get gpsModule => 'GPS modul';
@override
String get liveTraffic => 'Promet v živo';
@override
String get repeatersMap => 'Zemljevid posrednikov';
@override
String get spectrumScan => 'Spektralno skeniranje';
@override
String get blePacketLogs => 'Dnevniki BLE paketov';
@override
String get onlineTraceDatabase => 'Baza sledi';
@override
String get routePathByteSize => 'Velikost poti v bajtih';
@override
String get messageNotifications => 'Obvestila o sporočilih';
@override
String get sarAlerts => 'SAR opozorila';
@override
String get discoveryNotifications => 'Obvestila o odkritjih';
@override
String get updateNotifications => 'Obvestila o posodobitvah';
@override
String get muteWhileAppIsOpen => 'Utišaj ko je aplikacija odprta';
@override
String get disableContacts => 'Onemogoči stike';
@override
String get enableSensorsTab => 'Omogoči zavihek Senzorji';
@override
String get enableProfiles => 'Omogoči profile';
@override
String get autoRouteRotation => 'Samodejno kroženje poti';
@override
String get nearestRepeaterFallback => 'Najbližji posrednik kot rezerva';
@override
String get deleteAllStoredMessageHistory =>
'Izbriši vso shranjeno zgodovino sporočil';
@override
String get messageFontSize => 'Velikost pisave sporočil';
@override
String get rotateMapWithHeading => 'Vrti zemljevid s smerjo';
@override
String get showMapDebugInfo => 'Prikaži razhroščevalne info zemljevida';
@override
String get openMapInFullscreen => 'Odpri zemljevid na cel zaslon';
@override
String get showSarMarkersLabel => 'Prikaži SAR oznake';
@override
String get displaySarMarkersOnTheMainMap =>
'Prikaži SAR oznake na glavnem zemljevidu';
@override
String get showAllContactTrailsLabel => 'Prikaži vse sledi stikov';
@override
String get hideRepeatersOnMap => 'Skrij posrednike na zemljevidu';
@override
String get setMapScale => 'Nastavi merilo zemljevida';
@override
String get customMapScaleSaved => 'Merilo zemljevida shranjeno';
@override
String get voiceBitrate => 'Bitna hitrost glasu';
@override
String get voiceCompressor => 'Kompresor glasu';
@override
String get balancesQuietAndLoudSpeechLevels =>
'Izravnava tihe in glasne govorne ravni';
@override
String get voiceLimiter => 'Omejevalnik glasu';
@override
String get preventsClippingPeaksBeforeEncoding =>
'Preprečuje rezanje vrhov pred kodiranjem';
@override
String get micAutoGain => 'Samodejna ojačitev mikrofona';
@override
String get letsTheRecorderAdjustInputLevel =>
'Omogoči snemalniku prilagoditev vhodne ravni';
@override
String get echoCancellation => 'Odstranjevanje odmeva';
@override
String get noiseSuppression => 'Dušenje šuma';
@override
String get trimSilenceInVoiceMessages =>
'Obreži tišino v glasovnih sporočilih';
@override
String get compressor => 'Kompresor';
@override
String get limiter => 'Omejevalnik';
@override
String get autoGain => 'Samodejna ojačitev';
@override
String get echoCancel => 'Odmev';
@override
String get noiseSuppress => 'Šum';
@override
String get silenceTrim => 'Tišina';
@override
String get maxImageSize => 'Največja velikost slike';
@override
String get imageCompression => 'Stiskanje slik';
@override
String get grayscale => 'Sivine';
@override
String get ultraMode => 'Ultra način';
@override
String get fastPrivateGpsUpdates => 'Hitri zasebni GPS podatki';
@override
String get movementThreshold => 'Prag gibanja';
@override
String get fastGpsMovementThreshold => 'Prag gibanja za hitri GPS';
@override
String get fastGpsActiveuseInterval => 'Interval uporabe hitrega GPS-a';
@override
String get activeuseUpdateInterval =>
'Interval posodobitve pri aktivni uporabi';
@override
String get repeatNearbyTraffic => 'Ponavljaj bližnji promet';
@override
String get relayThroughRepeatersAcrossTheMesh =>
'Posreduj skozi posrednike po mreži';
@override
String get nearbyOnlyWithoutRepeaterFlooding =>
'Samo bližnji, brez poplavljanja posrednikov';
@override
String get multihop => 'Večskočno';
@override
String get createProfile => 'Ustvari profil';
@override
String get renameProfile => 'Preimenuj profil';
@override
String get newProfile => 'Nov profil';
@override
String get manageProfiles => 'Upravljaj profile';
@override
String get enableProfilesToStartManagingThem =>
'Omogočite profile, da jih začnete upravljati.';
@override
String get openMessage => 'Odpri sporočilo';
@override
String get jumpToTheRelatedSarMessage => 'Skoči na povezano SAR sporočilo';
@override
String get removeSarMarker => 'Odstrani SAR oznako';
@override
String get pleaseSelectADestinationToSendSarMarker =>
'Izberite cilj za pošiljanje SAR oznake';
@override
String get sarMarkerBroadcastToPublicChannel =>
'SAR oznaka poslana na javni kanal';
@override
String get sarMarkerSentToRoom => 'SAR oznaka poslana v sobo';
@override
String get loadFromGallery => 'Naloži iz galerije';
@override
String get replaceImage => 'Zamenjaj sliko';
@override
String get selectFromGallery => 'Izberi iz galerije';
@override
String get team => 'Ekipa';
@override
String get found => 'Najdeno';
@override
String get staging => 'Zbirno mesto';
@override
String get object => 'Predmet';
@override
String get quiet => 'Tiho';
@override
String get moderate => 'Zmerno';
@override
String get busy => 'Zasedeno';
@override
String get spectrumScanReturnedNoCandidateFrequencies =>
'Spektralno skeniranje ni našlo primernih frekvenc';
@override
String get searchMessages => 'Iskanje sporočil';
@override
String get sendImageFromGallery => 'Pošlji sliko iz galerije';
@override
String get takePhoto => 'Posnemi fotografijo';
@override
String get dmOnly => 'Samo neposredno';
@override
String get allMessages => 'Vsa sporočila';
@override
String get sendToPublicChannel => 'Pošlji na javni kanal?';
@override
String get selectMarkerTypeAndDestination => 'Izberite vrsto oznake in cilj';
@override
String get noDestinationsAvailableLabel => 'Ni razpoložljivih ciljev';
@override
String get image => 'Slika';
@override
String get format => 'Format';
@override
String get dimensions => 'Dimenzije';
@override
String get segments => 'Segmenti';
@override
String get transfers => 'Prenosi';
@override
String get downloadedBy => 'Preneseno od';
@override
String get saveDiscoverySettings => 'Shrani nastavitve odkrivanja';
@override
String get savePublicInfo => 'Shrani javne podatke';
@override
String get saveRadioSettings => 'Shrani radijske nastavitve';
@override
String get savePath => 'Shrani pot';
@override
String get wipeDeviceData => 'Izbriši podatke naprave';
@override
String get wipeDevice => 'Izbriši napravo';
@override
String get destructiveDeviceActions => 'Destruktivna dejanja na napravi.';
@override
String get chooseAPresetOrFinetuneCustomRadioSettings =>
'Izberite prednastavitev ali natančno prilagodite radijske nastavitve.';
@override
String get chooseTheNameAndLocationThisDeviceShares =>
'Izberite ime in lokacijo, ki ju naprava deli.';
@override
String get availableSpaceOnThisDevice =>
'Razpoložljiv prostor na tej napravi.';
@override
String get used => 'Uporabljeno';
@override
String get total => 'Skupaj';
@override
String get renameValue => 'Preimenuj vrednost';
@override
String get customizeFields => 'Prilagodi polja';
@override
String get livePreview => 'Predogled v živo';
@override
String get refreshSchedule => 'Interval osvežitve';
@override
String get noResponse => 'Ni odgovora';
@override
String get refreshing => 'Osvežujem';
@override
String get unavailable => 'Nedostopno';
@override
String get pickARelayOrNodeToWatchInSensors =>
'Izberite posrednika ali vozlišče za opazovanje.';
@override
String get publicKeyLabel => 'Javni ključ';
@override
String get alreadyInContacts => 'Že med stiki';
@override
String get connectToADeviceBeforeAddingContacts =>
'Povežite se z napravo pred dodajanjem stikov';
@override
String get fromContacts => 'Iz stikov';
@override
String get onlineOnly => 'Samo povezani';
@override
String get inBoth => 'V obeh';
@override
String get source => 'Vir';
@override
String get manualRouteEdit => 'Ročno urejanje poti';
@override
String get observedMeshRoute => 'Opazovana mrežna pot';
@override
String get allMessagesCleared => 'Vsa sporočila počiščena';
@override
String get onlineTraceDatabaseCleared => 'Baza sledi počiščena';
@override
String get packetLogsCleared => 'Dnevniki paketov počiščeni';
@override
String get hexDataCopiedToClipboard => 'Hex podatki kopirani v odložišče';
@override
String get developerModeEnabled => 'Razvojni način omogočen';
@override
String get developerModeDisabled => 'Razvojni način onemogočen';
@override
String get clipboardIsEmpty => 'Odložišče je prazno';
@override
String get contactImported => 'Stik uvožen';
@override
String get contactLinkCopiedToClipboard =>
'Povezava na stik kopirana v odložišče';
@override
String get failedToExportContact => 'Izvoz stika ni uspel';
@override
String get noLogsToExport => 'Ni dnevnikov za izvoz';
@override
String get exportAsCsv => 'Izvozi kot CSV';
@override
String get exportAsText => 'Izvozi kot besedilo';
@override
String get receivedRfc3339 => 'Prejeto (RFC3339)';
@override
String get buildTime => 'Čas gradnje';
@override
String get downloadUrlNotAvailable => 'URL za prenos ni na voljo';
@override
String get cannotOpenDownloadUrl => 'URL za prenos ni mogoče odpreti';
@override
String get updateCheckIsOnlyAvailableOnAndroid =>
'Preverjanje posodobitev je na voljo le na Androidu';
@override
String get youAreRunningTheLatestVersion =>
'Uporabljate najnovejšo različico';
@override
String get updateAvailableButDownloadUrlNotFound =>
'Posodobitev na voljo, a URL za prenos ni najden';
@override
String get startTictactoe => 'Začni Tic-Tac-Toe';
@override
String get tictactoeUnavailable => 'Tic-Tac-Toe ni na voljo';
@override
String get tictactoeOpponentUnknown => 'Tic-Tac-Toe: nasprotnik neznan';
@override
String get tictactoeWaitingForStart => 'Tic-Tac-Toe: čakanje na začetek';
@override
String get acceptsShareLinks => 'Sprejema deljene povezave';
@override
String get supportsRawHex => 'Podpira surove hex';
@override
String get clipboardfriendly => 'Primerno za odložišče';
@override
String get captured => 'Zajeto';
@override
String get size => 'Velikost';
@override
String get noCustomChannelsToClear => 'Ni prilagojenih kanalov za brisanje.';
@override
String get noDeviceContactsToClear => 'Ni stikov naprave za brisanje.';
}

View File

@@ -1914,4 +1914,763 @@ class AppLocalizationsTr extends AppLocalizations {
String contactFailedToSetRoute(String error) {
return 'Rota ayarlanamadı: $error';
}
@override
String get rssi => 'RSSI';
@override
String get snr => 'SNR';
@override
String get ackTimeout => 'ACK zaman aşımı';
@override
String get opcode => 'Opcode';
@override
String get payload => 'Yük';
@override
String get hops => 'Atlama';
@override
String get hashSize => 'Hash boyutu';
@override
String get pathBytes => 'Yol baytları';
@override
String get selectedPath => 'Seçilen yol';
@override
String get estimatedTx => 'Tahmini gönderim';
@override
String get senderToReceipt => 'Gönderenden alındıya';
@override
String get receivedCopies => 'Alınan kopyalar';
@override
String get retryCause => 'Yeniden deneme nedeni';
@override
String get retryMode => 'Yeniden deneme modu';
@override
String get retryResult => 'Yeniden deneme sonucu';
@override
String get lastRetry => 'Son deneme';
@override
String get rxPackets => 'RX paketleri';
@override
String get mesh => 'Mesh';
@override
String get rate => 'Hız';
@override
String get window => 'Pencere';
@override
String get posttxDelay => 'Gönderim sonrası gecikme';
@override
String get bandpass => 'Bant geçiren';
@override
String get bandpassFilterVoice => 'Bant geçiren filtre ses';
@override
String get frequency => 'Frekans';
@override
String get australia => 'Avustralya';
@override
String get australiaNarrow => 'Avustralya (Dar)';
@override
String get australiaQld => 'Avustralya: QLD';
@override
String get australiaSaWa => 'Avustralya: SA, WA';
@override
String get newZealand => 'Yeni Zelanda';
@override
String get newZealandNarrow => 'Yeni Zelanda (Dar)';
@override
String get switzerland => 'İsviçre';
@override
String get portugal433 => 'Portekiz 433';
@override
String get portugal868 => 'Portekiz 868';
@override
String get czechRepublicNarrow => 'Çek Cumhuriyeti (Dar)';
@override
String get eu433mhzLongRange => 'AB 433MHz (Uzun Menzil)';
@override
String get euukDeprecated => 'AB/BK (Kullanımdan kalktı)';
@override
String get euukNarrow => 'AB/BK (Dar)';
@override
String get usacanadaRecommended => 'ABD/Kanada (Önerilen)';
@override
String get vietnamDeprecated => 'Vietnam (Kullanımdan kalktı)';
@override
String get vietnamNarrow => 'Vietnam (Dar)';
@override
String get active => 'Aktif';
@override
String get addContact => 'Kişi ekle';
@override
String get all => 'Tümü';
@override
String get autoResolve => 'Otomatik çöz';
@override
String get clearAllLabel => 'Tümünü temizle';
@override
String get clearRelays => 'Röleleri temizle';
@override
String get clearFilters => 'Filtreleri temizle';
@override
String get clearRoute => 'Rotayı temizle';
@override
String get clearMessages => 'Mesajları temizle';
@override
String get clearScale => 'Ölçeği temizle';
@override
String get clearDiscoveries => 'Keşifleri temizle';
@override
String get clearOnlineTraceDatabase => 'Çevrimiçi iz veritabanını temizle';
@override
String get clearAllChannels => 'Tüm kanalları temizle';
@override
String get clearAllContacts => 'Tüm kişileri temizle';
@override
String get clearChannels => 'Kanalları temizle';
@override
String get clearContacts => 'Kişileri temizle';
@override
String get clearPathOnMaxRetry => 'Maks denemede yolu temizle';
@override
String get create => 'Oluştur';
@override
String get custom => 'Özel';
@override
String get defaultValue => 'Varsayılan';
@override
String get duplicate => 'Çoğalt';
@override
String get editName => 'Adı düzenle';
@override
String get open => '';
@override
String get paste => 'Yapıştır';
@override
String get preview => 'Önizleme';
@override
String get remove => 'Kaldır';
@override
String get rename => 'Yeniden adlandır';
@override
String get resolveAll => 'Tümünü çöz';
@override
String get send => 'Gönder';
@override
String get sendAnyway => 'Yine de gönder';
@override
String get share => 'Paylaş';
@override
String get shareContact => 'Kişiyi paylaş';
@override
String get trace => 'İz';
@override
String get use => 'Kullan';
@override
String get useSelectedFrequency => 'Seçilen frekansı kullan';
@override
String get discovery => 'Keşif';
@override
String get discoverRepeaters => 'Tekrarlayıcıları keşfet';
@override
String get discoverSensors => 'Sensörleri keşfet';
@override
String get repeaterDiscoverySent => 'Tekrarlayıcı keşfi gönderildi';
@override
String get sensorDiscoverySent => 'Sensör keşfi gönderildi';
@override
String get clearedPendingDiscoveries => 'Bekleyen keşifler temizlendi.';
@override
String get autoDiscovery => 'Otomatik keşif';
@override
String get enableAutomaticAdding => 'Otomatik eklemeyi etkinleştir';
@override
String get autoaddRepeaters => 'Tekrarlayıcıları otomatik ekle';
@override
String get autoaddRoomServers => 'Oda sunucularını otomatik ekle';
@override
String get autoaddSensors => 'Sensörleri otomatik ekle';
@override
String get autoaddUsers => 'Kullanıcıları otomatik ekle';
@override
String get overwriteOldestWhenFull => 'Dolduğunda en eskiyi üzerine yaz';
@override
String get storage => 'Depolama';
@override
String get dangerZone => 'Tehlikeli bölge';
@override
String get profiles => 'Profiller';
@override
String get favourites => 'Favoriler';
@override
String get sensors => 'Sensörler';
@override
String get others => 'Diğerleri';
@override
String get gpsModule => 'GPS Modülü';
@override
String get liveTraffic => 'Canlı trafik';
@override
String get repeatersMap => 'Tekrarlayıcılar haritası';
@override
String get spectrumScan => 'Spektrum taraması';
@override
String get blePacketLogs => 'BLE paket günlükleri';
@override
String get onlineTraceDatabase => 'Çevrimiçi iz veritabanı';
@override
String get routePathByteSize => 'Yol bayt boyutu';
@override
String get messageNotifications => 'Mesaj bildirimleri';
@override
String get sarAlerts => 'SAR uyarıları';
@override
String get discoveryNotifications => 'Keşif bildirimleri';
@override
String get updateNotifications => 'Güncelleme bildirimleri';
@override
String get muteWhileAppIsOpen => 'Uygulama açıkken sessize al';
@override
String get disableContacts => 'Kişileri devre dışı bırak';
@override
String get enableSensorsTab => 'Sensörler sekmesini etkinleştir';
@override
String get enableProfiles => 'Profilleri etkinleştir';
@override
String get autoRouteRotation => 'Otomatik rota rotasyonu';
@override
String get nearestRepeaterFallback => 'En yakın tekrarlayıcıya geri dönüş';
@override
String get deleteAllStoredMessageHistory => 'Tüm mesaj geçmişini sil';
@override
String get messageFontSize => 'Mesaj yazı tipi boyutu';
@override
String get rotateMapWithHeading => 'Haritayı yön ile döndür';
@override
String get showMapDebugInfo => 'Harita hata ayıklama bilgisini göster';
@override
String get openMapInFullscreen => 'Haritayı tam ekranda aç';
@override
String get showSarMarkersLabel => 'SAR işaretçilerini göster';
@override
String get displaySarMarkersOnTheMainMap =>
'SAR işaretçilerini ana haritada göster';
@override
String get showAllContactTrailsLabel => 'Tüm kişi izlerini göster';
@override
String get hideRepeatersOnMap => 'Haritada tekrarlayıcıları gizle';
@override
String get setMapScale => 'Harita ölçeğini ayarla';
@override
String get customMapScaleSaved => 'Özel harita ölçeği kaydedildi';
@override
String get voiceBitrate => 'Ses bit hızı';
@override
String get voiceCompressor => 'Ses sıkıştırıcı';
@override
String get balancesQuietAndLoudSpeechLevels =>
'Sessiz ve yüksek konuşma seviyelerini dengeler';
@override
String get voiceLimiter => 'Ses sınırlayıcı';
@override
String get preventsClippingPeaksBeforeEncoding =>
'Kodlama öncesi tepe kırpmasını önler';
@override
String get micAutoGain => 'Mikrofon otomatik kazancı';
@override
String get letsTheRecorderAdjustInputLevel =>
'Kaydedicinin giriş seviyesini ayarlamasına izin verir';
@override
String get echoCancellation => 'Yankı iptali';
@override
String get noiseSuppression => 'Gürültü bastırma';
@override
String get trimSilenceInVoiceMessages => 'Sesli mesajlarda sessizliği kırp';
@override
String get compressor => 'Sıkıştırıcı';
@override
String get limiter => 'Sınırlayıcı';
@override
String get autoGain => 'Otomatik kazanç';
@override
String get echoCancel => 'Yankı';
@override
String get noiseSuppress => 'Gürültü';
@override
String get silenceTrim => 'Sessizlik';
@override
String get maxImageSize => 'Maksimum resim boyutu';
@override
String get imageCompression => 'Resim sıkıştırma';
@override
String get grayscale => 'Gri tonlama';
@override
String get ultraMode => 'Ultra mod';
@override
String get fastPrivateGpsUpdates => 'Hızlı özel GPS güncellemeleri';
@override
String get movementThreshold => 'Hareket eşiği';
@override
String get fastGpsMovementThreshold => 'Hızlı GPS hareket eşiği';
@override
String get fastGpsActiveuseInterval => 'Hızlı GPS aktif kullanım aralığı';
@override
String get activeuseUpdateInterval => 'Aktif kullanım güncelleme aralığı';
@override
String get repeatNearbyTraffic => 'Yakın trafiği tekrarla';
@override
String get relayThroughRepeatersAcrossTheMesh =>
'Ağ üzerindeki tekrarlayıcılar aracılığıyla ilet';
@override
String get nearbyOnlyWithoutRepeaterFlooding =>
'Yalnızca yakın, tekrarlayıcı taşkını olmadan';
@override
String get multihop => 'Çok atlamalı';
@override
String get createProfile => 'Profil oluştur';
@override
String get renameProfile => 'Profili yeniden adlandır';
@override
String get newProfile => 'Yeni profil';
@override
String get manageProfiles => 'Profilleri yönet';
@override
String get enableProfilesToStartManagingThem =>
'Profilleri yönetmeye başlamak için etkinleştirin.';
@override
String get openMessage => 'Mesajı';
@override
String get jumpToTheRelatedSarMessage => 'İlgili SAR mesajına git';
@override
String get removeSarMarker => 'SAR işaretçisini kaldır';
@override
String get pleaseSelectADestinationToSendSarMarker =>
'SAR işaretçisi göndermek için bir hedef seçin';
@override
String get sarMarkerBroadcastToPublicChannel =>
'SAR işaretçisi genel kanala yayınlandı';
@override
String get sarMarkerSentToRoom => 'SAR işaretçisi odaya gönderildi';
@override
String get loadFromGallery => 'Galeriden yükle';
@override
String get replaceImage => 'Resmi değiştir';
@override
String get selectFromGallery => 'Galeriden seç';
@override
String get team => 'Takım';
@override
String get found => 'Bulundu';
@override
String get staging => 'Toplanma alanı';
@override
String get object => 'Nesne';
@override
String get quiet => 'Sessiz';
@override
String get moderate => 'Orta';
@override
String get busy => 'Meşgul';
@override
String get spectrumScanReturnedNoCandidateFrequencies =>
'Spektrum taraması aday frekans bulamadı';
@override
String get searchMessages => 'Mesajlarda ara';
@override
String get sendImageFromGallery => 'Galeriden resim gönder';
@override
String get takePhoto => 'Fotoğraf çek';
@override
String get dmOnly => 'Yalnızca DM';
@override
String get allMessages => 'Tüm mesajlar';
@override
String get sendToPublicChannel => 'Genel kanala gönderilsin mi?';
@override
String get selectMarkerTypeAndDestination =>
'İşaretçi türünü ve hedefi seçin';
@override
String get noDestinationsAvailableLabel => 'Kullanılabilir hedef yok';
@override
String get image => 'Resim';
@override
String get format => 'Biçim';
@override
String get dimensions => 'Boyutlar';
@override
String get segments => 'Segmentler';
@override
String get transfers => 'Transferler';
@override
String get downloadedBy => 'İndiren';
@override
String get saveDiscoverySettings => 'Keşif ayarlarını kaydet';
@override
String get savePublicInfo => 'Genel bilgileri kaydet';
@override
String get saveRadioSettings => 'Radyo ayarlarını kaydet';
@override
String get savePath => 'Yolu kaydet';
@override
String get wipeDeviceData => 'Cihaz verilerini sil';
@override
String get wipeDevice => 'Cihazı sil';
@override
String get destructiveDeviceActions => 'Yıkıcı cihaz işlemleri.';
@override
String get chooseAPresetOrFinetuneCustomRadioSettings =>
'Bir ön ayar seçin veya radyo ayarlarını ince ayarlayın.';
@override
String get chooseTheNameAndLocationThisDeviceShares =>
'Bu cihazın paylaştığı ad ve konumu seçin.';
@override
String get availableSpaceOnThisDevice => 'Bu cihazda kullanılabilir alan.';
@override
String get used => 'Kullanılan';
@override
String get total => 'Toplam';
@override
String get renameValue => 'Değeri yeniden adlandır';
@override
String get customizeFields => 'Alanları özelleştir';
@override
String get livePreview => 'Canlı önizleme';
@override
String get refreshSchedule => 'Yenileme programı';
@override
String get noResponse => 'Yanıt yok';
@override
String get refreshing => 'Yenileniyor';
@override
String get unavailable => 'Kullanılamaz';
@override
String get pickARelayOrNodeToWatchInSensors =>
'İzlemek için bir röle veya düğüm seçin.';
@override
String get publicKeyLabel => 'Genel anahtar';
@override
String get alreadyInContacts => 'Zaten kişilerde';
@override
String get connectToADeviceBeforeAddingContacts =>
'Kişi eklemeden önce bir cihaza bağlanın';
@override
String get fromContacts => 'Kişilerden';
@override
String get onlineOnly => 'Yalnızca çevrimiçi';
@override
String get inBoth => 'Her ikisinde';
@override
String get source => 'Kaynak';
@override
String get manualRouteEdit => 'Manuel rota düzenle';
@override
String get observedMeshRoute => 'Gözlemlenen mesh rotası';
@override
String get allMessagesCleared => 'Tüm mesajlar temizlendi';
@override
String get onlineTraceDatabaseCleared => 'Çevrimiçi iz veritabanı temizlendi';
@override
String get packetLogsCleared => 'Paket günlükleri temizlendi';
@override
String get hexDataCopiedToClipboard => 'Hex verisi panoya kopyalandı';
@override
String get developerModeEnabled => 'Geliştirici modu etkinleştirildi';
@override
String get developerModeDisabled => 'Geliştirici modu devre dışı bırakıldı';
@override
String get clipboardIsEmpty => 'Pano boş';
@override
String get contactImported => 'Kişi içe aktarıldı';
@override
String get contactLinkCopiedToClipboard =>
'Kişi bağlantısı panoya kopyalandı';
@override
String get failedToExportContact => 'Kişi dışa aktarılamadı';
@override
String get noLogsToExport => 'Dışa aktarılacak günlük yok';
@override
String get exportAsCsv => 'CSV olarak dışa aktar';
@override
String get exportAsText => 'Metin olarak dışa aktar';
@override
String get receivedRfc3339 => 'Alındı (RFC3339)';
@override
String get buildTime => 'Derleme zamanı';
@override
String get downloadUrlNotAvailable => 'İndirme URL\'si mevcut değil';
@override
String get cannotOpenDownloadUrl => 'İndirme URL\'si açılamıyor';
@override
String get updateCheckIsOnlyAvailableOnAndroid =>
'Güncelleme kontrolü yalnızca Android\'de kullanılabilir';
@override
String get youAreRunningTheLatestVersion => 'En son sürümü kullanıyorsunuz';
@override
String get updateAvailableButDownloadUrlNotFound =>
'Güncelleme mevcut ancak indirme URL\'si bulunamadı';
@override
String get startTictactoe => 'Tic-Tac-Toe başlat';
@override
String get tictactoeUnavailable => 'Tic-Tac-Toe kullanılamıyor';
@override
String get tictactoeOpponentUnknown => 'Tic-Tac-Toe: rakip bilinmiyor';
@override
String get tictactoeWaitingForStart => 'Tic-Tac-Toe: başlangıç bekleniyor';
@override
String get acceptsShareLinks => 'Paylaşım bağlantılarını kabul eder';
@override
String get supportsRawHex => 'Ham hex destekler';
@override
String get clipboardfriendly => 'Pano dostu';
@override
String get captured => 'Yakalandı';
@override
String get size => 'Boyut';
@override
String get noCustomChannelsToClear => 'Temizlenecek özel kanal yok.';
@override
String get noDeviceContactsToClear => 'Temizlenecek cihaz kişisi yok.';
}

View File

@@ -1927,4 +1927,773 @@ class AppLocalizationsUk extends AppLocalizations {
String contactFailedToSetRoute(String error) {
return 'Не вдалося задати маршрут: $error';
}
@override
String get rssi => 'RSSI';
@override
String get snr => 'SNR';
@override
String get ackTimeout => 'Тайм-аут ACK';
@override
String get opcode => 'Опкод';
@override
String get payload => 'Корисне навантаження';
@override
String get hops => 'Хопи';
@override
String get hashSize => 'Розмір хешу';
@override
String get pathBytes => 'Байти шляху';
@override
String get selectedPath => 'Обраний шлях';
@override
String get estimatedTx => 'Очікувана передача';
@override
String get senderToReceipt => 'Від відправника до отримання';
@override
String get receivedCopies => 'Отримані копії';
@override
String get retryCause => 'Причина повтору';
@override
String get retryMode => 'Режим повтору';
@override
String get retryResult => 'Результат повтору';
@override
String get lastRetry => 'Остання спроба';
@override
String get rxPackets => 'RX-пакети';
@override
String get mesh => 'Mesh';
@override
String get rate => 'Швидкість';
@override
String get window => 'Вікно';
@override
String get posttxDelay => 'Затримка після передачі';
@override
String get bandpass => 'Смуговий';
@override
String get bandpassFilterVoice => 'Смуговий фільтр голосу';
@override
String get frequency => 'Частота';
@override
String get australia => 'Австралія';
@override
String get australiaNarrow => 'Австралія (Вузький)';
@override
String get australiaQld => 'Австралія: QLD';
@override
String get australiaSaWa => 'Австралія: SA, WA';
@override
String get newZealand => 'Нова Зеландія';
@override
String get newZealandNarrow => 'Нова Зеландія (Вузький)';
@override
String get switzerland => 'Швейцарія';
@override
String get portugal433 => 'Португалія 433';
@override
String get portugal868 => 'Португалія 868';
@override
String get czechRepublicNarrow => 'Чехія (Вузький)';
@override
String get eu433mhzLongRange => 'ЄС 433МГц (Далекий)';
@override
String get euukDeprecated => 'ЄС/Великобританія (Застаріле)';
@override
String get euukNarrow => 'ЄС/Великобританія (Вузький)';
@override
String get usacanadaRecommended => 'США/Канада (Рекомендовано)';
@override
String get vietnamDeprecated => 'В\'єтнам (Застаріле)';
@override
String get vietnamNarrow => 'В\'єтнам (Вузький)';
@override
String get active => 'Активно';
@override
String get addContact => 'Додати контакт';
@override
String get all => 'Усі';
@override
String get autoResolve => 'Автоматичне вирішення';
@override
String get clearAllLabel => 'Очистити все';
@override
String get clearRelays => 'Очистити реле';
@override
String get clearFilters => 'Очистити фільтри';
@override
String get clearRoute => 'Очистити маршрут';
@override
String get clearMessages => 'Очистити повідомлення';
@override
String get clearScale => 'Очистити масштаб';
@override
String get clearDiscoveries => 'Очистити виявлення';
@override
String get clearOnlineTraceDatabase => 'Очистити базу трасувань';
@override
String get clearAllChannels => 'Очистити всі канали';
@override
String get clearAllContacts => 'Очистити всі контакти';
@override
String get clearChannels => 'Очистити канали';
@override
String get clearContacts => 'Очистити контакти';
@override
String get clearPathOnMaxRetry => 'Очистити шлях при макс. спробі';
@override
String get create => 'Створити';
@override
String get custom => 'Користувацький';
@override
String get defaultValue => 'За замовчуванням';
@override
String get duplicate => 'Дублювати';
@override
String get editName => 'Редагувати ім\'я';
@override
String get open => 'Відкрити';
@override
String get paste => 'Вставити';
@override
String get preview => 'Попередній перегляд';
@override
String get remove => 'Видалити';
@override
String get rename => 'Перейменувати';
@override
String get resolveAll => 'Вирішити все';
@override
String get send => 'Надіслати';
@override
String get sendAnyway => 'Надіслати все одно';
@override
String get share => 'Поділитися';
@override
String get shareContact => 'Поділитися контактом';
@override
String get trace => 'Трасування';
@override
String get use => 'Використати';
@override
String get useSelectedFrequency => 'Використати обрану частоту';
@override
String get discovery => 'Виявлення';
@override
String get discoverRepeaters => 'Виявити повторювачі';
@override
String get discoverSensors => 'Виявити датчики';
@override
String get repeaterDiscoverySent => 'Виявлення повторювачів надіслано';
@override
String get sensorDiscoverySent => 'Виявлення датчиків надіслано';
@override
String get clearedPendingDiscoveries => 'Очікувані виявлення очищено.';
@override
String get autoDiscovery => 'Автоматичне виявлення';
@override
String get enableAutomaticAdding => 'Увімкнути автоматичне додавання';
@override
String get autoaddRepeaters => 'Автододавання повторювачів';
@override
String get autoaddRoomServers => 'Автододавання серверів кімнат';
@override
String get autoaddSensors => 'Автододавання датчиків';
@override
String get autoaddUsers => 'Автододавання користувачів';
@override
String get overwriteOldestWhenFull =>
'Перезаписати найстаріші при заповненні';
@override
String get storage => 'Сховище';
@override
String get dangerZone => 'Небезпечна зона';
@override
String get profiles => 'Профілі';
@override
String get favourites => 'Обране';
@override
String get sensors => 'Датчики';
@override
String get others => 'Інші';
@override
String get gpsModule => 'Модуль GPS';
@override
String get liveTraffic => 'Живий трафік';
@override
String get repeatersMap => 'Карта повторювачів';
@override
String get spectrumScan => 'Сканування спектру';
@override
String get blePacketLogs => 'Журнали BLE-пакетів';
@override
String get onlineTraceDatabase => 'База трасувань';
@override
String get routePathByteSize => 'Розмір шляху в байтах';
@override
String get messageNotifications => 'Сповіщення про повідомлення';
@override
String get sarAlerts => 'SAR-сповіщення';
@override
String get discoveryNotifications => 'Сповіщення про виявлення';
@override
String get updateNotifications => 'Сповіщення про оновлення';
@override
String get muteWhileAppIsOpen => 'Без звуку при відкритому додатку';
@override
String get disableContacts => 'Вимкнути контакти';
@override
String get enableSensorsTab => 'Увімкнути вкладку Датчики';
@override
String get enableProfiles => 'Увімкнути профілі';
@override
String get autoRouteRotation => 'Автоматична ротація маршруту';
@override
String get nearestRepeaterFallback => 'Найближчий повторювач як резерв';
@override
String get deleteAllStoredMessageHistory =>
'Видалити всю історію повідомлень';
@override
String get messageFontSize => 'Розмір шрифту повідомлень';
@override
String get rotateMapWithHeading => 'Обертати карту за напрямком';
@override
String get showMapDebugInfo => 'Показати налагоджувальну інфо карти';
@override
String get openMapInFullscreen => 'Відкрити карту на повний екран';
@override
String get showSarMarkersLabel => 'Показати SAR-маркери';
@override
String get displaySarMarkersOnTheMainMap =>
'Показувати SAR-маркери на головній карті';
@override
String get showAllContactTrailsLabel => 'Показати всі сліди контактів';
@override
String get hideRepeatersOnMap => 'Сховати повторювачі на карті';
@override
String get setMapScale => 'Встановити масштаб карти';
@override
String get customMapScaleSaved => 'Користувацький масштаб карти збережено';
@override
String get voiceBitrate => 'Бітрейт голосу';
@override
String get voiceCompressor => 'Компресор голосу';
@override
String get balancesQuietAndLoudSpeechLevels =>
'Вирівнює тихий і гучний рівні мови';
@override
String get voiceLimiter => 'Лімітер голосу';
@override
String get preventsClippingPeaksBeforeEncoding =>
'Запобігає обрізанню піків перед кодуванням';
@override
String get micAutoGain => 'Автопідсилення мікрофона';
@override
String get letsTheRecorderAdjustInputLevel =>
'Дозволяє рекордеру налаштувати рівень входу';
@override
String get echoCancellation => 'Придушення ехо';
@override
String get noiseSuppression => 'Придушення шуму';
@override
String get trimSilenceInVoiceMessages =>
'Обрізати тишу в голосових повідомленнях';
@override
String get compressor => 'Компресор';
@override
String get limiter => 'Лімітер';
@override
String get autoGain => 'Автопідсилення';
@override
String get echoCancel => 'Ехо';
@override
String get noiseSuppress => 'Шум';
@override
String get silenceTrim => 'Тиша';
@override
String get maxImageSize => 'Максимальний розмір зображення';
@override
String get imageCompression => 'Стиснення зображення';
@override
String get grayscale => 'Відтінки сірого';
@override
String get ultraMode => 'Ультра режим';
@override
String get fastPrivateGpsUpdates => 'Швидкі приватні GPS-оновлення';
@override
String get movementThreshold => 'Поріг руху';
@override
String get fastGpsMovementThreshold => 'Поріг руху швидкого GPS';
@override
String get fastGpsActiveuseInterval =>
'Інтервал активного використання швидкого GPS';
@override
String get activeuseUpdateInterval =>
'Інтервал оновлення при активному використанні';
@override
String get repeatNearbyTraffic => 'Повторювати близький трафік';
@override
String get relayThroughRepeatersAcrossTheMesh =>
'Ретранслювати через повторювачі по мережі';
@override
String get nearbyOnlyWithoutRepeaterFlooding =>
'Лише поблизу, без flood повторювачів';
@override
String get multihop => 'Багатохоповий';
@override
String get createProfile => 'Створити профіль';
@override
String get renameProfile => 'Перейменувати профіль';
@override
String get newProfile => 'Новий профіль';
@override
String get manageProfiles => 'Керувати профілями';
@override
String get enableProfilesToStartManagingThem =>
'Увімкніть профілі, щоб почати керувати ними.';
@override
String get openMessage => 'Відкрити повідомлення';
@override
String get jumpToTheRelatedSarMessage =>
'Перейти до пов\'язаного SAR-повідомлення';
@override
String get removeSarMarker => 'Видалити SAR-маркер';
@override
String get pleaseSelectADestinationToSendSarMarker =>
'Виберіть призначення для надсилання SAR-маркера';
@override
String get sarMarkerBroadcastToPublicChannel =>
'SAR-маркер надіслано на публічний канал';
@override
String get sarMarkerSentToRoom => 'SAR-маркер надіслано в кімнату';
@override
String get loadFromGallery => 'Завантажити з галереї';
@override
String get replaceImage => 'Замінити зображення';
@override
String get selectFromGallery => 'Вибрати з галереї';
@override
String get team => 'Команда';
@override
String get found => 'Знайдено';
@override
String get staging => 'Місце збору';
@override
String get object => 'Об\'єкт';
@override
String get quiet => 'Тихо';
@override
String get moderate => 'Помірно';
@override
String get busy => 'Зайнято';
@override
String get spectrumScanReturnedNoCandidateFrequencies =>
'Сканування спектру не знайшло частот-кандидатів';
@override
String get searchMessages => 'Пошук повідомлень';
@override
String get sendImageFromGallery => 'Надіслати зображення з галереї';
@override
String get takePhoto => 'Зробити фото';
@override
String get dmOnly => 'Лише особисті повідомлення';
@override
String get allMessages => 'Усі повідомлення';
@override
String get sendToPublicChannel => 'Надіслати в публічний канал?';
@override
String get selectMarkerTypeAndDestination =>
'Виберіть тип маркера та призначення';
@override
String get noDestinationsAvailableLabel => 'Немає доступних призначень';
@override
String get image => 'Зображення';
@override
String get format => 'Формат';
@override
String get dimensions => 'Розміри';
@override
String get segments => 'Сегменти';
@override
String get transfers => 'Передачі';
@override
String get downloadedBy => 'Завантажено';
@override
String get saveDiscoverySettings => 'Зберегти налаштування виявлення';
@override
String get savePublicInfo => 'Зберегти публічну інформацію';
@override
String get saveRadioSettings => 'Зберегти налаштування радіо';
@override
String get savePath => 'Зберегти шлях';
@override
String get wipeDeviceData => 'Стерти дані пристрою';
@override
String get wipeDevice => 'Стерти пристрій';
@override
String get destructiveDeviceActions => 'Деструктивні дії пристрою.';
@override
String get chooseAPresetOrFinetuneCustomRadioSettings =>
'Оберіть пресет або налаштуйте радіо вручну.';
@override
String get chooseTheNameAndLocationThisDeviceShares =>
'Оберіть ім\'я та місцеположення, якими ділиться пристрій.';
@override
String get availableSpaceOnThisDevice =>
'Доступний простір на цьому пристрої.';
@override
String get used => 'Використано';
@override
String get total => 'Загалом';
@override
String get renameValue => 'Перейменувати значення';
@override
String get customizeFields => 'Налаштувати поля';
@override
String get livePreview => 'Попередній перегляд наживо';
@override
String get refreshSchedule => 'Розклад оновлення';
@override
String get noResponse => 'Немає відповіді';
@override
String get refreshing => 'Оновлення';
@override
String get unavailable => 'Недоступно';
@override
String get pickARelayOrNodeToWatchInSensors =>
'Оберіть реле або вузол для спостереження.';
@override
String get publicKeyLabel => 'Публічний ключ';
@override
String get alreadyInContacts => 'Вже в контактах';
@override
String get connectToADeviceBeforeAddingContacts =>
'Підключіться до пристрою перед додаванням контактів';
@override
String get fromContacts => 'З контактів';
@override
String get onlineOnly => 'Лише онлайн';
@override
String get inBoth => 'В обох';
@override
String get source => 'Джерело';
@override
String get manualRouteEdit => 'Ручне редагування маршруту';
@override
String get observedMeshRoute => 'Спостережуваний mesh-маршрут';
@override
String get allMessagesCleared => 'Усі повідомлення очищено';
@override
String get onlineTraceDatabaseCleared => 'Базу трасувань очищено';
@override
String get packetLogsCleared => 'Журнали пакетів очищено';
@override
String get hexDataCopiedToClipboard => 'Hex-дані скопійовано в буфер';
@override
String get developerModeEnabled => 'Режим розробника увімкнено';
@override
String get developerModeDisabled => 'Режим розробника вимкнено';
@override
String get clipboardIsEmpty => 'Буфер обміну порожній';
@override
String get contactImported => 'Контакт імпортовано';
@override
String get contactLinkCopiedToClipboard =>
'Посилання на контакт скопійовано в буфер';
@override
String get failedToExportContact => 'Не вдалося експортувати контакт';
@override
String get noLogsToExport => 'Немає журналів для експорту';
@override
String get exportAsCsv => 'Експортувати як CSV';
@override
String get exportAsText => 'Експортувати як текст';
@override
String get receivedRfc3339 => 'Отримано (RFC3339)';
@override
String get buildTime => 'Час збірки';
@override
String get downloadUrlNotAvailable => 'URL завантаження недоступний';
@override
String get cannotOpenDownloadUrl => 'Не вдається відкрити URL завантаження';
@override
String get updateCheckIsOnlyAvailableOnAndroid =>
'Перевірка оновлень доступна лише на Android';
@override
String get youAreRunningTheLatestVersion =>
'Ви використовуєте останню версію';
@override
String get updateAvailableButDownloadUrlNotFound =>
'Оновлення доступне, але URL завантаження не знайдено';
@override
String get startTictactoe => 'Почати Tic-Tac-Toe';
@override
String get tictactoeUnavailable => 'Tic-Tac-Toe недоступно';
@override
String get tictactoeOpponentUnknown => 'Tic-Tac-Toe: суперник невідомий';
@override
String get tictactoeWaitingForStart => 'Tic-Tac-Toe: очікування початку';
@override
String get acceptsShareLinks => 'Приймає посилання для обміну';
@override
String get supportsRawHex => 'Підтримує raw hex';
@override
String get clipboardfriendly => 'Зручно для буфера';
@override
String get captured => 'Захоплено';
@override
String get size => 'Розмір';
@override
String get noCustomChannelsToClear =>
'Немає користувацьких каналів для очищення.';
@override
String get noDeviceContactsToClear =>
'Немає контактів пристрою для очищення.';
}

View File

@@ -1827,4 +1827,745 @@ class AppLocalizationsZh extends AppLocalizations {
String contactFailedToSetRoute(String error) {
return '设置路由失败:$error';
}
@override
String get rssi => 'RSSI';
@override
String get snr => 'SNR';
@override
String get ackTimeout => 'ACK 超时';
@override
String get opcode => '操作码';
@override
String get payload => '有效载荷';
@override
String get hops => '跳数';
@override
String get hashSize => '哈希大小';
@override
String get pathBytes => '路径字节';
@override
String get selectedPath => '选定路径';
@override
String get estimatedTx => '预计传输';
@override
String get senderToReceipt => '发送到接收';
@override
String get receivedCopies => '收到的副本';
@override
String get retryCause => '重试原因';
@override
String get retryMode => '重试模式';
@override
String get retryResult => '重试结果';
@override
String get lastRetry => '最后重试';
@override
String get rxPackets => 'RX 数据包';
@override
String get mesh => 'Mesh';
@override
String get rate => '速率';
@override
String get window => '窗口';
@override
String get posttxDelay => '发送后延迟';
@override
String get bandpass => '带通';
@override
String get bandpassFilterVoice => '带通语音滤波';
@override
String get frequency => '频率';
@override
String get australia => '澳大利亚';
@override
String get australiaNarrow => '澳大利亚(窄带)';
@override
String get australiaQld => '澳大利亚QLD';
@override
String get australiaSaWa => '澳大利亚SA, WA';
@override
String get newZealand => '新西兰';
@override
String get newZealandNarrow => '新西兰(窄带)';
@override
String get switzerland => '瑞士';
@override
String get portugal433 => '葡萄牙 433';
@override
String get portugal868 => '葡萄牙 868';
@override
String get czechRepublicNarrow => '捷克(窄带)';
@override
String get eu433mhzLongRange => '欧盟 433MHz远距离';
@override
String get euukDeprecated => '欧盟/英国(已弃用)';
@override
String get euukNarrow => '欧盟/英国(窄带)';
@override
String get usacanadaRecommended => '美国/加拿大(推荐)';
@override
String get vietnamDeprecated => '越南(已弃用)';
@override
String get vietnamNarrow => '越南(窄带)';
@override
String get active => '活动';
@override
String get addContact => '添加联系人';
@override
String get all => '全部';
@override
String get autoResolve => '自动解析';
@override
String get clearAllLabel => '清除全部';
@override
String get clearRelays => '清除中继';
@override
String get clearFilters => '清除过滤器';
@override
String get clearRoute => '清除路由';
@override
String get clearMessages => '清除消息';
@override
String get clearScale => '清除比例';
@override
String get clearDiscoveries => '清除发现';
@override
String get clearOnlineTraceDatabase => '清除在线追踪数据库';
@override
String get clearAllChannels => '清除所有频道';
@override
String get clearAllContacts => '清除所有联系人';
@override
String get clearChannels => '清除频道';
@override
String get clearContacts => '清除联系人';
@override
String get clearPathOnMaxRetry => '最大重试时清除路径';
@override
String get create => '创建';
@override
String get custom => '自定义';
@override
String get defaultValue => '默认';
@override
String get duplicate => '复制';
@override
String get editName => '编辑名称';
@override
String get open => '打开';
@override
String get paste => '粘贴';
@override
String get preview => '预览';
@override
String get remove => '移除';
@override
String get rename => '重命名';
@override
String get resolveAll => '解析全部';
@override
String get send => '发送';
@override
String get sendAnyway => '仍然发送';
@override
String get share => '分享';
@override
String get shareContact => '分享联系人';
@override
String get trace => '追踪';
@override
String get use => '使用';
@override
String get useSelectedFrequency => '使用选定频率';
@override
String get discovery => '发现';
@override
String get discoverRepeaters => '发现中继器';
@override
String get discoverSensors => '发现传感器';
@override
String get repeaterDiscoverySent => '中继器发现已发送';
@override
String get sensorDiscoverySent => '传感器发现已发送';
@override
String get clearedPendingDiscoveries => '已清除待处理的发现。';
@override
String get autoDiscovery => '自动发现';
@override
String get enableAutomaticAdding => '启用自动添加';
@override
String get autoaddRepeaters => '自动添加中继器';
@override
String get autoaddRoomServers => '自动添加房间服务器';
@override
String get autoaddSensors => '自动添加传感器';
@override
String get autoaddUsers => '自动添加用户';
@override
String get overwriteOldestWhenFull => '满时覆盖最旧的';
@override
String get storage => '存储';
@override
String get dangerZone => '危险区域';
@override
String get profiles => '配置文件';
@override
String get favourites => '收藏夹';
@override
String get sensors => '传感器';
@override
String get others => '其他';
@override
String get gpsModule => 'GPS 模块';
@override
String get liveTraffic => '实时流量';
@override
String get repeatersMap => '中继器地图';
@override
String get spectrumScan => '频谱扫描';
@override
String get blePacketLogs => 'BLE 数据包日志';
@override
String get onlineTraceDatabase => '在线追踪数据库';
@override
String get routePathByteSize => '路由路径字节大小';
@override
String get messageNotifications => '消息通知';
@override
String get sarAlerts => 'SAR 警报';
@override
String get discoveryNotifications => '发现通知';
@override
String get updateNotifications => '更新通知';
@override
String get muteWhileAppIsOpen => '应用打开时静音';
@override
String get disableContacts => '禁用联系人';
@override
String get enableSensorsTab => '启用传感器标签';
@override
String get enableProfiles => '启用配置文件';
@override
String get autoRouteRotation => '自动路由轮换';
@override
String get nearestRepeaterFallback => '最近中继器回退';
@override
String get deleteAllStoredMessageHistory => '删除所有存储的消息历史';
@override
String get messageFontSize => '消息字体大小';
@override
String get rotateMapWithHeading => '随航向旋转地图';
@override
String get showMapDebugInfo => '显示地图调试信息';
@override
String get openMapInFullscreen => '全屏打开地图';
@override
String get showSarMarkersLabel => '显示 SAR 标记';
@override
String get displaySarMarkersOnTheMainMap => '在主地图上显示 SAR 标记';
@override
String get showAllContactTrailsLabel => '显示所有联系人轨迹';
@override
String get hideRepeatersOnMap => '在地图上隐藏中继器';
@override
String get setMapScale => '设置地图比例';
@override
String get customMapScaleSaved => '自定义地图比例已保存';
@override
String get voiceBitrate => '语音比特率';
@override
String get voiceCompressor => '语音压缩器';
@override
String get balancesQuietAndLoudSpeechLevels => '平衡安静和响亮的语音级别';
@override
String get voiceLimiter => '语音限制器';
@override
String get preventsClippingPeaksBeforeEncoding => '防止编码前的削波';
@override
String get micAutoGain => '麦克风自动增益';
@override
String get letsTheRecorderAdjustInputLevel => '让录音器调整输入级别';
@override
String get echoCancellation => '回声消除';
@override
String get noiseSuppression => '噪音抑制';
@override
String get trimSilenceInVoiceMessages => '修剪语音消息中的静音';
@override
String get compressor => '压缩器';
@override
String get limiter => '限制器';
@override
String get autoGain => '自动增益';
@override
String get echoCancel => '回声';
@override
String get noiseSuppress => '噪声';
@override
String get silenceTrim => '静音';
@override
String get maxImageSize => '最大图片大小';
@override
String get imageCompression => '图片压缩';
@override
String get grayscale => '灰度';
@override
String get ultraMode => '超级模式';
@override
String get fastPrivateGpsUpdates => '快速私有 GPS 更新';
@override
String get movementThreshold => '移动阈值';
@override
String get fastGpsMovementThreshold => '快速 GPS 移动阈值';
@override
String get fastGpsActiveuseInterval => '快速 GPS 活动使用间隔';
@override
String get activeuseUpdateInterval => '活动使用更新间隔';
@override
String get repeatNearbyTraffic => '转发附近流量';
@override
String get relayThroughRepeatersAcrossTheMesh => '通过网格中的中继器转发';
@override
String get nearbyOnlyWithoutRepeaterFlooding => '仅附近,无中继器泛洪';
@override
String get multihop => '多跳';
@override
String get createProfile => '创建配置文件';
@override
String get renameProfile => '重命名配置文件';
@override
String get newProfile => '新配置文件';
@override
String get manageProfiles => '管理配置文件';
@override
String get enableProfilesToStartManagingThem => '启用配置文件以开始管理它们。';
@override
String get openMessage => '打开消息';
@override
String get jumpToTheRelatedSarMessage => '跳转到相关的 SAR 消息';
@override
String get removeSarMarker => '移除 SAR 标记';
@override
String get pleaseSelectADestinationToSendSarMarker => '请选择目标以发送 SAR 标记';
@override
String get sarMarkerBroadcastToPublicChannel => 'SAR 标记已广播到公共频道';
@override
String get sarMarkerSentToRoom => 'SAR 标记已发送到房间';
@override
String get loadFromGallery => '从图库加载';
@override
String get replaceImage => '替换图片';
@override
String get selectFromGallery => '从图库选择';
@override
String get team => '团队';
@override
String get found => '已找到';
@override
String get staging => '集结区';
@override
String get object => '物体';
@override
String get quiet => '安静';
@override
String get moderate => '中等';
@override
String get busy => '繁忙';
@override
String get spectrumScanReturnedNoCandidateFrequencies => '频谱扫描未找到候选频率';
@override
String get searchMessages => '搜索消息';
@override
String get sendImageFromGallery => '从图库发送图片';
@override
String get takePhoto => '拍照';
@override
String get dmOnly => '仅私信';
@override
String get allMessages => '所有消息';
@override
String get sendToPublicChannel => '发送到公共频道?';
@override
String get selectMarkerTypeAndDestination => '选择标记类型和目标';
@override
String get noDestinationsAvailableLabel => '没有可用的目标';
@override
String get image => '图片';
@override
String get format => '格式';
@override
String get dimensions => '尺寸';
@override
String get segments => '分段';
@override
String get transfers => '传输';
@override
String get downloadedBy => '已下载';
@override
String get saveDiscoverySettings => '保存发现设置';
@override
String get savePublicInfo => '保存公共信息';
@override
String get saveRadioSettings => '保存无线电设置';
@override
String get savePath => '保存路径';
@override
String get wipeDeviceData => '擦除设备数据';
@override
String get wipeDevice => '擦除设备';
@override
String get destructiveDeviceActions => '破坏性设备操作。';
@override
String get chooseAPresetOrFinetuneCustomRadioSettings => '选择预设或微调自定义无线电设置。';
@override
String get chooseTheNameAndLocationThisDeviceShares => '选择此设备共享的名称和位置。';
@override
String get availableSpaceOnThisDevice => '此设备上的可用空间。';
@override
String get used => '已使用';
@override
String get total => '总计';
@override
String get renameValue => '重命名值';
@override
String get customizeFields => '自定义字段';
@override
String get livePreview => '实时预览';
@override
String get refreshSchedule => '刷新计划';
@override
String get noResponse => '无响应';
@override
String get refreshing => '刷新中';
@override
String get unavailable => '不可用';
@override
String get pickARelayOrNodeToWatchInSensors => '选择要在传感器中监视的中继或节点。';
@override
String get publicKeyLabel => '公钥';
@override
String get alreadyInContacts => '已在联系人中';
@override
String get connectToADeviceBeforeAddingContacts => '添加联系人前请连接到设备';
@override
String get fromContacts => '来自联系人';
@override
String get onlineOnly => '仅在线';
@override
String get inBoth => '两者中';
@override
String get source => '来源';
@override
String get manualRouteEdit => '手动路由编辑';
@override
String get observedMeshRoute => '观察到的网格路由';
@override
String get allMessagesCleared => '所有消息已清除';
@override
String get onlineTraceDatabaseCleared => '在线追踪数据库已清除';
@override
String get packetLogsCleared => '数据包日志已清除';
@override
String get hexDataCopiedToClipboard => '十六进制数据已复制到剪贴板';
@override
String get developerModeEnabled => '开发者模式已启用';
@override
String get developerModeDisabled => '开发者模式已禁用';
@override
String get clipboardIsEmpty => '剪贴板为空';
@override
String get contactImported => '联系人已导入';
@override
String get contactLinkCopiedToClipboard => '联系人链接已复制到剪贴板';
@override
String get failedToExportContact => '导出联系人失败';
@override
String get noLogsToExport => '没有日志可导出';
@override
String get exportAsCsv => '导出为 CSV';
@override
String get exportAsText => '导出为文本';
@override
String get receivedRfc3339 => '收到 (RFC3339)';
@override
String get buildTime => '构建时间';
@override
String get downloadUrlNotAvailable => '下载链接不可用';
@override
String get cannotOpenDownloadUrl => '无法打开下载链接';
@override
String get updateCheckIsOnlyAvailableOnAndroid => '更新检查仅在 Android 上可用';
@override
String get youAreRunningTheLatestVersion => '您正在使用最新版本';
@override
String get updateAvailableButDownloadUrlNotFound => '有更新可用但未找到下载链接';
@override
String get startTictactoe => '开始井字棋';
@override
String get tictactoeUnavailable => '井字棋不可用';
@override
String get tictactoeOpponentUnknown => '井字棋:对手未知';
@override
String get tictactoeWaitingForStart => '井字棋:等待开始';
@override
String get acceptsShareLinks => '接受分享链接';
@override
String get supportsRawHex => '支持原始十六进制';
@override
String get clipboardfriendly => '剪贴板友好';
@override
String get captured => '已捕获';
@override
String get size => '大小';
@override
String get noCustomChannelsToClear => '没有自定义频道可清除。';
@override
String get noDeviceContactsToClear => '没有设备联系人可清除。';
}

View File

@@ -2328,5 +2328,252 @@
"contactFailedToClearRoute": "Nie udało się wyczyścić trasy: {error}",
"contactRouteCleared": "Trasa wyczyszczona",
"contactRouteSet": "Ustawiono trasę: {route}",
"contactFailedToSetRoute": "Nie udało się ustawić trasy: {error}"
"contactFailedToSetRoute": "Nie udało się ustawić trasy: {error}",
"rssi": "RSSI",
"snr": "SNR",
"ackTimeout": "Limit czasu ACK",
"opcode": "Opcode",
"payload": "Ładunek",
"hops": "Skoki",
"hashSize": "Rozmiar hash",
"pathBytes": "Bajty ścieżki",
"selectedPath": "Wybrana ścieżka",
"estimatedTx": "Szacowane nadawanie",
"senderToReceipt": "Od nadawcy do odbioru",
"receivedCopies": "Otrzymane kopie",
"retryCause": "Przyczyna ponowienia",
"retryMode": "Tryb ponowienia",
"retryResult": "Wynik ponowienia",
"lastRetry": "Ostatnia próba",
"rxPackets": "Pakiety RX",
"mesh": "Mesh",
"rate": "Szybkość",
"window": "Okno",
"posttxDelay": "Opóźnienie po nadawaniu",
"bandpass": "Pasmowy",
"bandpassFilterVoice": "Filtr pasmowy głosu",
"frequency": "Częstotliwość",
"australia": "Australia",
"australiaNarrow": "Australia (wąski)",
"australiaQld": "Australia: QLD",
"australiaSaWa": "Australia: SA, WA",
"newZealand": "Nowa Zelandia",
"newZealandNarrow": "Nowa Zelandia (wąski)",
"switzerland": "Szwajcaria",
"portugal433": "Portugalia 433",
"portugal868": "Portugalia 868",
"czechRepublicNarrow": "Czechy (wąski)",
"eu433mhzLongRange": "EU 433MHz (daleki zasięg)",
"euukDeprecated": "EU/UK (przestarzały)",
"euukNarrow": "EU/UK (wąski)",
"usacanadaRecommended": "USA/Kanada (zalecany)",
"vietnamDeprecated": "Wietnam (przestarzały)",
"vietnamNarrow": "Wietnam (wąski)",
"active": "Aktywny",
"addContact": "Dodaj kontakt",
"all": "Wszystko",
"autoResolve": "Automatyczne rozwiązanie",
"clearAllLabel": "Wyczyść wszystko",
"clearRelays": "Wyczyść przekaźniki",
"clearFilters": "Wyczyść filtry",
"clearRoute": "Wyczyść trasę",
"clearMessages": "Wyczyść wiadomości",
"clearScale": "Wyczyść skalę",
"clearDiscoveries": "Wyczyść odkrycia",
"clearOnlineTraceDatabase": "Wyczyść bazę śladów",
"clearAllChannels": "Wyczyść wszystkie kanały",
"clearAllContacts": "Wyczyść wszystkie kontakty",
"clearChannels": "Wyczyść kanały",
"clearContacts": "Wyczyść kontakty",
"clearPathOnMaxRetry": "Wyczyść ścieżkę przy maks. próbie",
"create": "Utwórz",
"custom": "Niestandardowy",
"defaultValue": "Domyślny",
"duplicate": "Duplikuj",
"editName": "Edytuj nazwę",
"open": "Otwórz",
"paste": "Wklej",
"preview": "Podgląd",
"remove": "Usuń",
"rename": "Zmień nazwę",
"resolveAll": "Rozwiąż wszystko",
"send": "Wyślij",
"sendAnyway": "Wyślij mimo to",
"share": "Udostępnij",
"shareContact": "Udostępnij kontakt",
"trace": "Śledzenie",
"use": "Użyj",
"useSelectedFrequency": "Użyj wybranej częstotliwości",
"discovery": "Wykrywanie",
"discoverRepeaters": "Wykryj przekaźniki",
"discoverSensors": "Wykryj czujniki",
"repeaterDiscoverySent": "Wykrywanie przekaźników wysłane",
"sensorDiscoverySent": "Wykrywanie czujników wysłane",
"clearedPendingDiscoveries": "Wyczyszczono oczekujące odkrycia.",
"autoDiscovery": "Automatyczne wykrywanie",
"enableAutomaticAdding": "Włącz automatyczne dodawanie",
"autoaddRepeaters": "Automatycznie dodaj przekaźniki",
"autoaddRoomServers": "Automatycznie dodaj serwery pokoi",
"autoaddSensors": "Automatycznie dodaj czujniki",
"autoaddUsers": "Automatycznie dodaj użytkowników",
"overwriteOldestWhenFull": "Nadpisz najstarsze gdy pełne",
"storage": "Pamięć",
"dangerZone": "Strefa zagrożenia",
"profiles": "Profile",
"favourites": "Ulubione",
"sensors": "Czujniki",
"others": "Inne",
"gpsModule": "Moduł GPS",
"liveTraffic": "Ruch na żywo",
"repeatersMap": "Mapa przekaźników",
"spectrumScan": "Skanowanie spektrum",
"blePacketLogs": "Logi pakietów BLE",
"onlineTraceDatabase": "Baza śladów",
"routePathByteSize": "Rozmiar ścieżki w bajtach",
"messageNotifications": "Powiadomienia o wiadomościach",
"sarAlerts": "Alerty SAR",
"discoveryNotifications": "Powiadomienia o wykrywaniu",
"updateNotifications": "Powiadomienia o aktualizacjach",
"muteWhileAppIsOpen": "Wycisz gdy aplikacja jest otwarta",
"disableContacts": "Wyłącz kontakty",
"enableSensorsTab": "Włącz kartę Czujniki",
"enableProfiles": "Włącz profile",
"autoRouteRotation": "Automatyczna rotacja trasy",
"nearestRepeaterFallback": "Najbliższy przekaźnik awaryjny",
"deleteAllStoredMessageHistory": "Usuń całą historię wiadomości",
"messageFontSize": "Rozmiar czcionki wiadomości",
"rotateMapWithHeading": "Obracaj mapę z kierunkiem",
"showMapDebugInfo": "Pokaż info debugowania mapy",
"openMapInFullscreen": "Otwórz mapę na pełnym ekranie",
"showSarMarkersLabel": "Pokaż znaczniki SAR",
"displaySarMarkersOnTheMainMap": "Wyświetlaj znaczniki SAR na głównej mapie",
"showAllContactTrailsLabel": "Pokaż wszystkie ślady kontaktów",
"hideRepeatersOnMap": "Ukryj przekaźniki na mapie",
"setMapScale": "Ustaw skalę mapy",
"customMapScaleSaved": "Niestandardowa skala mapy zapisana",
"voiceBitrate": "Bitrate głosu",
"voiceCompressor": "Kompresor głosu",
"balancesQuietAndLoudSpeechLevels": "Wyrównuje ciche i głośne poziomy mowy",
"voiceLimiter": "Limiter głosu",
"preventsClippingPeaksBeforeEncoding": "Zapobiega przycinaniu szczytów przed kodowaniem",
"micAutoGain": "Automatyczne wzmocnienie mikrofonu",
"letsTheRecorderAdjustInputLevel": "Pozwala nagrywarkowi dostosować poziom wejścia",
"echoCancellation": "Usuwanie echa",
"noiseSuppression": "Tłumienie szumu",
"trimSilenceInVoiceMessages": "Przytnij ciszę w wiadomościach głosowych",
"compressor": "Kompresor",
"limiter": "Limiter",
"autoGain": "Automatyczne wzmocnienie",
"echoCancel": "Echo",
"noiseSuppress": "Szum",
"silenceTrim": "Cisza",
"maxImageSize": "Maksymalny rozmiar obrazu",
"imageCompression": "Kompresja obrazu",
"grayscale": "Skala szarości",
"ultraMode": "Tryb ultra",
"fastPrivateGpsUpdates": "Szybkie prywatne aktualizacje GPS",
"movementThreshold": "Próg ruchu",
"fastGpsMovementThreshold": "Próg ruchu szybkiego GPS",
"fastGpsActiveuseInterval": "Interwał aktywnego użycia szybkiego GPS",
"activeuseUpdateInterval": "Interwał aktualizacji przy aktywnym użyciu",
"repeatNearbyTraffic": "Powtarzaj pobliski ruch",
"relayThroughRepeatersAcrossTheMesh": "Przekazuj przez przekaźniki w sieci",
"nearbyOnlyWithoutRepeaterFlooding": "Tylko w pobliżu, bez zalewania przekaźników",
"multihop": "Wieloskokowy",
"createProfile": "Utwórz profil",
"renameProfile": "Zmień nazwę profilu",
"newProfile": "Nowy profil",
"manageProfiles": "Zarządzaj profilami",
"enableProfilesToStartManagingThem": "Włącz profile, aby zacząć nimi zarządzać.",
"openMessage": "Otwórz wiadomość",
"jumpToTheRelatedSarMessage": "Przejdź do powiązanej wiadomości SAR",
"removeSarMarker": "Usuń znacznik SAR",
"pleaseSelectADestinationToSendSarMarker": "Wybierz cel wysłania znacznika SAR",
"sarMarkerBroadcastToPublicChannel": "Znacznik SAR wysłany na kanał publiczny",
"sarMarkerSentToRoom": "Znacznik SAR wysłany do pokoju",
"loadFromGallery": "Załaduj z galerii",
"replaceImage": "Zamień obraz",
"selectFromGallery": "Wybierz z galerii",
"team": "Zespół",
"found": "Znaleziono",
"staging": "Punkt zbiórki",
"object": "Obiekt",
"quiet": "Cicho",
"moderate": "Umiarkowane",
"busy": "Zajęty",
"spectrumScanReturnedNoCandidateFrequencies": "Skanowanie spektrum nie znalazło częstotliwości kandydatów",
"searchMessages": "Szukaj wiadomości",
"sendImageFromGallery": "Wyślij obraz z galerii",
"takePhoto": "Zrób zdjęcie",
"dmOnly": "Tylko wiadomość bezpośrednia",
"allMessages": "Wszystkie wiadomości",
"sendToPublicChannel": "Wysłać na kanał publiczny?",
"selectMarkerTypeAndDestination": "Wybierz typ znacznika i cel",
"noDestinationsAvailableLabel": "Brak dostępnych celów",
"image": "Obraz",
"format": "Format",
"dimensions": "Wymiary",
"segments": "Segmenty",
"transfers": "Transfery",
"downloadedBy": "Pobrane przez",
"saveDiscoverySettings": "Zapisz ustawienia wykrywania",
"savePublicInfo": "Zapisz informacje publiczne",
"saveRadioSettings": "Zapisz ustawienia radia",
"savePath": "Zapisz ścieżkę",
"wipeDeviceData": "Wyczyść dane urządzenia",
"wipeDevice": "Wyczyść urządzenie",
"destructiveDeviceActions": "Destrukcyjne akcje na urządzeniu.",
"chooseAPresetOrFinetuneCustomRadioSettings": "Wybierz ustawienie wstępne lub dostosuj ustawienia radia.",
"chooseTheNameAndLocationThisDeviceShares": "Wybierz nazwę i lokalizację udostępnianą przez to urządzenie.",
"availableSpaceOnThisDevice": "Dostępne miejsce na tym urządzeniu.",
"used": "Użyto",
"total": "Razem",
"renameValue": "Zmień nazwę wartości",
"customizeFields": "Dostosuj pola",
"livePreview": "Podgląd na żywo",
"refreshSchedule": "Harmonogram odświeżania",
"noResponse": "Brak odpowiedzi",
"refreshing": "Odświeżanie",
"unavailable": "Niedostępny",
"pickARelayOrNodeToWatchInSensors": "Wybierz przekaźnik lub węzeł do obserwacji.",
"publicKeyLabel": "Klucz publiczny",
"alreadyInContacts": "Już w kontaktach",
"connectToADeviceBeforeAddingContacts": "Połącz się z urządzeniem przed dodaniem kontaktów",
"fromContacts": "Z kontaktów",
"onlineOnly": "Tylko online",
"inBoth": "W obu",
"source": "Źródło",
"manualRouteEdit": "Ręczna edycja trasy",
"observedMeshRoute": "Obserwowana trasa sieci",
"allMessagesCleared": "Wszystkie wiadomości wyczyszczone",
"onlineTraceDatabaseCleared": "Baza śladów wyczyszczona",
"packetLogsCleared": "Logi pakietów wyczyszczone",
"hexDataCopiedToClipboard": "Dane hex skopiowane do schowka",
"developerModeEnabled": "Tryb programisty włączony",
"developerModeDisabled": "Tryb programisty wyłączony",
"clipboardIsEmpty": "Schowek jest pusty",
"contactImported": "Kontakt zaimportowany",
"contactLinkCopiedToClipboard": "Link kontaktu skopiowany do schowka",
"failedToExportContact": "Nie udało się wyeksportować kontaktu",
"noLogsToExport": "Brak logów do eksportu",
"exportAsCsv": "Eksportuj jako CSV",
"exportAsText": "Eksportuj jako tekst",
"receivedRfc3339": "Odebrano (RFC3339)",
"buildTime": "Czas budowania",
"downloadUrlNotAvailable": "URL pobierania niedostępny",
"cannotOpenDownloadUrl": "Nie można otworzyć URL pobierania",
"updateCheckIsOnlyAvailableOnAndroid": "Sprawdzanie aktualizacji dostępne tylko na Androidzie",
"youAreRunningTheLatestVersion": "Używasz najnowszej wersji",
"updateAvailableButDownloadUrlNotFound": "Aktualizacja dostępna, ale URL pobierania nie znaleziony",
"startTictactoe": "Rozpocznij Tic-Tac-Toe",
"tictactoeUnavailable": "Tic-Tac-Toe niedostępny",
"tictactoeOpponentUnknown": "Tic-Tac-Toe: przeciwnik nieznany",
"tictactoeWaitingForStart": "Tic-Tac-Toe: oczekiwanie na start",
"acceptsShareLinks": "Akceptuje udostępnione linki",
"supportsRawHex": "Obsługuje surowy hex",
"clipboardfriendly": "Przyjazne dla schowka",
"captured": "Przechwycone",
"size": "Rozmiar",
"noCustomChannelsToClear": "Brak niestandardowych kanałów do wyczyszczenia.",
"noDeviceContactsToClear": "Brak kontaktów urządzenia do wyczyszczenia."
}

View File

@@ -2328,5 +2328,252 @@
"contactFailedToClearRoute": "Falha ao limpar a rota: {error}",
"contactRouteCleared": "Rota limpa",
"contactRouteSet": "Rota definida: {route}",
"contactFailedToSetRoute": "Falha ao definir a rota: {error}"
"contactFailedToSetRoute": "Falha ao definir a rota: {error}",
"rssi": "RSSI",
"snr": "SNR",
"ackTimeout": "Tempo limite ACK",
"opcode": "Opcode",
"payload": "Carga útil",
"hops": "Saltos",
"hashSize": "Tamanho do hash",
"pathBytes": "Bytes do caminho",
"selectedPath": "Caminho selecionado",
"estimatedTx": "Transmissão estimada",
"senderToReceipt": "Do remetente ao recibo",
"receivedCopies": "Cópias recebidas",
"retryCause": "Causa da nova tentativa",
"retryMode": "Modo de nova tentativa",
"retryResult": "Resultado da nova tentativa",
"lastRetry": "Última tentativa",
"rxPackets": "Pacotes RX",
"mesh": "Mesh",
"rate": "Taxa",
"window": "Janela",
"posttxDelay": "Atraso pós-tx",
"bandpass": "Passa-banda",
"bandpassFilterVoice": "Filtro passa-banda de voz",
"frequency": "Frequência",
"australia": "Austrália",
"australiaNarrow": "Austrália (Estreito)",
"australiaQld": "Austrália: QLD",
"australiaSaWa": "Austrália: SA, WA",
"newZealand": "Nova Zelândia",
"newZealandNarrow": "Nova Zelândia (Estreito)",
"switzerland": "Suíça",
"portugal433": "Portugal 433",
"portugal868": "Portugal 868",
"czechRepublicNarrow": "República Checa (Estreito)",
"eu433mhzLongRange": "UE 433MHz (Longo Alcance)",
"euukDeprecated": "UE/RU (Obsoleto)",
"euukNarrow": "UE/RU (Estreito)",
"usacanadaRecommended": "EUA/Canadá (Recomendado)",
"vietnamDeprecated": "Vietname (Obsoleto)",
"vietnamNarrow": "Vietname (Estreito)",
"active": "Ativo",
"addContact": "Adicionar contacto",
"all": "Tudo",
"autoResolve": "Resolver automaticamente",
"clearAllLabel": "Limpar tudo",
"clearRelays": "Limpar relays",
"clearFilters": "Limpar filtros",
"clearRoute": "Limpar rota",
"clearMessages": "Limpar mensagens",
"clearScale": "Limpar escala",
"clearDiscoveries": "Limpar descobertas",
"clearOnlineTraceDatabase": "Limpar base de dados de rastreio",
"clearAllChannels": "Limpar todos os canais",
"clearAllContacts": "Limpar todos os contactos",
"clearChannels": "Limpar canais",
"clearContacts": "Limpar contactos",
"clearPathOnMaxRetry": "Limpar caminho no máx. de tentativas",
"create": "Criar",
"custom": "Personalizado",
"defaultValue": "Padrão",
"duplicate": "Duplicar",
"editName": "Editar nome",
"open": "Abrir",
"paste": "Colar",
"preview": "Pré-visualização",
"remove": "Remover",
"rename": "Renomear",
"resolveAll": "Resolver tudo",
"send": "Enviar",
"sendAnyway": "Enviar mesmo assim",
"share": "Partilhar",
"shareContact": "Partilhar contacto",
"trace": "Rastreio",
"use": "Usar",
"useSelectedFrequency": "Usar frequência selecionada",
"discovery": "Descoberta",
"discoverRepeaters": "Descobrir repetidores",
"discoverSensors": "Descobrir sensores",
"repeaterDiscoverySent": "Descoberta de repetidores enviada",
"sensorDiscoverySent": "Descoberta de sensores enviada",
"clearedPendingDiscoveries": "Descobertas pendentes limpas.",
"autoDiscovery": "Descoberta automática",
"enableAutomaticAdding": "Ativar adição automática",
"autoaddRepeaters": "Adicionar repetidores automaticamente",
"autoaddRoomServers": "Adicionar servidores de sala automaticamente",
"autoaddSensors": "Adicionar sensores automaticamente",
"autoaddUsers": "Adicionar utilizadores automaticamente",
"overwriteOldestWhenFull": "Sobrescrever mais antigos quando cheio",
"storage": "Armazenamento",
"dangerZone": "Zona de perigo",
"profiles": "Perfis",
"favourites": "Favoritos",
"sensors": "Sensores",
"others": "Outros",
"gpsModule": "Módulo GPS",
"liveTraffic": "Tráfego ao vivo",
"repeatersMap": "Mapa de repetidores",
"spectrumScan": "Varredura de espectro",
"blePacketLogs": "Registos de pacotes BLE",
"onlineTraceDatabase": "Base de dados de rastreio",
"routePathByteSize": "Tamanho do caminho em bytes",
"messageNotifications": "Notificações de mensagens",
"sarAlerts": "Alertas SAR",
"discoveryNotifications": "Notificações de descoberta",
"updateNotifications": "Notificações de atualização",
"muteWhileAppIsOpen": "Silenciar com a app aberta",
"disableContacts": "Desativar contactos",
"enableSensorsTab": "Ativar separador Sensores",
"enableProfiles": "Ativar perfis",
"autoRouteRotation": "Rotação automática de rota",
"nearestRepeaterFallback": "Repetidor mais próximo como reserva",
"deleteAllStoredMessageHistory": "Apagar todo o histórico de mensagens",
"messageFontSize": "Tamanho da fonte de mensagens",
"rotateMapWithHeading": "Rodar mapa com direção",
"showMapDebugInfo": "Mostrar info de depuração do mapa",
"openMapInFullscreen": "Abrir mapa em ecrã inteiro",
"showSarMarkersLabel": "Mostrar marcadores SAR",
"displaySarMarkersOnTheMainMap": "Mostrar marcadores SAR no mapa principal",
"showAllContactTrailsLabel": "Mostrar todos os rastos de contactos",
"hideRepeatersOnMap": "Ocultar repetidores no mapa",
"setMapScale": "Definir escala do mapa",
"customMapScaleSaved": "Escala de mapa personalizada guardada",
"voiceBitrate": "Taxa de bits de voz",
"voiceCompressor": "Compressor de voz",
"balancesQuietAndLoudSpeechLevels": "Equilibra níveis de fala suaves e altos",
"voiceLimiter": "Limitador de voz",
"preventsClippingPeaksBeforeEncoding": "Previne corte de picos antes da codificação",
"micAutoGain": "Ganho automático do microfone",
"letsTheRecorderAdjustInputLevel": "Permite ao gravador ajustar o nível de entrada",
"echoCancellation": "Cancelamento de eco",
"noiseSuppression": "Supressão de ruído",
"trimSilenceInVoiceMessages": "Cortar silêncio em mensagens de voz",
"compressor": "Compressor",
"limiter": "Limitador",
"autoGain": "Ganho automático",
"echoCancel": "Eco",
"noiseSuppress": "Ruído",
"silenceTrim": "Silêncio",
"maxImageSize": "Tamanho máximo de imagem",
"imageCompression": "Compressão de imagem",
"grayscale": "Escala de cinzentos",
"ultraMode": "Modo ultra",
"fastPrivateGpsUpdates": "Atualizações GPS privadas rápidas",
"movementThreshold": "Limiar de movimento",
"fastGpsMovementThreshold": "Limiar de movimento GPS rápido",
"fastGpsActiveuseInterval": "Intervalo de uso ativo GPS rápido",
"activeuseUpdateInterval": "Intervalo de atualização de uso ativo",
"repeatNearbyTraffic": "Repetir tráfego próximo",
"relayThroughRepeatersAcrossTheMesh": "Retransmitir através de repetidores na rede",
"nearbyOnlyWithoutRepeaterFlooding": "Apenas próximos, sem flood de repetidores",
"multihop": "Multi-salto",
"createProfile": "Criar perfil",
"renameProfile": "Renomear perfil",
"newProfile": "Novo perfil",
"manageProfiles": "Gerir perfis",
"enableProfilesToStartManagingThem": "Ative os perfis para começar a geri-los.",
"openMessage": "Abrir mensagem",
"jumpToTheRelatedSarMessage": "Ir para a mensagem SAR relacionada",
"removeSarMarker": "Remover marcador SAR",
"pleaseSelectADestinationToSendSarMarker": "Selecione um destino para enviar o marcador SAR",
"sarMarkerBroadcastToPublicChannel": "Marcador SAR transmitido no canal público",
"sarMarkerSentToRoom": "Marcador SAR enviado para a sala",
"loadFromGallery": "Carregar da galeria",
"replaceImage": "Substituir imagem",
"selectFromGallery": "Selecionar da galeria",
"team": "Equipa",
"found": "Encontrado",
"staging": "Área de reunião",
"object": "Objeto",
"quiet": "Silencioso",
"moderate": "Moderado",
"busy": "Ocupado",
"spectrumScanReturnedNoCandidateFrequencies": "A varredura de espectro não encontrou frequências candidatas",
"searchMessages": "Pesquisar mensagens",
"sendImageFromGallery": "Enviar imagem da galeria",
"takePhoto": "Tirar foto",
"dmOnly": "Apenas mensagem direta",
"allMessages": "Todas as mensagens",
"sendToPublicChannel": "Enviar para o canal público?",
"selectMarkerTypeAndDestination": "Selecione tipo de marcador e destino",
"noDestinationsAvailableLabel": "Nenhum destino disponível",
"image": "Imagem",
"format": "Formato",
"dimensions": "Dimensões",
"segments": "Segmentos",
"transfers": "Transferências",
"downloadedBy": "Transferido por",
"saveDiscoverySettings": "Guardar definições de descoberta",
"savePublicInfo": "Guardar informação pública",
"saveRadioSettings": "Guardar definições de rádio",
"savePath": "Guardar caminho",
"wipeDeviceData": "Apagar dados do dispositivo",
"wipeDevice": "Apagar dispositivo",
"destructiveDeviceActions": "Ações destrutivas do dispositivo.",
"chooseAPresetOrFinetuneCustomRadioSettings": "Escolha uma predefinição ou ajuste as definições de rádio.",
"chooseTheNameAndLocationThisDeviceShares": "Escolha o nome e a localização que este dispositivo partilha.",
"availableSpaceOnThisDevice": "Espaço disponível neste dispositivo.",
"used": "Usado",
"total": "Total",
"renameValue": "Renomear valor",
"customizeFields": "Personalizar campos",
"livePreview": "Pré-visualização ao vivo",
"refreshSchedule": "Agenda de atualização",
"noResponse": "Sem resposta",
"refreshing": "A atualizar",
"unavailable": "Indisponível",
"pickARelayOrNodeToWatchInSensors": "Escolha um relay ou nó para observar.",
"publicKeyLabel": "Chave pública",
"alreadyInContacts": "Já nos contactos",
"connectToADeviceBeforeAddingContacts": "Conecte-se a um dispositivo antes de adicionar contactos",
"fromContacts": "Dos contactos",
"onlineOnly": "Apenas online",
"inBoth": "Em ambos",
"source": "Fonte",
"manualRouteEdit": "Edição manual de rota",
"observedMeshRoute": "Rota mesh observada",
"allMessagesCleared": "Todas as mensagens limpas",
"onlineTraceDatabaseCleared": "Base de dados de rastreio limpa",
"packetLogsCleared": "Registos de pacotes limpos",
"hexDataCopiedToClipboard": "Dados hex copiados para a área de transferência",
"developerModeEnabled": "Modo de programador ativado",
"developerModeDisabled": "Modo de programador desativado",
"clipboardIsEmpty": "A área de transferência está vazia",
"contactImported": "Contacto importado",
"contactLinkCopiedToClipboard": "Link do contacto copiado para a área de transferência",
"failedToExportContact": "Falha ao exportar contacto",
"noLogsToExport": "Sem registos para exportar",
"exportAsCsv": "Exportar como CSV",
"exportAsText": "Exportar como texto",
"receivedRfc3339": "Recebido (RFC3339)",
"buildTime": "Hora de compilação",
"downloadUrlNotAvailable": "URL de download não disponível",
"cannotOpenDownloadUrl": "Não é possível abrir o URL de download",
"updateCheckIsOnlyAvailableOnAndroid": "A verificação de atualizações só está disponível no Android",
"youAreRunningTheLatestVersion": "Está a usar a versão mais recente",
"updateAvailableButDownloadUrlNotFound": "Atualização disponível mas URL de download não encontrado",
"startTictactoe": "Iniciar Tic-Tac-Toe",
"tictactoeUnavailable": "Tic-Tac-Toe indisponível",
"tictactoeOpponentUnknown": "Tic-Tac-Toe: oponente desconhecido",
"tictactoeWaitingForStart": "Tic-Tac-Toe: a aguardar início",
"acceptsShareLinks": "Aceita links partilhados",
"supportsRawHex": "Suporta hex bruto",
"clipboardfriendly": "Compatível com a área de transferência",
"captured": "Capturado",
"size": "Tamanho",
"noCustomChannelsToClear": "Sem canais personalizados para limpar.",
"noDeviceContactsToClear": "Sem contactos do dispositivo para limpar."
}

View File

@@ -563,5 +563,252 @@
"contactFailedToClearRoute": "Не удалось очистить маршрут: {error}",
"contactRouteCleared": "Маршрут очищен",
"contactRouteSet": "Маршрут задан: {route}",
"contactFailedToSetRoute": "Не удалось задать маршрут: {error}"
"contactFailedToSetRoute": "Не удалось задать маршрут: {error}",
"rssi": "RSSI",
"snr": "SNR",
"ackTimeout": "Таймаут ACK",
"opcode": "Опкод",
"payload": "Полезная нагрузка",
"hops": "Хопы",
"hashSize": "Размер хеша",
"pathBytes": "Байты пути",
"selectedPath": "Выбранный путь",
"estimatedTx": "Ожидаемая передача",
"senderToReceipt": "От отправителя до получения",
"receivedCopies": "Полученные копии",
"retryCause": "Причина повтора",
"retryMode": "Режим повтора",
"retryResult": "Результат повтора",
"lastRetry": "Последний повтор",
"rxPackets": "RX-пакеты",
"mesh": "Mesh",
"rate": "Скорость",
"window": "Окно",
"posttxDelay": "Задержка после передачи",
"bandpass": "Полосовой",
"bandpassFilterVoice": "Полосовой фильтр голоса",
"frequency": "Частота",
"australia": "Австралия",
"australiaNarrow": "Австралия (Узкий)",
"australiaQld": "Австралия: QLD",
"australiaSaWa": "Австралия: SA, WA",
"newZealand": "Новая Зеландия",
"newZealandNarrow": "Новая Зеландия (Узкий)",
"switzerland": "Швейцария",
"portugal433": "Португалия 433",
"portugal868": "Португалия 868",
"czechRepublicNarrow": "Чехия (Узкий)",
"eu433mhzLongRange": "ЕС 433МГц (Дальний)",
"euukDeprecated": "ЕС/Великобритания (Устарело)",
"euukNarrow": "ЕС/Великобритания (Узкий)",
"usacanadaRecommended": "США/Канада (Рекомендуется)",
"vietnamDeprecated": "Вьетнам (Устарело)",
"vietnamNarrow": "Вьетнам (Узкий)",
"active": "Активно",
"addContact": "Добавить контакт",
"all": "Все",
"autoResolve": "Автоматическое разрешение",
"clearAllLabel": "Очистить все",
"clearRelays": "Очистить реле",
"clearFilters": "Очистить фильтры",
"clearRoute": "Очистить маршрут",
"clearMessages": "Очистить сообщения",
"clearScale": "Очистить масштаб",
"clearDiscoveries": "Очистить обнаружения",
"clearOnlineTraceDatabase": "Очистить базу трассировок",
"clearAllChannels": "Очистить все каналы",
"clearAllContacts": "Очистить все контакты",
"clearChannels": "Очистить каналы",
"clearContacts": "Очистить контакты",
"clearPathOnMaxRetry": "Очистить путь при макс. повторе",
"create": "Создать",
"custom": "Пользовательский",
"defaultValue": "По умолчанию",
"duplicate": "Дублировать",
"editName": "Редактировать имя",
"open": "Открыть",
"paste": "Вставить",
"preview": "Предпросмотр",
"remove": "Удалить",
"rename": "Переименовать",
"resolveAll": "Разрешить все",
"send": "Отправить",
"sendAnyway": "Отправить все равно",
"share": "Поделиться",
"shareContact": "Поделиться контактом",
"trace": "Трассировка",
"use": "Использовать",
"useSelectedFrequency": "Использовать выбранную частоту",
"discovery": "Обнаружение",
"discoverRepeaters": "Обнаружить повторители",
"discoverSensors": "Обнаружить датчики",
"repeaterDiscoverySent": "Обнаружение повторителей отправлено",
"sensorDiscoverySent": "Обнаружение датчиков отправлено",
"clearedPendingDiscoveries": "Ожидающие обнаружения очищены.",
"autoDiscovery": "Автоматическое обнаружение",
"enableAutomaticAdding": "Включить автоматическое добавление",
"autoaddRepeaters": "Автодобавление повторителей",
"autoaddRoomServers": "Автодобавление серверов комнат",
"autoaddSensors": "Автодобавление датчиков",
"autoaddUsers": "Автодобавление пользователей",
"overwriteOldestWhenFull": "Перезаписать старейшие при заполнении",
"storage": "Хранилище",
"dangerZone": "Опасная зона",
"profiles": "Профили",
"favourites": "Избранное",
"sensors": "Датчики",
"others": "Другие",
"gpsModule": "Модуль GPS",
"liveTraffic": "Живой трафик",
"repeatersMap": "Карта повторителей",
"spectrumScan": "Сканирование спектра",
"blePacketLogs": "Журналы BLE-пакетов",
"onlineTraceDatabase": "База трассировок",
"routePathByteSize": "Размер пути в байтах",
"messageNotifications": "Уведомления о сообщениях",
"sarAlerts": "SAR-оповещения",
"discoveryNotifications": "Уведомления об обнаружении",
"updateNotifications": "Уведомления об обновлениях",
"muteWhileAppIsOpen": "Без звука при открытом приложении",
"disableContacts": "Отключить контакты",
"enableSensorsTab": "Включить вкладку Датчики",
"enableProfiles": "Включить профили",
"autoRouteRotation": "Автоматическая ротация маршрута",
"nearestRepeaterFallback": "Ближайший повторитель как резерв",
"deleteAllStoredMessageHistory": "Удалить всю историю сообщений",
"messageFontSize": "Размер шрифта сообщений",
"rotateMapWithHeading": "Вращать карту по направлению",
"showMapDebugInfo": "Показать отладочную информацию карты",
"openMapInFullscreen": "Открыть карту на весь экран",
"showSarMarkersLabel": "Показать SAR-маркеры",
"displaySarMarkersOnTheMainMap": "Отображать SAR-маркеры на основной карте",
"showAllContactTrailsLabel": "Показать все следы контактов",
"hideRepeatersOnMap": "Скрыть повторители на карте",
"setMapScale": "Установить масштаб карты",
"customMapScaleSaved": "Пользовательский масштаб карты сохранён",
"voiceBitrate": "Битрейт голоса",
"voiceCompressor": "Компрессор голоса",
"balancesQuietAndLoudSpeechLevels": "Выравнивает тихую и громкую речь",
"voiceLimiter": "Лимитер голоса",
"preventsClippingPeaksBeforeEncoding": "Предотвращает обрезку пиков перед кодированием",
"micAutoGain": "Автоусиление микрофона",
"letsTheRecorderAdjustInputLevel": "Позволяет рекордеру регулировать уровень входа",
"echoCancellation": "Подавление эха",
"noiseSuppression": "Подавление шума",
"trimSilenceInVoiceMessages": "Обрезать тишину в голосовых сообщениях",
"compressor": "Компрессор",
"limiter": "Лимитер",
"autoGain": "Автоусиление",
"echoCancel": "Эхо",
"noiseSuppress": "Шум",
"silenceTrim": "Тишина",
"maxImageSize": "Максимальный размер изображения",
"imageCompression": "Сжатие изображения",
"grayscale": "Оттенки серого",
"ultraMode": "Режим ультра",
"fastPrivateGpsUpdates": "Быстрые приватные GPS-обновления",
"movementThreshold": "Порог движения",
"fastGpsMovementThreshold": "Порог движения быстрого GPS",
"fastGpsActiveuseInterval": "Интервал активного использования быстрого GPS",
"activeuseUpdateInterval": "Интервал обновления при активном использовании",
"repeatNearbyTraffic": "Повторять ближний трафик",
"relayThroughRepeatersAcrossTheMesh": "Ретранслировать через повторители по сети",
"nearbyOnlyWithoutRepeaterFlooding": "Только рядом, без flood повторителей",
"multihop": "Многохоповый",
"createProfile": "Создать профиль",
"renameProfile": "Переименовать профиль",
"newProfile": "Новый профиль",
"manageProfiles": "Управление профилями",
"enableProfilesToStartManagingThem": "Включите профили, чтобы начать управлять ими.",
"openMessage": "Открыть сообщение",
"jumpToTheRelatedSarMessage": "Перейти к связанному SAR-сообщению",
"removeSarMarker": "Удалить SAR-маркер",
"pleaseSelectADestinationToSendSarMarker": "Выберите назначение для отправки SAR-маркера",
"sarMarkerBroadcastToPublicChannel": "SAR-маркер отправлен в публичный канал",
"sarMarkerSentToRoom": "SAR-маркер отправлен в комнату",
"loadFromGallery": "Загрузить из галереи",
"replaceImage": "Заменить изображение",
"selectFromGallery": "Выбрать из галереи",
"team": "Команда",
"found": "Найдено",
"staging": "Место сбора",
"object": "Объект",
"quiet": "Тихо",
"moderate": "Умеренно",
"busy": "Занято",
"spectrumScanReturnedNoCandidateFrequencies": "Сканирование спектра не нашло частот-кандидатов",
"searchMessages": "Поиск сообщений",
"sendImageFromGallery": "Отправить изображение из галереи",
"takePhoto": "Сделать фото",
"dmOnly": "Только личные сообщения",
"allMessages": "Все сообщения",
"sendToPublicChannel": "Отправить в публичный канал?",
"selectMarkerTypeAndDestination": "Выберите тип маркера и назначение",
"noDestinationsAvailableLabel": "Нет доступных назначений",
"image": "Изображение",
"format": "Формат",
"dimensions": "Размеры",
"segments": "Сегменты",
"transfers": "Передачи",
"downloadedBy": "Загружено",
"saveDiscoverySettings": "Сохранить настройки обнаружения",
"savePublicInfo": "Сохранить публичную информацию",
"saveRadioSettings": "Сохранить настройки радио",
"savePath": "Сохранить путь",
"wipeDeviceData": "Стереть данные устройства",
"wipeDevice": "Стереть устройство",
"destructiveDeviceActions": "Деструктивные действия устройства.",
"chooseAPresetOrFinetuneCustomRadioSettings": "Выберите пресет или настройте радио вручную.",
"chooseTheNameAndLocationThisDeviceShares": "Выберите имя и местоположение, которыми делится устройство.",
"availableSpaceOnThisDevice": "Доступное место на этом устройстве.",
"used": "Использовано",
"total": "Всего",
"renameValue": "Переименовать значение",
"customizeFields": "Настроить поля",
"livePreview": "Предпросмотр в реальном времени",
"refreshSchedule": "Расписание обновления",
"noResponse": "Нет ответа",
"refreshing": "Обновление",
"unavailable": "Недоступно",
"pickARelayOrNodeToWatchInSensors": "Выберите реле или узел для наблюдения.",
"publicKeyLabel": "Публичный ключ",
"alreadyInContacts": "Уже в контактах",
"connectToADeviceBeforeAddingContacts": "Подключитесь к устройству перед добавлением контактов",
"fromContacts": "Из контактов",
"onlineOnly": "Только онлайн",
"inBoth": "В обоих",
"source": "Источник",
"manualRouteEdit": "Ручное редактирование маршрута",
"observedMeshRoute": "Наблюдаемый mesh-маршрут",
"allMessagesCleared": "Все сообщения очищены",
"onlineTraceDatabaseCleared": "База трассировок очищена",
"packetLogsCleared": "Журналы пакетов очищены",
"hexDataCopiedToClipboard": "Hex-данные скопированы в буфер",
"developerModeEnabled": "Режим разработчика включён",
"developerModeDisabled": "Режим разработчика отключён",
"clipboardIsEmpty": "Буфер обмена пуст",
"contactImported": "Контакт импортирован",
"contactLinkCopiedToClipboard": "Ссылка на контакт скопирована в буфер",
"failedToExportContact": "Не удалось экспортировать контакт",
"noLogsToExport": "Нет журналов для экспорта",
"exportAsCsv": "Экспортировать как CSV",
"exportAsText": "Экспортировать как текст",
"receivedRfc3339": "Получено (RFC3339)",
"buildTime": "Время сборки",
"downloadUrlNotAvailable": "URL загрузки недоступен",
"cannotOpenDownloadUrl": "Не удаётся открыть URL загрузки",
"updateCheckIsOnlyAvailableOnAndroid": "Проверка обновлений доступна только на Android",
"youAreRunningTheLatestVersion": "Вы используете последнюю версию",
"updateAvailableButDownloadUrlNotFound": "Обновление доступно, но URL загрузки не найден",
"startTictactoe": "Начать Tic-Tac-Toe",
"tictactoeUnavailable": "Tic-Tac-Toe недоступно",
"tictactoeOpponentUnknown": "Tic-Tac-Toe: противник неизвестен",
"tictactoeWaitingForStart": "Tic-Tac-Toe: ожидание начала",
"acceptsShareLinks": "Принимает общие ссылки",
"supportsRawHex": "Поддерживает raw hex",
"clipboardfriendly": "Удобно для буфера",
"captured": "Захвачено",
"size": "Размер",
"noCustomChannelsToClear": "Нет пользовательских каналов для очистки.",
"noDeviceContactsToClear": "Нет контактов устройства для очистки."
}

View File

@@ -511,8 +511,7 @@
"rawDump": "Surovi izpis",
"cannotRetryMissingRecipient": "Ponovnega pošiljanja ni mogoče: informacije o prejemniku manjkajo",
"voiceUnavailable": "Glas trenutno ni na voljo",
"requestingVoice": "Zahteva za glasom"
,
"requestingVoice": "Zahteva za glasom",
"device": "naprava",
"change": "Spremeni",
"wizardOverviewDescription": "Ta aplikacija združuje sporočanje MeshCore, terenske SAR posodobitve, zemljevide in orodja za napravo na enem mestu.",
@@ -564,5 +563,252 @@
"contactFailedToClearRoute": "Brisanje poti ni uspelo: {error}",
"contactRouteCleared": "Pot izbrisana",
"contactRouteSet": "Pot nastavljena: {route}",
"contactFailedToSetRoute": "Nastavitev poti ni uspela: {error}"
"contactFailedToSetRoute": "Nastavitev poti ni uspela: {error}",
"rssi": "RSSI",
"snr": "SNR",
"ackTimeout": "Časovna omejitev ACK",
"opcode": "Opkoda",
"payload": "Vsebina",
"hops": "Skoki",
"hashSize": "Velikost zgoščevalne vrednosti",
"pathBytes": "Bajti poti",
"selectedPath": "Izbrana pot",
"estimatedTx": "Ocenjeni čas oddaje",
"senderToReceipt": "Od pošiljatelja do prejema",
"receivedCopies": "Prejete kopije",
"retryCause": "Razlog ponovitve",
"retryMode": "Način ponovitve",
"retryResult": "Rezultat ponovitve",
"lastRetry": "Zadnja ponovitev",
"rxPackets": "RX paketi",
"mesh": "Mesh",
"rate": "Hitrost",
"window": "Okno",
"posttxDelay": "Zakasnitev po oddaji",
"bandpass": "Pasovno sito",
"bandpassFilterVoice": "Pasovno sito za glas",
"frequency": "Frekvenca",
"australia": "Avstralija",
"australiaNarrow": "Avstralija (ozko)",
"australiaQld": "Avstralija: QLD",
"australiaSaWa": "Avstralija: SA, WA",
"newZealand": "Nova Zelandija",
"newZealandNarrow": "Nova Zelandija (ozko)",
"switzerland": "Švica",
"portugal433": "Portugalska 433",
"portugal868": "Portugalska 868",
"czechRepublicNarrow": "Češka (ozko)",
"eu433mhzLongRange": "EU 433MHz (dolg doseg)",
"euukDeprecated": "EU/UK (zastarelo)",
"euukNarrow": "EU/UK (ozko)",
"usacanadaRecommended": "ZDA/Kanada (priporočeno)",
"vietnamDeprecated": "Vietnam (zastarelo)",
"vietnamNarrow": "Vietnam (ozko)",
"active": "Aktivno",
"addContact": "Dodaj stik",
"all": "Vse",
"autoResolve": "Samodejno razreši",
"clearAllLabel": "Počisti vse",
"clearRelays": "Počisti posrednike",
"clearFilters": "Počisti filtre",
"clearRoute": "Počisti pot",
"clearMessages": "Počisti sporočila",
"clearScale": "Počisti merilo",
"clearDiscoveries": "Počisti odkritja",
"clearOnlineTraceDatabase": "Počisti bazo sledi",
"clearAllChannels": "Počisti vse kanale",
"clearAllContacts": "Počisti vse stike",
"clearChannels": "Počisti kanale",
"clearContacts": "Počisti stike",
"clearPathOnMaxRetry": "Počisti pot ob maks. ponovitvi",
"create": "Ustvari",
"custom": "Po meri",
"defaultValue": "Privzeto",
"duplicate": "Podvoji",
"editName": "Uredi ime",
"open": "Odpri",
"paste": "Prilepi",
"preview": "Predogled",
"remove": "Odstrani",
"rename": "Preimenuj",
"resolveAll": "Razreši vse",
"send": "Pošlji",
"sendAnyway": "Vseeno pošlji",
"share": "Deli",
"shareContact": "Deli stik",
"trace": "Sledenje",
"use": "Uporabi",
"useSelectedFrequency": "Uporabi izbrano frekvenco",
"discovery": "Odkrivanje",
"discoverRepeaters": "Odkrij posrednike",
"discoverSensors": "Odkrij senzorje",
"repeaterDiscoverySent": "Odkrivanje posrednikov poslano",
"sensorDiscoverySent": "Odkrivanje senzorjev poslano",
"clearedPendingDiscoveries": "Čakalna odkritja počiščena.",
"autoDiscovery": "Samodejno odkrivanje",
"enableAutomaticAdding": "Omogoči samodejno dodajanje",
"autoaddRepeaters": "Samodejno dodaj posrednike",
"autoaddRoomServers": "Samodejno dodaj strežnike sob",
"autoaddSensors": "Samodejno dodaj senzorje",
"autoaddUsers": "Samodejno dodaj uporabnike",
"overwriteOldestWhenFull": "Prepiši najstarejše ob polnem",
"storage": "Shramba",
"dangerZone": "Nevarno območje",
"profiles": "Profili",
"favourites": "Priljubljeni",
"sensors": "Senzorji",
"others": "Ostali",
"gpsModule": "GPS modul",
"liveTraffic": "Promet v živo",
"repeatersMap": "Zemljevid posrednikov",
"spectrumScan": "Spektralno skeniranje",
"blePacketLogs": "Dnevniki BLE paketov",
"onlineTraceDatabase": "Baza sledi",
"routePathByteSize": "Velikost poti v bajtih",
"messageNotifications": "Obvestila o sporočilih",
"sarAlerts": "SAR opozorila",
"discoveryNotifications": "Obvestila o odkritjih",
"updateNotifications": "Obvestila o posodobitvah",
"muteWhileAppIsOpen": "Utišaj ko je aplikacija odprta",
"disableContacts": "Onemogoči stike",
"enableSensorsTab": "Omogoči zavihek Senzorji",
"enableProfiles": "Omogoči profile",
"autoRouteRotation": "Samodejno kroženje poti",
"nearestRepeaterFallback": "Najbližji posrednik kot rezerva",
"deleteAllStoredMessageHistory": "Izbriši vso shranjeno zgodovino sporočil",
"messageFontSize": "Velikost pisave sporočil",
"rotateMapWithHeading": "Vrti zemljevid s smerjo",
"showMapDebugInfo": "Prikaži razhroščevalne info zemljevida",
"openMapInFullscreen": "Odpri zemljevid na cel zaslon",
"showSarMarkersLabel": "Prikaži SAR oznake",
"displaySarMarkersOnTheMainMap": "Prikaži SAR oznake na glavnem zemljevidu",
"showAllContactTrailsLabel": "Prikaži vse sledi stikov",
"hideRepeatersOnMap": "Skrij posrednike na zemljevidu",
"setMapScale": "Nastavi merilo zemljevida",
"customMapScaleSaved": "Merilo zemljevida shranjeno",
"voiceBitrate": "Bitna hitrost glasu",
"voiceCompressor": "Kompresor glasu",
"balancesQuietAndLoudSpeechLevels": "Izravnava tihe in glasne govorne ravni",
"voiceLimiter": "Omejevalnik glasu",
"preventsClippingPeaksBeforeEncoding": "Preprečuje rezanje vrhov pred kodiranjem",
"micAutoGain": "Samodejna ojačitev mikrofona",
"letsTheRecorderAdjustInputLevel": "Omogoči snemalniku prilagoditev vhodne ravni",
"echoCancellation": "Odstranjevanje odmeva",
"noiseSuppression": "Dušenje šuma",
"trimSilenceInVoiceMessages": "Obreži tišino v glasovnih sporočilih",
"compressor": "Kompresor",
"limiter": "Omejevalnik",
"autoGain": "Samodejna ojačitev",
"echoCancel": "Odmev",
"noiseSuppress": "Šum",
"silenceTrim": "Tišina",
"maxImageSize": "Največja velikost slike",
"imageCompression": "Stiskanje slik",
"grayscale": "Sivine",
"ultraMode": "Ultra način",
"fastPrivateGpsUpdates": "Hitri zasebni GPS podatki",
"movementThreshold": "Prag gibanja",
"fastGpsMovementThreshold": "Prag gibanja za hitri GPS",
"fastGpsActiveuseInterval": "Interval uporabe hitrega GPS-a",
"activeuseUpdateInterval": "Interval posodobitve pri aktivni uporabi",
"repeatNearbyTraffic": "Ponavljaj bližnji promet",
"relayThroughRepeatersAcrossTheMesh": "Posreduj skozi posrednike po mreži",
"nearbyOnlyWithoutRepeaterFlooding": "Samo bližnji, brez poplavljanja posrednikov",
"multihop": "Večskočno",
"createProfile": "Ustvari profil",
"renameProfile": "Preimenuj profil",
"newProfile": "Nov profil",
"manageProfiles": "Upravljaj profile",
"enableProfilesToStartManagingThem": "Omogočite profile, da jih začnete upravljati.",
"openMessage": "Odpri sporočilo",
"jumpToTheRelatedSarMessage": "Skoči na povezano SAR sporočilo",
"removeSarMarker": "Odstrani SAR oznako",
"pleaseSelectADestinationToSendSarMarker": "Izberite cilj za pošiljanje SAR oznake",
"sarMarkerBroadcastToPublicChannel": "SAR oznaka poslana na javni kanal",
"sarMarkerSentToRoom": "SAR oznaka poslana v sobo",
"loadFromGallery": "Naloži iz galerije",
"replaceImage": "Zamenjaj sliko",
"selectFromGallery": "Izberi iz galerije",
"team": "Ekipa",
"found": "Najdeno",
"staging": "Zbirno mesto",
"object": "Predmet",
"quiet": "Tiho",
"moderate": "Zmerno",
"busy": "Zasedeno",
"spectrumScanReturnedNoCandidateFrequencies": "Spektralno skeniranje ni našlo primernih frekvenc",
"searchMessages": "Iskanje sporočil",
"sendImageFromGallery": "Pošlji sliko iz galerije",
"takePhoto": "Posnemi fotografijo",
"dmOnly": "Samo neposredno",
"allMessages": "Vsa sporočila",
"sendToPublicChannel": "Pošlji na javni kanal?",
"selectMarkerTypeAndDestination": "Izberite vrsto oznake in cilj",
"noDestinationsAvailableLabel": "Ni razpoložljivih ciljev",
"image": "Slika",
"format": "Format",
"dimensions": "Dimenzije",
"segments": "Segmenti",
"transfers": "Prenosi",
"downloadedBy": "Preneseno od",
"saveDiscoverySettings": "Shrani nastavitve odkrivanja",
"savePublicInfo": "Shrani javne podatke",
"saveRadioSettings": "Shrani radijske nastavitve",
"savePath": "Shrani pot",
"wipeDeviceData": "Izbriši podatke naprave",
"wipeDevice": "Izbriši napravo",
"destructiveDeviceActions": "Destruktivna dejanja na napravi.",
"chooseAPresetOrFinetuneCustomRadioSettings": "Izberite prednastavitev ali natančno prilagodite radijske nastavitve.",
"chooseTheNameAndLocationThisDeviceShares": "Izberite ime in lokacijo, ki ju naprava deli.",
"availableSpaceOnThisDevice": "Razpoložljiv prostor na tej napravi.",
"used": "Uporabljeno",
"total": "Skupaj",
"renameValue": "Preimenuj vrednost",
"customizeFields": "Prilagodi polja",
"livePreview": "Predogled v živo",
"refreshSchedule": "Interval osvežitve",
"noResponse": "Ni odgovora",
"refreshing": "Osvežujem",
"unavailable": "Nedostopno",
"pickARelayOrNodeToWatchInSensors": "Izberite posrednika ali vozlišče za opazovanje.",
"publicKeyLabel": "Javni ključ",
"alreadyInContacts": "Že med stiki",
"connectToADeviceBeforeAddingContacts": "Povežite se z napravo pred dodajanjem stikov",
"fromContacts": "Iz stikov",
"onlineOnly": "Samo povezani",
"inBoth": "V obeh",
"source": "Vir",
"manualRouteEdit": "Ročno urejanje poti",
"observedMeshRoute": "Opazovana mrežna pot",
"allMessagesCleared": "Vsa sporočila počiščena",
"onlineTraceDatabaseCleared": "Baza sledi počiščena",
"packetLogsCleared": "Dnevniki paketov počiščeni",
"hexDataCopiedToClipboard": "Hex podatki kopirani v odložišče",
"developerModeEnabled": "Razvojni način omogočen",
"developerModeDisabled": "Razvojni način onemogočen",
"clipboardIsEmpty": "Odložišče je prazno",
"contactImported": "Stik uvožen",
"contactLinkCopiedToClipboard": "Povezava na stik kopirana v odložišče",
"failedToExportContact": "Izvoz stika ni uspel",
"noLogsToExport": "Ni dnevnikov za izvoz",
"exportAsCsv": "Izvozi kot CSV",
"exportAsText": "Izvozi kot besedilo",
"receivedRfc3339": "Prejeto (RFC3339)",
"buildTime": "Čas gradnje",
"downloadUrlNotAvailable": "URL za prenos ni na voljo",
"cannotOpenDownloadUrl": "URL za prenos ni mogoče odpreti",
"updateCheckIsOnlyAvailableOnAndroid": "Preverjanje posodobitev je na voljo le na Androidu",
"youAreRunningTheLatestVersion": "Uporabljate najnovejšo različico",
"updateAvailableButDownloadUrlNotFound": "Posodobitev na voljo, a URL za prenos ni najden",
"startTictactoe": "Začni Tic-Tac-Toe",
"tictactoeUnavailable": "Tic-Tac-Toe ni na voljo",
"tictactoeOpponentUnknown": "Tic-Tac-Toe: nasprotnik neznan",
"tictactoeWaitingForStart": "Tic-Tac-Toe: čakanje na začetek",
"acceptsShareLinks": "Sprejema deljene povezave",
"supportsRawHex": "Podpira surove hex",
"clipboardfriendly": "Primerno za odložišče",
"captured": "Zajeto",
"size": "Velikost",
"noCustomChannelsToClear": "Ni prilagojenih kanalov za brisanje.",
"noDeviceContactsToClear": "Ni stikov naprave za brisanje."
}

View File

@@ -2328,5 +2328,252 @@
"contactFailedToClearRoute": "Rota temizlenemedi: {error}",
"contactRouteCleared": "Rota temizlendi",
"contactRouteSet": "Rota ayarlandı: {route}",
"contactFailedToSetRoute": "Rota ayarlanamadı: {error}"
"contactFailedToSetRoute": "Rota ayarlanamadı: {error}",
"rssi": "RSSI",
"snr": "SNR",
"ackTimeout": "ACK zaman aşımı",
"opcode": "Opcode",
"payload": "Yük",
"hops": "Atlama",
"hashSize": "Hash boyutu",
"pathBytes": "Yol baytları",
"selectedPath": "Seçilen yol",
"estimatedTx": "Tahmini gönderim",
"senderToReceipt": "Gönderenden alındıya",
"receivedCopies": "Alınan kopyalar",
"retryCause": "Yeniden deneme nedeni",
"retryMode": "Yeniden deneme modu",
"retryResult": "Yeniden deneme sonucu",
"lastRetry": "Son deneme",
"rxPackets": "RX paketleri",
"mesh": "Mesh",
"rate": "Hız",
"window": "Pencere",
"posttxDelay": "Gönderim sonrası gecikme",
"bandpass": "Bant geçiren",
"bandpassFilterVoice": "Bant geçiren filtre ses",
"frequency": "Frekans",
"australia": "Avustralya",
"australiaNarrow": "Avustralya (Dar)",
"australiaQld": "Avustralya: QLD",
"australiaSaWa": "Avustralya: SA, WA",
"newZealand": "Yeni Zelanda",
"newZealandNarrow": "Yeni Zelanda (Dar)",
"switzerland": "İsviçre",
"portugal433": "Portekiz 433",
"portugal868": "Portekiz 868",
"czechRepublicNarrow": "Çek Cumhuriyeti (Dar)",
"eu433mhzLongRange": "AB 433MHz (Uzun Menzil)",
"euukDeprecated": "AB/BK (Kullanımdan kalktı)",
"euukNarrow": "AB/BK (Dar)",
"usacanadaRecommended": "ABD/Kanada (Önerilen)",
"vietnamDeprecated": "Vietnam (Kullanımdan kalktı)",
"vietnamNarrow": "Vietnam (Dar)",
"active": "Aktif",
"addContact": "Kişi ekle",
"all": "Tümü",
"autoResolve": "Otomatik çöz",
"clearAllLabel": "Tümünü temizle",
"clearRelays": "Röleleri temizle",
"clearFilters": "Filtreleri temizle",
"clearRoute": "Rotayı temizle",
"clearMessages": "Mesajları temizle",
"clearScale": "Ölçeği temizle",
"clearDiscoveries": "Keşifleri temizle",
"clearOnlineTraceDatabase": "Çevrimiçi iz veritabanını temizle",
"clearAllChannels": "Tüm kanalları temizle",
"clearAllContacts": "Tüm kişileri temizle",
"clearChannels": "Kanalları temizle",
"clearContacts": "Kişileri temizle",
"clearPathOnMaxRetry": "Maks denemede yolu temizle",
"create": "Oluştur",
"custom": "Özel",
"defaultValue": "Varsayılan",
"duplicate": "Çoğalt",
"editName": "Adı düzenle",
"open": "Aç",
"paste": "Yapıştır",
"preview": "Önizleme",
"remove": "Kaldır",
"rename": "Yeniden adlandır",
"resolveAll": "Tümünü çöz",
"send": "Gönder",
"sendAnyway": "Yine de gönder",
"share": "Paylaş",
"shareContact": "Kişiyi paylaş",
"trace": "İz",
"use": "Kullan",
"useSelectedFrequency": "Seçilen frekansı kullan",
"discovery": "Keşif",
"discoverRepeaters": "Tekrarlayıcıları keşfet",
"discoverSensors": "Sensörleri keşfet",
"repeaterDiscoverySent": "Tekrarlayıcı keşfi gönderildi",
"sensorDiscoverySent": "Sensör keşfi gönderildi",
"clearedPendingDiscoveries": "Bekleyen keşifler temizlendi.",
"autoDiscovery": "Otomatik keşif",
"enableAutomaticAdding": "Otomatik eklemeyi etkinleştir",
"autoaddRepeaters": "Tekrarlayıcıları otomatik ekle",
"autoaddRoomServers": "Oda sunucularını otomatik ekle",
"autoaddSensors": "Sensörleri otomatik ekle",
"autoaddUsers": "Kullanıcıları otomatik ekle",
"overwriteOldestWhenFull": "Dolduğunda en eskiyi üzerine yaz",
"storage": "Depolama",
"dangerZone": "Tehlikeli bölge",
"profiles": "Profiller",
"favourites": "Favoriler",
"sensors": "Sensörler",
"others": "Diğerleri",
"gpsModule": "GPS Modülü",
"liveTraffic": "Canlı trafik",
"repeatersMap": "Tekrarlayıcılar haritası",
"spectrumScan": "Spektrum taraması",
"blePacketLogs": "BLE paket günlükleri",
"onlineTraceDatabase": "Çevrimiçi iz veritabanı",
"routePathByteSize": "Yol bayt boyutu",
"messageNotifications": "Mesaj bildirimleri",
"sarAlerts": "SAR uyarıları",
"discoveryNotifications": "Keşif bildirimleri",
"updateNotifications": "Güncelleme bildirimleri",
"muteWhileAppIsOpen": "Uygulama açıkken sessize al",
"disableContacts": "Kişileri devre dışı bırak",
"enableSensorsTab": "Sensörler sekmesini etkinleştir",
"enableProfiles": "Profilleri etkinleştir",
"autoRouteRotation": "Otomatik rota rotasyonu",
"nearestRepeaterFallback": "En yakın tekrarlayıcıya geri dönüş",
"deleteAllStoredMessageHistory": "Tüm mesaj geçmişini sil",
"messageFontSize": "Mesaj yazı tipi boyutu",
"rotateMapWithHeading": "Haritayı yön ile döndür",
"showMapDebugInfo": "Harita hata ayıklama bilgisini göster",
"openMapInFullscreen": "Haritayı tam ekranda aç",
"showSarMarkersLabel": "SAR işaretçilerini göster",
"displaySarMarkersOnTheMainMap": "SAR işaretçilerini ana haritada göster",
"showAllContactTrailsLabel": "Tüm kişi izlerini göster",
"hideRepeatersOnMap": "Haritada tekrarlayıcıları gizle",
"setMapScale": "Harita ölçeğini ayarla",
"customMapScaleSaved": "Özel harita ölçeği kaydedildi",
"voiceBitrate": "Ses bit hızı",
"voiceCompressor": "Ses sıkıştırıcı",
"balancesQuietAndLoudSpeechLevels": "Sessiz ve yüksek konuşma seviyelerini dengeler",
"voiceLimiter": "Ses sınırlayıcı",
"preventsClippingPeaksBeforeEncoding": "Kodlama öncesi tepe kırpmasını önler",
"micAutoGain": "Mikrofon otomatik kazancı",
"letsTheRecorderAdjustInputLevel": "Kaydedicinin giriş seviyesini ayarlamasına izin verir",
"echoCancellation": "Yankı iptali",
"noiseSuppression": "Gürültü bastırma",
"trimSilenceInVoiceMessages": "Sesli mesajlarda sessizliği kırp",
"compressor": "Sıkıştırıcı",
"limiter": "Sınırlayıcı",
"autoGain": "Otomatik kazanç",
"echoCancel": "Yankı",
"noiseSuppress": "Gürültü",
"silenceTrim": "Sessizlik",
"maxImageSize": "Maksimum resim boyutu",
"imageCompression": "Resim sıkıştırma",
"grayscale": "Gri tonlama",
"ultraMode": "Ultra mod",
"fastPrivateGpsUpdates": "Hızlı özel GPS güncellemeleri",
"movementThreshold": "Hareket eşiği",
"fastGpsMovementThreshold": "Hızlı GPS hareket eşiği",
"fastGpsActiveuseInterval": "Hızlı GPS aktif kullanım aralığı",
"activeuseUpdateInterval": "Aktif kullanım güncelleme aralığı",
"repeatNearbyTraffic": "Yakın trafiği tekrarla",
"relayThroughRepeatersAcrossTheMesh": "Ağ üzerindeki tekrarlayıcılar aracılığıyla ilet",
"nearbyOnlyWithoutRepeaterFlooding": "Yalnızca yakın, tekrarlayıcı taşkını olmadan",
"multihop": "Çok atlamalı",
"createProfile": "Profil oluştur",
"renameProfile": "Profili yeniden adlandır",
"newProfile": "Yeni profil",
"manageProfiles": "Profilleri yönet",
"enableProfilesToStartManagingThem": "Profilleri yönetmeye başlamak için etkinleştirin.",
"openMessage": "Mesajı aç",
"jumpToTheRelatedSarMessage": "İlgili SAR mesajına git",
"removeSarMarker": "SAR işaretçisini kaldır",
"pleaseSelectADestinationToSendSarMarker": "SAR işaretçisi göndermek için bir hedef seçin",
"sarMarkerBroadcastToPublicChannel": "SAR işaretçisi genel kanala yayınlandı",
"sarMarkerSentToRoom": "SAR işaretçisi odaya gönderildi",
"loadFromGallery": "Galeriden yükle",
"replaceImage": "Resmi değiştir",
"selectFromGallery": "Galeriden seç",
"team": "Takım",
"found": "Bulundu",
"staging": "Toplanma alanı",
"object": "Nesne",
"quiet": "Sessiz",
"moderate": "Orta",
"busy": "Meşgul",
"spectrumScanReturnedNoCandidateFrequencies": "Spektrum taraması aday frekans bulamadı",
"searchMessages": "Mesajlarda ara",
"sendImageFromGallery": "Galeriden resim gönder",
"takePhoto": "Fotoğraf çek",
"dmOnly": "Yalnızca DM",
"allMessages": "Tüm mesajlar",
"sendToPublicChannel": "Genel kanala gönderilsin mi?",
"selectMarkerTypeAndDestination": "İşaretçi türünü ve hedefi seçin",
"noDestinationsAvailableLabel": "Kullanılabilir hedef yok",
"image": "Resim",
"format": "Biçim",
"dimensions": "Boyutlar",
"segments": "Segmentler",
"transfers": "Transferler",
"downloadedBy": "İndiren",
"saveDiscoverySettings": "Keşif ayarlarını kaydet",
"savePublicInfo": "Genel bilgileri kaydet",
"saveRadioSettings": "Radyo ayarlarını kaydet",
"savePath": "Yolu kaydet",
"wipeDeviceData": "Cihaz verilerini sil",
"wipeDevice": "Cihazı sil",
"destructiveDeviceActions": "Yıkıcı cihaz işlemleri.",
"chooseAPresetOrFinetuneCustomRadioSettings": "Bir ön ayar seçin veya radyo ayarlarını ince ayarlayın.",
"chooseTheNameAndLocationThisDeviceShares": "Bu cihazın paylaştığı ad ve konumu seçin.",
"availableSpaceOnThisDevice": "Bu cihazda kullanılabilir alan.",
"used": "Kullanılan",
"total": "Toplam",
"renameValue": "Değeri yeniden adlandır",
"customizeFields": "Alanları özelleştir",
"livePreview": "Canlı önizleme",
"refreshSchedule": "Yenileme programı",
"noResponse": "Yanıt yok",
"refreshing": "Yenileniyor",
"unavailable": "Kullanılamaz",
"pickARelayOrNodeToWatchInSensors": "İzlemek için bir röle veya düğüm seçin.",
"publicKeyLabel": "Genel anahtar",
"alreadyInContacts": "Zaten kişilerde",
"connectToADeviceBeforeAddingContacts": "Kişi eklemeden önce bir cihaza bağlanın",
"fromContacts": "Kişilerden",
"onlineOnly": "Yalnızca çevrimiçi",
"inBoth": "Her ikisinde",
"source": "Kaynak",
"manualRouteEdit": "Manuel rota düzenle",
"observedMeshRoute": "Gözlemlenen mesh rotası",
"allMessagesCleared": "Tüm mesajlar temizlendi",
"onlineTraceDatabaseCleared": "Çevrimiçi iz veritabanı temizlendi",
"packetLogsCleared": "Paket günlükleri temizlendi",
"hexDataCopiedToClipboard": "Hex verisi panoya kopyalandı",
"developerModeEnabled": "Geliştirici modu etkinleştirildi",
"developerModeDisabled": "Geliştirici modu devre dışı bırakıldı",
"clipboardIsEmpty": "Pano boş",
"contactImported": "Kişi içe aktarıldı",
"contactLinkCopiedToClipboard": "Kişi bağlantısı panoya kopyalandı",
"failedToExportContact": "Kişi dışa aktarılamadı",
"noLogsToExport": "Dışa aktarılacak günlük yok",
"exportAsCsv": "CSV olarak dışa aktar",
"exportAsText": "Metin olarak dışa aktar",
"receivedRfc3339": "Alındı (RFC3339)",
"buildTime": "Derleme zamanı",
"downloadUrlNotAvailable": "İndirme URL'si mevcut değil",
"cannotOpenDownloadUrl": "İndirme URL'si açılamıyor",
"updateCheckIsOnlyAvailableOnAndroid": "Güncelleme kontrolü yalnızca Android'de kullanılabilir",
"youAreRunningTheLatestVersion": "En son sürümü kullanıyorsunuz",
"updateAvailableButDownloadUrlNotFound": "Güncelleme mevcut ancak indirme URL'si bulunamadı",
"startTictactoe": "Tic-Tac-Toe başlat",
"tictactoeUnavailable": "Tic-Tac-Toe kullanılamıyor",
"tictactoeOpponentUnknown": "Tic-Tac-Toe: rakip bilinmiyor",
"tictactoeWaitingForStart": "Tic-Tac-Toe: başlangıç bekleniyor",
"acceptsShareLinks": "Paylaşım bağlantılarını kabul eder",
"supportsRawHex": "Ham hex destekler",
"clipboardfriendly": "Pano dostu",
"captured": "Yakalandı",
"size": "Boyut",
"noCustomChannelsToClear": "Temizlenecek özel kanal yok.",
"noDeviceContactsToClear": "Temizlenecek cihaz kişisi yok."
}

View File

@@ -2328,5 +2328,252 @@
"contactFailedToClearRoute": "Не вдалося очистити маршрут: {error}",
"contactRouteCleared": "Маршрут очищено",
"contactRouteSet": "Маршрут задано: {route}",
"contactFailedToSetRoute": "Не вдалося задати маршрут: {error}"
"contactFailedToSetRoute": "Не вдалося задати маршрут: {error}",
"rssi": "RSSI",
"snr": "SNR",
"ackTimeout": "Тайм-аут ACK",
"opcode": "Опкод",
"payload": "Корисне навантаження",
"hops": "Хопи",
"hashSize": "Розмір хешу",
"pathBytes": "Байти шляху",
"selectedPath": "Обраний шлях",
"estimatedTx": "Очікувана передача",
"senderToReceipt": "Від відправника до отримання",
"receivedCopies": "Отримані копії",
"retryCause": "Причина повтору",
"retryMode": "Режим повтору",
"retryResult": "Результат повтору",
"lastRetry": "Остання спроба",
"rxPackets": "RX-пакети",
"mesh": "Mesh",
"rate": "Швидкість",
"window": "Вікно",
"posttxDelay": "Затримка після передачі",
"bandpass": "Смуговий",
"bandpassFilterVoice": "Смуговий фільтр голосу",
"frequency": "Частота",
"australia": "Австралія",
"australiaNarrow": "Австралія (Вузький)",
"australiaQld": "Австралія: QLD",
"australiaSaWa": "Австралія: SA, WA",
"newZealand": "Нова Зеландія",
"newZealandNarrow": "Нова Зеландія (Вузький)",
"switzerland": "Швейцарія",
"portugal433": "Португалія 433",
"portugal868": "Португалія 868",
"czechRepublicNarrow": "Чехія (Вузький)",
"eu433mhzLongRange": "ЄС 433МГц (Далекий)",
"euukDeprecated": "ЄС/Великобританія (Застаріле)",
"euukNarrow": "ЄС/Великобританія (Вузький)",
"usacanadaRecommended": "США/Канада (Рекомендовано)",
"vietnamDeprecated": "В'єтнам (Застаріле)",
"vietnamNarrow": "В'єтнам (Вузький)",
"active": "Активно",
"addContact": "Додати контакт",
"all": "Усі",
"autoResolve": "Автоматичне вирішення",
"clearAllLabel": "Очистити все",
"clearRelays": "Очистити реле",
"clearFilters": "Очистити фільтри",
"clearRoute": "Очистити маршрут",
"clearMessages": "Очистити повідомлення",
"clearScale": "Очистити масштаб",
"clearDiscoveries": "Очистити виявлення",
"clearOnlineTraceDatabase": "Очистити базу трасувань",
"clearAllChannels": "Очистити всі канали",
"clearAllContacts": "Очистити всі контакти",
"clearChannels": "Очистити канали",
"clearContacts": "Очистити контакти",
"clearPathOnMaxRetry": "Очистити шлях при макс. спробі",
"create": "Створити",
"custom": "Користувацький",
"defaultValue": "За замовчуванням",
"duplicate": "Дублювати",
"editName": "Редагувати ім'я",
"open": "Відкрити",
"paste": "Вставити",
"preview": "Попередній перегляд",
"remove": "Видалити",
"rename": "Перейменувати",
"resolveAll": "Вирішити все",
"send": "Надіслати",
"sendAnyway": "Надіслати все одно",
"share": "Поділитися",
"shareContact": "Поділитися контактом",
"trace": "Трасування",
"use": "Використати",
"useSelectedFrequency": "Використати обрану частоту",
"discovery": "Виявлення",
"discoverRepeaters": "Виявити повторювачі",
"discoverSensors": "Виявити датчики",
"repeaterDiscoverySent": "Виявлення повторювачів надіслано",
"sensorDiscoverySent": "Виявлення датчиків надіслано",
"clearedPendingDiscoveries": "Очікувані виявлення очищено.",
"autoDiscovery": "Автоматичне виявлення",
"enableAutomaticAdding": "Увімкнути автоматичне додавання",
"autoaddRepeaters": "Автододавання повторювачів",
"autoaddRoomServers": "Автододавання серверів кімнат",
"autoaddSensors": "Автододавання датчиків",
"autoaddUsers": "Автододавання користувачів",
"overwriteOldestWhenFull": "Перезаписати найстаріші при заповненні",
"storage": "Сховище",
"dangerZone": "Небезпечна зона",
"profiles": "Профілі",
"favourites": "Обране",
"sensors": "Датчики",
"others": "Інші",
"gpsModule": "Модуль GPS",
"liveTraffic": "Живий трафік",
"repeatersMap": "Карта повторювачів",
"spectrumScan": "Сканування спектру",
"blePacketLogs": "Журнали BLE-пакетів",
"onlineTraceDatabase": "База трасувань",
"routePathByteSize": "Розмір шляху в байтах",
"messageNotifications": "Сповіщення про повідомлення",
"sarAlerts": "SAR-сповіщення",
"discoveryNotifications": "Сповіщення про виявлення",
"updateNotifications": "Сповіщення про оновлення",
"muteWhileAppIsOpen": "Без звуку при відкритому додатку",
"disableContacts": "Вимкнути контакти",
"enableSensorsTab": "Увімкнути вкладку Датчики",
"enableProfiles": "Увімкнути профілі",
"autoRouteRotation": "Автоматична ротація маршруту",
"nearestRepeaterFallback": "Найближчий повторювач як резерв",
"deleteAllStoredMessageHistory": "Видалити всю історію повідомлень",
"messageFontSize": "Розмір шрифту повідомлень",
"rotateMapWithHeading": "Обертати карту за напрямком",
"showMapDebugInfo": "Показати налагоджувальну інфо карти",
"openMapInFullscreen": "Відкрити карту на повний екран",
"showSarMarkersLabel": "Показати SAR-маркери",
"displaySarMarkersOnTheMainMap": "Показувати SAR-маркери на головній карті",
"showAllContactTrailsLabel": "Показати всі сліди контактів",
"hideRepeatersOnMap": "Сховати повторювачі на карті",
"setMapScale": "Встановити масштаб карти",
"customMapScaleSaved": "Користувацький масштаб карти збережено",
"voiceBitrate": "Бітрейт голосу",
"voiceCompressor": "Компресор голосу",
"balancesQuietAndLoudSpeechLevels": "Вирівнює тихий і гучний рівні мови",
"voiceLimiter": "Лімітер голосу",
"preventsClippingPeaksBeforeEncoding": "Запобігає обрізанню піків перед кодуванням",
"micAutoGain": "Автопідсилення мікрофона",
"letsTheRecorderAdjustInputLevel": "Дозволяє рекордеру налаштувати рівень входу",
"echoCancellation": "Придушення ехо",
"noiseSuppression": "Придушення шуму",
"trimSilenceInVoiceMessages": "Обрізати тишу в голосових повідомленнях",
"compressor": "Компресор",
"limiter": "Лімітер",
"autoGain": "Автопідсилення",
"echoCancel": "Ехо",
"noiseSuppress": "Шум",
"silenceTrim": "Тиша",
"maxImageSize": "Максимальний розмір зображення",
"imageCompression": "Стиснення зображення",
"grayscale": "Відтінки сірого",
"ultraMode": "Ультра режим",
"fastPrivateGpsUpdates": "Швидкі приватні GPS-оновлення",
"movementThreshold": "Поріг руху",
"fastGpsMovementThreshold": "Поріг руху швидкого GPS",
"fastGpsActiveuseInterval": "Інтервал активного використання швидкого GPS",
"activeuseUpdateInterval": "Інтервал оновлення при активному використанні",
"repeatNearbyTraffic": "Повторювати близький трафік",
"relayThroughRepeatersAcrossTheMesh": "Ретранслювати через повторювачі по мережі",
"nearbyOnlyWithoutRepeaterFlooding": "Лише поблизу, без flood повторювачів",
"multihop": "Багатохоповий",
"createProfile": "Створити профіль",
"renameProfile": "Перейменувати профіль",
"newProfile": "Новий профіль",
"manageProfiles": "Керувати профілями",
"enableProfilesToStartManagingThem": "Увімкніть профілі, щоб почати керувати ними.",
"openMessage": "Відкрити повідомлення",
"jumpToTheRelatedSarMessage": "Перейти до пов'язаного SAR-повідомлення",
"removeSarMarker": "Видалити SAR-маркер",
"pleaseSelectADestinationToSendSarMarker": "Виберіть призначення для надсилання SAR-маркера",
"sarMarkerBroadcastToPublicChannel": "SAR-маркер надіслано на публічний канал",
"sarMarkerSentToRoom": "SAR-маркер надіслано в кімнату",
"loadFromGallery": "Завантажити з галереї",
"replaceImage": "Замінити зображення",
"selectFromGallery": "Вибрати з галереї",
"team": "Команда",
"found": "Знайдено",
"staging": "Місце збору",
"object": "Об'єкт",
"quiet": "Тихо",
"moderate": "Помірно",
"busy": "Зайнято",
"spectrumScanReturnedNoCandidateFrequencies": "Сканування спектру не знайшло частот-кандидатів",
"searchMessages": "Пошук повідомлень",
"sendImageFromGallery": "Надіслати зображення з галереї",
"takePhoto": "Зробити фото",
"dmOnly": "Лише особисті повідомлення",
"allMessages": "Усі повідомлення",
"sendToPublicChannel": "Надіслати в публічний канал?",
"selectMarkerTypeAndDestination": "Виберіть тип маркера та призначення",
"noDestinationsAvailableLabel": "Немає доступних призначень",
"image": "Зображення",
"format": "Формат",
"dimensions": "Розміри",
"segments": "Сегменти",
"transfers": "Передачі",
"downloadedBy": "Завантажено",
"saveDiscoverySettings": "Зберегти налаштування виявлення",
"savePublicInfo": "Зберегти публічну інформацію",
"saveRadioSettings": "Зберегти налаштування радіо",
"savePath": "Зберегти шлях",
"wipeDeviceData": "Стерти дані пристрою",
"wipeDevice": "Стерти пристрій",
"destructiveDeviceActions": "Деструктивні дії пристрою.",
"chooseAPresetOrFinetuneCustomRadioSettings": "Оберіть пресет або налаштуйте радіо вручну.",
"chooseTheNameAndLocationThisDeviceShares": "Оберіть ім'я та місцеположення, якими ділиться пристрій.",
"availableSpaceOnThisDevice": "Доступний простір на цьому пристрої.",
"used": "Використано",
"total": "Загалом",
"renameValue": "Перейменувати значення",
"customizeFields": "Налаштувати поля",
"livePreview": "Попередній перегляд наживо",
"refreshSchedule": "Розклад оновлення",
"noResponse": "Немає відповіді",
"refreshing": "Оновлення",
"unavailable": "Недоступно",
"pickARelayOrNodeToWatchInSensors": "Оберіть реле або вузол для спостереження.",
"publicKeyLabel": "Публічний ключ",
"alreadyInContacts": "Вже в контактах",
"connectToADeviceBeforeAddingContacts": "Підключіться до пристрою перед додаванням контактів",
"fromContacts": "З контактів",
"onlineOnly": "Лише онлайн",
"inBoth": "В обох",
"source": "Джерело",
"manualRouteEdit": "Ручне редагування маршруту",
"observedMeshRoute": "Спостережуваний mesh-маршрут",
"allMessagesCleared": "Усі повідомлення очищено",
"onlineTraceDatabaseCleared": "Базу трасувань очищено",
"packetLogsCleared": "Журнали пакетів очищено",
"hexDataCopiedToClipboard": "Hex-дані скопійовано в буфер",
"developerModeEnabled": "Режим розробника увімкнено",
"developerModeDisabled": "Режим розробника вимкнено",
"clipboardIsEmpty": "Буфер обміну порожній",
"contactImported": "Контакт імпортовано",
"contactLinkCopiedToClipboard": "Посилання на контакт скопійовано в буфер",
"failedToExportContact": "Не вдалося експортувати контакт",
"noLogsToExport": "Немає журналів для експорту",
"exportAsCsv": "Експортувати як CSV",
"exportAsText": "Експортувати як текст",
"receivedRfc3339": "Отримано (RFC3339)",
"buildTime": "Час збірки",
"downloadUrlNotAvailable": "URL завантаження недоступний",
"cannotOpenDownloadUrl": "Не вдається відкрити URL завантаження",
"updateCheckIsOnlyAvailableOnAndroid": "Перевірка оновлень доступна лише на Android",
"youAreRunningTheLatestVersion": "Ви використовуєте останню версію",
"updateAvailableButDownloadUrlNotFound": "Оновлення доступне, але URL завантаження не знайдено",
"startTictactoe": "Почати Tic-Tac-Toe",
"tictactoeUnavailable": "Tic-Tac-Toe недоступно",
"tictactoeOpponentUnknown": "Tic-Tac-Toe: суперник невідомий",
"tictactoeWaitingForStart": "Tic-Tac-Toe: очікування початку",
"acceptsShareLinks": "Приймає посилання для обміну",
"supportsRawHex": "Підтримує raw hex",
"clipboardfriendly": "Зручно для буфера",
"captured": "Захоплено",
"size": "Розмір",
"noCustomChannelsToClear": "Немає користувацьких каналів для очищення.",
"noDeviceContactsToClear": "Немає контактів пристрою для очищення."
}

View File

@@ -2228,80 +2228,55 @@
"description": "没有可发送的聊天联系人时的消息"
},
"reply": "回复",
"@reply": {
},
"@reply": {},
"technicalDetails": "技术细节",
"@technicalDetails": {
},
"@technicalDetails": {},
"messageTechnicalDetails": "消息技术细节",
"@messageTechnicalDetails": {
},
"@messageTechnicalDetails": {},
"linkQuality": "链路质量",
"@linkQuality": {
},
"@linkQuality": {},
"delivery": "投递",
"@delivery": {
},
"@delivery": {},
"status": "状态",
"@status": {
},
"@status": {},
"expectedAckTag": "预期的 ACK 标签",
"@expectedAckTag": {
},
"@expectedAckTag": {},
"roundTrip": "往返时间",
"@roundTrip": {
},
"@roundTrip": {},
"retryAttempt": "重试尝试",
"@retryAttempt": {
},
"@retryAttempt": {},
"floodFallback": "泛洪回退",
"@floodFallback": {
},
"@floodFallback": {},
"identity": "身份",
"@identity": {
},
"@identity": {},
"messageId": "消息 ID",
"@messageId": {
},
"@messageId": {},
"sender": "发送者",
"@sender": {
},
"@sender": {},
"senderKey": "发送者密钥",
"@senderKey": {
},
"@senderKey": {},
"recipient": "接收者",
"@recipient": {
},
"@recipient": {},
"recipientKey": "接收者密钥",
"@recipientKey": {
},
"@recipientKey": {},
"voice": "语音",
"@voice": {
},
"@voice": {},
"voiceId": "语音 ID",
"@voiceId": {
},
"@voiceId": {},
"envelope": "信封",
"@envelope": {
},
"@envelope": {},
"sessionProgress": "会话进度",
"@sessionProgress": {
},
"@sessionProgress": {},
"complete": "完成",
"@complete": {
},
"@complete": {},
"rawDump": "原始数据",
"@rawDump": {
},
"@rawDump": {},
"cannotRetryMissingRecipient": "无法重试:缺少接收者信息",
"@cannotRetryMissingRecipient": {
},
"@cannotRetryMissingRecipient": {},
"voiceUnavailable": "当前语音不可用",
"@voiceUnavailable": {
},
"@voiceUnavailable": {},
"requestingVoice": "正在请求语音",
"@requestingVoice": {
},
"@requestingVoice": {},
"device": "设备",
"change": "更改",
"wizardOverviewDescription": "此应用将 MeshCore 消息、SAR 现场更新、地图功能和设备工具整合到同一处。",
@@ -2353,5 +2328,252 @@
"contactFailedToClearRoute": "清除路由失败:{error}",
"contactRouteCleared": "路由已清除",
"contactRouteSet": "路由已设置:{route}",
"contactFailedToSetRoute": "设置路由失败:{error}"
"contactFailedToSetRoute": "设置路由失败:{error}",
"rssi": "RSSI",
"snr": "SNR",
"ackTimeout": "ACK 超时",
"opcode": "操作码",
"payload": "有效载荷",
"hops": "跳数",
"hashSize": "哈希大小",
"pathBytes": "路径字节",
"selectedPath": "选定路径",
"estimatedTx": "预计传输",
"senderToReceipt": "发送到接收",
"receivedCopies": "收到的副本",
"retryCause": "重试原因",
"retryMode": "重试模式",
"retryResult": "重试结果",
"lastRetry": "最后重试",
"rxPackets": "RX 数据包",
"mesh": "Mesh",
"rate": "速率",
"window": "窗口",
"posttxDelay": "发送后延迟",
"bandpass": "带通",
"bandpassFilterVoice": "带通语音滤波",
"frequency": "频率",
"australia": "澳大利亚",
"australiaNarrow": "澳大利亚(窄带)",
"australiaQld": "澳大利亚QLD",
"australiaSaWa": "澳大利亚SA, WA",
"newZealand": "新西兰",
"newZealandNarrow": "新西兰(窄带)",
"switzerland": "瑞士",
"portugal433": "葡萄牙 433",
"portugal868": "葡萄牙 868",
"czechRepublicNarrow": "捷克(窄带)",
"eu433mhzLongRange": "欧盟 433MHz远距离",
"euukDeprecated": "欧盟/英国(已弃用)",
"euukNarrow": "欧盟/英国(窄带)",
"usacanadaRecommended": "美国/加拿大(推荐)",
"vietnamDeprecated": "越南(已弃用)",
"vietnamNarrow": "越南(窄带)",
"active": "活动",
"addContact": "添加联系人",
"all": "全部",
"autoResolve": "自动解析",
"clearAllLabel": "清除全部",
"clearRelays": "清除中继",
"clearFilters": "清除过滤器",
"clearRoute": "清除路由",
"clearMessages": "清除消息",
"clearScale": "清除比例",
"clearDiscoveries": "清除发现",
"clearOnlineTraceDatabase": "清除在线追踪数据库",
"clearAllChannels": "清除所有频道",
"clearAllContacts": "清除所有联系人",
"clearChannels": "清除频道",
"clearContacts": "清除联系人",
"clearPathOnMaxRetry": "最大重试时清除路径",
"create": "创建",
"custom": "自定义",
"defaultValue": "默认",
"duplicate": "复制",
"editName": "编辑名称",
"open": "打开",
"paste": "粘贴",
"preview": "预览",
"remove": "移除",
"rename": "重命名",
"resolveAll": "解析全部",
"send": "发送",
"sendAnyway": "仍然发送",
"share": "分享",
"shareContact": "分享联系人",
"trace": "追踪",
"use": "使用",
"useSelectedFrequency": "使用选定频率",
"discovery": "发现",
"discoverRepeaters": "发现中继器",
"discoverSensors": "发现传感器",
"repeaterDiscoverySent": "中继器发现已发送",
"sensorDiscoverySent": "传感器发现已发送",
"clearedPendingDiscoveries": "已清除待处理的发现。",
"autoDiscovery": "自动发现",
"enableAutomaticAdding": "启用自动添加",
"autoaddRepeaters": "自动添加中继器",
"autoaddRoomServers": "自动添加房间服务器",
"autoaddSensors": "自动添加传感器",
"autoaddUsers": "自动添加用户",
"overwriteOldestWhenFull": "满时覆盖最旧的",
"storage": "存储",
"dangerZone": "危险区域",
"profiles": "配置文件",
"favourites": "收藏夹",
"sensors": "传感器",
"others": "其他",
"gpsModule": "GPS 模块",
"liveTraffic": "实时流量",
"repeatersMap": "中继器地图",
"spectrumScan": "频谱扫描",
"blePacketLogs": "BLE 数据包日志",
"onlineTraceDatabase": "在线追踪数据库",
"routePathByteSize": "路由路径字节大小",
"messageNotifications": "消息通知",
"sarAlerts": "SAR 警报",
"discoveryNotifications": "发现通知",
"updateNotifications": "更新通知",
"muteWhileAppIsOpen": "应用打开时静音",
"disableContacts": "禁用联系人",
"enableSensorsTab": "启用传感器标签",
"enableProfiles": "启用配置文件",
"autoRouteRotation": "自动路由轮换",
"nearestRepeaterFallback": "最近中继器回退",
"deleteAllStoredMessageHistory": "删除所有存储的消息历史",
"messageFontSize": "消息字体大小",
"rotateMapWithHeading": "随航向旋转地图",
"showMapDebugInfo": "显示地图调试信息",
"openMapInFullscreen": "全屏打开地图",
"showSarMarkersLabel": "显示 SAR 标记",
"displaySarMarkersOnTheMainMap": "在主地图上显示 SAR 标记",
"showAllContactTrailsLabel": "显示所有联系人轨迹",
"hideRepeatersOnMap": "在地图上隐藏中继器",
"setMapScale": "设置地图比例",
"customMapScaleSaved": "自定义地图比例已保存",
"voiceBitrate": "语音比特率",
"voiceCompressor": "语音压缩器",
"balancesQuietAndLoudSpeechLevels": "平衡安静和响亮的语音级别",
"voiceLimiter": "语音限制器",
"preventsClippingPeaksBeforeEncoding": "防止编码前的削波",
"micAutoGain": "麦克风自动增益",
"letsTheRecorderAdjustInputLevel": "让录音器调整输入级别",
"echoCancellation": "回声消除",
"noiseSuppression": "噪音抑制",
"trimSilenceInVoiceMessages": "修剪语音消息中的静音",
"compressor": "压缩器",
"limiter": "限制器",
"autoGain": "自动增益",
"echoCancel": "回声",
"noiseSuppress": "噪声",
"silenceTrim": "静音",
"maxImageSize": "最大图片大小",
"imageCompression": "图片压缩",
"grayscale": "灰度",
"ultraMode": "超级模式",
"fastPrivateGpsUpdates": "快速私有 GPS 更新",
"movementThreshold": "移动阈值",
"fastGpsMovementThreshold": "快速 GPS 移动阈值",
"fastGpsActiveuseInterval": "快速 GPS 活动使用间隔",
"activeuseUpdateInterval": "活动使用更新间隔",
"repeatNearbyTraffic": "转发附近流量",
"relayThroughRepeatersAcrossTheMesh": "通过网格中的中继器转发",
"nearbyOnlyWithoutRepeaterFlooding": "仅附近,无中继器泛洪",
"multihop": "多跳",
"createProfile": "创建配置文件",
"renameProfile": "重命名配置文件",
"newProfile": "新配置文件",
"manageProfiles": "管理配置文件",
"enableProfilesToStartManagingThem": "启用配置文件以开始管理它们。",
"openMessage": "打开消息",
"jumpToTheRelatedSarMessage": "跳转到相关的 SAR 消息",
"removeSarMarker": "移除 SAR 标记",
"pleaseSelectADestinationToSendSarMarker": "请选择目标以发送 SAR 标记",
"sarMarkerBroadcastToPublicChannel": "SAR 标记已广播到公共频道",
"sarMarkerSentToRoom": "SAR 标记已发送到房间",
"loadFromGallery": "从图库加载",
"replaceImage": "替换图片",
"selectFromGallery": "从图库选择",
"team": "团队",
"found": "已找到",
"staging": "集结区",
"object": "物体",
"quiet": "安静",
"moderate": "中等",
"busy": "繁忙",
"spectrumScanReturnedNoCandidateFrequencies": "频谱扫描未找到候选频率",
"searchMessages": "搜索消息",
"sendImageFromGallery": "从图库发送图片",
"takePhoto": "拍照",
"dmOnly": "仅私信",
"allMessages": "所有消息",
"sendToPublicChannel": "发送到公共频道?",
"selectMarkerTypeAndDestination": "选择标记类型和目标",
"noDestinationsAvailableLabel": "没有可用的目标",
"image": "图片",
"format": "格式",
"dimensions": "尺寸",
"segments": "分段",
"transfers": "传输",
"downloadedBy": "已下载",
"saveDiscoverySettings": "保存发现设置",
"savePublicInfo": "保存公共信息",
"saveRadioSettings": "保存无线电设置",
"savePath": "保存路径",
"wipeDeviceData": "擦除设备数据",
"wipeDevice": "擦除设备",
"destructiveDeviceActions": "破坏性设备操作。",
"chooseAPresetOrFinetuneCustomRadioSettings": "选择预设或微调自定义无线电设置。",
"chooseTheNameAndLocationThisDeviceShares": "选择此设备共享的名称和位置。",
"availableSpaceOnThisDevice": "此设备上的可用空间。",
"used": "已使用",
"total": "总计",
"renameValue": "重命名值",
"customizeFields": "自定义字段",
"livePreview": "实时预览",
"refreshSchedule": "刷新计划",
"noResponse": "无响应",
"refreshing": "刷新中",
"unavailable": "不可用",
"pickARelayOrNodeToWatchInSensors": "选择要在传感器中监视的中继或节点。",
"publicKeyLabel": "公钥",
"alreadyInContacts": "已在联系人中",
"connectToADeviceBeforeAddingContacts": "添加联系人前请连接到设备",
"fromContacts": "来自联系人",
"onlineOnly": "仅在线",
"inBoth": "两者中",
"source": "来源",
"manualRouteEdit": "手动路由编辑",
"observedMeshRoute": "观察到的网格路由",
"allMessagesCleared": "所有消息已清除",
"onlineTraceDatabaseCleared": "在线追踪数据库已清除",
"packetLogsCleared": "数据包日志已清除",
"hexDataCopiedToClipboard": "十六进制数据已复制到剪贴板",
"developerModeEnabled": "开发者模式已启用",
"developerModeDisabled": "开发者模式已禁用",
"clipboardIsEmpty": "剪贴板为空",
"contactImported": "联系人已导入",
"contactLinkCopiedToClipboard": "联系人链接已复制到剪贴板",
"failedToExportContact": "导出联系人失败",
"noLogsToExport": "没有日志可导出",
"exportAsCsv": "导出为 CSV",
"exportAsText": "导出为文本",
"receivedRfc3339": "收到 (RFC3339)",
"buildTime": "构建时间",
"downloadUrlNotAvailable": "下载链接不可用",
"cannotOpenDownloadUrl": "无法打开下载链接",
"updateCheckIsOnlyAvailableOnAndroid": "更新检查仅在 Android 上可用",
"youAreRunningTheLatestVersion": "您正在使用最新版本",
"updateAvailableButDownloadUrlNotFound": "有更新可用但未找到下载链接",
"startTictactoe": "开始井字棋",
"tictactoeUnavailable": "井字棋不可用",
"tictactoeOpponentUnknown": "井字棋:对手未知",
"tictactoeWaitingForStart": "井字棋:等待开始",
"acceptsShareLinks": "接受分享链接",
"supportsRawHex": "支持原始十六进制",
"clipboardfriendly": "剪贴板友好",
"captured": "已捕获",
"size": "大小",
"noCustomChannelsToClear": "没有自定义频道可清除。",
"noDeviceContactsToClear": "没有设备联系人可清除。"
}

View File

@@ -141,6 +141,23 @@ class ContactRouteCodec {
);
}
static ParsedContactRoute direct({int hashSize = 1}) {
if (hashSize < 1 || hashSize > maxHashSize) {
throw ArgumentError.value(hashSize, 'hashSize', 'Must be 1, 2, or 3.');
}
final encodedPathLen = (hashSize - 1) << 6;
return ParsedContactRoute(
canonicalText: '',
hashSize: hashSize,
hopCount: 0,
encodedPathLen: encodedPathLen,
signedEncodedPathLen: toSignedDescriptor(encodedPathLen),
pathBytes: Uint8List(0),
paddedPathBytes: Uint8List(maxPathBytes),
);
}
static ParsedContactRoute? fromContact(Contact contact) {
if (!contact.routeHasPath || contact.routeHopCount == 0) {
return null;

View File

@@ -3,6 +3,7 @@ import 'package:flutter/services.dart';
import 'package:provider/provider.dart';
import '../providers/connection_provider.dart';
import '../l10n/app_localizations.dart';
class AddContactScreen extends StatefulWidget {
const AddContactScreen({super.key});
@@ -80,7 +81,7 @@ class _AddContactScreenState extends State<AddContactScreen> {
if (!mounted) return;
ScaffoldMessenger.of(
context,
).showSnackBar(const SnackBar(content: Text('Clipboard is empty')));
).showSnackBar(SnackBar(content: Text(AppLocalizations.of(context)!.clipboardIsEmpty)));
return;
}
@@ -141,7 +142,7 @@ class _AddContactScreenState extends State<AddContactScreen> {
ScaffoldMessenger.of(
context,
).showSnackBar(const SnackBar(content: Text('Contact imported')));
).showSnackBar(SnackBar(content: Text(AppLocalizations.of(context)!.contactImported)));
setState(() {
_importSucceeded = true;
});
@@ -154,7 +155,7 @@ class _AddContactScreenState extends State<AddContactScreen> {
final colorScheme = theme.colorScheme;
return Scaffold(
appBar: AppBar(title: const Text('Add Contact')),
appBar: AppBar(title: Text(AppLocalizations.of(context)!.addContact)),
body: ListView(
padding: const EdgeInsets.all(16),
children: [
@@ -205,18 +206,18 @@ class _AddContactScreenState extends State<AddContactScreen> {
Wrap(
spacing: 8,
runSpacing: 8,
children: const [
children: [
_ImportHintChip(
icon: Icons.link_outlined,
label: 'Accepts share links',
label: AppLocalizations.of(context)!.acceptsShareLinks,
),
_ImportHintChip(
icon: Icons.code_outlined,
label: 'Supports raw hex',
label: AppLocalizations.of(context)!.supportsRawHex,
),
_ImportHintChip(
icon: Icons.content_paste_go_outlined,
label: 'Clipboard-friendly',
label: AppLocalizations.of(context)!.clipboardfriendly,
),
],
),
@@ -285,8 +286,8 @@ class _AddContactScreenState extends State<AddContactScreen> {
),
TextButton.icon(
onPressed: _isImporting ? null : _pasteFromClipboard,
icon: const Icon(Icons.content_paste_go_outlined),
label: const Text('Paste'),
icon: Icon(Icons.content_paste_go_outlined),
label: Text(AppLocalizations.of(context)!.paste),
),
],
),

View File

@@ -493,7 +493,7 @@ class _ContactsTabState extends State<ContactsTab> {
mainAxisSize: MainAxisSize.min,
children: [
ListTile(
leading: const Icon(Icons.message_outlined),
leading: Icon(Icons.message_outlined),
title: Text(l10n.messages),
onTap: () async {
Navigator.pop(sheetContext);
@@ -502,7 +502,7 @@ class _ContactsTabState extends State<ContactsTab> {
),
if (channel.displayLocation != null)
ListTile(
leading: const Icon(Icons.map_outlined),
leading: Icon(Icons.map_outlined),
title: Text(l10n.viewOnMap),
onTap: () {
Navigator.pop(sheetContext);
@@ -511,7 +511,7 @@ class _ContactsTabState extends State<ContactsTab> {
),
if (!channel.isPublicChannel)
ListTile(
leading: const Icon(Icons.delete, color: Colors.red),
leading: Icon(Icons.delete, color: Colors.red),
title: Text(
l10n.deleteChannel,
style: const TextStyle(color: Colors.red),
@@ -655,12 +655,12 @@ class _ContactsTabState extends State<ContactsTab> {
size: 64,
color: Theme.of(context).disabledColor,
),
const SizedBox(height: 16),
SizedBox(height: 16),
Text(
l10n.noContactsYet,
style: Theme.of(context).textTheme.titleLarge,
),
const SizedBox(height: 8),
SizedBox(height: 8),
Text(
l10n.connectToDeviceToLoadContacts,
style: Theme.of(context).textTheme.bodyMedium,
@@ -674,8 +674,8 @@ class _ContactsTabState extends State<ContactsTab> {
padding: const EdgeInsets.only(top: 16),
child: OutlinedButton.icon(
onPressed: () => _openAddContactScreen(context),
icon: const Icon(Icons.person_add_alt_1_outlined),
label: const Text('Add Contact'),
icon: Icon(Icons.person_add_alt_1_outlined),
label: Text(l10n.addContact),
),
),
],
@@ -691,7 +691,7 @@ class _ContactsTabState extends State<ContactsTab> {
// Favourites (contacts with firmware favourite flag set)
if (contactsProvider.favouriteContacts.isNotEmpty) ...[
_SectionHeader(
title: 'Favourites',
title: l10n.favourites,
count: contactsProvider.favouriteContacts.length,
icon: Icons.star,
),
@@ -766,8 +766,8 @@ class _ContactsTabState extends State<ContactsTab> {
.read<ConnectionProvider>()
.discoverNodeType(advertType: 2);
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(
content: Text('Repeater discovery sent'),
SnackBar(
content: Text(l10n.repeaterDiscoverySent),
),
);
},
@@ -802,7 +802,7 @@ class _ContactsTabState extends State<ContactsTab> {
_buildNoFilterResults(context)
else if (showRepeatersOthersGroup)
_InferredContactGroupCard(
label: 'Others',
label: l10n.others,
contacts: ungroupedRepeaters,
compactContacts: true,
currentPosition: _currentPosition,
@@ -822,7 +822,7 @@ class _ContactsTabState extends State<ContactsTab> {
// Sensors
if (showSensorsSection) ...[
_SectionHeader(
title: 'Sensors',
title: l10n.sensors,
count: sensors.length,
icon: Icons.sensors,
trailing: Row(
@@ -841,8 +841,8 @@ class _ContactsTabState extends State<ContactsTab> {
.read<ConnectionProvider>()
.discoverNodeType(advertType: 4);
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(
content: Text('Sensor discovery sent'),
SnackBar(
content: Text(l10n.sensorDiscoverySent),
),
);
},
@@ -946,8 +946,8 @@ class _ContactsTabState extends State<ContactsTab> {
Expanded(
child: OutlinedButton.icon(
onPressed: () => _openAddContactScreen(context),
icon: const Icon(Icons.person_add_alt_1_outlined),
label: const Text('Add Contact'),
icon: Icon(Icons.person_add_alt_1_outlined),
label: Text(l10n.addContact),
style: OutlinedButton.styleFrom(
padding: const EdgeInsets.symmetric(
horizontal: 24,
@@ -960,7 +960,7 @@ class _ContactsTabState extends State<ContactsTab> {
Expanded(
child: OutlinedButton.icon(
onPressed: () => _showAddChannelDialog(context),
icon: const Icon(Icons.add_circle_outline),
icon: Icon(Icons.add_circle_outline),
label: Text(l10n.addChannel),
style: OutlinedButton.styleFrom(
padding: const EdgeInsets.symmetric(
@@ -1285,7 +1285,7 @@ class _ContactsTabState extends State<ContactsTab> {
? colorScheme.primary
: null,
),
const SizedBox(width: 8),
SizedBox(width: 8),
Text(l10n.lastSeen),
],
),
@@ -1301,7 +1301,7 @@ class _ContactsTabState extends State<ContactsTab> {
? colorScheme.primary
: null,
),
const SizedBox(width: 8),
SizedBox(width: 8),
Text(l10n.distance),
],
),

View File

@@ -827,7 +827,7 @@ class _DeviceConfigScreenState extends State<DeviceConfigScreen> {
final confirmed = await showDialog<bool>(
context: context,
builder: (dialogContext) => AlertDialog(
title: const Text('Wipe device data'),
title: Text(AppLocalizations.of(context)!.wipeDeviceData),
content: const Text(
'This will erase all data on the connected device, including contacts, keys, and saved settings. This cannot be undone.',
),
@@ -842,7 +842,7 @@ class _DeviceConfigScreenState extends State<DeviceConfigScreen> {
foregroundColor: Theme.of(context).colorScheme.onError,
),
onPressed: () => Navigator.of(dialogContext).pop(true),
child: const Text('Wipe device'),
child: Text(AppLocalizations.of(context)!.wipeDevice),
),
],
),
@@ -893,7 +893,7 @@ class _DeviceConfigScreenState extends State<DeviceConfigScreen> {
.toList();
if (contacts.isEmpty) {
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(content: Text('No device contacts to clear.')),
SnackBar(content: Text(AppLocalizations.of(context)!.noDeviceContactsToClear)),
);
return;
}
@@ -901,7 +901,7 @@ class _DeviceConfigScreenState extends State<DeviceConfigScreen> {
final confirmed = await showDialog<bool>(
context: context,
builder: (dialogContext) => AlertDialog(
title: const Text('Clear all contacts'),
title: Text(AppLocalizations.of(context)!.clearAllContacts),
content: Text(
'This will remove ${contacts.length} contact${contacts.length == 1 ? '' : 's'} from the connected device. Channels and radio settings will not be changed.',
),
@@ -916,7 +916,7 @@ class _DeviceConfigScreenState extends State<DeviceConfigScreen> {
foregroundColor: Theme.of(context).colorScheme.onError,
),
onPressed: () => Navigator.of(dialogContext).pop(true),
child: const Text('Clear contacts'),
child: Text(AppLocalizations.of(context)!.clearContacts),
),
],
),
@@ -988,7 +988,7 @@ class _DeviceConfigScreenState extends State<DeviceConfigScreen> {
.toList();
if (channels.isEmpty) {
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(content: Text('No custom channels to clear.')),
SnackBar(content: Text(AppLocalizations.of(context)!.noCustomChannelsToClear)),
);
return;
}
@@ -996,7 +996,7 @@ class _DeviceConfigScreenState extends State<DeviceConfigScreen> {
final confirmed = await showDialog<bool>(
context: context,
builder: (dialogContext) => AlertDialog(
title: const Text('Clear all channels'),
title: Text(AppLocalizations.of(context)!.clearAllChannels),
content: Text(
'This will remove ${channels.length} custom channel${channels.length == 1 ? '' : 's'} from the connected device. Contacts and radio settings will not be changed.',
),
@@ -1011,7 +1011,7 @@ class _DeviceConfigScreenState extends State<DeviceConfigScreen> {
foregroundColor: Theme.of(context).colorScheme.onError,
),
onPressed: () => Navigator.of(dialogContext).pop(true),
child: const Text('Clear channels'),
child: Text(AppLocalizations.of(context)!.clearChannels),
),
],
),
@@ -1119,23 +1119,23 @@ class _DeviceConfigScreenState extends State<DeviceConfigScreen> {
'${_getDeviceTypeString(context, deviceInfo.deviceType)}${deviceInfo.semanticVersion ?? deviceInfo.manufacturerModel ?? AppLocalizations.of(context)!.unknown}',
stats: [
_HeroStatData(
label: 'Location',
label: AppLocalizations.of(context)!.location,
value: locationSet ? 'Shared' : 'Hidden',
icon: Icons.my_location_rounded,
emphasized: locationSet,
),
_HeroStatData(
label: 'Frequency',
label: AppLocalizations.of(context)!.frequency,
value: '${_freqController.text} MHz',
icon: Icons.settings_input_antenna_rounded,
),
_HeroStatData(
label: 'Bandwidth',
label: AppLocalizations.of(context)!.bandwidth,
value: _selectedBandwidth,
icon: Icons.width_normal_rounded,
),
_HeroStatData(
label: 'Model',
label: AppLocalizations.of(context)!.model,
value:
deviceInfo.manufacturerModel ??
AppLocalizations.of(context)!.unknown,
@@ -1143,10 +1143,10 @@ class _DeviceConfigScreenState extends State<DeviceConfigScreen> {
),
],
),
const SizedBox(height: 20),
SizedBox(height: 20),
_ConfigSectionCard(
title: 'Storage',
subtitle: 'Available space on this device.',
title: AppLocalizations.of(context)!.storage,
subtitle: AppLocalizations.of(context)!.availableSpaceOnThisDevice,
icon: Icons.storage_rounded,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
@@ -1155,16 +1155,16 @@ class _DeviceConfigScreenState extends State<DeviceConfigScreen> {
children: [
Expanded(
child: _StorageStat(
label: 'Used',
label: AppLocalizations.of(context)!.used,
value: _formatStorage(
deviceInfo.storageUsedKb ?? 0,
),
),
),
const SizedBox(width: 12),
SizedBox(width: 12),
Expanded(
child: _StorageStat(
label: 'Total',
label: AppLocalizations.of(context)!.total,
value: deviceInfo.storageTotalKb != null
? _formatStorage(deviceInfo.storageTotalKb!)
: AppLocalizations.of(context)!.unknown,
@@ -1177,9 +1177,9 @@ class _DeviceConfigScreenState extends State<DeviceConfigScreen> {
],
),
),
const SizedBox(height: 20),
SizedBox(height: 20),
_ConfigSectionCard(
title: 'Auto discovery',
title: AppLocalizations.of(context)!.autoDiscovery,
subtitle:
'Control how the radio auto-adds discovered nodes to its contacts table.',
icon: Icons.person_search_rounded,
@@ -1190,7 +1190,7 @@ class _DeviceConfigScreenState extends State<DeviceConfigScreen> {
icon: _autoAddDiscoveredContactsEnabled
? Icons.person_add_alt_1
: Icons.person_add_disabled,
title: 'Enable automatic adding',
title: AppLocalizations.of(context)!.enableAutomaticAdding,
description:
'Turn this off to keep discoveries manual-only on the radio.',
accentColor: _autoAddDiscoveredContactsEnabled
@@ -1206,10 +1206,10 @@ class _DeviceConfigScreenState extends State<DeviceConfigScreen> {
},
),
),
const SizedBox(height: 18),
SizedBox(height: 18),
_SettingHighlightCard(
icon: Icons.person_outline_rounded,
title: 'Auto-add users',
title: AppLocalizations.of(context)!.autoaddUsers,
description:
'Automatically store discovered user/chat nodes.',
accentColor: _autoAddUsersEnabled
@@ -1227,10 +1227,10 @@ class _DeviceConfigScreenState extends State<DeviceConfigScreen> {
: null,
),
),
const SizedBox(height: 14),
SizedBox(height: 14),
_SettingHighlightCard(
icon: Icons.router_outlined,
title: 'Auto-add repeaters',
title: AppLocalizations.of(context)!.autoaddRepeaters,
description:
'Automatically store discovered repeater nodes.',
accentColor: _autoAddRepeatersEnabled
@@ -1248,10 +1248,10 @@ class _DeviceConfigScreenState extends State<DeviceConfigScreen> {
: null,
),
),
const SizedBox(height: 14),
SizedBox(height: 14),
_SettingHighlightCard(
icon: Icons.meeting_room_outlined,
title: 'Auto-add room servers',
title: AppLocalizations.of(context)!.autoaddRoomServers,
description:
'Automatically store discovered room/server nodes.',
accentColor: _autoAddRoomServersEnabled
@@ -1269,10 +1269,10 @@ class _DeviceConfigScreenState extends State<DeviceConfigScreen> {
: null,
),
),
const SizedBox(height: 14),
SizedBox(height: 14),
_SettingHighlightCard(
icon: Icons.sensors_outlined,
title: 'Auto-add sensors',
title: AppLocalizations.of(context)!.autoaddSensors,
description:
'Automatically store discovered sensor nodes.',
accentColor: _autoAddSensorsEnabled
@@ -1290,10 +1290,10 @@ class _DeviceConfigScreenState extends State<DeviceConfigScreen> {
: null,
),
),
const SizedBox(height: 14),
SizedBox(height: 14),
_SettingHighlightCard(
icon: Icons.history_toggle_off_rounded,
title: 'Overwrite oldest when full',
title: AppLocalizations.of(context)!.overwriteOldestWhenFull,
description:
'Allow the radio to replace the oldest contact when storage is full.',
accentColor: _overwriteOldestAutoAddEnabled
@@ -1329,16 +1329,16 @@ class _DeviceConfigScreenState extends State<DeviceConfigScreen> {
: _saveAutoDiscoverySettings,
isSaving: _isSavingAutoDiscoverySettings,
isSaved: _autoDiscoverySettingsSaved,
label: 'Save discovery settings',
label: AppLocalizations.of(context)!.saveDiscoverySettings,
),
),
],
),
),
const SizedBox(height: 20),
SizedBox(height: 20),
_ConfigSectionCard(
title: AppLocalizations.of(context)!.publicInfo,
subtitle: 'Choose the name and location this device shares.',
subtitle: AppLocalizations.of(context)!.chooseTheNameAndLocationThisDeviceShares,
icon: Icons.public_rounded,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
@@ -1371,7 +1371,7 @@ class _DeviceConfigScreenState extends State<DeviceConfigScreen> {
icon: _gpsEnabled!
? Icons.gps_fixed
: Icons.gps_off,
title: 'GPS Module',
title: AppLocalizations.of(context)!.gpsModule,
description:
'Enable or disable the onboard GPS hardware.',
accentColor: _gpsEnabled!
@@ -1483,16 +1483,16 @@ class _DeviceConfigScreenState extends State<DeviceConfigScreen> {
onPressed: _isSavingPublicInfo ? null : _savePublicInfo,
isSaving: _isSavingPublicInfo,
isSaved: _publicInfoSaved,
label: 'Save public info',
label: AppLocalizations.of(context)!.savePublicInfo,
),
),
],
),
),
const SizedBox(height: 20),
SizedBox(height: 20),
_ConfigSectionCard(
title: AppLocalizations.of(context)!.radioSettings,
subtitle: 'Choose a preset or fine-tune custom radio settings.',
subtitle: AppLocalizations.of(context)!.chooseAPresetOrFinetuneCustomRadioSettings,
icon: Icons.settings_input_antenna_rounded,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
@@ -1512,9 +1512,9 @@ class _DeviceConfigScreenState extends State<DeviceConfigScreen> {
),
isExpanded: true,
items: [
const DropdownMenuItem<_RadioPreset?>(
DropdownMenuItem<_RadioPreset?>(
value: null,
child: Text('Custom'),
child: Text(AppLocalizations.of(context)!.custom),
),
..._radioPresets.map(
(preset) => DropdownMenuItem<_RadioPreset?>(
@@ -1713,10 +1713,10 @@ class _DeviceConfigScreenState extends State<DeviceConfigScreen> {
),
),
if (deviceInfo.clientRepeat != null) ...[
const SizedBox(height: 16),
SizedBox(height: 16),
_SettingHighlightCard(
icon: Icons.repeat_rounded,
title: 'Repeat nearby traffic',
title: AppLocalizations.of(context)!.repeatNearbyTraffic,
description:
deviceInfo.allowedRepeatFreqRanges != null &&
deviceInfo.allowedRepeatFreqRanges!.isNotEmpty
@@ -1753,16 +1753,16 @@ class _DeviceConfigScreenState extends State<DeviceConfigScreen> {
: _saveRadioSettings,
isSaving: _isSavingRadioSettings,
isSaved: _radioSettingsSaved,
label: 'Save radio settings',
label: AppLocalizations.of(context)!.saveRadioSettings,
),
),
],
),
),
const SizedBox(height: 20),
SizedBox(height: 20),
_ConfigSectionCard(
title: 'Danger zone',
subtitle: 'Destructive device actions.',
title: AppLocalizations.of(context)!.dangerZone,
subtitle: AppLocalizations.of(context)!.destructiveDeviceActions,
icon: Icons.warning_amber_rounded,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
@@ -1830,8 +1830,8 @@ class _DeviceConfigScreenState extends State<DeviceConfigScreen> {
strokeWidth: 2,
),
)
: const Icon(Icons.people_alt_outlined),
label: const Text('Clear all contacts'),
: Icon(Icons.people_alt_outlined),
label: Text(AppLocalizations.of(context)!.clearAllContacts),
),
),
const SizedBox(height: 12),
@@ -1854,8 +1854,8 @@ class _DeviceConfigScreenState extends State<DeviceConfigScreen> {
strokeWidth: 2,
),
)
: const Icon(Icons.forum_outlined),
label: const Text('Clear all channels'),
: Icon(Icons.forum_outlined),
label: Text(AppLocalizations.of(context)!.clearAllChannels),
),
),
const SizedBox(height: 12),
@@ -1870,8 +1870,8 @@ class _DeviceConfigScreenState extends State<DeviceConfigScreen> {
foregroundColor: colorScheme.onError,
minimumSize: const Size.fromHeight(52),
),
icon: const Icon(Icons.delete_forever_rounded),
label: const Text('Wipe device data'),
icon: Icon(Icons.delete_forever_rounded),
label: Text(AppLocalizations.of(context)!.wipeDeviceData),
),
),
],

View File

@@ -54,7 +54,7 @@ class _DiscoveryScreenState extends State<DiscoveryScreen> {
final confirmed = await showDialog<bool>(
context: context,
builder: (dialogContext) => AlertDialog(
title: const Text('Clear discoveries'),
title: Text(AppLocalizations.of(context)!.clearDiscoveries),
content: Text(
'Remove all $pendingCount pending discover${pendingCount == 1 ? 'y' : 'ies'} from this device?',
),
@@ -65,7 +65,7 @@ class _DiscoveryScreenState extends State<DiscoveryScreen> {
),
FilledButton(
onPressed: () => Navigator.of(dialogContext).pop(true),
child: const Text('Clear all'),
child: Text(AppLocalizations.of(context)!.clearAllLabel),
),
],
),
@@ -80,7 +80,7 @@ class _DiscoveryScreenState extends State<DiscoveryScreen> {
return;
}
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(content: Text('Cleared pending discoveries.')),
SnackBar(content: Text(AppLocalizations.of(context)!.clearedPendingDiscoveries)),
);
}
@@ -363,7 +363,7 @@ class _DiscoveryScreenState extends State<DiscoveryScreen> {
return Scaffold(
appBar: AppBar(
title: const Text('Discovery'),
title: Text(l10n.discovery),
actions: [
Consumer<ConnectionProvider>(
builder: (context, connectionProvider, child) {
@@ -393,8 +393,8 @@ class _DiscoveryScreenState extends State<DiscoveryScreen> {
),
)
: const Icon(Icons.router_outlined),
const SizedBox(width: 12),
const Text('Discover repeaters'),
SizedBox(width: 12),
Text(l10n.discoverRepeaters),
],
),
),
@@ -412,8 +412,8 @@ class _DiscoveryScreenState extends State<DiscoveryScreen> {
),
)
: const Icon(Icons.sensors_outlined),
const SizedBox(width: 12),
const Text('Discover sensors'),
SizedBox(width: 12),
Text(l10n.discoverSensors),
],
),
),
@@ -490,7 +490,7 @@ class _DiscoveryScreenState extends State<DiscoveryScreen> {
: const Icon(
Icons.download_for_offline_outlined,
),
label: const Text('Resolve all'),
label: Text(l10n.resolveAll),
),
),
const SizedBox(width: 10),
@@ -499,8 +499,8 @@ class _DiscoveryScreenState extends State<DiscoveryScreen> {
onPressed: pendingAdverts.isNotEmpty
? _clearAllDiscoveries
: null,
icon: const Icon(Icons.clear_all_rounded),
label: const Text('Clear all'),
icon: Icon(Icons.clear_all_rounded),
label: Text(l10n.clearAllLabel),
),
),
],

View File

@@ -362,7 +362,7 @@ class _HomeScreenState extends State<HomeScreen>
),
),
title: Text(l10n.flood),
subtitle: const Text('Relay through repeaters across the mesh'),
subtitle: Text(l10n.relayThroughRepeatersAcrossTheMesh),
trailing: const Icon(Icons.chevron_right_rounded),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(20),
@@ -388,7 +388,7 @@ class _HomeScreenState extends State<HomeScreen>
),
),
title: Text(l10n.direct),
subtitle: const Text('Nearby only, without repeater flooding'),
subtitle: Text(l10n.nearbyOnlyWithoutRepeaterFlooding),
trailing: const Icon(Icons.chevron_right_rounded),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(20),
@@ -609,7 +609,7 @@ class _HomeScreenState extends State<HomeScreen>
onPressed: () async {
await provider.disconnect();
},
icon: const Icon(Icons.power_settings_new),
icon: Icon(Icons.power_settings_new),
tooltip: AppLocalizations.of(context)!.disconnect,
color: Colors.red.shade700,
);
@@ -631,8 +631,8 @@ class _HomeScreenState extends State<HomeScreen>
child: Row(
children: [
const Icon(Icons.radar),
const SizedBox(width: 8),
const Text('Spectrum Scan'),
SizedBox(width: 8),
Text(AppLocalizations.of(context)!.spectrumScan),
],
),
onTap: () {
@@ -653,11 +653,11 @@ class _HomeScreenState extends State<HomeScreen>
items.add(
PopupMenuItem(
child: const Row(
child: Row(
children: [
Icon(Icons.radar_outlined),
SizedBox(width: 8),
Text('Live Traffic'),
const Icon(Icons.radar_outlined),
const SizedBox(width: 8),
Text(AppLocalizations.of(context)!.liveTraffic),
],
),
onTap: () {
@@ -688,11 +688,11 @@ class _HomeScreenState extends State<HomeScreen>
items.add(
PopupMenuItem(
child: const Row(
child: Row(
children: [
Icon(Icons.router_outlined),
SizedBox(width: 8),
Text('Repeaters Map'),
const Icon(Icons.router_outlined),
const SizedBox(width: 8),
Text(AppLocalizations.of(context)!.repeatersMap),
],
),
onTap: () {
@@ -749,7 +749,7 @@ class _HomeScreenState extends State<HomeScreen>
child: Row(
children: [
const Icon(Icons.settings),
const SizedBox(width: 8),
SizedBox(width: 8),
Text(AppLocalizations.of(context)!.settings),
],
),
@@ -777,11 +777,11 @@ class _HomeScreenState extends State<HomeScreen>
if (profilesEnabled) {
items.add(
PopupMenuItem(
child: const Row(
child: Row(
children: [
Icon(Icons.layers_outlined),
SizedBox(width: 8),
Text('Profiles'),
const Icon(Icons.layers_outlined),
const SizedBox(width: 8),
Text(AppLocalizations.of(context)!.profiles),
],
),
onTap: () {
@@ -889,7 +889,7 @@ class _HomeScreenState extends State<HomeScreen>
);
case _HomeTab.map:
return Tab(
icon: const Icon(Icons.map),
icon: Icon(Icons.map),
text: AppLocalizations.of(context)!.map,
);
case _HomeTab.sensors:
@@ -941,7 +941,7 @@ class _HomeScreenState extends State<HomeScreen>
),
),
)
: const Icon(Icons.bluetooth, size: 18),
: Icon(Icons.bluetooth, size: 18),
label: Text(
provider.isReconnecting
? '${provider.reconnectionAttempt}/${provider.maxReconnectionAttempts}'
@@ -960,7 +960,7 @@ class _HomeScreenState extends State<HomeScreen>
const SizedBox(width: 8),
IconButton(
onPressed: () => provider.cancelReconnection(),
icon: const Icon(Icons.close, size: 20),
icon: Icon(Icons.close, size: 20),
tooltip: AppLocalizations.of(context)!.cancelReconnection,
style: IconButton.styleFrom(
backgroundColor: Colors.red.shade700,

View File

@@ -15,6 +15,7 @@ import '../utils/log_rx_route_decoder.dart';
import '../widgets/compact_signal_indicator.dart';
import '../widgets/messages/message_trace_sheet.dart';
import 'packet_log_screen.dart';
import '../l10n/app_localizations.dart';
T? _maybeProvider<T>(BuildContext context) {
try {
@@ -147,7 +148,7 @@ class _LiveTrafficScreenState extends State<LiveTrafficScreen> {
return Scaffold(
appBar: AppBar(
title: const Text('Live Traffic'),
title: Text(AppLocalizations.of(context)!.liveTraffic),
actions: [
if (widget.openPacketLogs != null)
IconButton(
@@ -327,17 +328,17 @@ class _SummaryPanel extends StatelessWidget {
runSpacing: 6,
children: [
_SummaryBadge(
label: 'Mesh',
label: AppLocalizations.of(context)!.mesh,
value: busynessLabel,
color: busynessColor,
),
_SummaryBadge(
label: 'Rate',
label: AppLocalizations.of(context)!.rate,
value: '${snapshot.packetsPerMinute} pkt/min',
color: Theme.of(context).colorScheme.primary,
),
_SummaryBadge(
label: 'Window',
label: AppLocalizations.of(context)!.window,
value: _windowLabel(snapshot.windowDuration),
color: Theme.of(context).colorScheme.secondary,
onTap: onWindowTap,
@@ -350,14 +351,14 @@ class _SummaryPanel extends StatelessWidget {
runSpacing: 10,
children: [
_MetricTile(
label: 'RX packets',
label: AppLocalizations.of(context)!.rxPackets,
value: '${snapshot.rxCount}',
subtitle: totalRxCount == null
? _windowSummaryLabel(snapshot.windowDuration)
: 'Device total $totalRxCount',
),
_MetricTile(
label: 'RSSI',
label: AppLocalizations.of(context)!.rssi,
value: snapshot.latestRssiDbm == null
? 'No RX data'
: '${snapshot.latestRssiDbm} dBm',
@@ -366,7 +367,7 @@ class _SummaryPanel extends StatelessWidget {
: 'Avg ${snapshot.avgRssiDbm!.toStringAsFixed(1)} dBm',
),
_MetricTile(
label: 'SNR',
label: AppLocalizations.of(context)!.snr,
value: snapshot.latestSnrDb == null
? 'No RX data'
: '${snapshot.latestSnrDb!.toStringAsFixed(1)} dB',
@@ -375,7 +376,7 @@ class _SummaryPanel extends StatelessWidget {
: 'Avg ${snapshot.avgSnrDb!.toStringAsFixed(1)} dB',
),
_MetricTile(
label: 'Multi-hop',
label: AppLocalizations.of(context)!.multihop,
value: '${snapshot.multiHopCount}',
subtitle: routeHashCounts.summaryLabel,
footer: snapshot.avgHopCount == null
@@ -455,7 +456,7 @@ class _PacketTypeFilterBar extends StatelessWidget {
child: Row(
children: [
_FilterChip(
label: 'All',
label: AppLocalizations.of(context)!.all,
selected: selectedType == null,
onTap: () => onSelected(null),
),

View File

@@ -519,7 +519,7 @@ class _MapTabState extends State<MapTab> with AutomaticKeepAliveClientMixin {
child: Row(
children: [
const Icon(Icons.layers),
const SizedBox(width: 12),
SizedBox(width: 12),
Expanded(
child: Text(
AppLocalizations.of(context)!.selectMapLayer,
@@ -644,7 +644,7 @@ class _MapTabState extends State<MapTab> with AutomaticKeepAliveClientMixin {
!rootContext.read<MapProvider>().isUsingCustomMap &&
_currentLayer == _dtk25Layer
? const Icon(Icons.check_circle, color: Colors.green)
: const Icon(Icons.radio_button_unchecked),
: Icon(Icons.radio_button_unchecked),
title: Text(AppLocalizations.of(context)!.topographicMap),
subtitle: Text(_dtk25Layer.attribution),
onTap: () async {
@@ -872,8 +872,8 @@ class _MapTabState extends State<MapTab> with AutomaticKeepAliveClientMixin {
),
if (!hasCustomMap)
ListTile(
leading: const Icon(Icons.add_photo_alternate),
title: const Text('Load from gallery'),
leading: Icon(Icons.add_photo_alternate),
title: Text(AppLocalizations.of(context)!.loadFromGallery),
subtitle: const Text(
'Use a cave map image instead of GPS tiles',
),
@@ -904,8 +904,8 @@ class _MapTabState extends State<MapTab> with AutomaticKeepAliveClientMixin {
),
),
ListTile(
leading: const Icon(Icons.swap_horizontal_circle),
title: const Text('Replace image'),
leading: Icon(Icons.swap_horizontal_circle),
title: Text(AppLocalizations.of(context)!.replaceImage),
subtitle: const Text(
'Pick a different map from the gallery',
),
@@ -940,8 +940,8 @@ class _MapTabState extends State<MapTab> with AutomaticKeepAliveClientMixin {
),
if (customMapConfig.isCalibrated)
ListTile(
leading: const Icon(Icons.clear),
title: const Text('Clear scale'),
leading: Icon(Icons.clear),
title: Text(AppLocalizations.of(context)!.clearScale),
onTap: () async {
await mapProvider.clearCustomMapCalibration();
if (!context.mounted) return;
@@ -1218,7 +1218,7 @@ class _MapTabState extends State<MapTab> with AutomaticKeepAliveClientMixin {
context: context,
builder: (dialogContext) {
return AlertDialog(
title: const Text('Set map scale'),
title: Text(AppLocalizations.of(context)!.setMapScale),
content: TextField(
controller: controller,
keyboardType: const TextInputType.numberWithOptions(
@@ -1279,7 +1279,7 @@ class _MapTabState extends State<MapTab> with AutomaticKeepAliveClientMixin {
if (!mounted) return;
ScaffoldMessenger.of(
context,
).showSnackBar(const SnackBar(content: Text('Custom map scale saved')));
).showSnackBar(SnackBar(content: Text(AppLocalizations.of(context)!.customMapScaleSaved)));
}
}
@@ -1417,9 +1417,9 @@ class _MapTabState extends State<MapTab> with AutomaticKeepAliveClientMixin {
if (message != null)
ListTile(
contentPadding: EdgeInsets.zero,
leading: const Icon(Icons.chat_bubble_outline),
title: const Text('Open message'),
subtitle: const Text('Jump to the related SAR message'),
leading: Icon(Icons.chat_bubble_outline),
title: Text(AppLocalizations.of(context)!.openMessage),
subtitle: Text(AppLocalizations.of(context)!.jumpToTheRelatedSarMessage),
onTap: () async {
Navigator.pop(sheetContext);
await _openSarMarkerMessage(
@@ -1468,7 +1468,7 @@ class _MapTabState extends State<MapTab> with AutomaticKeepAliveClientMixin {
return showDialog<bool>(
context: context,
builder: (dialogContext) => AlertDialog(
title: const Text('Remove SAR marker'),
title: Text(AppLocalizations.of(context)!.removeSarMarker),
content: Text(
hasMessage
? 'This will remove the marker and its linked chat message.'
@@ -1654,8 +1654,8 @@ class _MapTabState extends State<MapTab> with AutomaticKeepAliveClientMixin {
if (!sendToChannel && !sendToAllContacts && roomPublicKey == null) {
if (!mounted) return;
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(
content: Text('Please select a destination to send SAR marker'),
SnackBar(
content: Text(AppLocalizations.of(context)!.pleaseSelectADestinationToSendSarMarker),
backgroundColor: Colors.red,
),
);
@@ -1784,8 +1784,8 @@ class _MapTabState extends State<MapTab> with AutomaticKeepAliveClientMixin {
if (!mounted) return;
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(
content: Text('SAR marker broadcast to public channel'),
SnackBar(
content: Text(AppLocalizations.of(context)!.sarMarkerBroadcastToPublicChannel),
backgroundColor: Colors.orange,
duration: Duration(seconds: 2),
),
@@ -1832,8 +1832,8 @@ class _MapTabState extends State<MapTab> with AutomaticKeepAliveClientMixin {
if (!mounted) return;
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(
content: Text('SAR marker sent to room'),
SnackBar(
content: Text(AppLocalizations.of(context)!.sarMarkerSentToRoom),
backgroundColor: Colors.green,
duration: Duration(seconds: 2),
),
@@ -3026,7 +3026,7 @@ class _MapTabState extends State<MapTab> with AutomaticKeepAliveClientMixin {
color: Colors.white,
size: 20,
),
const SizedBox(width: 8),
SizedBox(width: 8),
Text(
AppLocalizations.of(context)!.measureDistance,
style: const TextStyle(

View File

@@ -535,7 +535,7 @@ class _MessagesTabState extends State<MessagesTab> {
}).firstOrNull;
if (recipient == null) {
ToastLogger.error(context, l10n.cannotReplyContactNotFound);
ToastLogger.error(context, AppLocalizations.of(context)!.cannotReplyContactNotFound);
return;
}
}
@@ -564,13 +564,13 @@ class _MessagesTabState extends State<MessagesTab> {
} else {
final senderPrefix = message.senderPublicKeyPrefix;
if (senderPrefix == null || senderPrefix.length < 6) {
ToastLogger.error(context, l10n.cannotReplySenderMissing);
ToastLogger.error(context, AppLocalizations.of(context)!.cannotReplySenderMissing);
return;
}
recipient = contactsProvider.findContactByPrefix(senderPrefix);
if (recipient == null) {
ToastLogger.error(context, l10n.cannotReplyContactNotFound);
ToastLogger.error(context, AppLocalizations.of(context)!.cannotReplyContactNotFound);
return;
}
@@ -1376,7 +1376,7 @@ class _MessagesTabState extends State<MessagesTab> {
final decision = await showDialog<bool>(
context: context,
builder: (dialogContext) => AlertDialog(
title: const Text('Send to Public Channel?'),
title: Text(AppLocalizations.of(context)!.sendToPublicChannel),
content: Text(
'You are about to send $mediaType to the Public Channel. '
'This is not advised because everyone on the mesh may receive it. '
@@ -1389,7 +1389,7 @@ class _MessagesTabState extends State<MessagesTab> {
),
FilledButton(
onPressed: () => Navigator.of(dialogContext).pop(true),
child: const Text('Send anyway'),
child: Text(AppLocalizations.of(context)!.sendAnyway),
),
],
),
@@ -1449,8 +1449,8 @@ class _MessagesTabState extends State<MessagesTab> {
mainAxisSize: MainAxisSize.min,
children: [
ListTile(
leading: const Icon(Icons.search),
title: const Text('Search messages'),
leading: Icon(Icons.search),
title: Text(AppLocalizations.of(context)!.searchMessages),
onTap: () async {
await _runAfterSheetDismissal(sheetContext, () async {
_showFilteredMessageSearch();
@@ -1458,7 +1458,7 @@ class _MessagesTabState extends State<MessagesTab> {
},
),
ListTile(
leading: const Icon(Icons.add_location_alt),
leading: Icon(Icons.add_location_alt),
title: Text(AppLocalizations.of(context)!.sendSarMarker),
onTap: () async {
await _runAfterSheetDismissal(sheetContext, () async {
@@ -1485,8 +1485,8 @@ class _MessagesTabState extends State<MessagesTab> {
),
ListTile(
enabled: !_isSendingImage,
leading: const Icon(Icons.photo_library),
title: const Text('Send image from gallery'),
leading: Icon(Icons.photo_library),
title: Text(AppLocalizations.of(context)!.sendImageFromGallery),
onTap: _isSendingImage
? null
: () async {
@@ -1497,8 +1497,8 @@ class _MessagesTabState extends State<MessagesTab> {
),
ListTile(
enabled: !_isSendingImage,
leading: const Icon(Icons.camera_alt),
title: const Text('Take photo'),
leading: Icon(Icons.camera_alt),
title: Text(AppLocalizations.of(context)!.takePhoto),
onTap: _isSendingImage
? null
: () async {
@@ -1508,9 +1508,9 @@ class _MessagesTabState extends State<MessagesTab> {
},
),
ListTile(
leading: const Icon(Icons.grid_3x3),
title: const Text('Start Tic-Tac-Toe'),
subtitle: const Text('DM only'),
leading: Icon(Icons.grid_3x3),
title: Text(AppLocalizations.of(context)!.startTictactoe),
subtitle: Text(AppLocalizations.of(context)!.dmOnly),
onTap: () async {
await _runAfterSheetDismissal(sheetContext, () async {
await _startTicTacToeGame();

View File

@@ -61,7 +61,7 @@ class _PacketLogScreenState extends State<PacketLogScreen> {
if (context.mounted) {
ScaffoldMessenger.of(
context,
).showSnackBar(const SnackBar(content: Text('No logs to export')));
).showSnackBar(SnackBar(content: Text(AppLocalizations.of(context)!.noLogsToExport)));
}
return;
}
@@ -108,7 +108,7 @@ class _PacketLogScreenState extends State<PacketLogScreen> {
if (context.mounted) {
ScaffoldMessenger.of(
context,
).showSnackBar(const SnackBar(content: Text('No logs to export')));
).showSnackBar(SnackBar(content: Text(AppLocalizations.of(context)!.noLogsToExport)));
}
return;
}
@@ -155,8 +155,8 @@ class _PacketLogScreenState extends State<PacketLogScreen> {
void _copyToClipboard(BuildContext context, BlePacketLog log) {
Clipboard.setData(ClipboardData(text: log.hexData));
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(
content: Text('Hex data copied to clipboard'),
SnackBar(
content: Text(AppLocalizations.of(context)!.hexDataCopiedToClipboard),
duration: Duration(seconds: 1),
),
);
@@ -184,7 +184,7 @@ class _PacketLogScreenState extends State<PacketLogScreen> {
setState(() {});
if (parentContext.mounted) {
ScaffoldMessenger.of(parentContext).showSnackBar(
const SnackBar(content: Text('Packet logs cleared')),
SnackBar(content: Text(AppLocalizations.of(context)!.packetLogsCleared)),
);
}
},
@@ -205,7 +205,7 @@ class _PacketLogScreenState extends State<PacketLogScreen> {
title: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
const Text('BLE Packet Logs'),
Text(AppLocalizations.of(context)!.blePacketLogs),
Text(
'${logs.length} packets',
style: Theme.of(context).textTheme.bodySmall,
@@ -316,23 +316,23 @@ class _PacketLogScreenState extends State<PacketLogScreen> {
icon: const Icon(Icons.share),
tooltip: 'Export logs',
itemBuilder: (context) => [
const PopupMenuItem(
PopupMenuItem(
value: 'csv',
child: Row(
children: [
Icon(Icons.table_chart),
SizedBox(width: 8),
Text('Export as CSV'),
const Icon(Icons.table_chart),
const SizedBox(width: 8),
Text(AppLocalizations.of(context)!.exportAsCsv),
],
),
),
const PopupMenuItem(
PopupMenuItem(
value: 'txt',
child: Row(
children: [
Icon(Icons.text_snippet),
SizedBox(width: 8),
Text('Export as Text'),
const Icon(Icons.text_snippet),
const SizedBox(width: 8),
Text(AppLocalizations.of(context)!.exportAsText),
],
),
),
@@ -411,8 +411,8 @@ class _PacketLogScreenState extends State<PacketLogScreen> {
_filterDirection = null;
});
},
icon: const Icon(Icons.clear_all),
label: const Text('Clear filters'),
icon: Icon(Icons.clear_all),
label: Text(AppLocalizations.of(context)!.clearFilters),
),
],
],
@@ -519,24 +519,24 @@ class _PacketLogCard extends StatelessWidget {
children: [
_FactCard(
icon: isRx ? Icons.call_received : Icons.call_made,
label: 'Direction',
label: AppLocalizations.of(context)!.direction,
value: isRx ? 'RX' : 'TX',
accent: directionColor,
),
_FactCard(
icon: Icons.data_object,
label: 'Size',
label: AppLocalizations.of(context)!.size,
value: '${log.rawData.length} bytes',
),
_FactCard(
icon: Icons.schedule,
label: 'Captured',
label: AppLocalizations.of(context)!.captured,
value: _formatTimestamp(log.timestamp),
),
if (log.responseCode != null)
_FactCard(
icon: Icons.sell,
label: 'Opcode',
label: AppLocalizations.of(context)!.opcode,
value: log.opcodeName,
),
],
@@ -565,7 +565,7 @@ class _PacketLogCard extends StatelessWidget {
const SizedBox(height: 10),
if (rxInfo?.rssiDbm != null)
_SignalMeter(
label: 'RSSI',
label: AppLocalizations.of(context)!.rssi,
valueLabel: '${rxInfo!.rssiDbm} dBm',
normalized: _normalizeRssi(
rxInfo.rssiDbm!.toDouble(),
@@ -573,9 +573,9 @@ class _PacketLogCard extends StatelessWidget {
color: _rssiColor(rxInfo.rssiDbm!.toDouble()),
),
if (rxInfo?.snrDb != null) ...[
const SizedBox(height: 8),
SizedBox(height: 8),
_SignalMeter(
label: 'SNR',
label: AppLocalizations.of(context)!.snr,
valueLabel:
'${rxInfo!.snrDb!.toStringAsFixed(1)} dB',
normalized: _normalizeSnr(rxInfo.snrDb!),
@@ -854,17 +854,17 @@ class _RouteSection extends StatelessWidget {
children: [
_FactCard(
icon: Icons.route,
label: 'Payload',
label: AppLocalizations.of(context)!.payload,
value: _payloadTypeLabel(route.payloadType),
),
_FactCard(
icon: Icons.hub,
label: 'Hops',
label: AppLocalizations.of(context)!.hops,
value: '${route.hopCount}',
),
_FactCard(
icon: Icons.tag,
label: 'Hash size',
label: AppLocalizations.of(context)!.hashSize,
value:
'${route.hashSize} byte${route.hashSize == 1 ? '' : 's'}',
),

View File

@@ -4,6 +4,7 @@ import 'package:provider/provider.dart';
import '../models/config_profile.dart';
import '../services/profile_manager.dart';
import '../services/profile_workspace_coordinator.dart';
import '../l10n/app_localizations.dart';
class ProfilesScreen extends StatelessWidget {
const ProfilesScreen({super.key});
@@ -15,7 +16,7 @@ class ProfilesScreen extends StatelessWidget {
final profiles = profileManager.visibleProfiles;
return Scaffold(
appBar: AppBar(
title: const Text('Profiles'),
title: Text(AppLocalizations.of(context)!.profiles),
actions: [
IconButton(
onPressed: () async {
@@ -30,12 +31,12 @@ class ProfilesScreen extends StatelessWidget {
),
floatingActionButton: FloatingActionButton.extended(
onPressed: () => _createProfile(context),
icon: const Icon(Icons.add),
label: const Text('New Profile'),
icon: Icon(Icons.add),
label: Text(AppLocalizations.of(context)!.newProfile),
),
body: profiles.isEmpty
? const Center(
child: Text('Enable profiles to start managing them.'),
? Center(
child: Text(AppLocalizations.of(context)!.enableProfilesToStartManagingThem),
)
: ListView.builder(
padding: const EdgeInsets.all(16),
@@ -73,7 +74,7 @@ class ProfilesScreen extends StatelessWidget {
).colorScheme.primaryContainer,
borderRadius: BorderRadius.circular(999),
),
child: const Text('Active'),
child: Text(AppLocalizations.of(context)!.active),
),
],
),
@@ -90,7 +91,7 @@ class ProfilesScreen extends StatelessWidget {
.read<ProfileWorkspaceCoordinator>()
.openProfile(profile.id);
},
child: const Text('Open'),
child: Text(AppLocalizations.of(context)!.open),
),
OutlinedButton(
onPressed: () async {
@@ -111,7 +112,7 @@ class ProfilesScreen extends StatelessWidget {
.read<ProfileWorkspaceCoordinator>()
.exportProfile(resolved);
},
child: const Text('Share'),
child: Text(AppLocalizations.of(context)!.share),
),
PopupMenuButton<String>(
onSelected: (value) async {
@@ -132,14 +133,14 @@ class ProfilesScreen extends StatelessWidget {
}
},
itemBuilder: (context) => [
const PopupMenuItem(
PopupMenuItem(
value: 'duplicate',
child: Text('Duplicate'),
child: Text(AppLocalizations.of(context)!.duplicate),
),
if (!profile.isDefault)
const PopupMenuItem(
PopupMenuItem(
value: 'rename',
child: Text('Rename'),
child: Text(AppLocalizations.of(context)!.rename),
),
if (!profile.isDefault)
const PopupMenuItem(
@@ -187,7 +188,7 @@ class ProfilesScreen extends StatelessWidget {
final name = await showDialog<String>(
context: context,
builder: (context) => AlertDialog(
title: const Text('Create Profile'),
title: Text(AppLocalizations.of(context)!.createProfile),
content: TextField(
controller: controller,
autofocus: true,
@@ -200,7 +201,7 @@ class ProfilesScreen extends StatelessWidget {
),
FilledButton(
onPressed: () => Navigator.of(context).pop(controller.text.trim()),
child: const Text('Create'),
child: Text(AppLocalizations.of(context)!.create),
),
],
),
@@ -221,7 +222,7 @@ class ProfilesScreen extends StatelessWidget {
final name = await showDialog<String>(
context: context,
builder: (context) => AlertDialog(
title: const Text('Rename Profile'),
title: Text(AppLocalizations.of(context)!.renameProfile),
content: TextField(
controller: controller,
autofocus: true,

View File

@@ -10,6 +10,7 @@ import '../models/contact.dart';
import '../providers/connection_provider.dart';
import '../providers/contacts_provider.dart';
import '../services/mesh_map_nodes_service.dart';
import '../l10n/app_localizations.dart';
class RepeatersMapScreen extends StatefulWidget {
const RepeatersMapScreen({super.key});
@@ -191,18 +192,18 @@ class _RepeatersMapScreenState extends State<RepeatersMapScreen> {
context,
).textTheme.titleLarge?.copyWith(fontWeight: FontWeight.w700),
),
const SizedBox(height: 12),
SizedBox(height: 12),
_InfoLine(
label: 'Public key',
label: AppLocalizations.of(context)!.publicKeyLabel,
value: repeater.publicKey,
monospace: true,
),
_InfoLine(
label: 'Coordinates',
label: AppLocalizations.of(context)!.coordinates,
value:
'${repeater.latitude.toStringAsFixed(5)}, ${repeater.longitude.toStringAsFixed(5)}',
),
_InfoLine(label: 'Source', value: repeater.sourceLabel),
_InfoLine(label: AppLocalizations.of(context)!.source, value: repeater.sourceLabel),
const SizedBox(height: 12),
if (canAdd)
SizedBox(
@@ -233,8 +234,8 @@ class _RepeatersMapScreenState extends State<RepeatersMapScreen> {
width: double.infinity,
child: FilledButton.icon(
onPressed: null,
icon: const Icon(Icons.check_circle),
label: const Text('Already in contacts'),
icon: Icon(Icons.check_circle),
label: Text(AppLocalizations.of(context)!.alreadyInContacts),
),
),
],
@@ -253,8 +254,8 @@ class _RepeatersMapScreenState extends State<RepeatersMapScreen> {
if (!connectionProvider.deviceInfo.isConnected) {
if (!mounted) return;
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(
content: Text('Connect to a device before adding contacts'),
SnackBar(
content: Text(AppLocalizations.of(context)!.connectToADeviceBeforeAddingContacts),
),
);
return;
@@ -366,7 +367,7 @@ class _RepeatersMapScreenState extends State<RepeatersMapScreen> {
return Scaffold(
appBar: AppBar(
title: const Text('Repeaters Map'),
title: Text(AppLocalizations.of(context)!.repeatersMap),
actions: [
IconButton(
onPressed: _isLoading
@@ -446,18 +447,18 @@ class _RepeatersMapScreenState extends State<RepeatersMapScreen> {
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
children: const [
children: [
_LegendRow(
color: Color(0xFF7C3AED),
label: 'From contacts',
color: const Color(0xFF7C3AED),
label: AppLocalizations.of(context)!.fromContacts,
),
SizedBox(height: 8),
const SizedBox(height: 8),
_LegendRow(
color: Color(0xFFE8681D),
label: 'Online only',
color: const Color(0xFFE8681D),
label: AppLocalizations.of(context)!.onlineOnly,
),
SizedBox(height: 8),
_LegendRow(color: Color(0xFF1B8F4F), label: 'In both'),
const SizedBox(height: 8),
_LegendRow(color: const Color(0xFF1B8F4F), label: AppLocalizations.of(context)!.inBoth),
],
),
),

View File

@@ -240,7 +240,7 @@ class _SarTemplateManagementScreenState extends State<SarTemplateManagementScree
PopupMenuItem(
value: 'import',
child: ListTile(
leading: const Icon(Icons.download),
leading: Icon(Icons.download),
title: Text(l10n.importFromClipboard),
contentPadding: EdgeInsets.zero,
),
@@ -248,7 +248,7 @@ class _SarTemplateManagementScreenState extends State<SarTemplateManagementScree
PopupMenuItem(
value: 'export',
child: ListTile(
leading: const Icon(Icons.upload),
leading: Icon(Icons.upload),
title: Text(l10n.exportToClipboard),
contentPadding: EdgeInsets.zero,
),
@@ -257,7 +257,7 @@ class _SarTemplateManagementScreenState extends State<SarTemplateManagementScree
PopupMenuItem(
value: 'reset',
child: ListTile(
leading: const Icon(Icons.restart_alt),
leading: Icon(Icons.restart_alt),
title: Text(l10n.resetToDefaults),
contentPadding: EdgeInsets.zero,
),
@@ -283,14 +283,14 @@ class _SarTemplateManagementScreenState extends State<SarTemplateManagementScree
size: 64,
color: colorScheme.onSurface.withValues(alpha: 0.3),
),
const SizedBox(height: 16),
SizedBox(height: 16),
Text(
l10n.noTemplates,
style: theme.textTheme.titleMedium?.copyWith(
color: colorScheme.onSurface.withValues(alpha: 0.6),
),
),
const SizedBox(height: 8),
SizedBox(height: 8),
Text(
l10n.tapAddToCreate,
style: theme.textTheme.bodyMedium?.copyWith(
@@ -317,7 +317,7 @@ class _SarTemplateManagementScreenState extends State<SarTemplateManagementScree
),
floatingActionButton: FloatingActionButton.extended(
onPressed: _addTemplate,
icon: const Icon(Icons.add),
icon: Icon(Icons.add),
label: Text(l10n.addTemplate),
),
);

View File

@@ -8,6 +8,7 @@ import '../providers/connection_provider.dart';
import '../providers/contacts_provider.dart';
import '../providers/sensors_provider.dart';
import '../widgets/sensors/sensor_telemetry_card.dart';
import '../l10n/app_localizations.dart';
class SensorsTab extends StatefulWidget {
final bool isActive;
@@ -121,12 +122,12 @@ class _SensorsTabState extends State<SensorsTab> {
shrinkWrap: true,
padding: const EdgeInsets.only(bottom: 20),
children: [
const ListTile(
title: Text(
ListTile(
title: const Text(
'Add sensor node',
style: TextStyle(fontWeight: FontWeight.bold),
),
subtitle: Text('Pick a relay or node to watch in Sensors.'),
subtitle: Text(AppLocalizations.of(context)!.pickARelayOrNodeToWatchInSensors),
),
...candidates.map(
(contact) => ListTile(
@@ -209,7 +210,7 @@ class _SensorsTabState extends State<SensorsTab> {
final didSave = await showDialog<bool>(
context: context,
builder: (dialogContext) => AlertDialog(
title: const Text('Rename value'),
title: Text(AppLocalizations.of(context)!.renameValue),
content: Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
@@ -388,10 +389,10 @@ class _SensorCustomizeView extends StatelessWidget {
title: Text('Customize ${contact?.displayName ?? 'Sensor'}'),
),
body: ListView(
padding: const EdgeInsets.fromLTRB(16, 16, 16, 24),
padding: EdgeInsets.fromLTRB(16, 16, 16, 24),
children: [
_SensorCustomizeSectionCard(
title: 'Live preview',
title: AppLocalizations.of(context)!.livePreview,
subtitle:
'Changes apply immediately. This card matches the current dashboard layout for this sensor.',
child: SensorTelemetryCard(
@@ -414,7 +415,7 @@ class _SensorCustomizeView extends StatelessWidget {
),
),
_SensorCustomizeSectionCard(
title: 'Refresh schedule',
title: AppLocalizations.of(context)!.refreshSchedule,
subtitle:
'Choose how often this sensor should refresh while your device stays connected.',
child: SensorAutoRefreshOptions(
@@ -702,8 +703,8 @@ class SensorMetricSelectorItem extends StatelessWidget {
fontWeight: FontWeight.w700,
),
),
icon: const Icon(Icons.edit_outlined, size: 18),
label: const Text('Rename'),
icon: Icon(Icons.edit_outlined, size: 18),
label: Text(AppLocalizations.of(context)!.rename),
),
if (showChannelChip)
Container(
@@ -911,7 +912,7 @@ class _EmptySensorsStateState extends State<_EmptySensorsState> {
await connectionProvider.discoverNodeType(advertType: 4);
if (mounted) {
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(content: Text('Sensor discovery sent')),
SnackBar(content: Text(AppLocalizations.of(context)!.sensorDiscoverySent)),
);
}
} finally {

View File

@@ -192,7 +192,7 @@ class _SettingsScreenState extends State<SettingsScreen> {
});
ScaffoldMessenger.of(
context,
).showSnackBar(const SnackBar(content: Text('Developer mode disabled')));
).showSnackBar(SnackBar(content: Text(AppLocalizations.of(context)!.developerModeDisabled)));
return;
}
@@ -206,7 +206,7 @@ class _SettingsScreenState extends State<SettingsScreen> {
});
ScaffoldMessenger.of(
context,
).showSnackBar(const SnackBar(content: Text('Developer mode enabled')));
).showSnackBar(SnackBar(content: Text(AppLocalizations.of(context)!.developerModeEnabled)));
return;
}
@@ -328,7 +328,7 @@ class _SettingsScreenState extends State<SettingsScreen> {
final value = await showDialog<double>(
context: context,
builder: (context) => AlertDialog(
title: const Text('Fast GPS movement threshold'),
title: Text(AppLocalizations.of(context)!.fastGpsMovementThreshold),
content: TextField(
controller: controller,
keyboardType: const TextInputType.numberWithOptions(decimal: true),
@@ -369,7 +369,7 @@ class _SettingsScreenState extends State<SettingsScreen> {
final value = await showDialog<int>(
context: context,
builder: (context) => AlertDialog(
title: const Text('Fast GPS active-use interval'),
title: Text(AppLocalizations.of(context)!.fastGpsActiveuseInterval),
content: TextField(
controller: controller,
keyboardType: TextInputType.number,
@@ -558,8 +558,8 @@ class _SettingsScreenState extends State<SettingsScreen> {
if (kIsWeb || defaultTargetPlatform != TargetPlatform.android) {
if (mounted) {
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(
content: Text('Update check is only available on Android'),
SnackBar(
content: Text(AppLocalizations.of(context)!.updateCheckIsOnlyAvailableOnAndroid),
backgroundColor: Colors.orange,
),
);
@@ -583,8 +583,8 @@ class _SettingsScreenState extends State<SettingsScreen> {
if (!updateInfo.isAvailable) {
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(
content: Text('You are running the latest version'),
SnackBar(
content: Text(AppLocalizations.of(context)!.youAreRunningTheLatestVersion),
backgroundColor: Colors.green,
),
);
@@ -593,8 +593,8 @@ class _SettingsScreenState extends State<SettingsScreen> {
if (updateInfo.downloadUrl == null) {
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(
content: Text('Update available but download URL not found'),
SnackBar(
content: Text(AppLocalizations.of(context)!.updateAvailableButDownloadUrlNotFound),
backgroundColor: Colors.orange,
),
);
@@ -736,7 +736,7 @@ class _SettingsScreenState extends State<SettingsScreen> {
title: Row(
children: [
const Icon(Icons.settings, size: 24),
const SizedBox(width: 12),
SizedBox(width: 12),
Text(AppLocalizations.of(context)!.locationPermission),
],
),
@@ -878,7 +878,7 @@ class _SettingsScreenState extends State<SettingsScreen> {
final confirmed = await showDialog<bool>(
context: context,
builder: (context) => AlertDialog(
title: const Text('Clear Messages'),
title: Text(AppLocalizations.of(context)!.clearMessages),
content: const Text(
'This will permanently delete all stored messages. Are you sure?',
),
@@ -907,8 +907,8 @@ class _SettingsScreenState extends State<SettingsScreen> {
if (!mounted) return;
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(
content: Text('All messages cleared'),
SnackBar(
content: Text(AppLocalizations.of(context)!.allMessagesCleared),
backgroundColor: Colors.orange,
),
);
@@ -918,7 +918,7 @@ class _SettingsScreenState extends State<SettingsScreen> {
final confirmed = await showDialog<bool>(
context: context,
builder: (context) => AlertDialog(
title: const Text('Clear online trace database'),
title: Text(AppLocalizations.of(context)!.clearOnlineTraceDatabase),
content: const Text(
'This removes the cached online node database used as a trace fallback.',
),
@@ -951,8 +951,8 @@ class _SettingsScreenState extends State<SettingsScreen> {
});
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(
content: Text('Online trace database cleared'),
SnackBar(
content: Text(AppLocalizations.of(context)!.onlineTraceDatabaseCleared),
backgroundColor: Colors.orange,
),
);
@@ -978,7 +978,7 @@ class _SettingsScreenState extends State<SettingsScreen> {
final selected = await showDialog<int>(
context: context,
builder: (context) => SimpleDialog(
title: const Text('Route path byte size'),
title: Text(AppLocalizations.of(context)!.routePathByteSize),
children: [
for (final value in RouteHashPreferences.supportedSizes)
SimpleDialogOption(
@@ -1024,21 +1024,21 @@ class _SettingsScreenState extends State<SettingsScreen> {
_buildSectionHeader('Appearance'),
_buildSettingsCard([
ListTile(
leading: const Icon(Icons.palette),
leading: Icon(Icons.palette),
title: Text(AppLocalizations.of(context)!.theme),
subtitle: Text(AppTheme.getThemeDisplayName(_selectedTheme)),
trailing: const Icon(Icons.chevron_right),
onTap: () => _showThemeDialog(),
),
ListTile(
leading: const Icon(Icons.language),
leading: Icon(Icons.language),
title: Text(AppLocalizations.of(context)!.language),
subtitle: Text(LocalePreferences.getDisplayName(_selectedLocale)),
trailing: const Icon(Icons.chevron_right),
onTap: () => _showLanguageDialog(),
),
SwitchListTile(
secondary: const Icon(Icons.radar),
secondary: Icon(Icons.radar),
title: Text(AppLocalizations.of(context)!.showRxTxIndicators),
subtitle: Text(
AppLocalizations.of(context)!.displayPacketActivity,
@@ -1056,8 +1056,8 @@ class _SettingsScreenState extends State<SettingsScreen> {
_buildSectionHeader('Notifications'),
_buildSettingsCard([
SwitchListTile(
secondary: const Icon(Icons.chat_bubble_outline),
title: const Text('Message notifications'),
secondary: Icon(Icons.chat_bubble_outline),
title: Text(AppLocalizations.of(context)!.messageNotifications),
subtitle: const Text(
'Notify for incoming direct and channel messages',
),
@@ -1072,8 +1072,8 @@ class _SettingsScreenState extends State<SettingsScreen> {
},
),
SwitchListTile(
secondary: const Icon(Icons.warning_amber_outlined),
title: const Text('SAR alerts'),
secondary: Icon(Icons.warning_amber_outlined),
title: Text(AppLocalizations.of(context)!.sarAlerts),
subtitle: const Text(
'Notify for incoming SAR markers such as found person or fire',
),
@@ -1086,8 +1086,8 @@ class _SettingsScreenState extends State<SettingsScreen> {
},
),
SwitchListTile(
secondary: const Icon(Icons.contact_page_outlined),
title: const Text('Discovery notifications'),
secondary: Icon(Icons.contact_page_outlined),
title: Text(AppLocalizations.of(context)!.discoveryNotifications),
subtitle: const Text(
'Notify when new contacts appear in Discovery',
),
@@ -1102,8 +1102,8 @@ class _SettingsScreenState extends State<SettingsScreen> {
},
),
SwitchListTile(
secondary: const Icon(Icons.system_update),
title: const Text('Update notifications'),
secondary: Icon(Icons.system_update),
title: Text(AppLocalizations.of(context)!.updateNotifications),
subtitle: const Text(
'Notify when a newer app version is available',
),
@@ -1118,8 +1118,8 @@ class _SettingsScreenState extends State<SettingsScreen> {
},
),
SwitchListTile(
secondary: const Icon(Icons.visibility_off_outlined),
title: const Text('Mute while app is open'),
secondary: Icon(Icons.visibility_off_outlined),
title: Text(AppLocalizations.of(context)!.muteWhileAppIsOpen),
subtitle: const Text(
'Do not show local notifications while the app is in the foreground',
),
@@ -1139,7 +1139,7 @@ class _SettingsScreenState extends State<SettingsScreen> {
_buildSettingsCard([
Consumer<AppProvider>(
builder: (context, appProvider, child) => SwitchListTile(
secondary: const Icon(Icons.map_outlined),
secondary: Icon(Icons.map_outlined),
title: Text(AppLocalizations.of(context)!.disableMap),
subtitle: Text(
AppLocalizations.of(context)!.disableMapDescription,
@@ -1152,8 +1152,8 @@ class _SettingsScreenState extends State<SettingsScreen> {
),
Consumer<AppProvider>(
builder: (context, appProvider, child) => SwitchListTile(
secondary: const Icon(Icons.contacts_outlined),
title: const Text('Disable Contacts'),
secondary: Icon(Icons.contacts_outlined),
title: Text(AppLocalizations.of(context)!.disableContacts),
subtitle: const Text(
'Hide the contacts tab to simplify navigation',
),
@@ -1165,8 +1165,8 @@ class _SettingsScreenState extends State<SettingsScreen> {
),
Consumer<AppProvider>(
builder: (context, appProvider, child) => SwitchListTile(
secondary: const Icon(Icons.sensors),
title: const Text('Enable Sensors tab'),
secondary: Icon(Icons.sensors),
title: Text(AppLocalizations.of(context)!.enableSensorsTab),
subtitle: const Text(
'Show a dedicated tab for watched relay and node telemetry',
),
@@ -1181,8 +1181,8 @@ class _SettingsScreenState extends State<SettingsScreen> {
_buildSectionHeader('Messaging'),
_buildSettingsCard([
ListTile(
leading: const Icon(Icons.alt_route),
title: const Text('Route path byte size'),
leading: Icon(Icons.alt_route),
title: Text(AppLocalizations.of(context)!.routePathByteSize),
subtitle: Text(
'$_routeHashSize byte${_routeHashSize == 1 ? '' : 's'} for manual contact routes',
),
@@ -1191,8 +1191,8 @@ class _SettingsScreenState extends State<SettingsScreen> {
),
Consumer<AppProvider>(
builder: (context, appProvider, child) => SwitchListTile(
secondary: const Icon(Icons.swap_horiz),
title: const Text('Auto route rotation'),
secondary: Icon(Icons.swap_horiz),
title: Text(AppLocalizations.of(context)!.autoRouteRotation),
subtitle: const Text(
'Rotate between best known direct paths and flood mode for room/contact sends',
),
@@ -1204,8 +1204,8 @@ class _SettingsScreenState extends State<SettingsScreen> {
),
Consumer<AppProvider>(
builder: (context, appProvider, child) => SwitchListTile(
secondary: const Icon(Icons.route),
title: const Text('Nearest repeater fallback'),
secondary: Icon(Icons.route),
title: Text(AppLocalizations.of(context)!.nearestRepeaterFallback),
subtitle: const Text(
'After normal retries fail, try one final resend through the nearest repeater',
),
@@ -1217,8 +1217,8 @@ class _SettingsScreenState extends State<SettingsScreen> {
),
Consumer<AppProvider>(
builder: (context, appProvider, child) => SwitchListTile(
secondary: const Icon(Icons.route),
title: const Text('Clear path on max retry'),
secondary: Icon(Icons.route),
title: Text(AppLocalizations.of(context)!.clearPathOnMaxRetry),
subtitle: const Text(
'Clear the route only after all retries and final router fallback fail',
),
@@ -1234,13 +1234,13 @@ class _SettingsScreenState extends State<SettingsScreen> {
'Clear Messages',
style: TextStyle(color: Colors.red),
),
subtitle: const Text('Delete all stored message history'),
subtitle: Text(AppLocalizations.of(context)!.deleteAllStoredMessageHistory),
onTap: _clearMessages,
),
Consumer<AppProvider>(
builder: (context, appProvider, child) => ListTile(
leading: const Icon(Icons.format_size),
title: const Text('Message font size'),
leading: Icon(Icons.format_size),
title: Text(AppLocalizations.of(context)!.messageFontSize),
subtitle: Text(
'${(appProvider.messageFontScale * 100).round()}% of default',
),
@@ -1264,8 +1264,8 @@ class _SettingsScreenState extends State<SettingsScreen> {
_buildSectionHeader('Tracing'),
_buildSettingsCard([
ListTile(
leading: const Icon(Icons.cloud_sync),
title: const Text('Online trace database'),
leading: Icon(Icons.cloud_sync),
title: Text(AppLocalizations.of(context)!.onlineTraceDatabase),
subtitle: Text(_onlineTraceCacheSubtitle()),
),
ListTile(
@@ -1299,8 +1299,8 @@ class _SettingsScreenState extends State<SettingsScreen> {
_buildSectionHeader('Map'),
_buildSettingsCard([
SwitchListTile(
secondary: const Icon(Icons.explore),
title: const Text('Rotate map with heading'),
secondary: Icon(Icons.explore),
title: Text(AppLocalizations.of(context)!.rotateMapWithHeading),
subtitle: const Text(
'Rotate the map based on your compass or movement heading',
),
@@ -1313,8 +1313,8 @@ class _SettingsScreenState extends State<SettingsScreen> {
},
),
SwitchListTile(
secondary: const Icon(Icons.bug_report_outlined),
title: const Text('Show map debug info'),
secondary: Icon(Icons.bug_report_outlined),
title: Text(AppLocalizations.of(context)!.showMapDebugInfo),
subtitle: const Text(
'Display extra map diagnostics and internal state overlays',
),
@@ -1327,8 +1327,8 @@ class _SettingsScreenState extends State<SettingsScreen> {
},
),
SwitchListTile(
secondary: const Icon(Icons.fullscreen),
title: const Text('Open map in fullscreen'),
secondary: Icon(Icons.fullscreen),
title: Text(AppLocalizations.of(context)!.openMapInFullscreen),
subtitle: const Text(
'Start the map tab in fullscreen mode by default',
),
@@ -1342,9 +1342,9 @@ class _SettingsScreenState extends State<SettingsScreen> {
),
Consumer<DrawingProvider>(
builder: (context, drawingProvider, child) => SwitchListTile(
secondary: const Icon(Icons.fmd_good_outlined),
title: const Text('Show SAR markers'),
subtitle: const Text('Display SAR markers on the main map'),
secondary: Icon(Icons.fmd_good_outlined),
title: Text(AppLocalizations.of(context)!.showSarMarkersLabel),
subtitle: Text(AppLocalizations.of(context)!.displaySarMarkersOnTheMainMap),
value: drawingProvider.showSarMarkers,
onChanged: (value) {
drawingProvider.toggleSarMarkers();
@@ -1353,8 +1353,8 @@ class _SettingsScreenState extends State<SettingsScreen> {
),
Consumer<MapProvider>(
builder: (context, mapProvider, child) => SwitchListTile(
secondary: const Icon(Icons.timeline),
title: const Text('Show all contact trails'),
secondary: Icon(Icons.timeline),
title: Text(AppLocalizations.of(context)!.showAllContactTrailsLabel),
subtitle: const Text(
'Display location trails for all contacts that have history',
),
@@ -1366,8 +1366,8 @@ class _SettingsScreenState extends State<SettingsScreen> {
),
Consumer<MapProvider>(
builder: (context, mapProvider, child) => SwitchListTile(
secondary: const Icon(Icons.router_outlined),
title: const Text('Hide repeaters on map'),
secondary: Icon(Icons.router_outlined),
title: Text(AppLocalizations.of(context)!.hideRepeatersOnMap),
subtitle: const Text(
'Hide repeater contacts from the main map view',
),
@@ -1397,16 +1397,16 @@ class _SettingsScreenState extends State<SettingsScreen> {
),
_buildSettingsCard([
ListTile(
leading: const Icon(Icons.graphic_eq),
title: const Text('Voice bitrate'),
leading: Icon(Icons.graphic_eq),
title: Text(AppLocalizations.of(context)!.voiceBitrate),
subtitle: Text(_voiceBitrateSubtitle(_voiceBitrate)),
trailing: const Icon(Icons.chevron_right),
onTap: _showVoiceBitrateDialog,
),
Consumer<AppProvider>(
builder: (context, appProvider, child) => SwitchListTile(
secondary: const Icon(Icons.tune),
title: const Text('Band-pass filter voice'),
secondary: Icon(Icons.tune),
title: Text(AppLocalizations.of(context)!.bandpassFilterVoice),
subtitle: const Text(
'Keeps speech frequencies and cuts low/high noise',
),
@@ -1418,9 +1418,9 @@ class _SettingsScreenState extends State<SettingsScreen> {
),
Consumer<AppProvider>(
builder: (context, appProvider, child) => SwitchListTile(
secondary: const Icon(Icons.compress),
title: const Text('Voice compressor'),
subtitle: const Text('Balances quiet and loud speech levels'),
secondary: Icon(Icons.compress),
title: Text(AppLocalizations.of(context)!.voiceCompressor),
subtitle: Text(AppLocalizations.of(context)!.balancesQuietAndLoudSpeechLevels),
value: appProvider.isVoiceCompressorEnabled,
onChanged: (value) async {
await appProvider.toggleVoiceCompressorEnabled(value);
@@ -1429,9 +1429,9 @@ class _SettingsScreenState extends State<SettingsScreen> {
),
Consumer<AppProvider>(
builder: (context, appProvider, child) => SwitchListTile(
secondary: const Icon(Icons.speed),
title: const Text('Voice limiter'),
subtitle: const Text('Prevents clipping peaks before encoding'),
secondary: Icon(Icons.speed),
title: Text(AppLocalizations.of(context)!.voiceLimiter),
subtitle: Text(AppLocalizations.of(context)!.preventsClippingPeaksBeforeEncoding),
value: appProvider.isVoiceLimiterEnabled,
onChanged: (value) async {
await appProvider.toggleVoiceLimiterEnabled(value);
@@ -1440,9 +1440,9 @@ class _SettingsScreenState extends State<SettingsScreen> {
),
Consumer<AppProvider>(
builder: (context, appProvider, child) => SwitchListTile(
secondary: const Icon(Icons.auto_fix_high),
title: const Text('Mic auto gain'),
subtitle: const Text('Lets the recorder adjust input level'),
secondary: Icon(Icons.auto_fix_high),
title: Text(AppLocalizations.of(context)!.micAutoGain),
subtitle: Text(AppLocalizations.of(context)!.letsTheRecorderAdjustInputLevel),
value: appProvider.isVoiceAutoGainEnabled,
onChanged: (value) async {
await appProvider.toggleVoiceAutoGainEnabled(value);
@@ -1451,8 +1451,8 @@ class _SettingsScreenState extends State<SettingsScreen> {
),
Consumer<AppProvider>(
builder: (context, appProvider, child) => SwitchListTile(
secondary: const Icon(Icons.hearing_disabled),
title: const Text('Echo cancellation'),
secondary: Icon(Icons.hearing_disabled),
title: Text(AppLocalizations.of(context)!.echoCancellation),
subtitle: const Text(
'Uses recorder echo cancellation if available',
),
@@ -1464,8 +1464,8 @@ class _SettingsScreenState extends State<SettingsScreen> {
),
Consumer<AppProvider>(
builder: (context, appProvider, child) => SwitchListTile(
secondary: const Icon(Icons.noise_control_off),
title: const Text('Noise suppression'),
secondary: Icon(Icons.noise_control_off),
title: Text(AppLocalizations.of(context)!.noiseSuppression),
subtitle: const Text(
'Uses recorder noise suppression if available',
),
@@ -1477,8 +1477,8 @@ class _SettingsScreenState extends State<SettingsScreen> {
),
Consumer<AppProvider>(
builder: (context, appProvider, child) => SwitchListTile(
secondary: const Icon(Icons.content_cut),
title: const Text('Trim silence in voice messages'),
secondary: Icon(Icons.content_cut),
title: Text(AppLocalizations.of(context)!.trimSilenceInVoiceMessages),
subtitle: const Text(
'Removes long silent parts before sending voice',
),
@@ -1493,15 +1493,15 @@ class _SettingsScreenState extends State<SettingsScreen> {
_buildSectionHeader('Images'),
_buildSettingsCard([
ListTile(
leading: const Icon(Icons.photo_size_select_large),
title: const Text('Max image size'),
leading: Icon(Icons.photo_size_select_large),
title: Text(AppLocalizations.of(context)!.maxImageSize),
subtitle: Text('$_imageMaxSize×$_imageMaxSize px'),
trailing: const Icon(Icons.chevron_right),
onTap: _showImageMaxSizeDialog,
),
ListTile(
leading: const Icon(Icons.tune),
title: const Text('Image compression'),
leading: Icon(Icons.tune),
title: Text(AppLocalizations.of(context)!.imageCompression),
subtitle: Text(
'$_imageCompression / 90 (higher = smaller file)',
),
@@ -1519,8 +1519,8 @@ class _SettingsScreenState extends State<SettingsScreen> {
),
),
SwitchListTile(
secondary: const Icon(Icons.invert_colors),
title: const Text('Grayscale'),
secondary: Icon(Icons.invert_colors),
title: Text(AppLocalizations.of(context)!.grayscale),
subtitle: const Text(
'Converts image to grayscale for smaller file size',
),
@@ -1532,8 +1532,8 @@ class _SettingsScreenState extends State<SettingsScreen> {
},
),
SwitchListTile(
secondary: const Icon(Icons.compress),
title: const Text('Ultra mode'),
secondary: Icon(Icons.compress),
title: Text(AppLocalizations.of(context)!.ultraMode),
subtitle: const Text(
'Extra-aggressive compression with stronger AVIF settings',
),
@@ -1554,8 +1554,8 @@ class _SettingsScreenState extends State<SettingsScreen> {
_buildSectionHeader('Profiles'),
_buildSettingsCard([
SwitchListTile(
secondary: const Icon(Icons.layers_outlined),
title: const Text('Enable Profiles'),
secondary: Icon(Icons.layers_outlined),
title: Text(AppLocalizations.of(context)!.enableProfiles),
subtitle: const Text(
'Show profile management UI while keeping the hidden Default profile as the current workspace.',
),
@@ -1572,8 +1572,8 @@ class _SettingsScreenState extends State<SettingsScreen> {
),
if (_profilesEnabled)
ListTile(
leading: const Icon(Icons.folder_copy_outlined),
title: const Text('Manage profiles'),
leading: Icon(Icons.folder_copy_outlined),
title: Text(AppLocalizations.of(context)!.manageProfiles),
subtitle: Text(
context.watch<ProfileManager>().activeProfileId ==
ConfigProfile.defaultProfileId
@@ -1594,7 +1594,7 @@ class _SettingsScreenState extends State<SettingsScreen> {
_buildSectionHeader('Templates & Help'),
_buildSettingsCard([
ListTile(
leading: const Icon(Icons.location_searching),
leading: Icon(Icons.location_searching),
title: Text(AppLocalizations.of(context)!.sarTemplates),
subtitle: Text(AppLocalizations.of(context)!.manageSarTemplates),
trailing: const Icon(Icons.chevron_right),
@@ -1608,7 +1608,7 @@ class _SettingsScreenState extends State<SettingsScreen> {
},
),
ListTile(
leading: const Icon(Icons.school),
leading: Icon(Icons.school),
title: Text(AppLocalizations.of(context)!.viewWelcomeTutorial),
trailing: const Icon(Icons.chevron_right),
onTap: () async {
@@ -1629,8 +1629,8 @@ class _SettingsScreenState extends State<SettingsScreen> {
_buildSectionHeader(AppLocalizations.of(context)!.permissionsSection),
_buildSettingsCard([
SwitchListTile(
secondary: const Icon(Icons.gps_fixed),
title: const Text('Fast private GPS updates'),
secondary: Icon(Icons.gps_fixed),
title: Text(AppLocalizations.of(context)!.fastPrivateGpsUpdates),
subtitle: const Text(
'Use private zero-hop updates while moving significantly or while actively using map/messages.',
),
@@ -1638,8 +1638,8 @@ class _SettingsScreenState extends State<SettingsScreen> {
onChanged: _setFastLocationUpdatesEnabled,
),
ListTile(
leading: const Icon(Icons.straighten),
title: const Text('Movement threshold'),
leading: Icon(Icons.straighten),
title: Text(AppLocalizations.of(context)!.movementThreshold),
subtitle: Text(
'${_fastLocationMovementThresholdMeters.toStringAsFixed(0)} m',
),
@@ -1647,14 +1647,14 @@ class _SettingsScreenState extends State<SettingsScreen> {
onTap: _editFastLocationMovementThreshold,
),
ListTile(
leading: const Icon(Icons.timer),
title: const Text('Active-use update interval'),
leading: Icon(Icons.timer),
title: Text(AppLocalizations.of(context)!.activeuseUpdateInterval),
subtitle: Text('$_fastLocationActiveCadenceSeconds s'),
trailing: const Icon(Icons.chevron_right),
onTap: _editFastLocationActiveCadence,
),
ListTile(
leading: const Icon(Icons.location_on),
leading: Icon(Icons.location_on),
title: Text(AppLocalizations.of(context)!.locationPermission),
subtitle: FutureBuilder<LocationPermission>(
future: Geolocator.checkPermission(),
@@ -1707,7 +1707,7 @@ class _SettingsScreenState extends State<SettingsScreen> {
_buildSectionHeader(AppLocalizations.of(context)!.about),
_buildSettingsCard([
ListTile(
leading: const Icon(Icons.info),
leading: Icon(Icons.info),
title: Text(AppLocalizations.of(context)!.appVersion),
subtitle: Text(
_packageInfo != null
@@ -1717,12 +1717,12 @@ class _SettingsScreenState extends State<SettingsScreen> {
onTap: _handleVersionTap,
),
ListTile(
leading: const Icon(Icons.badge),
leading: Icon(Icons.badge),
title: Text(AppLocalizations.of(context)!.appName),
subtitle: Text(_packageInfo?.appName ?? 'MeshCore SAR'),
),
ListTile(
leading: const Icon(Icons.description),
leading: Icon(Icons.description),
title: Text(AppLocalizations.of(context)!.aboutMeshCoreSar),
subtitle: Text(
AppLocalizations.of(context)!.aboutDescription.split('\n\n')[0],
@@ -1756,19 +1756,19 @@ class _SettingsScreenState extends State<SettingsScreen> {
_buildSectionHeader('Developer & Data'),
_buildSettingsCard([
ListTile(
leading: const Icon(Icons.bug_report),
leading: Icon(Icons.bug_report),
title: Text(AppLocalizations.of(context)!.packageName),
subtitle: Text(_packageInfo?.packageName ?? 'com.meshcore.sar'),
),
Padding(
padding: const EdgeInsets.fromLTRB(16, 12, 16, 4),
padding: EdgeInsets.fromLTRB(16, 12, 16, 4),
child: Text(
AppLocalizations.of(context)!.sampleData,
style: Theme.of(context).textTheme.titleSmall,
),
),
Padding(
padding: const EdgeInsets.fromLTRB(16, 0, 16, 8),
padding: EdgeInsets.fromLTRB(16, 0, 16, 8),
child: Text(
AppLocalizations.of(context)!.sampleDataDescription,
style: Theme.of(context).textTheme.bodySmall?.copyWith(
@@ -1791,7 +1791,7 @@ class _SettingsScreenState extends State<SettingsScreen> {
height: 16,
child: CircularProgressIndicator(strokeWidth: 2),
)
: const Icon(Icons.add_circle_outline),
: Icon(Icons.add_circle_outline),
label: Text(AppLocalizations.of(context)!.loadSampleData),
style: ElevatedButton.styleFrom(
padding: const EdgeInsets.symmetric(vertical: 12),
@@ -1802,7 +1802,7 @@ class _SettingsScreenState extends State<SettingsScreen> {
Expanded(
child: OutlinedButton.icon(
onPressed: _isLoadingSampleData ? null : _clearSampleData,
icon: const Icon(Icons.delete_outline),
icon: Icon(Icons.delete_outline),
label: Text(AppLocalizations.of(context)!.clearAllData),
style: OutlinedButton.styleFrom(
foregroundColor: Colors.red,
@@ -1908,8 +1908,8 @@ class _SettingsScreenState extends State<SettingsScreen> {
onPressed: _isPreviewLoading
? null
: _selectPreviewImageFromGallery,
icon: const Icon(Icons.photo_library_outlined),
label: const Text('Select from gallery'),
icon: Icon(Icons.photo_library_outlined),
label: Text(AppLocalizations.of(context)!.selectFromGallery),
),
],
),
@@ -2115,21 +2115,21 @@ class _SettingsScreenState extends State<SettingsScreen> {
children: [
Expanded(
child: _voiceStatChip(
label: 'Band-pass',
label: AppLocalizations.of(context)!.bandpass,
enabled: bandPassEnabled,
),
),
const SizedBox(width: 8),
SizedBox(width: 8),
Expanded(
child: _voiceStatChip(
label: 'Compressor',
label: AppLocalizations.of(context)!.compressor,
enabled: compressorEnabled,
),
),
const SizedBox(width: 8),
SizedBox(width: 8),
Expanded(
child: _voiceStatChip(
label: 'Limiter',
label: AppLocalizations.of(context)!.limiter,
enabled: limiterEnabled,
),
),
@@ -2140,21 +2140,21 @@ class _SettingsScreenState extends State<SettingsScreen> {
children: [
Expanded(
child: _voiceStatChip(
label: 'Auto gain',
label: AppLocalizations.of(context)!.autoGain,
enabled: autoGainEnabled,
),
),
const SizedBox(width: 8),
SizedBox(width: 8),
Expanded(
child: _voiceStatChip(
label: 'Echo cancel',
label: AppLocalizations.of(context)!.echoCancel,
enabled: echoCancellationEnabled,
),
),
const SizedBox(width: 8),
SizedBox(width: 8),
Expanded(
child: _voiceStatChip(
label: 'Noise suppress',
label: AppLocalizations.of(context)!.noiseSuppress,
enabled: noiseSuppressionEnabled,
),
),
@@ -2165,7 +2165,7 @@ class _SettingsScreenState extends State<SettingsScreen> {
children: [
Expanded(
child: _voiceStatChip(
label: 'Silence trim',
label: AppLocalizations.of(context)!.silenceTrim,
enabled: silenceTrimEnabled,
),
),
@@ -2237,7 +2237,7 @@ class _SettingsScreenState extends State<SettingsScreen> {
subtitle: Text(AppLocalizations.of(context)!.blueDarkTheme),
value: AppThemeMode.dark,
),
const Divider(),
Divider(),
RadioListTile<AppThemeMode>(
title: Row(
children: [
@@ -2301,7 +2301,7 @@ class _SettingsScreenState extends State<SettingsScreen> {
),
value: AppThemeMode.sarNavyBlue,
),
const Divider(),
Divider(),
RadioListTile<AppThemeMode>(
title: Text(AppLocalizations.of(context)!.autoSystem),
subtitle: Text(
@@ -2368,7 +2368,7 @@ class _SettingsScreenState extends State<SettingsScreen> {
showDialog(
context: context,
builder: (context) => AlertDialog(
title: const Text('Max image size'),
title: Text(AppLocalizations.of(context)!.maxImageSize),
content: SingleChildScrollView(
child: RadioGroup<int>(
groupValue: _imageMaxSize,
@@ -2384,7 +2384,7 @@ class _SettingsScreenState extends State<SettingsScreen> {
value: size,
title: Text('$size×$size px'),
subtitle: size == ImagePreferences.defaultMaxSize
? const Text('Default')
? Text(AppLocalizations.of(context)!.defaultValue)
: null,
),
)
@@ -2406,7 +2406,7 @@ class _SettingsScreenState extends State<SettingsScreen> {
showDialog(
context: context,
builder: (context) => AlertDialog(
title: const Text('Voice bitrate'),
title: Text(AppLocalizations.of(context)!.voiceBitrate),
content: SingleChildScrollView(
child: RadioGroup<int>(
groupValue: _voiceBitrate,
@@ -2425,7 +2425,7 @@ class _SettingsScreenState extends State<SettingsScreen> {
title: Text('$bitrate bps'),
subtitle:
bitrate == VoiceBitratePreferences.defaultBitrate
? const Text('Default')
? Text(AppLocalizations.of(context)!.defaultValue)
: null,
),
)
@@ -2464,16 +2464,16 @@ class _SettingsScreenState extends State<SettingsScreen> {
'Version ${_packageInfo?.version ?? '1.0.0'}',
style: Theme.of(context).textTheme.bodyMedium,
),
const SizedBox(height: 16),
SizedBox(height: 16),
Text(AppLocalizations.of(context)!.aboutDescription),
const SizedBox(height: 16),
SizedBox(height: 16),
Text(
AppLocalizations.of(context)!.technologiesUsed,
style: Theme.of(
context,
).textTheme.titleMedium?.copyWith(fontWeight: FontWeight.bold),
),
const SizedBox(height: 8),
SizedBox(height: 8),
Text(AppLocalizations.of(context)!.technologiesList),
],
),
@@ -2486,7 +2486,7 @@ class _SettingsScreenState extends State<SettingsScreen> {
await launchUrl(url, mode: LaunchMode.externalApplication);
}
},
icon: const Icon(Icons.open_in_new),
icon: Icon(Icons.open_in_new),
label: Text(AppLocalizations.of(context)!.moreInfo),
),
TextButton(

View File

@@ -4,6 +4,7 @@ import 'package:provider/provider.dart';
import '../models/device_info.dart';
import '../providers/connection_provider.dart';
import '../widgets/device/spectrum_scan_panel.dart';
import '../l10n/app_localizations.dart';
class SpectrumScanScreen extends StatefulWidget {
const SpectrumScanScreen({super.key});
@@ -323,8 +324,8 @@ class _SpectrumScanScreenState extends State<SpectrumScanScreen> {
final mergedCandidates = _mergeSectorCandidates(sectorCandidates);
if (mergedCandidates.isEmpty) {
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(
content: Text('Spectrum scan returned no candidate frequencies'),
SnackBar(
content: Text(AppLocalizations.of(context)!.spectrumScanReturnedNoCandidateFrequencies),
backgroundColor: Colors.red,
),
);
@@ -383,7 +384,7 @@ class _SpectrumScanScreenState extends State<SpectrumScanScreen> {
: possibleBracketFrequencies;
return Scaffold(
appBar: AppBar(title: const Text('Spectrum Scan')),
appBar: AppBar(title: Text(AppLocalizations.of(context)!.spectrumScan)),
body: ListView(
padding: const EdgeInsets.all(16),
children: [

View File

@@ -331,7 +331,7 @@ class _WelcomeWizardScreenState extends State<WelcomeWizardScreen> {
if (_currentPage > 0)
TextButton.icon(
onPressed: _previousPage,
icon: const Icon(Icons.arrow_back),
icon: Icon(Icons.arrow_back),
label: Text(l10n.wizardBack),
)
else
@@ -510,7 +510,7 @@ class _WelcomeWizardScreenState extends State<WelcomeWizardScreen> {
? colorScheme.primary
: colorScheme.onSurfaceVariant,
),
const SizedBox(width: 12),
SizedBox(width: 12),
Expanded(
child: Text(
isConnected
@@ -601,7 +601,7 @@ class _WelcomeWizardScreenState extends State<WelcomeWizardScreen> {
_selectedPreset.summary,
style: Theme.of(context).textTheme.bodyMedium,
),
const SizedBox(height: 14),
SizedBox(height: 14),
...[
_FeatureItem(
icon: Icons.rule,

View File

@@ -221,7 +221,7 @@ class _ConnectionDialogState extends State<ConnectionDialog>
Icons.info_outline,
color: Theme.of(context).colorScheme.onPrimaryContainer,
),
const SizedBox(width: 12),
SizedBox(width: 12),
Expanded(
child: Text(
AppLocalizations.of(context)!.defaultPinInfo,
@@ -260,7 +260,7 @@ class _ConnectionDialogState extends State<ConnectionDialog>
context,
).colorScheme.onSurfaceVariant.withValues(alpha: 0.5),
),
const SizedBox(height: 16),
SizedBox(height: 16),
Text(
AppLocalizations.of(context)!.noDevicesFound,
style: TextStyle(
@@ -271,7 +271,7 @@ class _ConnectionDialogState extends State<ConnectionDialog>
const SizedBox(height: 8),
TextButton.icon(
onPressed: _refreshBleDevices,
icon: const Icon(Icons.refresh),
icon: Icon(Icons.refresh),
label: Text(AppLocalizations.of(context)!.scanAgain),
),
],

View File

@@ -133,7 +133,7 @@ class _AddChannelSheetState extends State<AddChannelSheet> {
onPressed: _isCreating
? null
: () => Navigator.of(context).pop(),
icon: const Icon(Icons.close),
icon: Icon(Icons.close),
tooltip: l10n.close,
),
],
@@ -158,7 +158,7 @@ class _AddChannelSheetState extends State<AddChannelSheet> {
size: 20,
color: theme.colorScheme.primary,
),
const SizedBox(width: 8),
SizedBox(width: 8),
Expanded(
child: Text(
l10n.channelTypesInfo,
@@ -170,7 +170,7 @@ class _AddChannelSheetState extends State<AddChannelSheet> {
],
),
),
const SizedBox(height: 16),
SizedBox(height: 16),
TextFormField(
controller: _nameController,
decoration: InputDecoration(
@@ -196,7 +196,7 @@ class _AddChannelSheetState extends State<AddChannelSheet> {
},
),
if (!isHashChannel) ...[
const SizedBox(height: 16),
SizedBox(height: 16),
TextFormField(
controller: _secretController,
decoration: InputDecoration(
@@ -211,7 +211,7 @@ class _AddChannelSheetState extends State<AddChannelSheet> {
textInputAction: TextInputAction.done,
onFieldSubmitted: (_) => _handleCreate(),
),
const SizedBox(height: 8),
SizedBox(height: 8),
Text(
l10n.channelSecretHelp,
style: theme.textTheme.bodySmall?.copyWith(
@@ -236,7 +236,7 @@ class _AddChannelSheetState extends State<AddChannelSheet> {
size: 20,
color: Colors.blue,
),
const SizedBox(width: 8),
SizedBox(width: 8),
Expanded(
child: Text(
l10n.hashChannelInfo,

View File

@@ -7,6 +7,7 @@ import 'package:provider/provider.dart';
import '../../models/contact.dart';
import '../../models/path_history.dart';
import '../../l10n/app_localizations.dart';
import '../../providers/app_provider.dart';
import '../../providers/connection_provider.dart';
import '../../services/contact_route_resolver.dart';
@@ -213,6 +214,16 @@ class _ContactRouteDialogState extends State<ContactRouteDialog> {
);
}
ParsedContactRoute? get _effectiveRoute {
if (_parsedRoute != null) {
return _parsedRoute;
}
if (_errorText != null || _controller.text.trim().isNotEmpty) {
return null;
}
return ContactRouteCodec.direct(hashSize: _selectedHashSize);
}
void _toggleHop(Contact contact) {
setState(() {
if (_selectedMapHops.any(
@@ -415,13 +426,14 @@ class _ContactRouteDialogState extends State<ContactRouteDialog> {
),
trailing: FilledButton.tonal(
onPressed: () => _applyHistoryRecord(record),
child: const Text('Use'),
child: Text(AppLocalizations.of(context)!.use),
),
),
);
}
Widget _buildPreviewSection() {
final previewRoute = _effectiveRoute;
final colorScheme = Theme.of(context).colorScheme;
return Container(
width: double.infinity,
@@ -435,20 +447,21 @@ class _ContactRouteDialogState extends State<ContactRouteDialog> {
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
_parsedRoute == null ? 'Route preview' : _parsedRoute!.summary,
previewRoute == null ? 'Route preview' : previewRoute.summary,
style: Theme.of(context).textTheme.titleSmall,
),
const SizedBox(height: 4),
Text(
_parsedRoute == null
previewRoute == null
? 'Pick relays from the list below or open manual edit if you need exact hop tokens.'
: '${_parsedRoute!.byteLength} bytes • descriptor 0x${_parsedRoute!.encodedPathLen.toRadixString(16).padLeft(2, '0').toUpperCase()}',
: '${previewRoute.byteLength} bytes • descriptor 0x${previewRoute.encodedPathLen.toRadixString(16).padLeft(2, '0').toUpperCase()}',
style: Theme.of(context).textTheme.bodySmall,
),
if (_parsedRoute != null) ...[
if (previewRoute != null &&
previewRoute.canonicalText.isNotEmpty) ...[
const SizedBox(height: 10),
SelectableText(
_parsedRoute!.canonicalText,
previewRoute.canonicalText,
style: Theme.of(
context,
).textTheme.bodyMedium?.copyWith(fontFamily: 'monospace'),
@@ -469,7 +482,7 @@ class _ContactRouteDialogState extends State<ContactRouteDialog> {
border: Border.all(color: Theme.of(context).dividerColor),
),
child: Text(
'No relays selected yet. Add repeaters below or let auto resolve build a route.',
'No relays selected. Save now to use a direct path, or add repeaters below.',
style: Theme.of(context).textTheme.bodyMedium,
),
);
@@ -590,7 +603,7 @@ class _ContactRouteDialogState extends State<ContactRouteDialog> {
_showManualEditor = expanded;
});
},
title: const Text('Manual route edit'),
title: Text(AppLocalizations.of(context)!.manualRouteEdit),
subtitle: const Text(
'Use this when you need to paste or tweak hop tokens directly.',
),
@@ -728,8 +741,8 @@ class _ContactRouteDialogState extends State<ContactRouteDialog> {
children: [
FilledButton.tonalIcon(
onPressed: _resolvePathAutomatically,
icon: const Icon(Icons.auto_fix_high),
label: const Text('Auto resolve'),
icon: Icon(Icons.auto_fix_high),
label: Text(AppLocalizations.of(context)!.autoResolve),
),
OutlinedButton.icon(
onPressed: _selectedMapHops.isEmpty
@@ -740,8 +753,8 @@ class _ContactRouteDialogState extends State<ContactRouteDialog> {
_syncControllerFromSelectedHops();
});
},
icon: const Icon(Icons.clear_all),
label: const Text('Clear relays'),
icon: Icon(Icons.clear_all),
label: Text(AppLocalizations.of(context)!.clearRelays),
),
],
),
@@ -796,7 +809,7 @@ class _ContactRouteDialogState extends State<ContactRouteDialog> {
crossAxisAlignment: CrossAxisAlignment.start,
children: [
if (observedRecord != null) ...[
_buildHistoryRecordTile(observedRecord, title: 'Observed mesh route'),
_buildHistoryRecordTile(observedRecord, title: AppLocalizations.of(context)!.observedMeshRoute),
const SizedBox(height: 16),
],
if (remainingRecords.isEmpty)
@@ -822,6 +835,7 @@ class _ContactRouteDialogState extends State<ContactRouteDialog> {
@override
Widget build(BuildContext context) {
final effectiveRoute = _effectiveRoute;
final appProvider = context.watch<AppProvider>();
final connectionProvider = context.watch<ConnectionProvider>();
final selfPoint =
@@ -939,22 +953,24 @@ class _ContactRouteDialogState extends State<ContactRouteDialog> {
TextButton(
onPressed: () => Navigator.of(
context,
).pop(const ContactRouteDialogResult.clear()),
child: const Text('Clear Route'),
).pop(ContactRouteDialogResult.clear()),
child: Text(
'${AppLocalizations.of(context)!.clearRoute} (${AppLocalizations.of(context)!.flood})',
),
)
else
const SizedBox.shrink(),
FilledButton(
onPressed: _parsedRoute == null
onPressed: effectiveRoute == null
? null
: () => Navigator.of(context).pop(
ContactRouteDialogResult.setWithFallback(
_parsedRoute!,
effectiveRoute,
inferredFallbackLocation:
_buildSyntheticFallbackLocation(),
),
),
child: const Text('Save Path'),
child: Text(AppLocalizations.of(context)!.savePath),
),
],
),

View File

@@ -159,7 +159,7 @@ class ContactTile extends StatelessWidget {
Row(children: [_buildRoutePill(context, contact)]),
] else
Padding(
padding: const EdgeInsets.only(top: 4),
padding: EdgeInsets.only(top: 4),
child: Text(
AppLocalizations.of(context)!.noGpsData,
style: Theme.of(
@@ -361,8 +361,8 @@ class ContactTile extends StatelessWidget {
onTap: () async {
Navigator.pop(sheetContext);
final toggled = contact.toggleFavourite();
final connectionProvider =
context.read<ConnectionProvider>();
final connectionProvider = context
.read<ConnectionProvider>();
await connectionProvider.addOrUpdateContact(toggled);
if (context.mounted) {
// Refresh contact from device so the local cache is updated
@@ -372,12 +372,12 @@ class ContactTile extends StatelessWidget {
),
if (!contact.isChannel)
ListTile(
leading: const Icon(Icons.share_outlined),
title: const Text('Share Contact'),
leading: Icon(Icons.share_outlined),
title: Text(l10n.shareContact),
onTap: () async {
Navigator.pop(sheetContext);
final connectionProvider =
context.read<ConnectionProvider>();
final connectionProvider = context
.read<ConnectionProvider>();
final url = await connectionProvider.exportContactUrl(
contact.publicKey,
);
@@ -385,22 +385,20 @@ class ContactTile extends StatelessWidget {
await Clipboard.setData(ClipboardData(text: url));
if (context.mounted) {
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(
content: Text('Contact link copied to clipboard'),
SnackBar(
content: Text(l10n.contactLinkCopiedToClipboard),
),
);
}
} else if (context.mounted) {
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(
content: Text('Failed to export contact'),
),
SnackBar(content: Text(l10n.failedToExportContact)),
);
}
},
),
ListTile(
leading: const Icon(Icons.message_outlined),
leading: Icon(Icons.message_outlined),
title: Text(l10n.messages),
enabled: canMessage,
onTap: !canMessage
@@ -412,7 +410,7 @@ class ContactTile extends StatelessWidget {
),
if (contact.displayLocation != null)
ListTile(
leading: const Icon(Icons.map_outlined),
leading: Icon(Icons.map_outlined),
title: Text(l10n.viewOnMap),
onTap: () {
Navigator.pop(sheetContext);
@@ -438,8 +436,8 @@ class ContactTile extends StatelessWidget {
),
if (canPreviewSensor)
ListTile(
leading: const Icon(Icons.visibility_outlined),
title: const Text('Preview'),
leading: Icon(Icons.visibility_outlined),
title: Text(l10n.preview),
onTap: () async {
Navigator.pop(sheetContext);
await Future<void>.delayed(Duration.zero);
@@ -467,7 +465,7 @@ class ContactTile extends StatelessWidget {
),
if (canSetPath)
ListTile(
leading: const Icon(Icons.alt_route),
leading: Icon(Icons.alt_route),
title: Text(l10n.contactSetPath),
onTap: () {
Navigator.pop(sheetContext);
@@ -476,8 +474,8 @@ class ContactTile extends StatelessWidget {
),
if (!contact.isChannel)
ListTile(
leading: const Icon(Icons.route),
title: const Text('Trace'),
leading: Icon(Icons.route),
title: Text(l10n.trace),
onTap: () {
Navigator.pop(sheetContext);
_showTraceSheet(context, contact);
@@ -494,8 +492,8 @@ class ContactTile extends StatelessWidget {
),
if (!contact.isPublicChannel)
ListTile(
leading: const Icon(Icons.edit_outlined),
title: const Text('Edit name'),
leading: Icon(Icons.edit_outlined),
title: Text(l10n.editName),
onTap: () {
Navigator.pop(sheetContext);
_showNameOverrideDialog(context, contact);
@@ -503,7 +501,7 @@ class ContactTile extends StatelessWidget {
),
if (!contact.isPublicChannel)
ListTile(
leading: const Icon(Icons.delete, color: Colors.red),
leading: Icon(Icons.delete, color: Colors.red),
title: Text(
contact.isChannel ? l10n.deleteChannel : l10n.deleteContact,
style: const TextStyle(color: Colors.red),
@@ -788,12 +786,13 @@ class ContactTile extends StatelessWidget {
paddedPathBytes: parsedRoute.paddedPathBytes,
);
if (context.mounted) {
final routeLabel = parsedRoute.hopCount == 0
? AppLocalizations.of(context)!.direct
: parsedRoute.canonicalText;
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text(
AppLocalizations.of(
context,
)!.contactRouteSet(parsedRoute.canonicalText),
AppLocalizations.of(context)!.contactRouteSet(routeLabel),
),
),
);
@@ -1321,14 +1320,16 @@ class _NeighboursSheetState extends State<_NeighboursSheet> {
final timestampOrMs = int.tryParse(parts[1]);
final snrRaw = int.tryParse(parts[2]);
final isMs = timestampOrMs != null && timestampOrMs < 1e9;
parsed.add(_Neighbour(
parsed.add(
_Neighbour(
publicKeyHex: keyHex,
lastSeenAt: !isMs && timestampOrMs != null
? DateTime.fromMillisecondsSinceEpoch(timestampOrMs * 1000)
: null,
lastSeenMs: isMs ? timestampOrMs : null,
snrDb: snrRaw != null ? snrRaw / 4.0 : null,
));
),
);
}
}
@@ -1404,10 +1405,7 @@ class _NeighboursSheetState extends State<_NeighboursSheet> {
? Center(
child: Padding(
padding: const EdgeInsets.all(24),
child: Text(
_error!,
textAlign: TextAlign.center,
),
child: Text(_error!, textAlign: TextAlign.center),
),
)
: _neighbours.isEmpty
@@ -1417,15 +1415,12 @@ class _NeighboursSheetState extends State<_NeighboursSheet> {
itemCount: _neighbours.length,
itemBuilder: (context, index) {
final n = _neighbours[index];
final name =
_resolveNeighbourName(n.publicKeyHex);
final name = _resolveNeighbourName(n.publicKeyHex);
final parts = <String>[
if (n.snrDb != null)
'SNR ${n.snrDb!.toStringAsFixed(1)} dB',
if (n.lastSeenAt != null)
_formatAge(n.lastSeenAt!),
if (n.lastSeenMs != null)
'${n.lastSeenMs}ms ago',
if (n.lastSeenAt != null) _formatAge(n.lastSeenAt!),
if (n.lastSeenMs != null) '${n.lastSeenMs}ms ago',
];
return ListTile(
leading: const Icon(Icons.router_outlined),

View File

@@ -401,7 +401,7 @@ class _RoomLoginSheetState extends State<RoomLoginSheet> {
color: colorScheme.onPrimaryContainer,
size: 20,
),
const SizedBox(width: 12),
SizedBox(width: 12),
Expanded(
child: Text(
AppLocalizations.of(context)!.enterPasswordInfo,
@@ -488,7 +488,7 @@ class _RoomLoginSheetState extends State<RoomLoginSheet> {
height: 20,
child: CircularProgressIndicator(strokeWidth: 2),
)
: const Icon(Icons.login),
: Icon(Icons.login),
label: Text(
_isLoggingIn
? AppLocalizations.of(context)!.loggingInDots

View File

@@ -1,5 +1,6 @@
import 'package:flutter/material.dart';
import 'package:meshcore_client/meshcore_client.dart';
import '../../l10n/app_localizations.dart';
class SpectrumScanPanel extends StatelessWidget {
final ThemeData theme;
@@ -103,12 +104,12 @@ class SpectrumScanPanel extends StatelessWidget {
children: [
_LegendChip(
color: theme.colorScheme.primary,
label: 'Quiet',
label: AppLocalizations.of(context)!.quiet,
),
const _LegendChip(color: Colors.orange, label: 'Moderate'),
_LegendChip(color: Colors.orange, label: AppLocalizations.of(context)!.moderate),
_LegendChip(
color: theme.colorScheme.error,
label: 'Busy',
label: AppLocalizations.of(context)!.busy,
),
],
),
@@ -211,8 +212,8 @@ class SpectrumScanPanel extends StatelessWidget {
onPressed: selectedFrequencyKhz == null
? null
: onApplySelected,
icon: const Icon(Icons.north_east),
label: const Text('Use selected frequency'),
icon: Icon(Icons.north_east),
label: Text(AppLocalizations.of(context)!.useSelectedFrequency),
),
),
],

View File

@@ -100,7 +100,7 @@ class CompassContactList extends StatelessWidget {
// Persons/Team section
if (showContacts && persons.isNotEmpty) ...[
Padding(
padding: const EdgeInsets.only(left: 16, bottom: 8, top: 4),
padding: EdgeInsets.only(left: 16, bottom: 8, top: 4),
child: Text(
l10n.teamMembers,
style: Theme.of(
@@ -135,7 +135,7 @@ class CompassContactList extends StatelessWidget {
// Repeaters section
if (showRepeaters && repeaters.isNotEmpty) ...[
Padding(
padding: const EdgeInsets.only(left: 16, bottom: 8, top: 12),
padding: EdgeInsets.only(left: 16, bottom: 8, top: 12),
child: Text(
l10n.repeaters,
style: Theme.of(
@@ -151,7 +151,7 @@ class CompassContactList extends StatelessWidget {
// Rooms section
if (rooms.isNotEmpty) ...[
Padding(
padding: const EdgeInsets.only(left: 16, bottom: 8, top: 12),
padding: EdgeInsets.only(left: 16, bottom: 8, top: 12),
child: Text(
l10n.rooms,
style: Theme.of(

View File

@@ -49,7 +49,7 @@ class _CompassFiltersState extends State<CompassFilters> {
title: Row(
children: [
const Icon(Icons.filter_list, size: 20),
const SizedBox(width: 8),
SizedBox(width: 8),
Text(l10n.filterMarkers),
],
),
@@ -62,7 +62,7 @@ class _CompassFiltersState extends State<CompassFilters> {
_CompactFilterItem(
icon: Icons.timeline,
color: Colors.blue,
label: 'Location Trail',
label: l10n.locationTrail,
value: mapProvider.isTrailVisible,
onChanged: (value) {
mapProvider.toggleTrailVisibility();
@@ -100,7 +100,7 @@ class _CompassFiltersState extends State<CompassFilters> {
const SizedBox(height: 4),
// SAR Markers section
Padding(
padding: const EdgeInsets.only(left: 8, bottom: 8, top: 4),
padding: EdgeInsets.only(left: 8, bottom: 8, top: 4),
child: Text(
l10n.sarMarkers,
style: Theme.of(context).textTheme.labelLarge?.copyWith(
@@ -118,7 +118,7 @@ class _CompassFiltersState extends State<CompassFilters> {
setDialogState(() {});
},
),
const SizedBox(height: 4),
SizedBox(height: 4),
_CompactFilterItem(
icon: Icons.local_fire_department,
color: Colors.red,
@@ -129,7 +129,7 @@ class _CompassFiltersState extends State<CompassFilters> {
setDialogState(() {});
},
),
const SizedBox(height: 4),
SizedBox(height: 4),
_CompactFilterItem(
icon: Icons.home_work,
color: Colors.orange,
@@ -164,7 +164,7 @@ class _CompassFiltersState extends State<CompassFilters> {
Widget build(BuildContext context) {
final l10n = AppLocalizations.of(context)!;
return IconButton(
icon: const Icon(Icons.filter_list),
icon: Icon(Icons.filter_list),
tooltip: l10n.filterMarkersTooltip,
onPressed: () => _showFilterDialog(),
);

View File

@@ -565,7 +565,7 @@ class _LocationFormatToggleState extends State<_LocationFormatToggle> {
Widget build(BuildContext context) {
final position = widget.position;
if (position == null) {
return const SizedBox.shrink();
return SizedBox.shrink();
}
final l10n = AppLocalizations.of(context)!;

View File

@@ -64,7 +64,7 @@ class CompassSarList extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(left: 16, top: 16, bottom: 8),
padding: EdgeInsets.only(left: 16, top: 16, bottom: 8),
child: Text(
l10n.sarMarkers,
style: Theme.of(context).textTheme.titleMedium?.copyWith(

View File

@@ -603,7 +603,7 @@ class DrawingToolbar extends StatelessWidget {
child: Row(
children: [
const Icon(Icons.share),
const SizedBox(width: 12),
SizedBox(width: 12),
Expanded(
child: Text(
AppLocalizations.of(context)!.shareDrawingsCount(
@@ -620,7 +620,7 @@ class DrawingToolbar extends StatelessWidget {
const Divider(),
// Option: Send to Public Channel
ListTile(
leading: const Icon(Icons.public, color: Colors.blue),
leading: Icon(Icons.public, color: Colors.blue),
title: Text(AppLocalizations.of(context)!.publicChannel),
subtitle: Text(AppLocalizations.of(context)!.broadcastToAll),
onTap: () async {

View File

@@ -1,4 +1,5 @@
import 'package:flutter/material.dart';
import '../../l10n/app_localizations.dart';
class MapLegend extends StatelessWidget {
final int teamMemberCount;
@@ -35,31 +36,31 @@ class MapLegend extends StatelessWidget {
_LegendItem(
icon: Icons.person,
color: Theme.of(context).colorScheme.primary,
label: 'Team',
label: AppLocalizations.of(context)!.team,
count: teamMemberCount,
),
_LegendItem(
icon: Icons.person_pin,
color: Colors.green,
label: 'Found',
label: AppLocalizations.of(context)!.found,
count: foundPersonCount,
),
_LegendItem(
icon: Icons.local_fire_department,
color: Colors.red,
label: 'Fire',
label: AppLocalizations.of(context)!.fire,
count: fireCount,
),
_LegendItem(
icon: Icons.home_work,
color: Colors.orange,
label: 'Staging',
label: AppLocalizations.of(context)!.staging,
count: stagingAreaCount,
),
_LegendItem(
icon: Icons.inventory_2,
color: Colors.purple,
label: 'Object',
label: AppLocalizations.of(context)!.object,
count: objectCount,
),
],

View File

@@ -98,7 +98,7 @@ class _MapMessageOverlayState extends State<MapMessageOverlay> {
color: Colors.white,
size: 20,
),
const SizedBox(width: 8),
SizedBox(width: 8),
Expanded(
child: Text(
AppLocalizations.of(context)!.recentMessages,

View File

@@ -39,7 +39,7 @@ class TrailControls extends StatelessWidget {
Row(
children: [
const Icon(Icons.timeline, size: 24),
const SizedBox(width: 12),
SizedBox(width: 12),
Text(
l10n.locationTrail,
style: const TextStyle(
@@ -53,7 +53,7 @@ class TrailControls extends StatelessWidget {
// Trail visibility toggle
SwitchListTile(
secondary: const Icon(Icons.visibility),
secondary: Icon(Icons.visibility),
title: Text(l10n.showTrailOnMap),
subtitle: Text(
mapProvider.isTrailVisible
@@ -75,7 +75,7 @@ class TrailControls extends StatelessWidget {
children: [
OutlinedButton.icon(
onPressed: () => _importTrail(context, mapProvider),
icon: const Icon(Icons.file_upload_outlined),
icon: Icon(Icons.file_upload_outlined),
label: Text(l10n.importFromClipboard),
),
if (mapProvider.currentTrail != null &&
@@ -86,7 +86,7 @@ class TrailControls extends StatelessWidget {
mapProvider.currentTrail!,
customName: 'My Trail',
),
icon: const Icon(Icons.file_download_outlined),
icon: Icon(Icons.file_download_outlined),
label: Text(l10n.exportToClipboard),
),
],
@@ -116,13 +116,13 @@ class TrailControls extends StatelessWidget {
mapProvider.totalTrailDistance,
),
),
const SizedBox(height: 8),
SizedBox(height: 8),
_buildStatRow(
icon: Icons.access_time,
label: l10n.duration,
value: _formatDuration(mapProvider.trailDuration),
),
const SizedBox(height: 8),
SizedBox(height: 8),
_buildStatRow(
icon: Icons.place,
label: l10n.points,
@@ -139,7 +139,7 @@ class TrailControls extends StatelessWidget {
onPressed: () {
_showClearConfirmation(context, mapProvider, l10n);
},
icon: const Icon(Icons.delete_outline),
icon: Icon(Icons.delete_outline),
label: Text(l10n.clearTrail),
style: ElevatedButton.styleFrom(
backgroundColor: Colors.red,
@@ -161,7 +161,7 @@ class TrailControls extends StatelessWidget {
size: 48,
color: Colors.grey,
),
const SizedBox(height: 8),
SizedBox(height: 8),
Text(
l10n.noTrailRecorded,
style: const TextStyle(
@@ -169,7 +169,7 @@ class TrailControls extends StatelessWidget {
fontSize: 16,
),
),
const SizedBox(height: 8),
SizedBox(height: 8),
Text(
l10n.startTrackingToRecord,
style: const TextStyle(
@@ -191,7 +191,7 @@ class TrailControls extends StatelessWidget {
Row(
children: [
const Icon(Icons.people, size: 20),
const SizedBox(width: 8),
SizedBox(width: 8),
Text(
l10n.contactTrails,
style: const TextStyle(
@@ -205,7 +205,7 @@ class TrailControls extends StatelessWidget {
// Show All Contact Trails toggle
SwitchListTile(
secondary: const Icon(Icons.route),
secondary: Icon(Icons.route),
title: Text(l10n.showAllContactTrails),
subtitle: Text(
contactsWithTrails.isEmpty

View File

@@ -200,7 +200,7 @@ class _CustomMapSarUpdateSheetState extends State<CustomMapSarUpdateSheet> {
),
);
}),
const SizedBox(height: 24),
SizedBox(height: 24),
Text(
AppLocalizations.of(context)!.sendTo,
style: TextStyle(
@@ -231,7 +231,7 @@ class _CustomMapSarUpdateSheetState extends State<CustomMapSarUpdateSheet> {
color: Colors.red.withValues(alpha: 0.3),
),
),
child: const Text('No destinations available'),
child: Text(AppLocalizations.of(context)!.noDestinationsAvailableLabel),
);
}
@@ -426,7 +426,7 @@ class _CustomMapSarUpdateSheetState extends State<CustomMapSarUpdateSheet> {
(!_sendToAllContacts && _selectedContact == null)) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text('Select marker type and destination'),
content: Text(AppLocalizations.of(context)!.selectMarkerTypeAndDestination),
),
);
return;
@@ -449,8 +449,8 @@ class _CustomMapSarUpdateSheetState extends State<CustomMapSarUpdateSheet> {
Navigator.pop(context);
}
},
icon: const Icon(Icons.send),
label: const Text('Send'),
icon: Icon(Icons.send),
label: Text(AppLocalizations.of(context)!.send),
),
),
),

View File

@@ -288,7 +288,7 @@ class _MessageBubbleState extends State<MessageBubble> {
children: [
if (!isOwnMessage && widget.onReply != null)
ListTile(
leading: const Icon(Icons.reply),
leading: Icon(Icons.reply),
title: Text(AppLocalizations.of(context)!.reply),
onTap: () {
Navigator.pop(context);
@@ -297,7 +297,7 @@ class _MessageBubbleState extends State<MessageBubble> {
),
// Copy text option
ListTile(
leading: const Icon(Icons.copy),
leading: Icon(Icons.copy),
title: Text(AppLocalizations.of(context)!.copyText),
onTap: () {
Clipboard.setData(ClipboardData(text: widget.message.text));
@@ -329,7 +329,7 @@ class _MessageBubbleState extends State<MessageBubble> {
}
return ListTile(
leading: const Icon(Icons.bookmark_add),
leading: Icon(Icons.bookmark_add),
title: Text(AppLocalizations.of(context)!.saveAsTemplate),
onTap: () {
Navigator.pop(context);
@@ -342,7 +342,7 @@ class _MessageBubbleState extends State<MessageBubble> {
if (widget.message.isSarMarker &&
widget.message.sarGpsCoordinates != null)
ListTile(
leading: const Icon(Icons.share_location),
leading: Icon(Icons.share_location),
title: Text(AppLocalizations.of(context)!.shareLocation),
onTap: () {
Navigator.pop(context);
@@ -352,7 +352,7 @@ class _MessageBubbleState extends State<MessageBubble> {
// Navigate to drawing option (only for drawing messages)
if (widget.message.isDrawing && widget.message.drawingId != null)
ListTile(
leading: const Icon(Icons.map),
leading: Icon(Icons.map),
title: Text(AppLocalizations.of(context)!.navigateToDrawing),
onTap: () {
Navigator.pop(context);
@@ -362,7 +362,7 @@ class _MessageBubbleState extends State<MessageBubble> {
// Copy coordinates option (only for drawing messages)
if (widget.message.isDrawing && widget.message.drawingId != null)
ListTile(
leading: const Icon(Icons.copy),
leading: Icon(Icons.copy),
title: Text(AppLocalizations.of(context)!.copyCoordinates),
onTap: () {
Navigator.pop(context);
@@ -372,7 +372,7 @@ class _MessageBubbleState extends State<MessageBubble> {
// Hide from map option (only for drawing messages)
if (widget.message.isDrawing && widget.message.drawingId != null)
ListTile(
leading: const Icon(Icons.visibility_off),
leading: Icon(Icons.visibility_off),
title: Text(AppLocalizations.of(context)!.hideFromMap),
onTap: () {
Navigator.pop(context);
@@ -381,7 +381,7 @@ class _MessageBubbleState extends State<MessageBubble> {
),
// Technical details option
ListTile(
leading: const Icon(Icons.data_object),
leading: Icon(Icons.data_object),
title: Text(AppLocalizations.of(context)!.technicalDetails),
onTap: () {
Navigator.pop(context);
@@ -392,8 +392,8 @@ class _MessageBubbleState extends State<MessageBubble> {
widget.message.pathLen > 0 &&
widget.message.pathLen < 255)
ListTile(
leading: const Icon(Icons.route),
title: const Text('Trace'),
leading: Icon(Icons.route),
title: Text(AppLocalizations.of(context)!.trace),
onTap: () {
Navigator.pop(context);
_showTraceSheet(context);
@@ -401,7 +401,7 @@ class _MessageBubbleState extends State<MessageBubble> {
),
// Delete message option
ListTile(
leading: const Icon(Icons.delete, color: Colors.red),
leading: Icon(Icons.delete, color: Colors.red),
title: Text(
AppLocalizations.of(context)!.delete,
style: const TextStyle(color: Colors.red),
@@ -686,7 +686,7 @@ class _MessageBubbleState extends State<MessageBubble> {
void copyField(String value) {
Clipboard.setData(ClipboardData(text: value));
ToastLogger.success(context, l10n.textCopiedToClipboard);
ToastLogger.success(context, AppLocalizations.of(context)!.textCopiedToClipboard);
}
showModalBottomSheet(
@@ -708,14 +708,14 @@ class _MessageBubbleState extends State<MessageBubble> {
children: [
Expanded(
child: Text(
l10n.messageTechnicalDetails,
AppLocalizations.of(context)!.messageTechnicalDetails,
style: Theme.of(sheetContext).textTheme.titleLarge,
),
),
IconButton(
onPressed: () => Navigator.pop(sheetContext),
icon: const Icon(Icons.close),
tooltip: l10n.close,
icon: Icon(Icons.close),
tooltip: AppLocalizations.of(context)!.close,
),
],
),
@@ -758,17 +758,17 @@ class _MessageBubbleState extends State<MessageBubble> {
if (widget.message.lastEchoRssiDbm != null ||
snrDb != null ||
rssiDbm != null) ...[
const SizedBox(height: 12),
SizedBox(height: 12),
_techSection(
sheetContext,
icon: Icons.network_check,
title: l10n.linkQuality,
title: AppLocalizations.of(context)!.linkQuality,
child: Column(
children: [
if (rssiDbm != null)
_signalRow(
sheetContext,
label: 'RSSI',
label: AppLocalizations.of(context)!.rssi,
valueLabel: '$rssiDbm dBm',
normalized:
((rssiDbm.toDouble() + 120.0) / 70.0)
@@ -780,10 +780,10 @@ class _MessageBubbleState extends State<MessageBubble> {
: Colors.redAccent,
),
if (snrDb != null) ...[
const SizedBox(height: 8),
SizedBox(height: 8),
_signalRow(
sheetContext,
label: 'SNR',
label: AppLocalizations.of(context)!.snr,
valueLabel: '${snrDb.toStringAsFixed(1)} dB',
normalized: ((snrDb + 20.0) / 40.0).clamp(
0.0,
@@ -800,21 +800,21 @@ class _MessageBubbleState extends State<MessageBubble> {
),
),
],
const SizedBox(height: 12),
SizedBox(height: 12),
_techSection(
sheetContext,
icon: Icons.tune,
title: l10n.delivery,
title: AppLocalizations.of(context)!.delivery,
child: Column(
children: [
_detailRow(
sheetContext,
label: l10n.status,
label: AppLocalizations.of(context)!.status,
value: widget.message.deliveryStatus.name,
),
_detailRow(
sheetContext,
label: 'Received (RFC3339)',
label: AppLocalizations.of(context)!.receivedRfc3339,
value: _formatRfc3339(widget.message.receivedAt),
onCopy: () => copyField(
_formatRfc3339(widget.message.receivedAt),
@@ -823,14 +823,14 @@ class _MessageBubbleState extends State<MessageBubble> {
if (widget.message.expectedAckTag != null)
_detailRow(
sheetContext,
label: l10n.expectedAckTag,
label: AppLocalizations.of(context)!.expectedAckTag,
value: widget.message.expectedAckTag!
.toString(),
),
if (receptionDetails?.senderToReceiptMs != null)
_detailRow(
sheetContext,
label: 'Sender to receipt',
label: AppLocalizations.of(context)!.senderToReceipt,
value: _formatDurationMs(
receptionDetails!.senderToReceiptMs!,
),
@@ -838,7 +838,7 @@ class _MessageBubbleState extends State<MessageBubble> {
if (receptionDetails?.estimatedTransmitMs != null)
_detailRow(
sheetContext,
label: 'Estimated tx',
label: AppLocalizations.of(context)!.estimatedTx,
value: _formatDurationMs(
receptionDetails!.estimatedTransmitMs!,
),
@@ -846,7 +846,7 @@ class _MessageBubbleState extends State<MessageBubble> {
if (receptionDetails?.postTransmitDelayMs != null)
_detailRow(
sheetContext,
label: 'Post-tx delay',
label: AppLocalizations.of(context)!.posttxDelay,
value: _formatDurationMs(
receptionDetails!.postTransmitDelayMs!,
),
@@ -854,44 +854,44 @@ class _MessageBubbleState extends State<MessageBubble> {
if (widget.receivedCopies > 1)
_detailRow(
sheetContext,
label: 'Received copies',
label: AppLocalizations.of(context)!.receivedCopies,
value: '${widget.receivedCopies}',
),
if (widget.message.suggestedTimeoutMs != null)
_detailRow(
sheetContext,
label: 'ACK timeout',
label: AppLocalizations.of(context)!.ackTimeout,
value:
'${widget.message.suggestedTimeoutMs} ms',
),
if (retryCause != null)
_detailRow(
sheetContext,
label: 'Retry cause',
label: AppLocalizations.of(context)!.retryCause,
value: retryCause,
),
if (retryMode != null)
_detailRow(
sheetContext,
label: 'Retry mode',
label: AppLocalizations.of(context)!.retryMode,
value: retryMode,
),
if (widget.message.roundTripTimeMs != null)
_detailRow(
sheetContext,
label: l10n.roundTrip,
label: AppLocalizations.of(context)!.roundTrip,
value: '${widget.message.roundTripTimeMs} ms',
),
if (widget.message.retryAttempt > 0)
_detailRow(
sheetContext,
label: l10n.retryAttempt,
label: AppLocalizations.of(context)!.retryAttempt,
value: '${widget.message.retryAttempt}/4',
),
if (widget.message.lastRetryAt != null)
_detailRow(
sheetContext,
label: 'Last retry',
label: AppLocalizations.of(context)!.lastRetry,
value: _formatRfc3339(
widget.message.lastRetryAt!,
),
@@ -902,49 +902,49 @@ class _MessageBubbleState extends State<MessageBubble> {
if (widget.message.usedFloodFallback)
_detailRow(
sheetContext,
label: l10n.floodFallback,
value: l10n.yes,
label: AppLocalizations.of(context)!.floodFallback,
value: AppLocalizations.of(context)!.yes,
),
if (routeMetadata?.canonicalPath
case final routePath?)
_detailRow(
sheetContext,
label: 'Selected path',
label: AppLocalizations.of(context)!.selectedPath,
value: routePath,
onCopy: () => copyField(routePath),
),
if (retryResult != null)
_detailRow(
sheetContext,
label: 'Retry result',
label: AppLocalizations.of(context)!.retryResult,
value: retryResult,
),
if (packetPathHex != null)
_detailRow(
sheetContext,
label: 'Path bytes',
label: AppLocalizations.of(context)!.pathBytes,
value: packetPathHex,
onCopy: () => copyField(packetPathHex),
),
],
),
),
const SizedBox(height: 12),
SizedBox(height: 12),
_techSection(
sheetContext,
icon: Icons.badge,
title: l10n.identity,
title: AppLocalizations.of(context)!.identity,
child: Column(
children: [
_detailRow(
sheetContext,
label: l10n.messageId,
label: AppLocalizations.of(context)!.messageId,
value: widget.message.id,
onCopy: () => copyField(widget.message.id),
),
_detailRow(
sheetContext,
label: l10n.sender,
label: AppLocalizations.of(context)!.sender,
value:
senderName ??
widget.message.senderName ??
@@ -953,20 +953,20 @@ class _MessageBubbleState extends State<MessageBubble> {
if (senderPrefixHex != null)
_detailRow(
sheetContext,
label: l10n.senderKey,
label: AppLocalizations.of(context)!.senderKey,
value: senderPrefixHex,
onCopy: () => copyField(senderPrefixHex),
),
if (recipientName != null)
_detailRow(
sheetContext,
label: l10n.recipient,
label: AppLocalizations.of(context)!.recipient,
value: recipientName,
),
if (recipientPrefixHex != null)
_detailRow(
sheetContext,
label: l10n.recipientKey,
label: AppLocalizations.of(context)!.recipientKey,
value: recipientPrefixHex,
onCopy: () => copyField(recipientPrefixHex),
),
@@ -974,51 +974,51 @@ class _MessageBubbleState extends State<MessageBubble> {
),
),
if (widget.message.isVoice) ...[
const SizedBox(height: 12),
SizedBox(height: 12),
_techSection(
sheetContext,
icon: Icons.graphic_eq,
title: l10n.voice,
title: AppLocalizations.of(context)!.voice,
child: Column(
children: [
_detailRow(
sheetContext,
label: l10n.voiceId,
label: AppLocalizations.of(context)!.voiceId,
value: widget.message.voiceId ?? '-',
),
_detailRow(
sheetContext,
label: l10n.envelope,
label: AppLocalizations.of(context)!.envelope,
value: envelope != null
? 'VE3 compact'
: l10n.unknown,
: AppLocalizations.of(context)!.unknown,
),
if (voiceSession != null)
_detailRow(
sheetContext,
label: l10n.sessionProgress,
label: AppLocalizations.of(context)!.sessionProgress,
value:
'${voiceSession.receivedCount}/${voiceSession.total} segments',
),
if (voiceSession != null)
_detailRow(
sheetContext,
label: l10n.complete,
label: AppLocalizations.of(context)!.complete,
value: voiceSession.isComplete
? l10n.yes
: l10n.no,
? AppLocalizations.of(context)!.yes
: AppLocalizations.of(context)!.no,
),
if (transferDetails != null)
_detailRow(
sheetContext,
label: 'Transfers',
label: AppLocalizations.of(context)!.transfers,
value: '${transferDetails.totalTransfers}',
),
if (transferDetails != null &&
transferDetails.downloaders.isNotEmpty)
_detailRow(
sheetContext,
label: 'Downloaded by',
label: AppLocalizations.of(context)!.downloadedBy,
value: _formatDownloaderSummary(
transferDetails,
),
@@ -1026,7 +1026,7 @@ class _MessageBubbleState extends State<MessageBubble> {
if (voiceTxEstimate > Duration.zero)
_detailRow(
sheetContext,
label: 'Estimated tx',
label: AppLocalizations.of(context)!.estimatedTx,
value: voiceTxEstimate.inSeconds < 60
? '~${voiceTxEstimate.inSeconds}s'
: '~${voiceTxEstimate.inMinutes}m ${voiceTxEstimate.inSeconds % 60}s',
@@ -1036,32 +1036,32 @@ class _MessageBubbleState extends State<MessageBubble> {
),
],
if (imageEnvelope != null) ...[
const SizedBox(height: 12),
SizedBox(height: 12),
_techSection(
sheetContext,
icon: Icons.image_outlined,
title: 'Image',
title: AppLocalizations.of(context)!.image,
child: Column(
children: [
_detailRow(
sheetContext,
label: l10n.envelope,
label: AppLocalizations.of(context)!.envelope,
value: 'IE1',
),
_detailRow(
sheetContext,
label: 'Format',
label: AppLocalizations.of(context)!.format,
value: imageEnvelope.format.label,
),
_detailRow(
sheetContext,
label: 'Dimensions',
label: AppLocalizations.of(context)!.dimensions,
value:
'${imageEnvelope.width}×${imageEnvelope.height}',
),
_detailRow(
sheetContext,
label: 'Segments',
label: AppLocalizations.of(context)!.segments,
value: imageSession != null
? '${imageSession.receivedCount}/${imageSession.total}'
: '${imageEnvelope.total}',
@@ -1069,22 +1069,22 @@ class _MessageBubbleState extends State<MessageBubble> {
if (imageSession != null)
_detailRow(
sheetContext,
label: l10n.complete,
label: AppLocalizations.of(context)!.complete,
value: imageSession.isComplete
? l10n.yes
: l10n.no,
? AppLocalizations.of(context)!.yes
: AppLocalizations.of(context)!.no,
),
if (transferDetails != null)
_detailRow(
sheetContext,
label: 'Transfers',
label: AppLocalizations.of(context)!.transfers,
value: '${transferDetails.totalTransfers}',
),
if (transferDetails != null &&
transferDetails.downloaders.isNotEmpty)
_detailRow(
sheetContext,
label: 'Downloaded by',
label: AppLocalizations.of(context)!.downloadedBy,
value: _formatDownloaderSummary(
transferDetails,
),
@@ -1092,7 +1092,7 @@ class _MessageBubbleState extends State<MessageBubble> {
if (imageTxEstimate > Duration.zero)
_detailRow(
sheetContext,
label: 'Estimated tx',
label: AppLocalizations.of(context)!.estimatedTx,
value: imageTxEstimate.inSeconds < 60
? '~${imageTxEstimate.inSeconds}s'
: '~${imageTxEstimate.inMinutes}m ${imageTxEstimate.inSeconds % 60}s',
@@ -1107,7 +1107,7 @@ class _MessageBubbleState extends State<MessageBubble> {
dense: true,
visualDensity: VisualDensity.compact,
title: Text(
l10n.rawDump,
AppLocalizations.of(context)!.rawDump,
style: const TextStyle(
fontSize: 12,
fontWeight: FontWeight.w600,
@@ -1432,7 +1432,7 @@ class _MessageBubbleState extends State<MessageBubble> {
final lon = coords.longitude.toStringAsFixed(6);
// Build share text
final shareText = l10n.shareLocationText(
final shareText = AppLocalizations.of(context)!.shareLocationText(
markerInfo,
lat,
lon,
@@ -1441,7 +1441,7 @@ class _MessageBubbleState extends State<MessageBubble> {
// Share the location
SharePlus.instance.share(
ShareParams(text: shareText, subject: l10n.sarLocationShare),
ShareParams(text: shareText, subject: AppLocalizations.of(context)!.sarLocationShare),
);
}
@@ -1852,14 +1852,14 @@ class _MessageBubbleState extends State<MessageBubble> {
}
} else if (message.isChannelMessage) {
if (message.channelIdx == 0) {
channelDisplayName = l10n.publicChannel;
channelDisplayName = AppLocalizations.of(context)!.publicChannel;
} else {
final channelContact = contactsProvider.channels.where((c) {
return c.publicKey.length > 1 && c.publicKey[1] == message.channelIdx;
}).firstOrNull;
channelDisplayName =
channelContact?.getLocalizedDisplayName(context) ??
'${l10n.channel} ${message.channelIdx}';
'${AppLocalizations.of(context)!.channel} ${message.channelIdx}';
}
if (isOwnMessage) {
@@ -1869,14 +1869,14 @@ class _MessageBubbleState extends State<MessageBubble> {
final recipientSubtitle =
isOwnMessage && message.isChannelMessage && recipientDisplayName != null
? '${l10n.channel}: $recipientDisplayName'
? '${AppLocalizations.of(context)!.channel}: $recipientDisplayName'
: recipientDisplayName;
final directCounterpartLabel = !message.isChannelMessage
? (isOwnMessage ? recipientSubtitle : l10n.you)
? (isOwnMessage ? recipientSubtitle : AppLocalizations.of(context)!.you)
: null;
final receivedChannelSubtitle =
!isOwnMessage && message.isChannelMessage && channelDisplayName != null
? '${l10n.channel}: $channelDisplayName'
? '${AppLocalizations.of(context)!.channel}: $channelDisplayName'
: null;
final shouldFloatBubble = widget.isCompact;
@@ -1992,7 +1992,7 @@ class _MessageBubbleState extends State<MessageBubble> {
mainAxisSize: MainAxisSize.min,
children: [
const Icon(Icons.draw, size: 16, color: Colors.white),
const SizedBox(width: 4),
SizedBox(width: 4),
Text(
AppLocalizations.of(context)!.mapDrawing,
style: Theme.of(context).textTheme.labelSmall
@@ -2029,7 +2029,7 @@ class _MessageBubbleState extends State<MessageBubble> {
size: 16,
color: Colors.white,
),
const SizedBox(width: 4),
SizedBox(width: 4),
Text(
AppLocalizations.of(context)!.sarAlert,
style: Theme.of(context).textTheme.labelSmall
@@ -2522,7 +2522,7 @@ class _MessageBubbleState extends State<MessageBubble> {
? Colors.red
: Colors.orange,
),
const SizedBox(width: 3),
SizedBox(width: 3),
Text(
message.deliveredRecipientsCount ==
message.recipients!.length

View File

@@ -55,12 +55,12 @@ class MessagesContent extends StatelessWidget {
size: 64,
color: Theme.of(context).disabledColor,
),
const SizedBox(height: 16),
SizedBox(height: 16),
Text(
AppLocalizations.of(context)!.noMessagesYet,
style: Theme.of(context).textTheme.titleLarge,
),
const SizedBox(height: 8),
SizedBox(height: 8),
Text(
AppLocalizations.of(context)!.pullDownToSync,
style: Theme.of(context).textTheme.bodyMedium,

View File

@@ -111,7 +111,7 @@ class _RecipientSelectorSheetState extends State<RecipientSelectorSheet> {
// Search field
Padding(
padding: const EdgeInsets.all(16),
padding: EdgeInsets.all(16),
child: TextField(
controller: _searchController,
decoration: InputDecoration(
@@ -154,7 +154,7 @@ class _RecipientSelectorSheetState extends State<RecipientSelectorSheet> {
context: context,
icon: Icons.all_inbox,
title: l10n.showAll,
subtitle: 'All messages',
subtitle: l10n.allMessages,
unreadCount: widget.unreadCount,
isSelected: _isSelected('all', null),
onTap: () {
@@ -181,7 +181,7 @@ class _RecipientSelectorSheetState extends State<RecipientSelectorSheet> {
),
if (filteredChannels.isEmpty)
Padding(
padding: const EdgeInsets.all(16),
padding: EdgeInsets.all(16),
child: Text(
l10n.noChannelsFound,
style: Theme.of(context).textTheme.bodyMedium?.copyWith(
@@ -234,7 +234,7 @@ class _RecipientSelectorSheetState extends State<RecipientSelectorSheet> {
),
if (filteredContacts.isEmpty)
Padding(
padding: const EdgeInsets.all(16),
padding: EdgeInsets.all(16),
child: Text(
l10n.noContactsFound,
style: Theme.of(context).textTheme.bodyMedium?.copyWith(
@@ -283,7 +283,7 @@ class _RecipientSelectorSheetState extends State<RecipientSelectorSheet> {
),
if (filteredRooms.isEmpty)
Padding(
padding: const EdgeInsets.all(16),
padding: EdgeInsets.all(16),
child: Text(
l10n.noRoomsFound,
style: Theme.of(context).textTheme.bodyMedium?.copyWith(
@@ -323,7 +323,7 @@ class _RecipientSelectorSheetState extends State<RecipientSelectorSheet> {
size: 64,
color: Theme.of(context).disabledColor,
),
const SizedBox(height: 16),
SizedBox(height: 16),
Text(
l10n.noRecipientsAvailable,
style: Theme.of(context).textTheme.bodyLarge

View File

@@ -381,7 +381,7 @@ class _SarUpdateSheetState extends State<SarUpdateSheet> {
),
);
}),
const SizedBox(height: 16),
SizedBox(height: 16),
// Destination selection (compact dropdown with rooms, channels, and all contacts)
Text(
@@ -505,7 +505,7 @@ class _SarUpdateSheetState extends State<SarUpdateSheet> {
size: 18,
color: colorScheme.onSurface,
),
const SizedBox(width: 12),
SizedBox(width: 12),
Expanded(
child: Text(
AppLocalizations.of(context)!.allTeamContacts,
@@ -593,7 +593,7 @@ class _SarUpdateSheetState extends State<SarUpdateSheet> {
color: Colors.green,
size: 20,
),
const SizedBox(width: 8),
SizedBox(width: 8),
Expanded(
child: Text(
AppLocalizations.of(context)!.directMessagesInfo(chatContactsCount),
@@ -718,7 +718,7 @@ class _SarUpdateSheetState extends State<SarUpdateSheet> {
),
),
),
const SizedBox(width: 16),
SizedBox(width: 16),
Text(
AppLocalizations.of(context)!.gettingLocation,
style: TextStyle(color: colorScheme.onSurface),
@@ -979,7 +979,7 @@ class _SarUpdateSheetState extends State<SarUpdateSheet> {
size: 16,
color: Colors.blue,
),
const SizedBox(width: 8),
SizedBox(width: 8),
Expanded(
child: Text(
AppLocalizations.of(context)!.exampleCoordinates,
@@ -994,7 +994,7 @@ class _SarUpdateSheetState extends State<SarUpdateSheet> {
),
],
const SizedBox(height: 24),
SizedBox(height: 24),
// Optional notes
Text(
@@ -1193,7 +1193,7 @@ class _SarUpdateSheetState extends State<SarUpdateSheet> {
borderRadius: BorderRadius.circular(8),
),
),
icon: const Icon(Icons.send, size: 20),
icon: Icon(Icons.send, size: 20),
label: Text(
AppLocalizations.of(context)!.sendSarMarker,
style: const TextStyle(

View File

@@ -9,6 +9,7 @@ import '../../providers/contacts_provider.dart';
import '../../providers/messages_provider.dart';
import '../../utils/tictactoe_message_parser.dart';
import '../../utils/toast_logger.dart';
import '../../l10n/app_localizations.dart';
class TicTacToeMessageBubble extends StatelessWidget {
final Message message;
@@ -33,7 +34,7 @@ class TicTacToeMessageBubble extends StatelessWidget {
final messages = context.watch<MessagesProvider>().messages;
final selfKey = conn.deviceInfo.publicKey;
if (selfKey == null || selfKey.length < 6) {
return const Text('Tic-Tac-Toe unavailable');
return Text(AppLocalizations.of(context)!.tictactoeUnavailable);
}
final selfKey6 = _key6Hex(selfKey);
@@ -43,7 +44,7 @@ class TicTacToeMessageBubble extends StatelessWidget {
isSentByMe: isSentByMe,
);
if (opponent == null) {
return const Text('Tic-Tac-Toe: opponent unknown');
return Text(AppLocalizations.of(context)!.tictactoeOpponentUnknown);
}
final opponentKey6 = _key6Hex(opponent.publicKey);
@@ -69,7 +70,7 @@ class TicTacToeMessageBubble extends StatelessWidget {
start ??= event.type == TicTacToeEventType.start ? event : null;
if (start == null) {
return const Text('Tic-Tac-Toe: waiting for start');
return Text(AppLocalizations.of(context)!.tictactoeWaitingForStart);
}
final xPlayer = start.playerKey6;

View File

@@ -1,5 +1,6 @@
import 'package:flutter/material.dart';
import 'package:geolocator/geolocator.dart';
import '../l10n/app_localizations.dart';
/// Dialog that requests location permissions on app startup
class PermissionRequestDialog extends StatefulWidget {
@@ -109,8 +110,8 @@ class _PermissionRequestDialogState extends State<PermissionRequestDialog> {
Icons.location_on,
color: Theme.of(context).colorScheme.primary,
),
const SizedBox(width: 12),
const Text('Location Permission'),
SizedBox(width: 12),
Text(AppLocalizations.of(context)!.locationPermission),
],
),
content: Column(

View File

@@ -210,7 +210,7 @@ class _SarTemplateEditDialogState extends State<SarTemplateEditDialog> {
maxLines: 2,
onChanged: (_) => setState(() {}),
),
const SizedBox(height: 16),
SizedBox(height: 16),
// Color picker
Text(
@@ -305,7 +305,7 @@ class _SarTemplateEditDialogState extends State<SarTemplateEditDialog> {
const SizedBox(width: 12),
ElevatedButton.icon(
onPressed: _save,
icon: const Icon(Icons.save),
icon: Icon(Icons.save),
label: Text(l10n.save),
),
],

View File

@@ -1090,7 +1090,7 @@ class SensorTelemetryCard extends StatelessWidget {
),
),
if (state == SensorRefreshState.timeout)
const _InlineAlertBadge(label: 'No response'),
_InlineAlertBadge(label: l10n.noResponse),
],
),
if (telemetry != null) ...[
@@ -1107,8 +1107,8 @@ class SensorTelemetryCard extends StatelessWidget {
),
),
if (state == SensorRefreshState.refreshing)
const _InlineStateMeta(
label: 'Refreshing',
_InlineStateMeta(
label: l10n.refreshing,
color: Color(0xFF266AC2),
spinning: true,
),
@@ -1119,8 +1119,8 @@ class SensorTelemetryCard extends StatelessWidget {
icon: Icons.check_circle,
),
if (state == SensorRefreshState.unavailable)
const _InlineStateMeta(
label: 'Unavailable',
_InlineStateMeta(
label: l10n.unavailable,
color: Color(0xFFB13B55),
icon: Icons.error_outline,
),
@@ -1153,17 +1153,17 @@ class SensorTelemetryCard extends StatelessWidget {
}
if (onCustomize != null) {
items.add(
const PopupMenuItem<String>(
PopupMenuItem<String>(
value: 'customize',
child: Text('Customize fields'),
child: Text(l10n.customizeFields),
),
);
}
if (onRemove != null) {
items.add(
const PopupMenuItem<String>(
PopupMenuItem<String>(
value: 'remove',
child: Text('Remove'),
child: Text(l10n.remove),
),
);
}

View File

@@ -54,10 +54,10 @@ class UpdateDialog extends StatelessWidget {
// Optional: Build timestamp
if (updateInfo.timestamp != null) ...[
const SizedBox(height: 12),
SizedBox(height: 12),
_buildInfoRow(
context,
label: 'Build Time',
label: AppLocalizations.of(context)!.buildTime,
value: _formatTimestamp(updateInfo.timestamp!),
),
],
@@ -131,8 +131,8 @@ class UpdateDialog extends StatelessWidget {
if (updateInfo.downloadUrl == null) {
if (context.mounted) {
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(
content: Text('Download URL not available'),
SnackBar(
content: Text(AppLocalizations.of(context)!.downloadUrlNotAvailable),
backgroundColor: Colors.red,
),
);
@@ -147,8 +147,8 @@ class UpdateDialog extends StatelessWidget {
if (!canLaunch) {
if (context.mounted) {
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(
content: Text('Cannot open download URL'),
SnackBar(
content: Text(AppLocalizations.of(context)!.cannotOpenDownloadUrl),
backgroundColor: Colors.red,
),
);