mirror of
https://github.com/dz0ny/meshcore-sar.git
synced 2026-08-11 16:30:28 +00:00
feat: UX polish, localization, advert relocation, and map filter fixes
- i18n: translate connection screen + chat tab keys into 13 locales; add "Send my contact" (advert) strings in all locales - feat: move self-advert from home header into composer "+" action menu (new lib/utils/advert_helper.dart, always shows Flood/Direct sheet) - fix: hide-repeaters map toggle was bypassed in simple mode - fix: simple mode map now shows only favourite chat contacts - fix: wrap ListTiles in Material (contact_tile secondary actions, inferred contact group card) to satisfy Flutter ink assertions - device-authoritative contact/channel sync and UX review fixes Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -1875,5 +1875,125 @@
|
||||
"enterRegionName": "Regionsname (z.B. auckland)",
|
||||
"noRegionsFound": "Keine Regionen auf diesem Repeater gefunden.",
|
||||
"regionScopeSet": "Regionsbereich auf {name} gesetzt",
|
||||
"regionScopeCleared": "Regionsbereich gelöscht"
|
||||
"regionScopeCleared": "Regionsbereich gelöscht",
|
||||
"simpleMode": "Einfacher Modus",
|
||||
"simpleModeDescription": "Nur Chat und Karte mit favorisierten Kontakten",
|
||||
"simpleModeRequiresLockedDestination": "Aktivieren Sie zuerst „Ziel sperren“ mit einem Kanal, um den einfachen Modus zu nutzen",
|
||||
"noFavouriteContacts": "Keine favorisierten Kontakte",
|
||||
"selectDestinationFirst": "Wählen Sie zuerst einen Kanal, Kontakt oder Raum",
|
||||
"recipientNoLongerAvailable": "Empfänger ist nicht mehr verfügbar",
|
||||
"failedToSendMessage": "Senden fehlgeschlagen: {error}",
|
||||
"tictactoeDirectOnly": "Tic-Tac-Toe funktioniert nur in Direktnachrichten. Wählen Sie zuerst einen Kontakt.",
|
||||
"deviceKeyUnavailable": "Geräteschlüssel ist nicht verfügbar",
|
||||
"imageCompressionFailed": "Bildkomprimierung fehlgeschlagen",
|
||||
"imageFragmentationFailed": "Bildfragmentierung fehlgeschlagen",
|
||||
"failedToAnnounceImage": "Bild konnte nicht angekündigt werden",
|
||||
"noRecipientSelected": "Kein Empfänger ausgewählt",
|
||||
"imageSendFailed": "Bildversand fehlgeschlagen",
|
||||
"microphonePermissionRequiredForVoice": "Für Sprachnachrichten ist die Mikrofonberechtigung erforderlich",
|
||||
"recordingDiscarded": "Aufnahme verworfen",
|
||||
"publicChannelMediaWarning": "Sie sind dabei, {mediaType} an den öffentlichen Kanal zu senden. Das ist nicht ratsam, da alle im Mesh-Netz es empfangen können. Wählen Sie einen privaten oder getaggten Kanal, sofern dies nicht beabsichtigt ist.",
|
||||
"selectPrivateChannelToShareLocation": "Wählen Sie einen privaten Kanal, um Ihren Standort zu teilen.",
|
||||
"stopSharingMyLocation": "Meinen Standort nicht mehr teilen",
|
||||
"shareMyLocation": "Meinen Standort teilen",
|
||||
"stopRecording": "Aufnahme stoppen",
|
||||
"recordVoice": "Sprachnachricht aufnehmen",
|
||||
"moreActions": "Weitere Aktionen",
|
||||
"noMessagesInFilter": "Keine Nachrichten in diesem Filter",
|
||||
"noMatchesInFilter": "Keine Treffer in diesem Filter",
|
||||
"syncFailed": "Synchronisierung fehlgeschlagen: {error}",
|
||||
"invalidLink": "Ungültiger Link",
|
||||
"cannotOpenLink": "Link kann nicht geöffnet werden",
|
||||
"failedToOpenLink": "Link konnte nicht geöffnet werden",
|
||||
"failedToResendMessage": "Nachricht konnte nicht erneut gesendet werden",
|
||||
"retryFailed": "Wiederholung fehlgeschlagen: {error}",
|
||||
"deleteDrawingAndMessage": "Zeichnung & Nachricht löschen",
|
||||
"lastEchoRelay": "Letztes Echo – Relais",
|
||||
"lastEchoPath": "Letztes Echo – Pfad",
|
||||
"lastEchoBytesReport": "Letztes Echo – Byte-Bericht",
|
||||
"noGpsCoordinatesAvailable": "Keine GPS-Koordinaten verfügbar",
|
||||
"notASarMarker": "Keine SAR-Markierung",
|
||||
"failedToSaveTemplate": "Vorlage konnte nicht gespeichert werden: {error}",
|
||||
"drawingNotFound": "Zeichnung nicht gefunden",
|
||||
"unknownDrawingType": "Unbekannter Zeichnungstyp",
|
||||
"customMapMarker": "Eigene Kartenmarkierung",
|
||||
"customMapPointLabel": "Punkt: {point}",
|
||||
"mapIdLabel": "Karten-ID: {id}",
|
||||
"cannotFetchVoice": "Sprachnachricht kann nicht abgerufen werden",
|
||||
"senderContactUnknown": "Absenderkontakt ist unbekannt. Synchronisieren Sie zuerst die Kontakte.",
|
||||
"senderRouteUnknown": "Absenderroute ist unbekannt. Synchronisieren Sie zuerst Kontakte/Pfad.",
|
||||
"messageTooFar": "Nachricht ist zu weit entfernt ({hops} Hops, max. {maxHops}).",
|
||||
"senderRouteNoPathResponse": "Absenderroute hat auf die Pfadprüfung nicht reagiert. Synchronisieren Sie Kontakte/Pfad und versuchen Sie es erneut.",
|
||||
"senderRouteNoRawResponse": "Absenderroute hat auf dem Raw-Transportpfad nicht reagiert.",
|
||||
"voiceFetchOverHops": "Sprachabruf über {hops} Hops kann eine Weile dauern.",
|
||||
"voiceReceiveCanceled": "Sprachempfang abgebrochen",
|
||||
"fetchingMissingVoiceFragments": "Fehlende Sprachfragmente werden abgerufen",
|
||||
"receivingVoice": "Sprachnachricht wird empfangen",
|
||||
"cannotFetchImage": "Bild kann nicht abgerufen werden",
|
||||
"imageFetchOverHops": "Bildabruf über {hops} Hops kann eine Weile dauern.",
|
||||
"imageAlreadyBeingReceived": "Bild wird bereits empfangen",
|
||||
"loadImage": "Bild laden",
|
||||
"imageFetchFailedToSendRequest": "Bildabruf-Anfrage konnte nicht gesendet werden",
|
||||
"imageUnavailable": "Bild derzeit nicht verfügbar",
|
||||
"imageFetchTimedOut": "Bildabruf hat das Zeitlimit überschritten",
|
||||
"imageReceiveCanceled": "Bildempfang abgebrochen",
|
||||
"closeImagePreview": "Bildvorschau schließen",
|
||||
"recordingReleaseToSend": "Aufnahme läuft ... loslassen zum Senden",
|
||||
"sendingVoice": "Sprachnachricht wird gesendet ...",
|
||||
"sendLongPressToRecordVoice": "Senden (lange drücken für Sprachaufnahme)",
|
||||
"discardRecording": "Aufnahme verwerfen",
|
||||
"hopCount": "{count, plural, =1{1 Hop} other{{count} Hops}}",
|
||||
"channelsSectionDescription": "Broadcast-Kanäle für Mesh-Verkehr in der Nähe",
|
||||
"roomsSectionDescription": "Gemeinsame Räume für laufende Teamkoordination",
|
||||
"contactsSectionDescription": "Personen und Geräte, die Sie direkt erreichen können",
|
||||
"noRecentChatters": "Keine kürzlichen Teilnehmer",
|
||||
"public": "Öffentlich",
|
||||
"failedToSendTicTacToeMove": "Tic-Tac-Toe-Zug konnte nicht gesendet werden",
|
||||
"youWon": "Sie haben gewonnen",
|
||||
"opponentWon": "Gegner hat gewonnen",
|
||||
"gameDraw": "Unentschieden",
|
||||
"yourTurn": "Sie sind am Zug",
|
||||
"opponentTurn": "Gegner ist am Zug",
|
||||
"pleaseEnterValidCoordinates": "Bitte geben Sie gültige Koordinaten ein",
|
||||
"locationNotAvailable": "Standort nicht verfügbar",
|
||||
"customCaveMapPoint": "Eigener Höhlenkarten-Punkt",
|
||||
"mapPoint": "Kartenpunkt",
|
||||
"fetchingMissingImageFragments": "Fehlende Fragmente werden abgerufen …",
|
||||
"loadingImage": "Wird geladen …",
|
||||
"receivingImage": "Wird empfangen …",
|
||||
"tapToLoad": "Zum Laden tippen",
|
||||
"connectDevice": "Gerät verbinden",
|
||||
"chooseTransportSubtitle": "Wählen Sie Bluetooth, WiFi oder Seriell als Verbindung",
|
||||
"ble": "BLE",
|
||||
"network": "Netzwerk",
|
||||
"serial": "Seriell",
|
||||
"scan": "Scannen",
|
||||
"pressScanToSearchForDevices": "Drücken Sie auf Scannen, um nach Geräten in der Nähe zu suchen",
|
||||
"failedToConnectToDevice": "Verbindung mit {name} fehlgeschlagen",
|
||||
"unknownDevice": "Unbekanntes Gerät",
|
||||
"showingCachedResultsTapRefresh": "Zwischengespeicherte Ergebnisse werden angezeigt. Tippen Sie auf Aktualisieren, um erneut zu scannen.",
|
||||
"scanningLocalNetworkOnPort": "Lokales Netzwerk wird nach MeshCore-WiFi-Geräten auf Port {port} durchsucht",
|
||||
"cancelScanAndAddServer": "Scan abbrechen und Server hinzufügen",
|
||||
"addServer": "Server hinzufügen",
|
||||
"scanningProgressIps": "Scannen... {scanned}/{total} IPs",
|
||||
"cancelAndEnterManually": "Abbrechen und manuell eingeben",
|
||||
"noRecentOrDiscoveredServers": "Noch keine kürzlich verwendeten oder gefundenen Server",
|
||||
"recentlyUsed": "Kürzlich verwendet",
|
||||
"connecting": "Verbindung wird hergestellt...",
|
||||
"discoveredOnThisNetwork": "In diesem Netzwerk gefunden",
|
||||
"serverNoLongerAvailable": "Server unter {host}:{port} ist nicht mehr verfügbar. Bitte scannen Sie erneut, um aktive Server zu finden.",
|
||||
"failedToConnectToHost": "Verbindung mit {host}:{port} fehlgeschlagen",
|
||||
"enterValidIpAddress": "Geben Sie eine gültige IP-Adresse ein",
|
||||
"enterValidTcpPort": "Geben Sie einen gültigen TCP-Port ein",
|
||||
"ipAddress": "IP-Adresse",
|
||||
"tcpPort": "TCP-Port",
|
||||
"customServerPort": "Benutzerdefinierter Server-Port",
|
||||
"chat": "Chat",
|
||||
"restoringPreviousLink": "Vorherige Verbindung wird wiederhergestellt",
|
||||
"noDeviceConnected": "Kein Gerät verbunden",
|
||||
"sendAdvert": "Meinen Kontakt senden",
|
||||
"advertMode": "Meinen Kontakt senden",
|
||||
"advertModeSubtitle": "Wählen Sie, wie weit Ihre Kontaktdaten übertragen werden sollen.",
|
||||
"floodAdvertSent": "Kontakt über das Mesh-Netzwerk gesendet",
|
||||
"directAdvertSent": "Kontakt an Geräte in der Nähe gesendet"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user