mirror of
https://github.com/zjs81/meshcore-open.git
synced 2026-04-20 22:13:48 +00:00
Add "Set as my location" option to the map long-press bottom sheet, allowing users to set their device position directly from the map. Includes connector, chat, contacts, and message retry service improvements.
3365 lines
86 KiB
Dart
3365 lines
86 KiB
Dart
// ignore: unused_import
|
||
import 'package:intl/intl.dart' as intl;
|
||
import 'app_localizations.dart';
|
||
|
||
// ignore_for_file: type=lint
|
||
|
||
/// The translations for German (`de`).
|
||
class AppLocalizationsDe extends AppLocalizations {
|
||
AppLocalizationsDe([String locale = 'de']) : super(locale);
|
||
|
||
@override
|
||
String get appTitle => 'MeshCore Open';
|
||
|
||
@override
|
||
String get nav_contacts => 'Kontakte';
|
||
|
||
@override
|
||
String get nav_channels => 'Kanäle';
|
||
|
||
@override
|
||
String get nav_map => 'Karte';
|
||
|
||
@override
|
||
String get common_cancel => 'Abbrechen';
|
||
|
||
@override
|
||
String get common_ok => 'OK';
|
||
|
||
@override
|
||
String get common_connect => 'Verbinden';
|
||
|
||
@override
|
||
String get common_unknownDevice => 'Unbekanntes Gerät';
|
||
|
||
@override
|
||
String get common_save => 'Speichern';
|
||
|
||
@override
|
||
String get common_delete => 'Löschen';
|
||
|
||
@override
|
||
String get common_deleteAll => 'Alles löschen';
|
||
|
||
@override
|
||
String get common_close => 'Schließen';
|
||
|
||
@override
|
||
String get common_edit => 'Bearbeiten';
|
||
|
||
@override
|
||
String get common_add => 'Hinzufügen';
|
||
|
||
@override
|
||
String get common_settings => 'Einstellungen';
|
||
|
||
@override
|
||
String get common_disconnect => 'Trennen';
|
||
|
||
@override
|
||
String get common_connected => 'Verbunden';
|
||
|
||
@override
|
||
String get common_disconnected => 'Getrennt';
|
||
|
||
@override
|
||
String get common_create => 'Erstellen';
|
||
|
||
@override
|
||
String get common_continue => 'Fortfahren';
|
||
|
||
@override
|
||
String get common_share => 'Teilen';
|
||
|
||
@override
|
||
String get common_copy => 'Kopieren';
|
||
|
||
@override
|
||
String get common_retry => 'Versuchen';
|
||
|
||
@override
|
||
String get common_hide => 'Ausblenden';
|
||
|
||
@override
|
||
String get common_remove => 'Löschen';
|
||
|
||
@override
|
||
String get common_enable => 'Aktivieren';
|
||
|
||
@override
|
||
String get common_disable => 'Deaktivieren';
|
||
|
||
@override
|
||
String get common_reboot => 'Neustart';
|
||
|
||
@override
|
||
String get common_loading => 'Laden...';
|
||
|
||
@override
|
||
String get common_notAvailable => '—';
|
||
|
||
@override
|
||
String common_voltageValue(String volts) {
|
||
return '$volts V';
|
||
}
|
||
|
||
@override
|
||
String common_percentValue(int percent) {
|
||
return '$percent%';
|
||
}
|
||
|
||
@override
|
||
String get scanner_title => 'MeshCore Open';
|
||
|
||
@override
|
||
String get connectionChoiceUsbLabel => 'USB';
|
||
|
||
@override
|
||
String get connectionChoiceBluetoothLabel => 'Bluetooth';
|
||
|
||
@override
|
||
String get connectionChoiceTcpLabel => 'TCP';
|
||
|
||
@override
|
||
String get tcpScreenTitle => 'Verbinden über TCP';
|
||
|
||
@override
|
||
String get tcpHostLabel => 'IP-Adresse';
|
||
|
||
@override
|
||
String get tcpHostHint => '192.168.40.10';
|
||
|
||
@override
|
||
String get tcpPortLabel => 'Port';
|
||
|
||
@override
|
||
String get tcpPortHint => '5000';
|
||
|
||
@override
|
||
String get tcpStatus_notConnected =>
|
||
'Geben Sie den Endpunkt ein und verbinden Sie sich.';
|
||
|
||
@override
|
||
String tcpStatus_connectingTo(String endpoint) {
|
||
return 'Verbindung zu $endpoint...';
|
||
}
|
||
|
||
@override
|
||
String get tcpErrorHostRequired => 'Eine IP-Adresse ist erforderlich.';
|
||
|
||
@override
|
||
String get tcpErrorPortInvalid =>
|
||
'Die Portnummer muss zwischen 1 und 65535 liegen.';
|
||
|
||
@override
|
||
String get tcpErrorUnsupported =>
|
||
'Die TCP-Übertragung wird auf dieser Plattform nicht unterstützt.';
|
||
|
||
@override
|
||
String get tcpErrorTimedOut => 'Die TCP-Verbindung ist abgelaufen.';
|
||
|
||
@override
|
||
String tcpConnectionFailed(String error) {
|
||
return 'Fehler beim TCP-Verbindungsaufbau: $error';
|
||
}
|
||
|
||
@override
|
||
String get usbScreenTitle => 'Verbinden über USB';
|
||
|
||
@override
|
||
String get usbScreenSubtitle =>
|
||
'Wählen Sie ein erkannten serielles Gerät aus und verbinden Sie es direkt mit Ihrem MeshCore-Knoten.';
|
||
|
||
@override
|
||
String get usbScreenStatus => 'Wählen Sie ein USB-Gerät aus';
|
||
|
||
@override
|
||
String get usbScreenNote =>
|
||
'Die USB-Serielle Schnittstelle ist auf unterstützten Android-Geräten und Desktop-Plattformen aktiv.';
|
||
|
||
@override
|
||
String get usbScreenEmptyState =>
|
||
'Keine USB-Geräte gefunden. Schließen Sie eines an und aktualisieren Sie.';
|
||
|
||
@override
|
||
String get usbErrorPermissionDenied =>
|
||
'Die USB-Berechtigung wurde abgelehnt.';
|
||
|
||
@override
|
||
String get usbErrorDeviceMissing =>
|
||
'Das ausgewählte USB-Gerät ist nicht mehr verfügbar.';
|
||
|
||
@override
|
||
String get usbErrorInvalidPort => 'Wählen Sie ein gültiges USB-Gerät aus.';
|
||
|
||
@override
|
||
String get usbErrorBusy =>
|
||
'Eine weitere Anfrage für eine USB-Verbindung ist bereits in Bearbeitung.';
|
||
|
||
@override
|
||
String get usbErrorNotConnected => 'Es ist kein USB-Gerät angeschlossen.';
|
||
|
||
@override
|
||
String get usbErrorOpenFailed =>
|
||
'Fehlgeschlagen beim Öffnen des ausgewählten USB-Geräts.';
|
||
|
||
@override
|
||
String get usbErrorConnectFailed =>
|
||
'Keine Verbindung zum ausgewählten USB-Gerät hergestellt.';
|
||
|
||
@override
|
||
String get usbErrorUnsupported =>
|
||
'Die USB-Serielle Schnittstelle wird auf dieser Plattform nicht unterstützt.';
|
||
|
||
@override
|
||
String get usbErrorAlreadyActive =>
|
||
'Eine USB-Verbindung ist bereits hergestellt.';
|
||
|
||
@override
|
||
String get usbErrorNoDeviceSelected => 'Kein USB-Gerät wurde ausgewählt.';
|
||
|
||
@override
|
||
String get usbErrorPortClosed => 'Die USB-Verbindung ist nicht aktiv.';
|
||
|
||
@override
|
||
String get usbErrorConnectTimedOut =>
|
||
'Verbindung konnte nicht hergestellt werden. Stellen Sie sicher, dass das Gerät die entsprechende USB-Firmware enthält.';
|
||
|
||
@override
|
||
String get usbFallbackDeviceName => 'Web-Serielle Geräte';
|
||
|
||
@override
|
||
String get usbStatus_notConnected => 'Wählen Sie ein USB-Gerät aus';
|
||
|
||
@override
|
||
String get usbStatus_connecting => 'Verbindung zum USB-Gerät...';
|
||
|
||
@override
|
||
String get usbStatus_searching => 'Suche nach USB-Geräten...';
|
||
|
||
@override
|
||
String usbConnectionFailed(String error) {
|
||
return 'Fehler beim USB-Verbindungsaufbau: $error';
|
||
}
|
||
|
||
@override
|
||
String get scanner_scanning => 'Scannen nach Geräten...';
|
||
|
||
@override
|
||
String get scanner_connecting => 'Verbunden...';
|
||
|
||
@override
|
||
String get scanner_disconnecting => 'Trenne...';
|
||
|
||
@override
|
||
String get scanner_notConnected => 'Nicht verbunden';
|
||
|
||
@override
|
||
String scanner_connectedTo(String deviceName) {
|
||
return 'Verbunden mit $deviceName';
|
||
}
|
||
|
||
@override
|
||
String get scanner_searchingDevices => 'Suche nach MeshCore-Geräten...';
|
||
|
||
@override
|
||
String get scanner_tapToScan =>
|
||
'Tippen Sie auf Scan, um MeshCore-Geräte zu finden.';
|
||
|
||
@override
|
||
String scanner_connectionFailed(String error) {
|
||
return 'Verbindungsfehler: $error';
|
||
}
|
||
|
||
@override
|
||
String get scanner_stop => 'Stopp';
|
||
|
||
@override
|
||
String get scanner_scan => 'Scannen';
|
||
|
||
@override
|
||
String get scanner_bluetoothOff => 'Bluetooth ist deaktiviert.';
|
||
|
||
@override
|
||
String get scanner_bluetoothOffMessage =>
|
||
'Bitte aktivieren Sie Bluetooth, um nach Geräten zu suchen.';
|
||
|
||
@override
|
||
String get scanner_chromeRequired => 'Chrome Browser erforderlich';
|
||
|
||
@override
|
||
String get scanner_chromeRequiredMessage =>
|
||
'Diese Webanwendung erfordert Google Chrome oder einen Chromium-basierten Browser für die Bluetooth-Unterstützung.';
|
||
|
||
@override
|
||
String get scanner_enableBluetooth => 'Bluetooth aktivieren';
|
||
|
||
@override
|
||
String get device_quickSwitch => 'Schnelles Umschalten';
|
||
|
||
@override
|
||
String get device_meshcore => 'MeshCore';
|
||
|
||
@override
|
||
String get settings_title => 'Einstellungen';
|
||
|
||
@override
|
||
String get settings_deviceInfo => 'Geräteinformationen';
|
||
|
||
@override
|
||
String get settings_appSettings => 'App-Einstellungen';
|
||
|
||
@override
|
||
String get settings_appSettingsSubtitle =>
|
||
'Benachrichtigungen, Messaging und Kartenwahrnehmung';
|
||
|
||
@override
|
||
String get settings_nodeSettings => 'Knoten-Einstellungen';
|
||
|
||
@override
|
||
String get settings_nodeName => 'Knotenname';
|
||
|
||
@override
|
||
String get settings_nodeNameNotSet => 'Nicht festgelegt';
|
||
|
||
@override
|
||
String get settings_nodeNameHint => 'Gebe den Knotenamen ein';
|
||
|
||
@override
|
||
String get settings_nodeNameUpdated => 'Name aktualisiert';
|
||
|
||
@override
|
||
String get settings_radioSettings => 'Funk Einstellungen';
|
||
|
||
@override
|
||
String get settings_radioSettingsSubtitle =>
|
||
'Frequenz, Leistung, Verbreitungsfaktor';
|
||
|
||
@override
|
||
String get settings_radioSettingsUpdated => 'Funkparameter aktualisiert';
|
||
|
||
@override
|
||
String get settings_location => 'Ort';
|
||
|
||
@override
|
||
String get settings_locationSubtitle => 'GPS-Koordinaten';
|
||
|
||
@override
|
||
String get settings_locationUpdated => 'Ort aktualisiert';
|
||
|
||
@override
|
||
String get settings_locationBothRequired =>
|
||
'Bitte geben Sie sowohl Breite als auch Längengrad ein.';
|
||
|
||
@override
|
||
String get settings_locationInvalid => 'Ungültige Breiten- oder Längengrade.';
|
||
|
||
@override
|
||
String get settings_locationGPSEnable => 'GPS aktivieren';
|
||
|
||
@override
|
||
String get settings_locationGPSEnableSubtitle =>
|
||
'Aktiviert GPS zur automatischen Aktualisierung des Standorts.';
|
||
|
||
@override
|
||
String get settings_locationIntervalSec => 'Intervall für GPS (Sekunden)';
|
||
|
||
@override
|
||
String get settings_locationIntervalInvalid =>
|
||
'Das Intervall muss mindestens 60 Sekunden und weniger als 86400 Sekunden betragen.';
|
||
|
||
@override
|
||
String get settings_latitude => 'Breitengrad';
|
||
|
||
@override
|
||
String get settings_longitude => 'Längengrad';
|
||
|
||
@override
|
||
String get settings_contactSettings => 'Kontakteinstellungen';
|
||
|
||
@override
|
||
String get settings_contactSettingsSubtitle =>
|
||
'Einstellungen für das Hinzufügen von Kontakten';
|
||
|
||
@override
|
||
String get settings_privacyMode => 'Privatsphäreeinstellung';
|
||
|
||
@override
|
||
String get settings_privacyModeSubtitle =>
|
||
'Verstecken Sie Name/Ort in Ankündigungen';
|
||
|
||
@override
|
||
String get settings_privacyModeToggle =>
|
||
'Aktivieren Sie die Privatsphäreeinstellung, um Ihren Namen und Ihre Standortdaten in Ankündigungen zu verbergen.';
|
||
|
||
@override
|
||
String get settings_privacyModeEnabled => 'Datenschutzmodus aktiviert';
|
||
|
||
@override
|
||
String get settings_privacyModeDisabled => 'Datenschutzmodus deaktiviert';
|
||
|
||
@override
|
||
String get settings_actions => 'Aktionen';
|
||
|
||
@override
|
||
String get settings_sendAdvertisement => 'Sende Ankündigung';
|
||
|
||
@override
|
||
String get settings_sendAdvertisementSubtitle => 'Sende eine Ankündigung';
|
||
|
||
@override
|
||
String get settings_advertisementSent => 'Ankündigung gesendet';
|
||
|
||
@override
|
||
String get settings_syncTime => 'Zeitsynchronisierung';
|
||
|
||
@override
|
||
String get settings_syncTimeSubtitle =>
|
||
'Stelle die Gerätezeit auf die Uhrzeit des Telefons ein';
|
||
|
||
@override
|
||
String get settings_timeSynchronized => 'Zeit synchronisiert';
|
||
|
||
@override
|
||
String get settings_refreshContacts => 'Kontakte aktualisieren';
|
||
|
||
@override
|
||
String get settings_refreshContactsSubtitle =>
|
||
'Kontakt-Liste vom Gerät neu laden';
|
||
|
||
@override
|
||
String get settings_rebootDevice => 'Gerät neu starten';
|
||
|
||
@override
|
||
String get settings_rebootDeviceSubtitle => 'MeshCore-Gerät neu starten';
|
||
|
||
@override
|
||
String get settings_rebootDeviceConfirm =>
|
||
'Sind Sie sicher, dass Sie das Gerät neu starten möchten? Sie werden getrennt.';
|
||
|
||
@override
|
||
String get settings_debug => 'Fehlerbehebung';
|
||
|
||
@override
|
||
String get settings_bleDebugLog => 'BLE-Debug-Protokoll';
|
||
|
||
@override
|
||
String get settings_bleDebugLogSubtitle =>
|
||
'BLE-Befehle, Antworten und Rohdaten';
|
||
|
||
@override
|
||
String get settings_appDebugLog => 'App-Debug-Protokoll';
|
||
|
||
@override
|
||
String get settings_appDebugLogSubtitle => 'Anwendung Debug-Nachrichten';
|
||
|
||
@override
|
||
String get settings_about => 'Über';
|
||
|
||
@override
|
||
String settings_aboutVersion(String version) {
|
||
return 'MeshCore Open v$version';
|
||
}
|
||
|
||
@override
|
||
String get settings_aboutLegalese => 'MeshCore Open Source Projekt 2026';
|
||
|
||
@override
|
||
String get settings_aboutDescription =>
|
||
'Ein Open-Source-Flutter-Client für MeshCore LoRa-Meshnetzwerkgeräte.';
|
||
|
||
@override
|
||
String get settings_aboutOpenMeteoAttribution =>
|
||
'LOS-Höhendaten: Open-Meteo (CC BY 4.0)';
|
||
|
||
@override
|
||
String get settings_infoName => 'Name';
|
||
|
||
@override
|
||
String get settings_infoId => 'ID';
|
||
|
||
@override
|
||
String get settings_infoStatus => 'Status';
|
||
|
||
@override
|
||
String get settings_infoBattery => 'Akku';
|
||
|
||
@override
|
||
String get settings_infoPublicKey => 'Öffentlicher Schlüssel';
|
||
|
||
@override
|
||
String get settings_infoContactsCount => 'Anzahl Kontakte';
|
||
|
||
@override
|
||
String get settings_infoChannelCount => 'Anzahl Kanäle';
|
||
|
||
@override
|
||
String get settings_presets => 'Voreinstellungen';
|
||
|
||
@override
|
||
String get settings_frequency => 'Frequenz (MHz)';
|
||
|
||
@override
|
||
String get settings_frequencyHelper => '300,00 - 2.500,00';
|
||
|
||
@override
|
||
String get settings_frequencyInvalid => 'Ungültige Frequenz (300-2500 MHz)';
|
||
|
||
@override
|
||
String get settings_bandwidth => 'Bandbreite';
|
||
|
||
@override
|
||
String get settings_spreadingFactor => 'Verteilungsfaktor';
|
||
|
||
@override
|
||
String get settings_codingRate => 'Kodierungsrate';
|
||
|
||
@override
|
||
String get settings_txPower => 'TX-Leistung (dBm)';
|
||
|
||
@override
|
||
String get settings_txPowerHelper => '0 - 22';
|
||
|
||
@override
|
||
String get settings_txPowerInvalid => 'Ungültige TX-Leistung (0-22 dBm)';
|
||
|
||
@override
|
||
String get settings_clientRepeat => 'Wiederholung, ohne Stromanschluss';
|
||
|
||
@override
|
||
String get settings_clientRepeatSubtitle =>
|
||
'Ermöglichen Sie diesem Gerät, Mesh-Pakete für andere zu wiederholen.';
|
||
|
||
@override
|
||
String get settings_clientRepeatFreqWarning =>
|
||
'Die Kommunikation ohne Stromversorgung erfordert Frequenzen von 433, 869 oder 918 MHz.';
|
||
|
||
@override
|
||
String settings_error(String message) {
|
||
return 'Fehler: $message';
|
||
}
|
||
|
||
@override
|
||
String get appSettings_title => 'App-Einstellungen';
|
||
|
||
@override
|
||
String get appSettings_appearance => 'Aussehen';
|
||
|
||
@override
|
||
String get appSettings_theme => 'Theme';
|
||
|
||
@override
|
||
String get appSettings_themeSystem => 'Systemstandard';
|
||
|
||
@override
|
||
String get appSettings_themeLight => 'Hell';
|
||
|
||
@override
|
||
String get appSettings_themeDark => 'Dunkel';
|
||
|
||
@override
|
||
String get appSettings_language => 'Sprache';
|
||
|
||
@override
|
||
String get appSettings_languageSystem => 'Systemstandard';
|
||
|
||
@override
|
||
String get appSettings_languageEn => 'English';
|
||
|
||
@override
|
||
String get appSettings_languageFr => 'Français';
|
||
|
||
@override
|
||
String get appSettings_languageEs => 'Español';
|
||
|
||
@override
|
||
String get appSettings_languageDe => 'Deutsch';
|
||
|
||
@override
|
||
String get appSettings_languagePl => 'Polski';
|
||
|
||
@override
|
||
String get appSettings_languageSl => 'Slovenščina';
|
||
|
||
@override
|
||
String get appSettings_languagePt => 'Português';
|
||
|
||
@override
|
||
String get appSettings_languageIt => 'Italiano';
|
||
|
||
@override
|
||
String get appSettings_languageZh => '中文';
|
||
|
||
@override
|
||
String get appSettings_languageSv => 'Svenska';
|
||
|
||
@override
|
||
String get appSettings_languageNl => 'Nederlands';
|
||
|
||
@override
|
||
String get appSettings_languageSk => 'Slovenčina';
|
||
|
||
@override
|
||
String get appSettings_languageBg => 'Български';
|
||
|
||
@override
|
||
String get appSettings_languageRu => 'Russisch';
|
||
|
||
@override
|
||
String get appSettings_languageUk => 'Ukrainisch';
|
||
|
||
@override
|
||
String get appSettings_enableMessageTracing =>
|
||
'Nachrichtenverfolgung aktivieren';
|
||
|
||
@override
|
||
String get appSettings_enableMessageTracingSubtitle =>
|
||
'Detaillierte Routing- und Timing-Metadaten für Nachrichten anzeigen';
|
||
|
||
@override
|
||
String get appSettings_notifications => 'Benachrichtigungen';
|
||
|
||
@override
|
||
String get appSettings_enableNotifications => 'Benachrichtigungen aktivieren';
|
||
|
||
@override
|
||
String get appSettings_enableNotificationsSubtitle =>
|
||
'Erhalte Benachrichtigungen für Nachrichten und Ankündigungen';
|
||
|
||
@override
|
||
String get appSettings_notificationPermissionDenied =>
|
||
'Erlaubnis zur Benachrichtigung verweigert';
|
||
|
||
@override
|
||
String get appSettings_notificationsEnabled => 'Benachrichtigungen aktiviert';
|
||
|
||
@override
|
||
String get appSettings_notificationsDisabled =>
|
||
'Benachrichtigungen deaktiviert';
|
||
|
||
@override
|
||
String get appSettings_messageNotifications =>
|
||
'Direktnachrichten Benachrichtigungen';
|
||
|
||
@override
|
||
String get appSettings_messageNotificationsSubtitle =>
|
||
'Zeige Benachrichtigung beim Empfang neuer Direktnachrichten';
|
||
|
||
@override
|
||
String get appSettings_channelMessageNotifications =>
|
||
'Kanalnachrichten Benachrichtigungen';
|
||
|
||
@override
|
||
String get appSettings_channelMessageNotificationsSubtitle =>
|
||
'Zeige Benachrichtigung beim Empfangen von Kanalnachrichten';
|
||
|
||
@override
|
||
String get appSettings_advertisementNotifications =>
|
||
'Ankündigungsbenachrichtigungen';
|
||
|
||
@override
|
||
String get appSettings_advertisementNotificationsSubtitle =>
|
||
'Zeige Benachrichtigung, wenn neue Knoten entdeckt werden.';
|
||
|
||
@override
|
||
String get appSettings_messaging => 'Nachrichten';
|
||
|
||
@override
|
||
String get appSettings_clearPathOnMaxRetry =>
|
||
'Lösche Pfade bei Max Wiederholungsversuchen';
|
||
|
||
@override
|
||
String get appSettings_clearPathOnMaxRetrySubtitle =>
|
||
'Zurücksetzen der Kontaktpfade nach 5 fehlgeschlagenen Sendeabbrüchen';
|
||
|
||
@override
|
||
String get appSettings_pathsWillBeCleared =>
|
||
'Die Pfade werden nach 5 fehlgeschlagenen Versuchen gelöscht.';
|
||
|
||
@override
|
||
String get appSettings_pathsWillNotBeCleared =>
|
||
'Die Pfade werden nicht automatisch gelöscht.';
|
||
|
||
@override
|
||
String get appSettings_autoRouteRotation => 'Automatische Routenrotation';
|
||
|
||
@override
|
||
String get appSettings_autoRouteRotationSubtitle =>
|
||
'Wechseln zwischen den besten Pfaden und dem Fluten';
|
||
|
||
@override
|
||
String get appSettings_autoRouteRotationEnabled =>
|
||
'Automatische Routenrotation aktiviert';
|
||
|
||
@override
|
||
String get appSettings_autoRouteRotationDisabled =>
|
||
'Automatische Routenrotation deaktiviert';
|
||
|
||
@override
|
||
String get appSettings_battery => 'Akku';
|
||
|
||
@override
|
||
String get appSettings_batteryChemistry => 'Batteriechemie';
|
||
|
||
@override
|
||
String appSettings_batteryChemistryPerDevice(String deviceName) {
|
||
return 'Konfiguriert pro Gerät ($deviceName)';
|
||
}
|
||
|
||
@override
|
||
String get appSettings_batteryChemistryConnectFirst =>
|
||
'Verbinde ein Gerät, um zu wählen';
|
||
|
||
@override
|
||
String get appSettings_batteryNmc => '18650 NMC (3,0–4,2 V)';
|
||
|
||
@override
|
||
String get appSettings_batteryLifepo4 => 'LiFePO4 (2,6–3,65 V)';
|
||
|
||
@override
|
||
String get appSettings_batteryLipo => 'LiPo (3,0–4,2V)';
|
||
|
||
@override
|
||
String get appSettings_mapDisplay => 'Kartendarstellung';
|
||
|
||
@override
|
||
String get appSettings_showRepeaters => 'Zeige Repeater';
|
||
|
||
@override
|
||
String get appSettings_showRepeatersSubtitle =>
|
||
'Zeige Repeater-Knoten auf der Karte an';
|
||
|
||
@override
|
||
String get appSettings_showChatNodes => 'Zeige Chat-Knoten';
|
||
|
||
@override
|
||
String get appSettings_showChatNodesSubtitle =>
|
||
'Chat-Knoten auf der Karte anzeigen';
|
||
|
||
@override
|
||
String get appSettings_showOtherNodes => 'Zeige andere Knoten';
|
||
|
||
@override
|
||
String get appSettings_showOtherNodesSubtitle =>
|
||
'Andere Knotentypen auf der Karte anzeigen';
|
||
|
||
@override
|
||
String get appSettings_timeFilter => 'Zeitfilter';
|
||
|
||
@override
|
||
String get appSettings_timeFilterShowAll => 'Alle Knoten anzeigen';
|
||
|
||
@override
|
||
String appSettings_timeFilterShowLast(int hours) {
|
||
return 'Zeige Knoten der letzten $hours Stunden an';
|
||
}
|
||
|
||
@override
|
||
String get appSettings_mapTimeFilter => 'Karten Zeitfilter';
|
||
|
||
@override
|
||
String get appSettings_showNodesDiscoveredWithin =>
|
||
'Zeige Knoten, die innerhalb von:';
|
||
|
||
@override
|
||
String get appSettings_allTime => 'Ganzer Zeitverlauf';
|
||
|
||
@override
|
||
String get appSettings_lastHour => 'Letzte Stunde';
|
||
|
||
@override
|
||
String get appSettings_last6Hours => 'Letzte 6 Stunden';
|
||
|
||
@override
|
||
String get appSettings_last24Hours => 'Letzte 24 Stunden';
|
||
|
||
@override
|
||
String get appSettings_lastWeek => 'Letzte Woche';
|
||
|
||
@override
|
||
String get appSettings_offlineMapCache => 'Offline-Karten-Cache';
|
||
|
||
@override
|
||
String get appSettings_unitsTitle => 'Einheiten';
|
||
|
||
@override
|
||
String get appSettings_unitsMetric => 'Metrisch (m/km)';
|
||
|
||
@override
|
||
String get appSettings_unitsImperial => 'Imperial (ft/mi)';
|
||
|
||
@override
|
||
String get appSettings_noAreaSelected => 'Kein Bereich ausgewählt';
|
||
|
||
@override
|
||
String appSettings_areaSelectedZoom(int minZoom, int maxZoom) {
|
||
return 'Ausgewählte Fläche (Zoom $minZoom-$maxZoom)';
|
||
}
|
||
|
||
@override
|
||
String get appSettings_debugCard => 'Fehlerbehebung';
|
||
|
||
@override
|
||
String get appSettings_appDebugLogging => 'App-Debug-Protokollierung';
|
||
|
||
@override
|
||
String get appSettings_appDebugLoggingSubtitle =>
|
||
'Protokolliere App-Debug-Nachrichten zur Fehlerbehebung';
|
||
|
||
@override
|
||
String get appSettings_appDebugLoggingEnabled =>
|
||
'App-Debug-Protokollierung aktiviert';
|
||
|
||
@override
|
||
String get appSettings_appDebugLoggingDisabled =>
|
||
'App-Debug-Protokollierung deaktiviert';
|
||
|
||
@override
|
||
String get contacts_title => 'Kontakte';
|
||
|
||
@override
|
||
String get contacts_noContacts => 'Noch keine Kontakte vorhanden.';
|
||
|
||
@override
|
||
String get contacts_contactsWillAppear =>
|
||
'Kontakte werden angezeigt, wenn Geräte eine Ankündigung machen.';
|
||
|
||
@override
|
||
String get contacts_unread => 'Ungelesen';
|
||
|
||
@override
|
||
String get contacts_searchContactsNoNumber => 'Kontakte suchen...';
|
||
|
||
@override
|
||
String contacts_searchContacts(int number, String str) {
|
||
return 'Suche Kontakte...';
|
||
}
|
||
|
||
@override
|
||
String contacts_searchFavorites(int number, String str) {
|
||
return 'Suche $number$str Favoriten...';
|
||
}
|
||
|
||
@override
|
||
String contacts_searchUsers(int number, String str) {
|
||
return 'Suche $number$str Benutzer...';
|
||
}
|
||
|
||
@override
|
||
String contacts_searchRepeaters(int number, String str) {
|
||
return 'Suche $number$str Repeater...';
|
||
}
|
||
|
||
@override
|
||
String contacts_searchRoomServers(int number, String str) {
|
||
return 'Suche $number$str Raumserver...';
|
||
}
|
||
|
||
@override
|
||
String get contacts_noUnreadContacts => 'Keine ungesehene Kontakte';
|
||
|
||
@override
|
||
String get contacts_noContactsFound =>
|
||
'Keine Kontakte oder Gruppen gefunden.';
|
||
|
||
@override
|
||
String get contacts_deleteContact => 'Lösche den Kontakt';
|
||
|
||
@override
|
||
String contacts_removeConfirm(String contactName) {
|
||
return '$contactName aus den Kontakten entfernen?';
|
||
}
|
||
|
||
@override
|
||
String get contacts_manageRepeater => 'Repeater verwalten';
|
||
|
||
@override
|
||
String get contacts_manageRoom => 'Raum-Server verwalten';
|
||
|
||
@override
|
||
String get contacts_roomLogin => 'Raum-Login';
|
||
|
||
@override
|
||
String get contacts_openChat => 'Öffne Chat';
|
||
|
||
@override
|
||
String get contacts_editGroup => 'Gruppe bearbeiten';
|
||
|
||
@override
|
||
String get contacts_deleteGroup => 'Löschen Gruppe';
|
||
|
||
@override
|
||
String contacts_deleteGroupConfirm(String groupName) {
|
||
return 'Löschen von \"$groupName\"?';
|
||
}
|
||
|
||
@override
|
||
String get contacts_newGroup => 'Neue Gruppe';
|
||
|
||
@override
|
||
String get contacts_groupName => 'Gruppenname';
|
||
|
||
@override
|
||
String get contacts_groupNameRequired => 'Der Gruppennamen ist erforderlich.';
|
||
|
||
@override
|
||
String contacts_groupAlreadyExists(String name) {
|
||
return 'Die Gruppe \"$name\" existiert bereits.';
|
||
}
|
||
|
||
@override
|
||
String get contacts_filterContacts => 'Filtert Kontakte...';
|
||
|
||
@override
|
||
String get contacts_noContactsMatchFilter =>
|
||
'Keine Kontakte passen zu Ihrem Filter';
|
||
|
||
@override
|
||
String get contacts_noMembers => 'Keine Mitglieder';
|
||
|
||
@override
|
||
String get contacts_lastSeenNow => 'kürzlich';
|
||
|
||
@override
|
||
String contacts_lastSeenMinsAgo(int minutes) {
|
||
return '~ $minutes Min.';
|
||
}
|
||
|
||
@override
|
||
String get contacts_lastSeenHourAgo => '~ 1 Std.';
|
||
|
||
@override
|
||
String contacts_lastSeenHoursAgo(int hours) {
|
||
return '~ $hours Std.';
|
||
}
|
||
|
||
@override
|
||
String get contacts_lastSeenDayAgo => '~ 1 Tag';
|
||
|
||
@override
|
||
String contacts_lastSeenDaysAgo(int days) {
|
||
return '~ $days Tage';
|
||
}
|
||
|
||
@override
|
||
String get channels_title => 'Kanäle';
|
||
|
||
@override
|
||
String get channels_noChannelsConfigured => 'Keine Kanäle konfiguriert';
|
||
|
||
@override
|
||
String get channels_addPublicChannel => 'Öffentlichen Kanal hinzufügen';
|
||
|
||
@override
|
||
String get channels_searchChannels => 'Suche Kanäle...';
|
||
|
||
@override
|
||
String get channels_noChannelsFound => 'Keine Kanäle gefunden';
|
||
|
||
@override
|
||
String channels_channelIndex(int index) {
|
||
return 'Kanal $index';
|
||
}
|
||
|
||
@override
|
||
String get channels_hashtagChannel => 'Hashtag-Kanal';
|
||
|
||
@override
|
||
String get channels_public => 'Öffentlich';
|
||
|
||
@override
|
||
String get channels_private => 'Privat';
|
||
|
||
@override
|
||
String get channels_publicChannel => 'Öffentlicher Kanal';
|
||
|
||
@override
|
||
String get channels_privateChannel => 'Privater Kanal';
|
||
|
||
@override
|
||
String get channels_editChannel => 'Kanal bearbeiten';
|
||
|
||
@override
|
||
String get channels_muteChannel => 'Kanal stummschalten';
|
||
|
||
@override
|
||
String get channels_unmuteChannel => 'Kanal Stummschaltung aufheben';
|
||
|
||
@override
|
||
String get channels_deleteChannel => 'Lösche den Kanal';
|
||
|
||
@override
|
||
String channels_deleteChannelConfirm(String name) {
|
||
return 'Löschen von \"$name\"? Dies kann nicht rückgängig gemacht werden.';
|
||
}
|
||
|
||
@override
|
||
String channels_channelDeleteFailed(String name) {
|
||
return 'Kanal $name konnte nicht gelöscht werden';
|
||
}
|
||
|
||
@override
|
||
String channels_channelDeleted(String name) {
|
||
return 'Kanal \"$name\" gelöscht';
|
||
}
|
||
|
||
@override
|
||
String get channels_addChannel => 'Kanal hinzufügen';
|
||
|
||
@override
|
||
String get channels_channelIndexLabel => 'Kanalindex';
|
||
|
||
@override
|
||
String get channels_channelName => 'Kanalname';
|
||
|
||
@override
|
||
String get channels_usePublicChannel => 'Verwende öffentlichen Kanal';
|
||
|
||
@override
|
||
String get channels_standardPublicPsk => 'Öffentliche Standard PSK';
|
||
|
||
@override
|
||
String get channels_pskHex => 'PSK (Hex)';
|
||
|
||
@override
|
||
String get channels_generateRandomPsk => 'Zufällige PSK generieren';
|
||
|
||
@override
|
||
String get channels_enterChannelName =>
|
||
'Bitte geben Sie einen Kanalnamen ein.';
|
||
|
||
@override
|
||
String get channels_pskMustBe32Hex =>
|
||
'Die PSK muss 32 hexadezimale Zeichen haben.';
|
||
|
||
@override
|
||
String channels_channelAdded(String name) {
|
||
return 'Kanal \"$name\" hinzugefügt';
|
||
}
|
||
|
||
@override
|
||
String channels_editChannelTitle(int index) {
|
||
return 'Bearbeiteter Kanal $index';
|
||
}
|
||
|
||
@override
|
||
String get channels_smazCompression => 'SMAZ-Komprimierung';
|
||
|
||
@override
|
||
String channels_channelUpdated(String name) {
|
||
return 'Kanal \"$name\" aktualisiert';
|
||
}
|
||
|
||
@override
|
||
String get channels_publicChannelAdded => 'Öffentlicher Kanal hinzugefügt';
|
||
|
||
@override
|
||
String get channels_sortBy => 'Sortiere nach';
|
||
|
||
@override
|
||
String get channels_sortManual => 'Manuell';
|
||
|
||
@override
|
||
String get channels_sortAZ => 'A bis Z';
|
||
|
||
@override
|
||
String get channels_sortLatestMessages => 'Letzte Nachrichten';
|
||
|
||
@override
|
||
String get channels_sortUnread => 'Ungelesen';
|
||
|
||
@override
|
||
String get channels_createPrivateChannel => 'Erstelle einen privaten Kanal';
|
||
|
||
@override
|
||
String get channels_createPrivateChannelDesc =>
|
||
'Verschlüsselt mit einem geheimen Schlüssel.';
|
||
|
||
@override
|
||
String get channels_joinPrivateChannel =>
|
||
'Treten Sie einem privaten Kanal bei';
|
||
|
||
@override
|
||
String get channels_joinPrivateChannelDesc =>
|
||
'Manuelle Eingabe eines geheimen Schlüssels.';
|
||
|
||
@override
|
||
String get channels_joinPublicChannel => 'Tritt dem öffentlichen Kanal bei';
|
||
|
||
@override
|
||
String get channels_joinPublicChannelDesc =>
|
||
'Jeder kann diesem Kanal beitreten.';
|
||
|
||
@override
|
||
String get channels_joinHashtagChannel =>
|
||
'Treten Sie einem Hashtag-Kanal bei';
|
||
|
||
@override
|
||
String get channels_joinHashtagChannelDesc =>
|
||
'Jeder kann sich bei Hashtag-Kanälen beteiligen.';
|
||
|
||
@override
|
||
String get channels_scanQrCode => 'Scannen Sie einen QR-Code';
|
||
|
||
@override
|
||
String get channels_scanQrCodeComingSoon => 'Bald verfügbar';
|
||
|
||
@override
|
||
String get channels_enterHashtag => 'Gib Hashtag ein';
|
||
|
||
@override
|
||
String get channels_hashtagHint => 'z.B. #team';
|
||
|
||
@override
|
||
String get chat_noMessages => 'Noch keine Nachrichten.';
|
||
|
||
@override
|
||
String get chat_sendMessageToStart => 'Eine Nachricht senden, um anzufangen.';
|
||
|
||
@override
|
||
String get chat_originalMessageNotFound => 'Originalmeldung nicht gefunden';
|
||
|
||
@override
|
||
String chat_replyingTo(String name) {
|
||
return 'Antworten an $name';
|
||
}
|
||
|
||
@override
|
||
String chat_replyTo(String name) {
|
||
return 'Antwort an $name';
|
||
}
|
||
|
||
@override
|
||
String get chat_location => 'Ort';
|
||
|
||
@override
|
||
String chat_sendMessageTo(String contactName) {
|
||
return 'Sende eine Nachricht an $contactName';
|
||
}
|
||
|
||
@override
|
||
String get chat_typeMessage => 'Eine Nachricht eingeben...';
|
||
|
||
@override
|
||
String chat_messageTooLong(int maxBytes) {
|
||
return 'Nachricht ist zu lang (max $maxBytes Bytes).';
|
||
}
|
||
|
||
@override
|
||
String get chat_messageCopied => 'Nachricht kopiert';
|
||
|
||
@override
|
||
String get chat_messageDeleted => 'Nachricht gelöscht';
|
||
|
||
@override
|
||
String get chat_retryingMessage => 'Versuche es erneut.';
|
||
|
||
@override
|
||
String chat_retryCount(int current, int max) {
|
||
return 'Versuche $current/$max';
|
||
}
|
||
|
||
@override
|
||
String get chat_sendGif => 'GIF senden';
|
||
|
||
@override
|
||
String get chat_reply => 'Beantworten';
|
||
|
||
@override
|
||
String get chat_addReaction => 'Reaktion hinzufügen';
|
||
|
||
@override
|
||
String get chat_me => 'Ich';
|
||
|
||
@override
|
||
String get emojiCategorySmileys => 'Emoticons';
|
||
|
||
@override
|
||
String get emojiCategoryGestures => 'Gesten';
|
||
|
||
@override
|
||
String get emojiCategoryHearts => 'Herz';
|
||
|
||
@override
|
||
String get emojiCategoryObjects => 'Objekte';
|
||
|
||
@override
|
||
String get gifPicker_title => 'Wähle ein GIF';
|
||
|
||
@override
|
||
String get gifPicker_searchHint => 'Suche nach GIFs...';
|
||
|
||
@override
|
||
String get gifPicker_poweredBy => 'Bereitgestellt von GIPHY';
|
||
|
||
@override
|
||
String get gifPicker_noGifsFound => 'Keine GIFs gefunden';
|
||
|
||
@override
|
||
String get gifPicker_failedLoad => 'GIF-Datei konnten nicht geladen werden.';
|
||
|
||
@override
|
||
String get gifPicker_failedSearch => 'Suche nach GIFs fehlgeschlagen';
|
||
|
||
@override
|
||
String get gifPicker_noInternet => 'Keine Internetverbindung';
|
||
|
||
@override
|
||
String get debugLog_appTitle => 'App-Debug-Protokoll';
|
||
|
||
@override
|
||
String get debugLog_bleTitle => 'BLE-Debug-Protokoll';
|
||
|
||
@override
|
||
String get debugLog_copyLog => 'Kopieren des Protokolls';
|
||
|
||
@override
|
||
String get debugLog_clearLog => 'Protokoll löschen';
|
||
|
||
@override
|
||
String get debugLog_copied => 'Debug-Protokoll kopiert';
|
||
|
||
@override
|
||
String get debugLog_bleCopied => 'BLE-Protokoll kopiert';
|
||
|
||
@override
|
||
String get debugLog_noEntries => 'No Debug-Protokolle noch verfügbar';
|
||
|
||
@override
|
||
String get debugLog_enableInSettings =>
|
||
'Aktivieren Sie das App-Debug-Logging in den Einstellungen';
|
||
|
||
@override
|
||
String get debugLog_frames => 'Rahmen';
|
||
|
||
@override
|
||
String get debugLog_rawLogRx => 'Roh-Log-RX';
|
||
|
||
@override
|
||
String get debugLog_noBleActivity => 'Bisher keine BLE-Aktivität';
|
||
|
||
@override
|
||
String debugFrame_length(int count) {
|
||
return 'Rahmenlänge: $count Bytes';
|
||
}
|
||
|
||
@override
|
||
String debugFrame_command(String value) {
|
||
return 'Befehl: 0x$value';
|
||
}
|
||
|
||
@override
|
||
String get debugFrame_textMessageHeader => 'Textnachrichten Frame:';
|
||
|
||
@override
|
||
String debugFrame_destinationPubKey(String pubKey) {
|
||
return '- Ziel-Public-Schlüssel: $pubKey';
|
||
}
|
||
|
||
@override
|
||
String debugFrame_timestamp(int timestamp) {
|
||
return '- Zeitstempel: $timestamp';
|
||
}
|
||
|
||
@override
|
||
String debugFrame_flags(String value) {
|
||
return '- Flags: 0x$value';
|
||
}
|
||
|
||
@override
|
||
String debugFrame_textType(int type, String label) {
|
||
return '- Textart: $type ($label)';
|
||
}
|
||
|
||
@override
|
||
String get debugFrame_textTypeCli => 'CLI';
|
||
|
||
@override
|
||
String get debugFrame_textTypePlain => 'Einfach';
|
||
|
||
@override
|
||
String debugFrame_text(String text) {
|
||
return '- Text: \"$text\"';
|
||
}
|
||
|
||
@override
|
||
String get debugFrame_hexDump => 'Hex-Dump:';
|
||
|
||
@override
|
||
String get chat_pathManagement => 'Pfadverwaltung';
|
||
|
||
@override
|
||
String get chat_ShowAllPaths => 'Alle Pfade anzeigen';
|
||
|
||
@override
|
||
String get chat_routingMode => 'Routenmodus';
|
||
|
||
@override
|
||
String get chat_autoUseSavedPath =>
|
||
'Automatisch (gespeicherten Pfad verwenden)';
|
||
|
||
@override
|
||
String get chat_forceFloodMode => 'Flut-Modus erzwingen';
|
||
|
||
@override
|
||
String get chat_recentAckPaths =>
|
||
'Aktuelle ACK-Pfade (antippen, um zu verwenden):';
|
||
|
||
@override
|
||
String get chat_pathHistoryFull =>
|
||
'Die Pfadhistorie ist voll. Entferne Einträge, um neue hinzuzufügen.';
|
||
|
||
@override
|
||
String get chat_hopSingular => 'Sprung';
|
||
|
||
@override
|
||
String get chat_hopPlural => 'Sprünge';
|
||
|
||
@override
|
||
String chat_hopsCount(int count) {
|
||
String _temp0 = intl.Intl.pluralLogic(
|
||
count,
|
||
locale: localeName,
|
||
other: 'Sprünge',
|
||
one: 'Sprung',
|
||
);
|
||
return '$count $_temp0';
|
||
}
|
||
|
||
@override
|
||
String get chat_successes => 'Erfolgreich';
|
||
|
||
@override
|
||
String get chat_removePath => 'Pfad entfernen';
|
||
|
||
@override
|
||
String get chat_noPathHistoryYet =>
|
||
'Keine Pfadhistorie vorhanden.\nSende eine Nachricht, um Pfade zu entdecken.';
|
||
|
||
@override
|
||
String get chat_pathActions => 'Pfadaktionen:';
|
||
|
||
@override
|
||
String get chat_setCustomPath => 'Lege benutzerdefinierten Pfad fest';
|
||
|
||
@override
|
||
String get chat_setCustomPathSubtitle => 'Manuellen Routenpfad festlegen';
|
||
|
||
@override
|
||
String get chat_clearPath => 'Pfad zurücksetzen';
|
||
|
||
@override
|
||
String get chat_clearPathSubtitle =>
|
||
'Setze Pfad zurück, erkenne neuen Pfad bei nächster Sendung.';
|
||
|
||
@override
|
||
String get chat_pathCleared =>
|
||
'Pfad zurückgesetzt. Nächste Nachricht wird Route neu entdecken.';
|
||
|
||
@override
|
||
String get chat_floodModeSubtitle =>
|
||
'Verwende den Routingschalter in der App-Leiste';
|
||
|
||
@override
|
||
String get chat_floodModeEnabled => 'Flutmodus aktiviert.';
|
||
|
||
@override
|
||
String get chat_fullPath => 'Vollständiger Pfad';
|
||
|
||
@override
|
||
String get chat_pathDetailsNotAvailable =>
|
||
'Die Pfaddetails sind noch nicht verfügbar. Versuchen Sie, eine Nachricht zu senden, um zu aktualisieren.';
|
||
|
||
@override
|
||
String chat_pathSetHops(int hopCount, String status) {
|
||
String _temp0 = intl.Intl.pluralLogic(
|
||
hopCount,
|
||
locale: localeName,
|
||
other: 'hops',
|
||
one: 'hop',
|
||
);
|
||
return 'Pfad gesetzt: $hopCount $_temp0 - $status';
|
||
}
|
||
|
||
@override
|
||
String get chat_pathSavedLocally =>
|
||
'Lokal Gespeichert. Bitte Verbinden zum Synchronisieren.';
|
||
|
||
@override
|
||
String get chat_pathDeviceConfirmed => 'Gerät bestätigt.';
|
||
|
||
@override
|
||
String get chat_pathDeviceNotConfirmed => 'Gerät noch nicht bestätigt.';
|
||
|
||
@override
|
||
String get chat_type => 'Gebe ein';
|
||
|
||
@override
|
||
String get chat_path => 'Pfad';
|
||
|
||
@override
|
||
String get chat_publicKey => 'Öffentlicher Schlüssel';
|
||
|
||
@override
|
||
String get chat_compressOutgoingMessages =>
|
||
'Komprimieren ausgehender Nachrichten';
|
||
|
||
@override
|
||
String get chat_floodForced => 'Geflutet (erzwungen)';
|
||
|
||
@override
|
||
String get chat_directForced => 'Direkt (erzwungen)';
|
||
|
||
@override
|
||
String chat_hopsForced(int count) {
|
||
return '$count Sprünge (erzwungen)';
|
||
}
|
||
|
||
@override
|
||
String get chat_floodAuto => 'Geflutet (automatisch)';
|
||
|
||
@override
|
||
String get chat_direct => 'Direkt';
|
||
|
||
@override
|
||
String get chat_poiShared => 'Geteilter POI';
|
||
|
||
@override
|
||
String chat_unread(int count) {
|
||
return 'Ungelesen: $count';
|
||
}
|
||
|
||
@override
|
||
String get chat_openLink => 'Link öffnen?';
|
||
|
||
@override
|
||
String get chat_openLinkConfirmation =>
|
||
'Möchten Sie diesen Link in Ihrem Browser öffnen?';
|
||
|
||
@override
|
||
String get chat_open => 'Öffnen';
|
||
|
||
@override
|
||
String chat_couldNotOpenLink(String url) {
|
||
return 'Link konnte nicht geöffnet werden: $url';
|
||
}
|
||
|
||
@override
|
||
String get chat_invalidLink => 'Ungültiges Link-Format';
|
||
|
||
@override
|
||
String get map_title => 'Karte';
|
||
|
||
@override
|
||
String get map_lineOfSight => 'Sichtlinie';
|
||
|
||
@override
|
||
String get map_losScreenTitle => 'Sichtlinie';
|
||
|
||
@override
|
||
String get map_noNodesWithLocation => 'Keine Knoten mit Standortdaten';
|
||
|
||
@override
|
||
String get map_nodesNeedGps =>
|
||
'Knoten müssen ihre GPS-Koordinaten teilen,\num auf der Karte zu erscheinen.';
|
||
|
||
@override
|
||
String map_nodesCount(int count) {
|
||
return 'Knoten: $count';
|
||
}
|
||
|
||
@override
|
||
String map_pinsCount(int count) {
|
||
return 'Pins: $count';
|
||
}
|
||
|
||
@override
|
||
String get map_chat => 'Benutzer';
|
||
|
||
@override
|
||
String get map_repeater => 'Repeater';
|
||
|
||
@override
|
||
String get map_room => 'Raum';
|
||
|
||
@override
|
||
String get map_sensor => 'Sensor';
|
||
|
||
@override
|
||
String get map_pinDm => 'Pin (Kontakt)';
|
||
|
||
@override
|
||
String get map_pinPrivate => 'Pin (Channel)';
|
||
|
||
@override
|
||
String get map_pinPublic => 'Pin (Public)';
|
||
|
||
@override
|
||
String get map_lastSeen => 'Letzte Sichtung';
|
||
|
||
@override
|
||
String get map_disconnectConfirm =>
|
||
'Sind Sie sicher, dass Sie sich von diesem Gerät trennen möchten?';
|
||
|
||
@override
|
||
String get map_from => 'Von';
|
||
|
||
@override
|
||
String get map_source => 'Quelle';
|
||
|
||
@override
|
||
String get map_flags => 'Flags';
|
||
|
||
@override
|
||
String get map_shareMarkerHere => 'Teilen Sie den Marker hier.';
|
||
|
||
@override
|
||
String get map_setAsMyLocation => 'Als meine aktuelle Position festlegen';
|
||
|
||
@override
|
||
String get map_pinLabel => 'Pin Name';
|
||
|
||
@override
|
||
String get map_label => 'Label';
|
||
|
||
@override
|
||
String get map_pointOfInterest => 'Punkt von Interesse';
|
||
|
||
@override
|
||
String get map_sendToContact => 'Senden an Kontakt';
|
||
|
||
@override
|
||
String get map_sendToChannel => 'Senden an Kanal';
|
||
|
||
@override
|
||
String get map_noChannelsAvailable => 'Keine Kanäle verfügbar';
|
||
|
||
@override
|
||
String get map_publicLocationShare => 'Öffentliche Standortfreigabe';
|
||
|
||
@override
|
||
String map_publicLocationShareConfirm(String channelLabel) {
|
||
return 'Sie werden kurz darauf einen Ort in $channelLabel teilen. Dieser Kanal ist öffentlich und jeder mit dem PSK kann ihn sehen.';
|
||
}
|
||
|
||
@override
|
||
String get map_connectToShareMarkers =>
|
||
'Verbinde ein Gerät, um Marker zu teilen';
|
||
|
||
@override
|
||
String get map_filterNodes => 'Knotenfilter';
|
||
|
||
@override
|
||
String get map_nodeTypes => 'Knotentypen';
|
||
|
||
@override
|
||
String get map_chatNodes => 'Chat-Knoten';
|
||
|
||
@override
|
||
String get map_repeaters => 'Repeater';
|
||
|
||
@override
|
||
String get map_otherNodes => 'Andere Knoten';
|
||
|
||
@override
|
||
String get map_keyPrefix => 'Schlüsselpräfix';
|
||
|
||
@override
|
||
String get map_filterByKeyPrefix => 'Filter nach Schlüsselpräfix';
|
||
|
||
@override
|
||
String get map_publicKeyPrefix => 'Schlüsselpräfix';
|
||
|
||
@override
|
||
String get map_markers => 'Marker';
|
||
|
||
@override
|
||
String get map_showSharedMarkers => 'Zeige gemeinsam genutzte Marker';
|
||
|
||
@override
|
||
String get map_showGuessedLocations =>
|
||
'Zeige die vermuteten Knotenpositionen';
|
||
|
||
@override
|
||
String get map_showDiscoveryContacts => 'Entdeckungs-Kontakte anzeigen';
|
||
|
||
@override
|
||
String get map_guessedLocation => 'Geschätzter Ort';
|
||
|
||
@override
|
||
String get map_lastSeenTime => 'Letzte Sichtung';
|
||
|
||
@override
|
||
String get map_sharedPin => 'Gemeinsames Passwort';
|
||
|
||
@override
|
||
String get map_joinRoom => 'Beitreten Sie dem Raum';
|
||
|
||
@override
|
||
String get map_manageRepeater => 'Repeater verwalten';
|
||
|
||
@override
|
||
String get map_tapToAdd =>
|
||
'Tippen Sie auf Knoten, um sie zum Pfad hinzuzufügen.';
|
||
|
||
@override
|
||
String get map_runTrace => 'Pfadverlauf ausführen';
|
||
|
||
@override
|
||
String get map_removeLast => 'Letztes Entfernen';
|
||
|
||
@override
|
||
String get map_pathTraceCancelled => 'Pfadverfolgung abgebrochen.';
|
||
|
||
@override
|
||
String get mapCache_title => 'Offline-Karten-Cache';
|
||
|
||
@override
|
||
String get mapCache_selectAreaFirst =>
|
||
'Wählen Sie zuerst einen Bereich zum Zwischenspeichern aus.';
|
||
|
||
@override
|
||
String get mapCache_noTilesToDownload =>
|
||
'Keine Kacheln für diese Region zum Herunterladen verfügbar.';
|
||
|
||
@override
|
||
String get mapCache_downloadTilesTitle => 'Herunterladen von Kacheln';
|
||
|
||
@override
|
||
String mapCache_downloadTilesPrompt(int count) {
|
||
return 'Laden $count Kacheln für den Offline-Bereich herunter?';
|
||
}
|
||
|
||
@override
|
||
String get mapCache_downloadAction => 'Herunterladen';
|
||
|
||
@override
|
||
String mapCache_cachedTiles(int count) {
|
||
return 'Zwischengespeicherte $count Kacheln';
|
||
}
|
||
|
||
@override
|
||
String mapCache_cachedTilesWithFailed(int downloaded, int failed) {
|
||
return 'Zwischengespeicherte $downloaded Kacheln ($failed fehlgeschlagen)';
|
||
}
|
||
|
||
@override
|
||
String get mapCache_clearOfflineCacheTitle => 'Leere Offline-Cache';
|
||
|
||
@override
|
||
String get mapCache_clearOfflineCachePrompt =>
|
||
'Alle zwischengespeicherten Kartenraster entfernen?';
|
||
|
||
@override
|
||
String get mapCache_offlineCacheCleared => 'Offline-Cache gelöscht';
|
||
|
||
@override
|
||
String get mapCache_noAreaSelected => 'Kein Bereich ausgewählt';
|
||
|
||
@override
|
||
String get mapCache_cacheArea => 'Zwischenspeicherbereich';
|
||
|
||
@override
|
||
String get mapCache_useCurrentView => 'Aktuelle Ansicht verwenden';
|
||
|
||
@override
|
||
String get mapCache_zoomRange => 'Zoom Bereich';
|
||
|
||
@override
|
||
String mapCache_estimatedTiles(int count) {
|
||
return 'Geschätzte Kacheln: $count';
|
||
}
|
||
|
||
@override
|
||
String mapCache_downloadedTiles(int completed, int total) {
|
||
return 'Heruntergeladen $completed / $total';
|
||
}
|
||
|
||
@override
|
||
String get mapCache_downloadTilesButton => 'Herunterladen von Kacheln';
|
||
|
||
@override
|
||
String get mapCache_clearCacheButton => 'Cache leeren';
|
||
|
||
@override
|
||
String mapCache_failedDownloads(int count) {
|
||
return 'Fehlgeschlagene Downloads: $count';
|
||
}
|
||
|
||
@override
|
||
String mapCache_boundsLabel(
|
||
String north,
|
||
String south,
|
||
String east,
|
||
String west,
|
||
) {
|
||
return 'N $north, S $south, E $east, W $west';
|
||
}
|
||
|
||
@override
|
||
String get time_justNow => 'Gerade eben';
|
||
|
||
@override
|
||
String time_minutesAgo(int minutes) {
|
||
return '$minutes Minuten her';
|
||
}
|
||
|
||
@override
|
||
String time_hoursAgo(int hours) {
|
||
return '$hours Stunden her';
|
||
}
|
||
|
||
@override
|
||
String time_daysAgo(int days) {
|
||
return '$days Tage/Tage zuvor';
|
||
}
|
||
|
||
@override
|
||
String get time_hour => 'Stunde';
|
||
|
||
@override
|
||
String get time_hours => 'Stunden';
|
||
|
||
@override
|
||
String get time_day => 'Tag';
|
||
|
||
@override
|
||
String get time_days => 'Tage';
|
||
|
||
@override
|
||
String get time_week => 'Woche';
|
||
|
||
@override
|
||
String get time_weeks => 'Wochen';
|
||
|
||
@override
|
||
String get time_month => 'Monat';
|
||
|
||
@override
|
||
String get time_months => 'Monate';
|
||
|
||
@override
|
||
String get time_minutes => 'Minuten';
|
||
|
||
@override
|
||
String get time_allTime => 'Ganzer Zeitraum';
|
||
|
||
@override
|
||
String get dialog_disconnect => 'Trennen';
|
||
|
||
@override
|
||
String get dialog_disconnectConfirm =>
|
||
'Sind Sie sicher, dass Sie sich von diesem Gerät trennen möchten?';
|
||
|
||
@override
|
||
String get login_repeaterLogin => 'Beim Repeater anmelden';
|
||
|
||
@override
|
||
String get login_roomLogin => 'Raum-Login';
|
||
|
||
@override
|
||
String get login_password => 'Passwort';
|
||
|
||
@override
|
||
String get login_enterPassword => 'Passwort eingeben';
|
||
|
||
@override
|
||
String get login_savePassword => 'Passwort speichern';
|
||
|
||
@override
|
||
String get login_savePasswordSubtitle =>
|
||
'Das Passwort wird auf diesem Gerät sicher gespeichert.';
|
||
|
||
@override
|
||
String get login_repeaterDescription =>
|
||
'Geben Sie das Repeater-Passwort ein, um auf Einstellungen und Status zuzugreifen.';
|
||
|
||
@override
|
||
String get login_roomDescription =>
|
||
'Geben Sie das Raumkennwort ein, um auf die Einstellungen und den Status zuzugreifen.';
|
||
|
||
@override
|
||
String get login_routing => 'Routen';
|
||
|
||
@override
|
||
String get login_routingMode => 'Routenmodus';
|
||
|
||
@override
|
||
String get login_autoUseSavedPath =>
|
||
'Automatisch (gespeicherten Pfad verwenden)';
|
||
|
||
@override
|
||
String get login_forceFloodMode => 'Flut-Modus erzwingen';
|
||
|
||
@override
|
||
String get login_managePaths => 'Pfadverwaltung';
|
||
|
||
@override
|
||
String get login_login => 'Anmelden';
|
||
|
||
@override
|
||
String login_attempt(int current, int max) {
|
||
return 'Versuche $current/$max';
|
||
}
|
||
|
||
@override
|
||
String login_failed(String error) {
|
||
return 'Anmeldung fehlgeschlagen: $error';
|
||
}
|
||
|
||
@override
|
||
String get login_failedMessage =>
|
||
'Anmeldung fehlgeschlagen. Entweder ist das Passwort falsch oder der Repeater ist nicht erreichbar.';
|
||
|
||
@override
|
||
String get common_reload => 'Neu laden';
|
||
|
||
@override
|
||
String get common_clear => 'Löschen';
|
||
|
||
@override
|
||
String path_currentPath(String path) {
|
||
return 'Aktiver Pfad: $path';
|
||
}
|
||
|
||
@override
|
||
String path_usingHopsPath(int count) {
|
||
String _temp0 = intl.Intl.pluralLogic(
|
||
count,
|
||
locale: localeName,
|
||
other: 'Hops',
|
||
one: 'Hop',
|
||
);
|
||
return 'Verwenden Sie $count $_temp0 Pfad';
|
||
}
|
||
|
||
@override
|
||
String get path_enterCustomPath => 'Gebe Pfad ein';
|
||
|
||
@override
|
||
String get path_currentPathLabel => 'Aktueller Pfad';
|
||
|
||
@override
|
||
String get path_hexPrefixInstructions =>
|
||
'Gebe für jeden Zwischen-Hop das 2-stellige Hex-Präfix ein, getrennt durch Kommas.';
|
||
|
||
@override
|
||
String get path_hexPrefixExample =>
|
||
'Beispiel: A1,F2,3C (jeder Knoten verwendet den ersten Byte seines öffentlichen Schlüssels)';
|
||
|
||
@override
|
||
String get path_labelHexPrefixes => 'Pfad (Hex-Präfixe)';
|
||
|
||
@override
|
||
String get path_helperMaxHops =>
|
||
'Max 64 Sprünge. Jede Präfixe ist 2 Hexadezimalzeichen (1 Byte)';
|
||
|
||
@override
|
||
String get path_selectFromContacts => 'Oder wähle aus Kontakten aus:';
|
||
|
||
@override
|
||
String get path_noRepeatersFound =>
|
||
'Keine Repeater oder Raumserver gefunden.';
|
||
|
||
@override
|
||
String get path_customPathsRequire =>
|
||
'Benutzerdefinierte Pfade erfordern Zwischen-Hops, die Nachrichten weiterleiten können.';
|
||
|
||
@override
|
||
String path_invalidHexPrefixes(String prefixes) {
|
||
return 'Ungültige Hexadezimal-Präfixe: $prefixes';
|
||
}
|
||
|
||
@override
|
||
String get path_tooLong => 'Pfad zu lang. Maximal 64 Hops erlaubt.';
|
||
|
||
@override
|
||
String get path_setPath => 'Pfad festlegen';
|
||
|
||
@override
|
||
String get repeater_management => 'Repeater-Verwaltung';
|
||
|
||
@override
|
||
String get room_management => 'Raum-Server-Verwaltung';
|
||
|
||
@override
|
||
String get repeater_managementTools => 'Verwaltungs-Tools';
|
||
|
||
@override
|
||
String get repeater_status => 'Status';
|
||
|
||
@override
|
||
String get repeater_statusSubtitle =>
|
||
'Status, Statistiken und Nachbarn anzeigen';
|
||
|
||
@override
|
||
String get repeater_telemetry => 'Telemetrie';
|
||
|
||
@override
|
||
String get repeater_telemetrySubtitle =>
|
||
'Sensordaten und Systemwerte anzeigen';
|
||
|
||
@override
|
||
String get repeater_cli => 'CLI';
|
||
|
||
@override
|
||
String get repeater_cliSubtitle => 'Sende Befehle an den Repeater';
|
||
|
||
@override
|
||
String get repeater_neighbors => 'Nachbarn';
|
||
|
||
@override
|
||
String get repeater_neighborsSubtitle => 'Anzahl der Hop-Nachbarn anzeigen.';
|
||
|
||
@override
|
||
String get repeater_settings => 'Einstellungen';
|
||
|
||
@override
|
||
String get repeater_settingsSubtitle => 'Repeater-parameter konfigurieren';
|
||
|
||
@override
|
||
String get repeater_statusTitle => 'Repeaterstatus';
|
||
|
||
@override
|
||
String get repeater_routingMode => 'Routenmodus';
|
||
|
||
@override
|
||
String get repeater_autoUseSavedPath =>
|
||
'Automatisch (gespeicherten Pfad verwenden)';
|
||
|
||
@override
|
||
String get repeater_forceFloodMode => 'Flut-Modus erzwingen';
|
||
|
||
@override
|
||
String get repeater_pathManagement => 'Pfadverwaltung';
|
||
|
||
@override
|
||
String get repeater_refresh => 'Aktualisieren';
|
||
|
||
@override
|
||
String get repeater_statusRequestTimeout =>
|
||
'Statusanfrage durch Timeout fehlgeschlagen.';
|
||
|
||
@override
|
||
String repeater_errorLoadingStatus(String error) {
|
||
return 'Fehler beim Laden des Status: $error';
|
||
}
|
||
|
||
@override
|
||
String get repeater_systemInformation => 'Systeminformation';
|
||
|
||
@override
|
||
String get repeater_battery => 'Akku';
|
||
|
||
@override
|
||
String get repeater_clockAtLogin => 'Uhr (bei Anmeldung)';
|
||
|
||
@override
|
||
String get repeater_uptime => 'Verfügbarkeit';
|
||
|
||
@override
|
||
String get repeater_queueLength => 'Warteschlangenlänge';
|
||
|
||
@override
|
||
String get repeater_debugFlags => 'Fehlerbehebungsoptionen';
|
||
|
||
@override
|
||
String get repeater_radioStatistics => 'Funk-Statistik';
|
||
|
||
@override
|
||
String get repeater_lastRssi => 'Letzter RSSI';
|
||
|
||
@override
|
||
String get repeater_lastSnr => 'Letzter SNR';
|
||
|
||
@override
|
||
String get repeater_noiseFloor => 'Rauschpegel';
|
||
|
||
@override
|
||
String get repeater_txAirtime => 'TX Airtime';
|
||
|
||
@override
|
||
String get repeater_rxAirtime => 'RX Airtime';
|
||
|
||
@override
|
||
String get repeater_packetStatistics => 'Paketstatistiken';
|
||
|
||
@override
|
||
String get repeater_sent => 'Gesendet';
|
||
|
||
@override
|
||
String get repeater_received => 'Empfangen';
|
||
|
||
@override
|
||
String get repeater_duplicates => 'Duplikate';
|
||
|
||
@override
|
||
String repeater_daysHoursMinsSecs(
|
||
int days,
|
||
int hours,
|
||
int minutes,
|
||
int seconds,
|
||
) {
|
||
return '$days Tage ${hours}h ${minutes}m ${seconds}s';
|
||
}
|
||
|
||
@override
|
||
String repeater_packetTxTotal(int total, String flood, String direct) {
|
||
return 'Gesamt: $total, Flut: $flood, Direkt: $direct';
|
||
}
|
||
|
||
@override
|
||
String repeater_packetRxTotal(int total, String flood, String direct) {
|
||
return 'Gesamt: $total, Flut: $flood, Direkt: $direct';
|
||
}
|
||
|
||
@override
|
||
String repeater_duplicatesFloodDirect(String flood, String direct) {
|
||
return 'Flut: $flood, Direkt: $direct';
|
||
}
|
||
|
||
@override
|
||
String repeater_duplicatesTotal(int total) {
|
||
return 'Gesamt: $total';
|
||
}
|
||
|
||
@override
|
||
String get repeater_settingsTitle => 'Repeater Einstellungen';
|
||
|
||
@override
|
||
String get repeater_basicSettings => 'Grundlegende Einstellungen';
|
||
|
||
@override
|
||
String get repeater_repeaterName => 'Repeater Name';
|
||
|
||
@override
|
||
String get repeater_repeaterNameHelper => 'Anzeigename für diesen Repeater';
|
||
|
||
@override
|
||
String get repeater_adminPassword => 'Admin-Passwort';
|
||
|
||
@override
|
||
String get repeater_adminPasswordHelper => 'Vollzugriffspasswort';
|
||
|
||
@override
|
||
String get repeater_guestPassword => 'Gast-Passwort';
|
||
|
||
@override
|
||
String get repeater_guestPasswordHelper =>
|
||
'Schreibgeschütztes Zugriffspasswort';
|
||
|
||
@override
|
||
String get repeater_radioSettings => 'Funk Einstellungen';
|
||
|
||
@override
|
||
String get repeater_frequencyMhz => 'Frequenz (MHz)';
|
||
|
||
@override
|
||
String get repeater_frequencyHelper => '300-2500 MHz';
|
||
|
||
@override
|
||
String get repeater_txPower => 'TX Power';
|
||
|
||
@override
|
||
String get repeater_txPowerHelper => '1-30 dBm';
|
||
|
||
@override
|
||
String get repeater_bandwidth => 'Bandbreite';
|
||
|
||
@override
|
||
String get repeater_spreadingFactor => 'Verteilungsfaktor';
|
||
|
||
@override
|
||
String get repeater_codingRate => 'Kodierungsrate';
|
||
|
||
@override
|
||
String get repeater_locationSettings => 'Standort Einstellungen';
|
||
|
||
@override
|
||
String get repeater_latitude => 'Breitengrad';
|
||
|
||
@override
|
||
String get repeater_latitudeHelper => 'Dezimalgrad (z.B. 37,7749)';
|
||
|
||
@override
|
||
String get repeater_longitude => 'Längengrad';
|
||
|
||
@override
|
||
String get repeater_longitudeHelper => 'Dezimalgrad (z.B. -122,4194)';
|
||
|
||
@override
|
||
String get repeater_features => 'Funktionen';
|
||
|
||
@override
|
||
String get repeater_packetForwarding => 'Paketweiterleitung';
|
||
|
||
@override
|
||
String get repeater_packetForwardingSubtitle =>
|
||
'Aktivieren Sie den Repeater, um Pakete weiterzuleiten.';
|
||
|
||
@override
|
||
String get repeater_guestAccess => 'Gastzugriff';
|
||
|
||
@override
|
||
String get repeater_guestAccessSubtitle =>
|
||
'Gast-Zugriff mit beschränkten Rechten zulassen';
|
||
|
||
@override
|
||
String get repeater_privacyMode => 'Privatsphäreeinstellung';
|
||
|
||
@override
|
||
String get repeater_privacyModeSubtitle =>
|
||
'Verstecken Sie Name/Ort in Ankündigungen';
|
||
|
||
@override
|
||
String get repeater_advertisementSettings => 'Ankündigungseinstellungen';
|
||
|
||
@override
|
||
String get repeater_localAdvertInterval =>
|
||
'Intervall der lokalen Ankündigungen';
|
||
|
||
@override
|
||
String repeater_localAdvertIntervalMinutes(int minutes) {
|
||
return '$minutes Minuten';
|
||
}
|
||
|
||
@override
|
||
String get repeater_floodAdvertInterval =>
|
||
'Intervall der gefluteten Ankündigungen';
|
||
|
||
@override
|
||
String repeater_floodAdvertIntervalHours(int hours) {
|
||
return '$hours Stunden';
|
||
}
|
||
|
||
@override
|
||
String get repeater_encryptedAdvertInterval =>
|
||
'Intervall der verschlüsselten Ankündigung';
|
||
|
||
@override
|
||
String get repeater_dangerZone => 'Gefahrenzone';
|
||
|
||
@override
|
||
String get repeater_rebootRepeater => 'Neustart Repeater';
|
||
|
||
@override
|
||
String get repeater_rebootRepeaterSubtitle => 'Repeater-Gerät neu starten.';
|
||
|
||
@override
|
||
String get repeater_rebootRepeaterConfirm =>
|
||
'Sind Sie sicher, dass Sie diesen Repeater neu starten möchten?';
|
||
|
||
@override
|
||
String get repeater_regenerateIdentityKey =>
|
||
'Schlüssel für die Identitätswiederherstellung';
|
||
|
||
@override
|
||
String get repeater_regenerateIdentityKeySubtitle =>
|
||
'Neuen öffentlichen/privaten Schlüsselpaar generieren';
|
||
|
||
@override
|
||
String get repeater_regenerateIdentityKeyConfirm =>
|
||
'Dies generiert eine neue Identität für den Repeater. Fortfahren?';
|
||
|
||
@override
|
||
String get repeater_eraseFileSystem => 'Dateisystem löschen';
|
||
|
||
@override
|
||
String get repeater_eraseFileSystemSubtitle =>
|
||
'Formatiere die Repeater-Dateisystemdatei';
|
||
|
||
@override
|
||
String get repeater_eraseFileSystemConfirm =>
|
||
'WARNUNG: Dies löscht alle Daten auf dem Repeater. Dies kann nicht rückgängig gemacht werden!';
|
||
|
||
@override
|
||
String get repeater_eraseSerialOnly =>
|
||
'Löschen ist nur über die serielle Konsole möglich.';
|
||
|
||
@override
|
||
String repeater_commandSent(String command) {
|
||
return 'Befehl gesendet: $command';
|
||
}
|
||
|
||
@override
|
||
String repeater_errorSendingCommand(String error) {
|
||
return 'Fehler beim Senden des Befehls: $error';
|
||
}
|
||
|
||
@override
|
||
String get repeater_confirm => 'Bestätigen';
|
||
|
||
@override
|
||
String get repeater_settingsSaved => 'Einstellungen erfolgreich gespeichert';
|
||
|
||
@override
|
||
String repeater_errorSavingSettings(String error) {
|
||
return 'Fehler beim Speichern der Einstellungen: $error';
|
||
}
|
||
|
||
@override
|
||
String get repeater_refreshBasicSettings =>
|
||
'Grundlegende Einstellungen aktualisieren';
|
||
|
||
@override
|
||
String get repeater_refreshRadioSettings =>
|
||
'Radio-Einstellungen aktualisieren';
|
||
|
||
@override
|
||
String get repeater_refreshTxPower => 'Sendeleistung aktualisieren';
|
||
|
||
@override
|
||
String get repeater_refreshLocationSettings =>
|
||
'Aktualisieren Sie die Standort Einstellungen';
|
||
|
||
@override
|
||
String get repeater_refreshPacketForwarding =>
|
||
'Aktualisieren Paketweiterleitung';
|
||
|
||
@override
|
||
String get repeater_refreshGuestAccess => 'Aktualisieren Sie den Gastzugriff';
|
||
|
||
@override
|
||
String get repeater_refreshPrivacyMode =>
|
||
'Wiederherstellen des Datenschutzzustands';
|
||
|
||
@override
|
||
String get repeater_refreshAdvertisementSettings =>
|
||
'Aktualisieren Sie die Ankündigungseinstellungen';
|
||
|
||
@override
|
||
String repeater_refreshed(String label) {
|
||
return '$label wurde aktualisiert';
|
||
}
|
||
|
||
@override
|
||
String repeater_errorRefreshing(String label) {
|
||
return 'Fehler beim Aktualisieren von $label';
|
||
}
|
||
|
||
@override
|
||
String get repeater_cliTitle => 'Repeater CLI';
|
||
|
||
@override
|
||
String get repeater_debugNextCommand => 'Fehlersuche des nächsten Befehls';
|
||
|
||
@override
|
||
String get repeater_commandHelp => 'Hilfe';
|
||
|
||
@override
|
||
String get repeater_clearHistory => 'Löschen der Historie';
|
||
|
||
@override
|
||
String get repeater_noCommandsSent => 'Noch keine Befehle gesendet.';
|
||
|
||
@override
|
||
String get repeater_typeCommandOrUseQuick =>
|
||
'Geben Sie unten einen Befehl ein oder verwenden Sie die Schnellbefehle';
|
||
|
||
@override
|
||
String get repeater_enterCommandHint => 'Geben Sie den Befehl ein...';
|
||
|
||
@override
|
||
String get repeater_previousCommand => 'Vorhergehende Aktion';
|
||
|
||
@override
|
||
String get repeater_nextCommand => 'Nächste Aktion';
|
||
|
||
@override
|
||
String get repeater_enterCommandFirst => 'Geben Sie zuerst einen Befehl ein';
|
||
|
||
@override
|
||
String get repeater_cliCommandFrameTitle => 'CLI-Befehlsfenster';
|
||
|
||
@override
|
||
String repeater_cliCommandError(String error) {
|
||
return 'Fehler: $error';
|
||
}
|
||
|
||
@override
|
||
String get repeater_cliQuickGetName => 'Name erhalten';
|
||
|
||
@override
|
||
String get repeater_cliQuickGetRadio => 'Radio empfangen';
|
||
|
||
@override
|
||
String get repeater_cliQuickGetTx => 'Erhalte TX';
|
||
|
||
@override
|
||
String get repeater_cliQuickNeighbors => 'Nachbarn';
|
||
|
||
@override
|
||
String get repeater_cliQuickVersion => 'Version';
|
||
|
||
@override
|
||
String get repeater_cliQuickAdvertise => 'Ankündigungen';
|
||
|
||
@override
|
||
String get repeater_cliQuickClock => 'Uhr';
|
||
|
||
@override
|
||
String get repeater_cliHelpAdvert => 'Sendet eine Ankündigung';
|
||
|
||
@override
|
||
String get repeater_cliHelpReboot =>
|
||
'Startet das Gerät neu. (Beachten Sie, dass es möglicherweise zu einer \'Timeout\'-Situation kommt, was normal ist.)';
|
||
|
||
@override
|
||
String get repeater_cliHelpClock =>
|
||
'Zeigt die aktuelle Uhrzeit pro Gerät an.';
|
||
|
||
@override
|
||
String get repeater_cliHelpPassword =>
|
||
'Legt ein neues Administrator-Passwort für das Gerät fest.';
|
||
|
||
@override
|
||
String get repeater_cliHelpVersion =>
|
||
'Zeigt die Geräteversion und das Datum des Firmware-Builds an.';
|
||
|
||
@override
|
||
String get repeater_cliHelpClearStats =>
|
||
'Setzt verschiedene Statistikberechnungen auf Null zurück.';
|
||
|
||
@override
|
||
String get repeater_cliHelpSetAf => 'Legt den Luftzeitfaktor fest.';
|
||
|
||
@override
|
||
String get repeater_cliHelpSetTx =>
|
||
'Legt die LoRa-Übertragungspower in dBm (bezogen auf 1 Watt) fest. (Neustart erforderlich, um die Änderungen anzuwenden)';
|
||
|
||
@override
|
||
String get repeater_cliHelpSetRepeat =>
|
||
'Aktiviert oder deaktiviert die Repeater-Rolle für diesen Knoten.';
|
||
|
||
@override
|
||
String get repeater_cliHelpSetAllowReadOnly =>
|
||
'(Raumspeicher) Wenn \'an\', dann wird die Anmeldung mit einem leeren Passwort erlaubt sein, aber es kann nicht in den Raum gesendet werden. (nur lesen möglich).';
|
||
|
||
@override
|
||
String get repeater_cliHelpSetFloodMax =>
|
||
'Legt die maximale Anzahl an Hops für Pakete der eingehenden Flut (wenn >= max, wird das Paket nicht weitergeleitet)';
|
||
|
||
@override
|
||
String get repeater_cliHelpSetIntThresh =>
|
||
'Legt den Interferenzeniveau (in dB) fest. Der Standardwert ist 14. Auf 0 setzen, um die Erkennung von Kanalinterferenzen zu deaktivieren.';
|
||
|
||
@override
|
||
String get repeater_cliHelpSetAgcResetInterval =>
|
||
'Legt das Intervall für das Zurücksetzen des Auto Gain Controllers fest. Auf 0 setzen, um die Funktion zu deaktivieren.';
|
||
|
||
@override
|
||
String get repeater_cliHelpSetMultiAcks =>
|
||
'Aktiviert oder deaktiviert die Funktion \'Doppel-ACKs\'.';
|
||
|
||
@override
|
||
String get repeater_cliHelpSetAdvertInterval =>
|
||
'Legt das Timer-Intervall in Minuten fest, um ein lokales (ohne-Weiterleitung) Ankündigungspaket zu senden. Auf 0 setzen, um die Funktion zu deaktivieren.';
|
||
|
||
@override
|
||
String get repeater_cliHelpSetFloodAdvertInterval =>
|
||
'Legt das Timer-Intervall in Stunden für den Versand eines Flut-Ankündigungspacket fest. Auf 0 setzen, um es zu deaktivieren.';
|
||
|
||
@override
|
||
String get repeater_cliHelpSetGuestPassword =>
|
||
'Legt/aktualisiert das Gastpasswort fest. (für Repeater können Gast-Logins die \"Get Stats\"-Anfrage senden)';
|
||
|
||
@override
|
||
String get repeater_cliHelpSetName => 'Legt den Anzeigenamen fest.';
|
||
|
||
@override
|
||
String get repeater_cliHelpSetLat =>
|
||
'Legt die Breitengrad der Ankündigung fest. (dezimale Grad)';
|
||
|
||
@override
|
||
String get repeater_cliHelpSetLon =>
|
||
'Legt die Längengrade der Ankündigung fest. (dezimale Grad)';
|
||
|
||
@override
|
||
String get repeater_cliHelpSetRadio =>
|
||
'Legt komplett neue Radio-Parameter fest und speichert diese als Präferenzen. Benötigt einen \"Reboot\"-Befehl, um sie anzuwenden.';
|
||
|
||
@override
|
||
String get repeater_cliHelpSetRxDelay =>
|
||
'Fügt eine leichte Verzögerung bei empfangenen Paketen hinzu, basierend auf Signalstärke/Punktzahl. Auf 0 setzen, um die Funktion zu deaktivieren.';
|
||
|
||
@override
|
||
String get repeater_cliHelpSetTxDelay =>
|
||
'Legt einen Faktor fest, der mit der Zeit bei voller Zuluft für ein Flood-Mode-Paket und mit einem zufälligen Slot-System multipliziert wird, um dessen Weiterleitung zu verzögern (um Kollisionen zu vermeiden).';
|
||
|
||
@override
|
||
String get repeater_cliHelpSetDirectTxDelay =>
|
||
'Ähnlich wie txdelay, aber zum Anwenden einer zufälligen Verzögerung bei der Weiterleitung von Direktmodus-Paketen.';
|
||
|
||
@override
|
||
String get repeater_cliHelpSetBridgeEnabled =>
|
||
'Brücke aktivieren/deaktivieren.';
|
||
|
||
@override
|
||
String get repeater_cliHelpSetBridgeDelay =>
|
||
'Setze Verzögerung vor erneuter Übertragung von Paketen.';
|
||
|
||
@override
|
||
String get repeater_cliHelpSetBridgeSource =>
|
||
'Wählen Sie, ob über die Brücke empfangene oder gesendete Pakete erneut übertragen soll.';
|
||
|
||
@override
|
||
String get repeater_cliHelpSetBridgeBaud =>
|
||
'Setze die serielle Link-Baudrate für RS232-Brücken.';
|
||
|
||
@override
|
||
String get repeater_cliHelpSetBridgeSecret =>
|
||
'Richte das Brückenpassword ein.';
|
||
|
||
@override
|
||
String get repeater_cliHelpSetAdcMultiplier =>
|
||
'Legt einen benutzerdefinierten Faktor zur Anpassung der gemeldeten Batteriewirkspannung fest (nur auf ausgewählten Boards unterstützt).';
|
||
|
||
@override
|
||
String get repeater_cliHelpTempRadio =>
|
||
'Legt vorübergehende Funkparameter für die angegebene Anzahl von Minuten fest und kehrt anschließend zu den ursprünglichen Funkparametern zurück (wird nicht in den Einstellungen gespeichert).';
|
||
|
||
@override
|
||
String get repeater_cliHelpSetPerm =>
|
||
'Ändert die ACL. Entfernt das passende Eintragen (durch Pubkey-Präfix), wenn \"permissions\" auf 0 steht. Fügt ein neues Eintragen hinzu, wenn die Pubkey-Hex-Länge vollständig ist und nicht bereits in der ACL vorhanden ist. Aktualisiert das Eintragen anhand des übereinstimmenden Pubkey-Präfix. Berechtigungsbits variieren je nach Firmware-Rolle, aber die unteren 2 Bits sind: 0 (Gast), 1 (Nur Lesen), 2 (Lesen/Schreiben), 3 (Admin)';
|
||
|
||
@override
|
||
String get repeater_cliHelpGetBridgeType =>
|
||
'Ruft Brückentyp: none, rs232, espnow ab.';
|
||
|
||
@override
|
||
String get repeater_cliHelpLogStart =>
|
||
'Beginnt die Paketprotokollierung in das Dateisystem.';
|
||
|
||
@override
|
||
String get repeater_cliHelpLogStop =>
|
||
'Stoppt das Paketprotokollieren in das Dateisystem.';
|
||
|
||
@override
|
||
String get repeater_cliHelpLogErase =>
|
||
'Löscht die Paketprotokolle aus dem Dateisystem.';
|
||
|
||
@override
|
||
String get repeater_cliHelpNeighbors =>
|
||
'Zeigt eine Liste anderer Repeater-Knoten an, die über Zero-Hop-Ankündigung gehört wurden. Jede Zeile ist id-prefix-hex:timestamp:snr-times-4';
|
||
|
||
@override
|
||
String get repeater_cliHelpNeighborRemove =>
|
||
'Entfernt das erste übereinstimmende Element (über Pubkey-Präfix (hex)) aus der Liste der Nachbarn.';
|
||
|
||
@override
|
||
String get repeater_cliHelpRegion => 'Listet alle definierten Regionen auf.';
|
||
|
||
@override
|
||
String get repeater_cliHelpRegionLoad =>
|
||
'Hinweis: Dies ist ein spezieller Mehrbefehl-Aufruf. Jeder nachfolgende Befehl ist ein Regionsname (eingerückt mit Leerzeichen zur Angabe der übergeordneten Hierarchie, mit mindestens einem Leerzeichen). Beendet durch das Senden einer Leerzeile.';
|
||
|
||
@override
|
||
String get repeater_cliHelpRegionGet =>
|
||
'Sucht die Region mit dem gegebenen Namenspräfix (oder \"\\\" für den globalen Scope) und antwortet mit \"-> region-name (parent-name) \'F\'\".';
|
||
|
||
@override
|
||
String get repeater_cliHelpRegionPut =>
|
||
'Fügt eine Region-Definition mit dem angegebenen Namen hinzu oder aktualisiert diese.';
|
||
|
||
@override
|
||
String get repeater_cliHelpRegionRemove =>
|
||
'Löscht eine Regiondefinition mit dem angegebenen Namen. (muss genau übereinstimmen und keine Kindregionen haben)';
|
||
|
||
@override
|
||
String get repeater_cliHelpRegionAllowf =>
|
||
'Legt die \'Flut\'-Berechtigung für die angegebene Region fest. (\'\' für den globalen/legacy-Bereich)';
|
||
|
||
@override
|
||
String get repeater_cliHelpRegionDenyf =>
|
||
'Entfernt die \"F\"lood-Berechtigung für die angegebene Region. (ANMERKUNG: in dieser Phase wird nicht empfohlen, dies auf dem globalen/legacy-Bereich zu verwenden!!)';
|
||
|
||
@override
|
||
String get repeater_cliHelpRegionHome =>
|
||
'Antwortet mit der aktuellen \'Home\'-Region. (Hinweis wurde bisher nirgendwo angewendet, für zukünftige Zwecke reserviert)';
|
||
|
||
@override
|
||
String get repeater_cliHelpRegionHomeSet => 'Legt die \'Home\'-Region fest.';
|
||
|
||
@override
|
||
String get repeater_cliHelpRegionSave =>
|
||
'Speichert die Regionenliste/Karte in den Speicher.';
|
||
|
||
@override
|
||
String get repeater_cliHelpGps =>
|
||
'Zeigt GPS-Status an. Wenn GPS deaktiviert ist, antwortet es nur mit \"aus\", wenn es eingeschaltet ist, antwortet es mit \"an\", \"Status\", \"Fix\" und Satellitenanzahl.';
|
||
|
||
@override
|
||
String get repeater_cliHelpGpsOnOff => 'Schaltet die GPS-Leistung ein/aus.';
|
||
|
||
@override
|
||
String get repeater_cliHelpGpsSync =>
|
||
'Synchronisiert die Knotenzeit mit der GPS-Uhr.';
|
||
|
||
@override
|
||
String get repeater_cliHelpGpsSetLoc =>
|
||
'Setze die Position des Knotens auf GPS-Koordinaten und speichere die Präferenzen.';
|
||
|
||
@override
|
||
String get repeater_cliHelpGpsAdvert =>
|
||
'Gibt Konfiguration für die Standortanzeige des Knotens:\n- none: Standort nicht in Anzeigen einbeziehen\n- share: GPS-Standort teilen (von SensorManager)\n- prefs: Standort aus Einstellungen anzeigen';
|
||
|
||
@override
|
||
String get repeater_cliHelpGpsAdvertSet =>
|
||
'Legt die Standort-Anzeigekonfiguration fest.';
|
||
|
||
@override
|
||
String get repeater_commandsListTitle => 'Befehlsliste';
|
||
|
||
@override
|
||
String get repeater_commandsListNote =>
|
||
'ACHTUNG: Für die verschiedenen „set ...“-Befehle gibt es auch einen „get ...“-Befehl.';
|
||
|
||
@override
|
||
String get repeater_general => 'Allgemein';
|
||
|
||
@override
|
||
String get repeater_settingsCategory => 'Einstellungen';
|
||
|
||
@override
|
||
String get repeater_bridge => 'Brücke';
|
||
|
||
@override
|
||
String get repeater_logging => 'Protokollierung';
|
||
|
||
@override
|
||
String get repeater_neighborsRepeaterOnly => 'Nachbarn (nur Repeater)';
|
||
|
||
@override
|
||
String get repeater_regionManagementRepeaterOnly =>
|
||
'Regionenverwaltung (nur Repeater)';
|
||
|
||
@override
|
||
String get repeater_regionNote =>
|
||
'Region-Befehle wurden eingeführt, um Region-Definitionen und Berechtigungen zu verwalten.';
|
||
|
||
@override
|
||
String get repeater_gpsManagement => 'GPS-Verwaltung';
|
||
|
||
@override
|
||
String get repeater_gpsNote =>
|
||
'Der GPS-Befehl wurde eingeführt, um Standortbezogene Themen zu verwalten.';
|
||
|
||
@override
|
||
String get telemetry_receivedData => 'Empfangene Telemetriedaten';
|
||
|
||
@override
|
||
String get telemetry_requestTimeout =>
|
||
'Telemetry-Anfrage hat zu lange gedauert.';
|
||
|
||
@override
|
||
String telemetry_errorLoading(String error) {
|
||
return 'Fehler beim Laden der Telemetrie: $error';
|
||
}
|
||
|
||
@override
|
||
String get telemetry_noData => 'Keine Telemetriedaten verfügbar.';
|
||
|
||
@override
|
||
String telemetry_channelTitle(int channel) {
|
||
return 'Kanal $channel';
|
||
}
|
||
|
||
@override
|
||
String get telemetry_batteryLabel => 'Akku';
|
||
|
||
@override
|
||
String get telemetry_voltageLabel => 'Spannung';
|
||
|
||
@override
|
||
String get telemetry_mcuTemperatureLabel => 'MCU Temperatur';
|
||
|
||
@override
|
||
String get telemetry_temperatureLabel => 'Temperatur';
|
||
|
||
@override
|
||
String get telemetry_currentLabel => 'Aktuell';
|
||
|
||
@override
|
||
String telemetry_batteryValue(int percent, String volts) {
|
||
return '$percent% / ${volts}V';
|
||
}
|
||
|
||
@override
|
||
String telemetry_voltageValue(String volts) {
|
||
return '$volts Volt';
|
||
}
|
||
|
||
@override
|
||
String telemetry_currentValue(String amps) {
|
||
return '${amps}A';
|
||
}
|
||
|
||
@override
|
||
String telemetry_temperatureValue(String celsius, String fahrenheit) {
|
||
return '$celsius°C / $fahrenheit°F';
|
||
}
|
||
|
||
@override
|
||
String get neighbors_receivedData => 'Empfangene Nachbarsdaten';
|
||
|
||
@override
|
||
String get neighbors_requestTimedOut =>
|
||
'Anfrage durch Timeout fehlgeschlagen.';
|
||
|
||
@override
|
||
String neighbors_errorLoading(String error) {
|
||
return 'Fehler beim Laden der Nachbarn: $error';
|
||
}
|
||
|
||
@override
|
||
String get neighbors_repeatersNeighbors => 'Nachbarn';
|
||
|
||
@override
|
||
String get neighbors_noData => 'Keine Nachbarsdaten verfügbar.';
|
||
|
||
@override
|
||
String neighbors_unknownContact(String pubkey) {
|
||
return 'Unbekannt $pubkey';
|
||
}
|
||
|
||
@override
|
||
String neighbors_heardAgo(String time) {
|
||
return 'Gehört vor: $time';
|
||
}
|
||
|
||
@override
|
||
String get channelPath_title => 'Paketpfad';
|
||
|
||
@override
|
||
String get channelPath_viewMap => 'Karte anzeigen';
|
||
|
||
@override
|
||
String get channelPath_otherObservedPaths => 'Sonstige beobachtete Pfade';
|
||
|
||
@override
|
||
String get channelPath_repeaterHops => 'Repeater-Sprünge';
|
||
|
||
@override
|
||
String get channelPath_noHopDetails =>
|
||
'Die Detailangaben für dieses Paket sind nicht verfügbar.';
|
||
|
||
@override
|
||
String get channelPath_messageDetails => 'Nachrichtendetails';
|
||
|
||
@override
|
||
String get channelPath_senderLabel => 'Sender';
|
||
|
||
@override
|
||
String get channelPath_timeLabel => 'Zeit';
|
||
|
||
@override
|
||
String get channelPath_repeatsLabel => 'Wiederholungen';
|
||
|
||
@override
|
||
String channelPath_pathLabel(int index) {
|
||
return 'Pfad $index';
|
||
}
|
||
|
||
@override
|
||
String get channelPath_observedLabel => 'Beobachtet';
|
||
|
||
@override
|
||
String channelPath_observedPathTitle(int index, String hops) {
|
||
return 'Beobachteter Pfad $index • $hops';
|
||
}
|
||
|
||
@override
|
||
String get channelPath_noLocationData => 'Keine Standortdaten';
|
||
|
||
@override
|
||
String channelPath_timeWithDate(int day, int month, String time) {
|
||
return '$day/$month $time';
|
||
}
|
||
|
||
@override
|
||
String channelPath_timeOnly(String time) {
|
||
return '$time';
|
||
}
|
||
|
||
@override
|
||
String get channelPath_unknownPath => 'Unbekannt';
|
||
|
||
@override
|
||
String get channelPath_floodPath => 'Geflutet';
|
||
|
||
@override
|
||
String get channelPath_directPath => 'Direkt';
|
||
|
||
@override
|
||
String channelPath_observedZeroOf(int total) {
|
||
return '0 von $total Sprüngen';
|
||
}
|
||
|
||
@override
|
||
String channelPath_observedSomeOf(int observed, int total) {
|
||
return '$observed von $total Sprüngen';
|
||
}
|
||
|
||
@override
|
||
String get channelPath_mapTitle => 'Pfadkarte';
|
||
|
||
@override
|
||
String get channelPath_noRepeaterLocations =>
|
||
'Für diesen Pfad stehen keine Repeater-Positionen zur Verfügung.';
|
||
|
||
@override
|
||
String channelPath_primaryPath(int index) {
|
||
return 'Pfad $index (Primär)';
|
||
}
|
||
|
||
@override
|
||
String get channelPath_pathLabelTitle => 'Pfad';
|
||
|
||
@override
|
||
String get channelPath_observedPathHeader => 'Beobachteter Pfad';
|
||
|
||
@override
|
||
String channelPath_selectedPathLabel(String label, String prefixes) {
|
||
return '$label • $prefixes';
|
||
}
|
||
|
||
@override
|
||
String get channelPath_noHopDetailsAvailable =>
|
||
'Keine Informationen zu dieser Paketroute verfügbar.';
|
||
|
||
@override
|
||
String get channelPath_unknownRepeater => 'Unbekannter Repeater';
|
||
|
||
@override
|
||
String get community_title => 'Community';
|
||
|
||
@override
|
||
String get community_create => 'Erstelle Community';
|
||
|
||
@override
|
||
String get community_createDesc =>
|
||
'Erstelle eine neue Community und teile sie über den QR-Code.';
|
||
|
||
@override
|
||
String get community_join => 'Beitreten';
|
||
|
||
@override
|
||
String get community_joinTitle => 'Tritt der Community bei';
|
||
|
||
@override
|
||
String community_joinConfirmation(String name) {
|
||
return 'Möchten Sie sich der Community \"$name\" anschließen?';
|
||
}
|
||
|
||
@override
|
||
String get community_scanQr => 'Scannen Sie die Community QR-Code';
|
||
|
||
@override
|
||
String get community_scanInstructions =>
|
||
'Richten Sie die Kamera auf einen Community-QR-Code.';
|
||
|
||
@override
|
||
String get community_showQr => 'Zeige QR-Code';
|
||
|
||
@override
|
||
String get community_publicChannel => 'Community Öffentlich';
|
||
|
||
@override
|
||
String get community_hashtagChannel => 'Community Hashtag';
|
||
|
||
@override
|
||
String get community_name => 'Community Name';
|
||
|
||
@override
|
||
String get community_enterName => 'Bitte Community-Name eingeben';
|
||
|
||
@override
|
||
String community_created(String name) {
|
||
return 'Community \"$name\" wurde erstellt';
|
||
}
|
||
|
||
@override
|
||
String community_joined(String name) {
|
||
return 'Community \"$name\" beigetreten';
|
||
}
|
||
|
||
@override
|
||
String get community_qrTitle => 'Teile Community';
|
||
|
||
@override
|
||
String community_qrInstructions(String name) {
|
||
return 'Scannen Sie diesen QR-Code, um sich \"$name\" anzuschließen.';
|
||
}
|
||
|
||
@override
|
||
String get community_hashtagPrivacyHint =>
|
||
'Community-Hashtag-Kanäle können nur von Mitgliedern der Community betreten werden';
|
||
|
||
@override
|
||
String get community_invalidQrCode => 'Ungültiger Community-QR-Code';
|
||
|
||
@override
|
||
String get community_alreadyMember => 'Bereits registriert';
|
||
|
||
@override
|
||
String community_alreadyMemberMessage(String name) {
|
||
return 'Sie sind bereits Mitglied von \"$name\".';
|
||
}
|
||
|
||
@override
|
||
String get community_addPublicChannel =>
|
||
'Füge einen öffentlichen Community-Kanal hinzu';
|
||
|
||
@override
|
||
String get community_addPublicChannelHint =>
|
||
'Automatisch den öffentlichen Kanal für diese Community hinzufügen';
|
||
|
||
@override
|
||
String get community_noCommunities => 'Noch keiner Community beigetreten';
|
||
|
||
@override
|
||
String get community_scanOrCreate =>
|
||
'Scannen Sie einen QR-Code oder eine Community erstellen, um loszulegen.';
|
||
|
||
@override
|
||
String get community_manageCommunities => 'Verwalten von Communities';
|
||
|
||
@override
|
||
String get community_delete => 'Verlasse Community';
|
||
|
||
@override
|
||
String community_deleteConfirm(String name) {
|
||
return '\"$name\" verlassen?';
|
||
}
|
||
|
||
@override
|
||
String community_deleteChannelsWarning(int count) {
|
||
return 'Dies löscht auch $count Kanal/Kanäle und deren Nachrichten.';
|
||
}
|
||
|
||
@override
|
||
String community_deleted(String name) {
|
||
return 'Community \"$name\" verlassen';
|
||
}
|
||
|
||
@override
|
||
String get community_regenerateSecret => 'Neugenerierung des Schlüssels';
|
||
|
||
@override
|
||
String community_regenerateSecretConfirm(String name) {
|
||
return 'Nehmen Sie den geheimen Schlüssel für \"$name\" neu auf? Alle Mitglieder müssen den neuen QR-Code scannen, um die Kommunikation fortzusetzen.';
|
||
}
|
||
|
||
@override
|
||
String get community_regenerate => 'Neu generieren';
|
||
|
||
@override
|
||
String community_secretRegenerated(String name) {
|
||
return 'Wiederherstellung des Schlüssels für \"$name\" erfolgreich';
|
||
}
|
||
|
||
@override
|
||
String get community_updateSecret => 'Aktualisieren Sie den Schlüssel';
|
||
|
||
@override
|
||
String community_secretUpdated(String name) {
|
||
return 'Schlüssel für \"$name\" aktualisiert';
|
||
}
|
||
|
||
@override
|
||
String community_scanToUpdateSecret(String name) {
|
||
return 'Scannen Sie den neuen QR-Code, um das Geheimnis für \"$name\" zu aktualisieren.';
|
||
}
|
||
|
||
@override
|
||
String get community_addHashtagChannel =>
|
||
'Füge einen Community-Hashtag hinzu';
|
||
|
||
@override
|
||
String get community_addHashtagChannelDesc =>
|
||
'Füge einen Hashtag-Kanal für diese Community hinzu';
|
||
|
||
@override
|
||
String get community_selectCommunity => 'Wählen Sie eine Community';
|
||
|
||
@override
|
||
String get community_regularHashtag => 'Regulärer Hashtag';
|
||
|
||
@override
|
||
String get community_regularHashtagDesc =>
|
||
'Öffentlicher Hashtag (jeder kann teilnehmen)';
|
||
|
||
@override
|
||
String get community_communityHashtag => 'Community Hashtag';
|
||
|
||
@override
|
||
String get community_communityHashtagDesc =>
|
||
'Nur für Mitglieder der Community';
|
||
|
||
@override
|
||
String community_forCommunity(String name) {
|
||
return 'Für $name';
|
||
}
|
||
|
||
@override
|
||
String get listFilter_tooltip => 'Filteren und sortieren';
|
||
|
||
@override
|
||
String get listFilter_sortBy => 'Sortiere nach';
|
||
|
||
@override
|
||
String get listFilter_latestMessages => 'Letzte Nachrichten';
|
||
|
||
@override
|
||
String get listFilter_heardRecently => 'Kürzlich gehört';
|
||
|
||
@override
|
||
String get listFilter_az => 'A-Z';
|
||
|
||
@override
|
||
String get listFilter_filters => 'Filtere';
|
||
|
||
@override
|
||
String get listFilter_all => 'Alle';
|
||
|
||
@override
|
||
String get listFilter_favorites => 'Favoriten';
|
||
|
||
@override
|
||
String get listFilter_addToFavorites => 'Zu Favoriten hinzufügen';
|
||
|
||
@override
|
||
String get listFilter_removeFromFavorites => 'Aus Favoriten entfernen';
|
||
|
||
@override
|
||
String get listFilter_users => 'Benutzer';
|
||
|
||
@override
|
||
String get listFilter_repeaters => 'Repeater';
|
||
|
||
@override
|
||
String get listFilter_roomServers => 'Raumserver';
|
||
|
||
@override
|
||
String get listFilter_unreadOnly => 'Nicht gelesen';
|
||
|
||
@override
|
||
String get listFilter_newGroup => 'Neue Gruppe';
|
||
|
||
@override
|
||
String get pathTrace_you => 'Du';
|
||
|
||
@override
|
||
String get pathTrace_failed => 'Pfadverfolgung fehlgeschlagen.';
|
||
|
||
@override
|
||
String get pathTrace_notAvailable => 'Pfadverfolgung nicht verfügbar.';
|
||
|
||
@override
|
||
String get pathTrace_refreshTooltip => 'Path Trace aktualisieren.';
|
||
|
||
@override
|
||
String get pathTrace_someHopsNoLocation =>
|
||
'Bei einer oder mehreren Knoten fehlt der Standort!';
|
||
|
||
@override
|
||
String get pathTrace_clearTooltip => 'Pfad löschen';
|
||
|
||
@override
|
||
String get losSelectStartEnd =>
|
||
'Wählen Sie Start- und Endknoten für LOS aus.';
|
||
|
||
@override
|
||
String losRunFailed(String error) {
|
||
return 'Sichtlinienprüfung fehlgeschlagen: $error';
|
||
}
|
||
|
||
@override
|
||
String get losClearAllPoints => 'Löschen Sie alle Punkte';
|
||
|
||
@override
|
||
String get losRunToViewElevationProfile =>
|
||
'Führen Sie LOS aus, um das Höhenprofil anzuzeigen';
|
||
|
||
@override
|
||
String get losMenuTitle => 'LOS-Menü';
|
||
|
||
@override
|
||
String get losMenuSubtitle =>
|
||
'Tippen Sie auf Knoten oder drücken Sie lange auf die Karte, um benutzerdefinierte Punkte anzuzeigen';
|
||
|
||
@override
|
||
String get losShowDisplayNodes => 'Anzeigeknoten anzeigen';
|
||
|
||
@override
|
||
String get losCustomPoints => 'Benutzerdefinierte Punkte';
|
||
|
||
@override
|
||
String losCustomPointLabel(int index) {
|
||
return 'Benutzerdefiniert $index';
|
||
}
|
||
|
||
@override
|
||
String get losPointA => 'Punkt A';
|
||
|
||
@override
|
||
String get losPointB => 'Punkt B';
|
||
|
||
@override
|
||
String losAntennaA(String value, String unit) {
|
||
return 'Antenne A: $value $unit';
|
||
}
|
||
|
||
@override
|
||
String losAntennaB(String value, String unit) {
|
||
return 'Antenne B: $value $unit';
|
||
}
|
||
|
||
@override
|
||
String get losRun => 'Führen Sie LOS aus';
|
||
|
||
@override
|
||
String get losNoElevationData => 'Keine Höhendaten';
|
||
|
||
@override
|
||
String losProfileClear(
|
||
String distance,
|
||
String distanceUnit,
|
||
String clearance,
|
||
String heightUnit,
|
||
) {
|
||
return '$distance $distanceUnit, freie Sichtlinie, Mindestabstand $clearance $heightUnit';
|
||
}
|
||
|
||
@override
|
||
String losProfileBlocked(
|
||
String distance,
|
||
String distanceUnit,
|
||
String obstruction,
|
||
String heightUnit,
|
||
) {
|
||
return '$distance $distanceUnit, blockiert durch $obstruction $heightUnit';
|
||
}
|
||
|
||
@override
|
||
String get losStatusChecking => 'LOS: Überprüfen...';
|
||
|
||
@override
|
||
String get losStatusNoData => 'LOS: keine Daten';
|
||
|
||
@override
|
||
String losStatusSummary(int clear, int total, int blocked, int unknown) {
|
||
return 'Sichtlinie: $clear/$total frei, $blocked blockiert, $unknown unbekannt';
|
||
}
|
||
|
||
@override
|
||
String get losErrorElevationUnavailable =>
|
||
'Für eine oder mehrere Proben sind keine Höhendaten verfügbar.';
|
||
|
||
@override
|
||
String get losErrorInvalidInput =>
|
||
'Ungültige Punkte/Höhendaten für die LOS-Berechnung.';
|
||
|
||
@override
|
||
String get losRenameCustomPoint =>
|
||
'Benennen Sie den benutzerdefinierten Punkt um';
|
||
|
||
@override
|
||
String get losPointName => 'Punktname';
|
||
|
||
@override
|
||
String get losShowPanelTooltip => 'LOS-Panel anzeigen';
|
||
|
||
@override
|
||
String get losHidePanelTooltip => 'LOS-Panel ausblenden';
|
||
|
||
@override
|
||
String get losElevationAttribution => 'Höhendaten: Open-Meteo (CC BY 4.0)';
|
||
|
||
@override
|
||
String get losLegendRadioHorizon => 'Funkhorizont';
|
||
|
||
@override
|
||
String get losLegendLosBeam => 'Sichtlinie';
|
||
|
||
@override
|
||
String get losLegendTerrain => 'Gelände';
|
||
|
||
@override
|
||
String get losFrequencyLabel => 'Frequenz';
|
||
|
||
@override
|
||
String get losFrequencyInfoTooltip => 'Details zur Berechnung anzeigen';
|
||
|
||
@override
|
||
String get losFrequencyDialogTitle => 'Berechnung des Funkhorizonts';
|
||
|
||
@override
|
||
String losFrequencyDialogDescription(
|
||
double baselineK,
|
||
double baselineFreq,
|
||
double frequencyMHz,
|
||
double kFactor,
|
||
) {
|
||
return 'Ausgehend von k=$baselineK bei $baselineFreq MHz passt die Berechnung den k-Faktor für das aktuelle $frequencyMHz MHz-Band an, das die gekrümmte Funkhorizontobergrenze definiert.';
|
||
}
|
||
|
||
@override
|
||
String get contacts_pathTrace => 'Pfadverfolgung';
|
||
|
||
@override
|
||
String get contacts_ping => 'Pingen';
|
||
|
||
@override
|
||
String get contacts_repeaterPathTrace => 'Pfadverfolgung zum Repeater';
|
||
|
||
@override
|
||
String get contacts_repeaterPing => 'Repeater pingen';
|
||
|
||
@override
|
||
String get contacts_roomPathTrace => 'Pfadverfolgung zum Raumserver';
|
||
|
||
@override
|
||
String get contacts_roomPing => 'Raumserver anpingen';
|
||
|
||
@override
|
||
String get contacts_chatTraceRoute => 'Pfadverfolgungsroute';
|
||
|
||
@override
|
||
String contacts_pathTraceTo(String name) {
|
||
return 'Route nach $name verfolgen';
|
||
}
|
||
|
||
@override
|
||
String get contacts_clipboardEmpty => 'Die Zwischenablage ist leer.';
|
||
|
||
@override
|
||
String get contacts_invalidAdvertFormat => 'Ungültige Kontaktdaten';
|
||
|
||
@override
|
||
String get contacts_contactImported => 'Kontakt wurde importiert.';
|
||
|
||
@override
|
||
String get contacts_contactImportFailed =>
|
||
'Kontakt konnte nicht importiert werden';
|
||
|
||
@override
|
||
String get contacts_zeroHopAdvert => 'Zero-Hop-Ankündigung';
|
||
|
||
@override
|
||
String get contacts_floodAdvert => 'Flut-Ankündigung';
|
||
|
||
@override
|
||
String get contacts_copyAdvertToClipboard =>
|
||
'Ankündigung in die Zwischenablage kopieren';
|
||
|
||
@override
|
||
String get contacts_addContactFromClipboard =>
|
||
'Kontakt aus Zwischenablage hinzufügen';
|
||
|
||
@override
|
||
String get contacts_ShareContact => 'Kontakt in die Zwischenablage kopieren';
|
||
|
||
@override
|
||
String get contacts_ShareContactZeroHop => 'Kontakt über Anzeige teilen';
|
||
|
||
@override
|
||
String get contacts_zeroHopContactAdvertSent =>
|
||
'Kontakt über Anzeige gesendet';
|
||
|
||
@override
|
||
String get contacts_zeroHopContactAdvertFailed =>
|
||
'Kontakt konnte nicht gesendet werden.';
|
||
|
||
@override
|
||
String get contacts_contactAdvertCopied =>
|
||
'Anzeige in die Zwischenablage kopiert.';
|
||
|
||
@override
|
||
String get contacts_contactAdvertCopyFailed =>
|
||
'Kopieren der Ankündigung in die Zwischenablage fehlgeschlagen.';
|
||
|
||
@override
|
||
String get notification_activityTitle => 'MeshCore Aktivität';
|
||
|
||
@override
|
||
String notification_messagesCount(int count) {
|
||
String _temp0 = intl.Intl.pluralLogic(
|
||
count,
|
||
locale: localeName,
|
||
other: 'Nachrichten',
|
||
one: 'Nachricht',
|
||
);
|
||
return '$count $_temp0';
|
||
}
|
||
|
||
@override
|
||
String notification_channelMessagesCount(int count) {
|
||
String _temp0 = intl.Intl.pluralLogic(
|
||
count,
|
||
locale: localeName,
|
||
other: 'Kanalnachrichten',
|
||
one: 'Kanalnachricht',
|
||
);
|
||
return '$count $_temp0';
|
||
}
|
||
|
||
@override
|
||
String notification_newNodesCount(int count) {
|
||
String _temp0 = intl.Intl.pluralLogic(
|
||
count,
|
||
locale: localeName,
|
||
other: 'neue Knoten',
|
||
one: 'neuer Knoten',
|
||
);
|
||
return '$count $_temp0';
|
||
}
|
||
|
||
@override
|
||
String notification_newTypeDiscovered(String contactType) {
|
||
return 'Neuer $contactType entdeckt';
|
||
}
|
||
|
||
@override
|
||
String get notification_receivedNewMessage => 'Neue Nachricht empfangen';
|
||
|
||
@override
|
||
String get settings_gpxExportRepeaters =>
|
||
'Repeater und Raumserver als GPX exportieren';
|
||
|
||
@override
|
||
String get settings_gpxExportRepeatersSubtitle =>
|
||
'Exportiert Repeater und Raumserver mit einem Standort in eine GPX-Datei.';
|
||
|
||
@override
|
||
String get settings_gpxExportContacts => 'Kontakte als GPX exportieren';
|
||
|
||
@override
|
||
String get settings_gpxExportContactsSubtitle =>
|
||
'Exportiert Kontakte mit einem Ort in eine GPX-Datei.';
|
||
|
||
@override
|
||
String get settings_gpxExportAll => 'Alle Knoten als GPX exportieren';
|
||
|
||
@override
|
||
String get settings_gpxExportAllSubtitle =>
|
||
'Exportiert alle Knoten mit einem Standort in eine GPX-Datei.';
|
||
|
||
@override
|
||
String get settings_gpxExportSuccess => 'GPX-Datei erfolgreich exportiert.';
|
||
|
||
@override
|
||
String get settings_gpxExportNoContacts => 'Keine Kontakte zum Exportieren.';
|
||
|
||
@override
|
||
String get settings_gpxExportNotAvailable =>
|
||
'Nicht auf Ihrem Gerät/Betriebssystem unterstützt';
|
||
|
||
@override
|
||
String get settings_gpxExportError =>
|
||
'Beim Export ist ein Fehler aufgetreten.';
|
||
|
||
@override
|
||
String get settings_gpxExportRepeatersRoom =>
|
||
'Repeater- und Raumserver-Standorte';
|
||
|
||
@override
|
||
String get settings_gpxExportChat => 'Kontaktstandorte';
|
||
|
||
@override
|
||
String get settings_gpxExportAllContacts => 'Alle Kontaktstandorte';
|
||
|
||
@override
|
||
String get settings_gpxExportShareText =>
|
||
'GPX-Kartendaten aus meshcore-open exportiert';
|
||
|
||
@override
|
||
String get settings_gpxExportShareSubject =>
|
||
'GPX-Kartendaten aus meshcore-open exportieren';
|
||
|
||
@override
|
||
String get snrIndicator_nearByRepeaters => 'In der Nähe befindliche Repeater';
|
||
|
||
@override
|
||
String get snrIndicator_lastSeen => 'Zuletzt gesehen';
|
||
|
||
@override
|
||
String get contactsSettings_title => 'Kontakteinstellungen';
|
||
|
||
@override
|
||
String get contactsSettings_autoAddTitle => 'Automatische Erkennung';
|
||
|
||
@override
|
||
String get contactsSettings_otherTitle =>
|
||
'Weitere Einstellungen zu Kontakten';
|
||
|
||
@override
|
||
String get contactsSettings_autoAddUsersTitle =>
|
||
'Automatische Hinzufügung von Benutzern';
|
||
|
||
@override
|
||
String get contactsSettings_autoAddUsersSubtitle =>
|
||
'Ermöglichen Sie dem Begleiter, automatisch entdeckte Benutzer hinzuzufügen';
|
||
|
||
@override
|
||
String get contactsSettings_autoAddRepeatersTitle =>
|
||
'Automatisch Repeater hinzufügen';
|
||
|
||
@override
|
||
String get contactsSettings_autoAddRepeatersSubtitle =>
|
||
'Ermöglichen Sie dem Begleiter, automatisch entdeckte Repeater hinzuzufügen.';
|
||
|
||
@override
|
||
String get contactsSettings_autoAddRoomServersTitle =>
|
||
'Automatisch Raumservers hinzufügen';
|
||
|
||
@override
|
||
String get contactsSettings_autoAddRoomServersSubtitle =>
|
||
'Ermöglichen Sie dem Begleiter, entdeckte Raumserver automatisch hinzuzufügen';
|
||
|
||
@override
|
||
String get contactsSettings_autoAddSensorsTitle =>
|
||
'Automatisch Sensoren hinzufügen';
|
||
|
||
@override
|
||
String get contactsSettings_autoAddSensorsSubtitle =>
|
||
'Ermöglichen Sie dem Begleiter, automatisch entdeckte Sensoren hinzuzufügen';
|
||
|
||
@override
|
||
String get contactsSettings_overwriteOldestTitle =>
|
||
'Überschreiben des Ältesten';
|
||
|
||
@override
|
||
String get contactsSettings_overwriteOldestSubtitle =>
|
||
'Wenn die Kontaktliste voll ist, wird der älteste nicht favorisierte Kontakt ersetzt.';
|
||
|
||
@override
|
||
String get discoveredContacts_Title => 'Entdeckte Kontakte';
|
||
|
||
@override
|
||
String get discoveredContacts_noMatching => 'Keine passenden Kontakte';
|
||
|
||
@override
|
||
String get discoveredContacts_searchHint => 'Entdeckte Kontakte suchen';
|
||
|
||
@override
|
||
String get discoveredContacts_contactAdded => 'Kontakt hinzugefügt';
|
||
|
||
@override
|
||
String get discoveredContacts_addContact => 'Kontakt hinzufügen';
|
||
|
||
@override
|
||
String get discoveredContacts_copyContact =>
|
||
'Kontakt in die Zwischenablage kopieren';
|
||
|
||
@override
|
||
String get discoveredContacts_deleteContact => 'Kontakt löschen';
|
||
|
||
@override
|
||
String get discoveredContacts_deleteContactAll =>
|
||
'Alle entdeckten Kontakte löschen';
|
||
|
||
@override
|
||
String get discoveredContacts_deleteContactAllContent =>
|
||
'Sind Sie sicher, dass Sie alle gefundenen Kontakte löschen möchten?';
|
||
}
|