mirror of
https://github.com/dz0ny/meshcore-sar.git
synced 2026-08-11 16:30:28 +00:00
- Updated localization files for German, English, Spanish, French, Croatian, Italian, and Slovenian to include new overlay labels. - Implemented new WMS layers in the map provider and map tab for displaying hiking trails, main roads, house numbers, fire hazard zones, historical fires, firebreaks, Kras fire zones, place names, and municipality borders. - Added toggle functionality for each new overlay in the map provider. - Enhanced the map tab UI to include checkboxes for the new overlays, allowing users to enable or disable them. - Integrated the new WMS layers into the map rendering logic.
2191 lines
52 KiB
Dart
2191 lines
52 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 SAR';
|
|
|
|
@override
|
|
String get messages => 'Nachrichten';
|
|
|
|
@override
|
|
String get contacts => 'Kontakte';
|
|
|
|
@override
|
|
String get map => 'Karte';
|
|
|
|
@override
|
|
String get settings => 'Einstellungen';
|
|
|
|
@override
|
|
String get connect => 'Verbinden';
|
|
|
|
@override
|
|
String get disconnect => 'Trennen';
|
|
|
|
@override
|
|
String get scanningForDevices => 'Suche nach Geräten...';
|
|
|
|
@override
|
|
String get noDevicesFound => 'Keine Geräte gefunden';
|
|
|
|
@override
|
|
String get scanAgain => 'Erneut scannen';
|
|
|
|
@override
|
|
String get tapToConnect => 'Zum Verbinden tippen';
|
|
|
|
@override
|
|
String get deviceNotConnected => 'Gerät nicht verbunden';
|
|
|
|
@override
|
|
String get locationPermissionDenied => 'Standortberechtigung verweigert';
|
|
|
|
@override
|
|
String get locationPermissionPermanentlyDenied =>
|
|
'Standortberechtigung dauerhaft verweigert. Bitte in den Einstellungen aktivieren.';
|
|
|
|
@override
|
|
String get locationPermissionRequired =>
|
|
'Die Standortberechtigung ist für GPS-Tracking und Teamkoordination erforderlich. Sie können sie später in den Einstellungen aktivieren.';
|
|
|
|
@override
|
|
String get locationServicesDisabled =>
|
|
'Standortdienste sind deaktiviert. Bitte aktivieren Sie sie in den Einstellungen.';
|
|
|
|
@override
|
|
String get failedToGetGpsLocation =>
|
|
'GPS-Position konnte nicht abgerufen werden';
|
|
|
|
@override
|
|
String advertisedAtLocation(String latitude, String longitude) {
|
|
return 'Position gesendet bei $latitude, $longitude';
|
|
}
|
|
|
|
@override
|
|
String failedToAdvertise(String error) {
|
|
return 'Senden fehlgeschlagen: $error';
|
|
}
|
|
|
|
@override
|
|
String reconnecting(int attempt, int max) {
|
|
return 'Wiederverbindung... ($attempt/$max)';
|
|
}
|
|
|
|
@override
|
|
String get cancelReconnection => 'Wiederverbindung abbrechen';
|
|
|
|
@override
|
|
String get mapManagement => 'Kartenverwaltung';
|
|
|
|
@override
|
|
String get general => 'Allgemein';
|
|
|
|
@override
|
|
String get theme => 'Design';
|
|
|
|
@override
|
|
String get chooseTheme => 'Design auswählen';
|
|
|
|
@override
|
|
String get light => 'Hell';
|
|
|
|
@override
|
|
String get dark => 'Dunkel';
|
|
|
|
@override
|
|
String get blueLightTheme => 'Blaues helles Design';
|
|
|
|
@override
|
|
String get blueDarkTheme => 'Blaues dunkles Design';
|
|
|
|
@override
|
|
String get sarRed => 'SAR Rot';
|
|
|
|
@override
|
|
String get alertEmergencyMode => 'Alarm-/Notfallmodus';
|
|
|
|
@override
|
|
String get sarGreen => 'SAR Grün';
|
|
|
|
@override
|
|
String get safeAllClearMode => 'Sicher/Entwarnung-Modus';
|
|
|
|
@override
|
|
String get autoSystem => 'Automatisch (System)';
|
|
|
|
@override
|
|
String get followSystemTheme => 'System-Design folgen';
|
|
|
|
@override
|
|
String get showRxTxIndicators => 'RX/TX-Indikatoren anzeigen';
|
|
|
|
@override
|
|
String get displayPacketActivity =>
|
|
'Paketaktivitätsindikatoren in der oberen Leiste anzeigen';
|
|
|
|
@override
|
|
String get simpleMode => 'Einfacher Modus';
|
|
|
|
@override
|
|
String get simpleModeDescription =>
|
|
'Nicht wesentliche Informationen in Nachrichten und Kontakten ausblenden';
|
|
|
|
@override
|
|
String get language => 'Sprache';
|
|
|
|
@override
|
|
String get chooseLanguage => 'Sprache auswählen';
|
|
|
|
@override
|
|
String get english => 'Englisch';
|
|
|
|
@override
|
|
String get slovenian => 'Slowenisch';
|
|
|
|
@override
|
|
String get croatian => 'Kroatisch';
|
|
|
|
@override
|
|
String get german => 'Deutsch';
|
|
|
|
@override
|
|
String get spanish => 'Spanisch';
|
|
|
|
@override
|
|
String get french => 'Französisch';
|
|
|
|
@override
|
|
String get italian => 'Italienisch';
|
|
|
|
@override
|
|
String get locationBroadcasting => 'Standortübertragung';
|
|
|
|
@override
|
|
String get autoLocationTracking => 'Automatisches Standort-Tracking';
|
|
|
|
@override
|
|
String get automaticallyBroadcastPosition =>
|
|
'Positionsaktualisierungen automatisch übertragen';
|
|
|
|
@override
|
|
String get configureTracking => 'Tracking konfigurieren';
|
|
|
|
@override
|
|
String get distanceAndTimeThresholds => 'Entfernungs- und Zeitschwellenwerte';
|
|
|
|
@override
|
|
String get locationTrackingConfiguration => 'Standort-Tracking-Konfiguration';
|
|
|
|
@override
|
|
String get configureWhenLocationBroadcasts =>
|
|
'Konfigurieren Sie, wann Standortübertragungen an das Mesh-Netzwerk gesendet werden';
|
|
|
|
@override
|
|
String get minimumDistance => 'Mindestentfernung';
|
|
|
|
@override
|
|
String broadcastAfterMoving(String distance) {
|
|
return 'Nur nach Bewegung von $distance Metern übertragen';
|
|
}
|
|
|
|
@override
|
|
String get maximumDistance => 'Maximale Entfernung';
|
|
|
|
@override
|
|
String alwaysBroadcastAfterMoving(String distance) {
|
|
return 'Immer nach Bewegung von $distance Metern übertragen';
|
|
}
|
|
|
|
@override
|
|
String get minimumTimeInterval => 'Minimales Zeitintervall';
|
|
|
|
@override
|
|
String alwaysBroadcastEvery(String duration) {
|
|
return 'Immer alle $duration übertragen';
|
|
}
|
|
|
|
@override
|
|
String get save => 'Speichern';
|
|
|
|
@override
|
|
String get cancel => 'Abbrechen';
|
|
|
|
@override
|
|
String get close => 'Schließen';
|
|
|
|
@override
|
|
String get about => 'Über';
|
|
|
|
@override
|
|
String get appVersion => 'App-Version';
|
|
|
|
@override
|
|
String get appName => 'App-Name';
|
|
|
|
@override
|
|
String get aboutMeshCoreSar => 'Über MeshCore SAR';
|
|
|
|
@override
|
|
String get aboutDescription =>
|
|
'Eine Such- und Rettungsanwendung für Notfallteams. Funktionen umfassen:\n\n• BLE-Mesh-Netzwerk für Gerät-zu-Gerät-Kommunikation\n• Offline-Karten mit mehreren Ebenenoptionen\n• Echtzeit-Teammitgliederverfolgung\n• SAR-Taktikmarkierungen (Person gefunden, Feuer, Sammelpunkt)\n• Kontaktverwaltung und Nachrichtenübermittlung\n• GPS-Tracking mit Kompass-Kurs\n• Karten-Tile-Caching für Offline-Nutzung';
|
|
|
|
@override
|
|
String get technologiesUsed => 'Verwendete Technologien:';
|
|
|
|
@override
|
|
String get technologiesList =>
|
|
'• Flutter für plattformübergreifende Entwicklung\n• BLE (Bluetooth Low Energy) für Mesh-Netzwerk\n• OpenStreetMap für Kartendarstellung\n• Provider für Zustandsverwaltung\n• SharedPreferences für lokale Speicherung';
|
|
|
|
@override
|
|
String get moreInfo => 'Mehr Info';
|
|
|
|
@override
|
|
String get learnMoreAbout => 'Erfahren Sie mehr über MeshCore SAR';
|
|
|
|
@override
|
|
String get developer => 'Entwickler';
|
|
|
|
@override
|
|
String get packageName => 'Paketname';
|
|
|
|
@override
|
|
String get sampleData => 'Beispieldaten';
|
|
|
|
@override
|
|
String get sampleDataDescription =>
|
|
'Laden oder löschen Sie Beispielkontakte, Kanalnachrichten und SAR-Markierungen zum Testen';
|
|
|
|
@override
|
|
String get loadSampleData => 'Beispieldaten laden';
|
|
|
|
@override
|
|
String get clearAllData => 'Alle Daten löschen';
|
|
|
|
@override
|
|
String get clearAllDataConfirmTitle => 'Alle Daten löschen';
|
|
|
|
@override
|
|
String get clearAllDataConfirmMessage =>
|
|
'Dadurch werden alle Kontakte und SAR-Markierungen gelöscht. Sind Sie sicher?';
|
|
|
|
@override
|
|
String get clear => 'Löschen';
|
|
|
|
@override
|
|
String loadedSampleData(
|
|
int teamCount,
|
|
int channelCount,
|
|
int sarCount,
|
|
int messageCount,
|
|
) {
|
|
return '$teamCount Teammitglieder, $channelCount Kanäle, $sarCount SAR-Markierungen, $messageCount Nachrichten geladen';
|
|
}
|
|
|
|
@override
|
|
String failedToLoadSampleData(String error) {
|
|
return 'Fehler beim Laden der Beispieldaten: $error';
|
|
}
|
|
|
|
@override
|
|
String get allDataCleared => 'Alle Daten gelöscht';
|
|
|
|
@override
|
|
String get failedToStartBackgroundTracking =>
|
|
'Hintergrund-Tracking konnte nicht gestartet werden. Überprüfen Sie Berechtigungen und BLE-Verbindung.';
|
|
|
|
@override
|
|
String locationBroadcast(String latitude, String longitude) {
|
|
return 'Standortübertragung: $latitude, $longitude';
|
|
}
|
|
|
|
@override
|
|
String get defaultPinInfo =>
|
|
'Die Standard-PIN für Geräte ohne Bildschirm ist 123456. Probleme beim Koppeln? Vergessen Sie das Bluetooth-Gerät in den Systemeinstellungen.';
|
|
|
|
@override
|
|
String get noMessagesYet => 'Noch keine Nachrichten';
|
|
|
|
@override
|
|
String get pullDownToSync =>
|
|
'Nach unten ziehen, um Nachrichten zu synchronisieren';
|
|
|
|
@override
|
|
String get deleteContact => 'Kontakt löschen';
|
|
|
|
@override
|
|
String get delete => 'Löschen';
|
|
|
|
@override
|
|
String get viewOnMap => 'Auf Karte anzeigen';
|
|
|
|
@override
|
|
String get refresh => 'Aktualisieren';
|
|
|
|
@override
|
|
String get sendDirectMessage => 'Senden';
|
|
|
|
@override
|
|
String get resetPath => 'Pfad zurücksetzen (Umleitung)';
|
|
|
|
@override
|
|
String get publicKeyCopied =>
|
|
'Öffentlicher Schlüssel in die Zwischenablage kopiert';
|
|
|
|
@override
|
|
String copiedToClipboard(String label) {
|
|
return '$label in die Zwischenablage kopiert';
|
|
}
|
|
|
|
@override
|
|
String get pleaseEnterPassword => 'Bitte geben Sie ein Passwort ein';
|
|
|
|
@override
|
|
String failedToSyncContacts(String error) {
|
|
return 'Kontaktsynchronisation fehlgeschlagen: $error';
|
|
}
|
|
|
|
@override
|
|
String get loggedInSuccessfully =>
|
|
'Erfolgreich angemeldet! Warte auf Raumnachrichten...';
|
|
|
|
@override
|
|
String get loginFailed => 'Anmeldung fehlgeschlagen - falsches Passwort';
|
|
|
|
@override
|
|
String loggingIn(String roomName) {
|
|
return 'Anmeldung bei $roomName...';
|
|
}
|
|
|
|
@override
|
|
String failedToSendLogin(String error) {
|
|
return 'Anmeldung senden fehlgeschlagen: $error';
|
|
}
|
|
|
|
@override
|
|
String get lowLocationAccuracy => 'Niedrige Standortgenauigkeit';
|
|
|
|
@override
|
|
String get continue_ => 'Fortfahren';
|
|
|
|
@override
|
|
String get sendSarMarker => 'SAR-Markierung senden';
|
|
|
|
@override
|
|
String get deleteDrawing => 'Zeichnung löschen';
|
|
|
|
@override
|
|
String get drawingTools => 'Zeichenwerkzeuge';
|
|
|
|
@override
|
|
String get drawLine => 'Linie zeichnen';
|
|
|
|
@override
|
|
String get drawLineDesc => 'Freihandlinie auf der Karte zeichnen';
|
|
|
|
@override
|
|
String get drawRectangle => 'Rechteck zeichnen';
|
|
|
|
@override
|
|
String get drawRectangleDesc => 'Rechteckigen Bereich auf der Karte zeichnen';
|
|
|
|
@override
|
|
String get measureDistance => 'Entfernung messen';
|
|
|
|
@override
|
|
String get measureDistanceDesc => 'Zwei Punkte lang drücken zum Messen';
|
|
|
|
@override
|
|
String get clearMeasurement => 'Messung löschen';
|
|
|
|
@override
|
|
String distanceLabel(String distance) {
|
|
return 'Entfernung: $distance';
|
|
}
|
|
|
|
@override
|
|
String get longPressForSecondPoint => 'Langer Druck für zweiten Punkt';
|
|
|
|
@override
|
|
String get longPressToStartMeasurement => 'Langer Druck für ersten Punkt';
|
|
|
|
@override
|
|
String get longPressToStartNewMeasurement => 'Langer Druck für neue Messung';
|
|
|
|
@override
|
|
String get shareDrawings => 'Zeichnungen teilen';
|
|
|
|
@override
|
|
String get clearAllDrawings => 'Alle Zeichnungen löschen';
|
|
|
|
@override
|
|
String get completeLine => 'Linie fertigstellen';
|
|
|
|
@override
|
|
String broadcastDrawingsToTeam(int count, String plural) {
|
|
return '$count Zeichnung$plural an Team senden';
|
|
}
|
|
|
|
@override
|
|
String removeAllDrawings(int count, String plural) {
|
|
return 'Alle $count Zeichnung$plural entfernen';
|
|
}
|
|
|
|
@override
|
|
String deleteAllDrawingsConfirm(int count, String plural) {
|
|
return 'Alle $count Zeichnung$plural von der Karte löschen?';
|
|
}
|
|
|
|
@override
|
|
String get drawing => 'Zeichnung';
|
|
|
|
@override
|
|
String shareDrawingsCount(int count, String plural) {
|
|
return '$count Zeichnung$plural teilen';
|
|
}
|
|
|
|
@override
|
|
String sentDrawingsToRoom(int count, String plural, String roomName) {
|
|
return '$count Kartenzeichnung$plural an $roomName gesendet';
|
|
}
|
|
|
|
@override
|
|
String sharedDrawingsToRoom(
|
|
int success,
|
|
int total,
|
|
String plural,
|
|
String roomName,
|
|
) {
|
|
return '$success/$total Zeichnung$plural mit $roomName geteilt';
|
|
}
|
|
|
|
@override
|
|
String get showReceivedDrawings => 'Empfangene Zeichnungen anzeigen';
|
|
|
|
@override
|
|
String get showingAllDrawings => 'Alle Zeichnungen werden angezeigt';
|
|
|
|
@override
|
|
String get showingOnlyYourDrawings => 'Nur Ihre Zeichnungen werden angezeigt';
|
|
|
|
@override
|
|
String get showSarMarkers => 'SAR-Markierungen anzeigen';
|
|
|
|
@override
|
|
String get showingSarMarkers => 'SAR-Markierungen werden angezeigt';
|
|
|
|
@override
|
|
String get hidingSarMarkers => 'SAR-Markierungen ausgeblendet';
|
|
|
|
@override
|
|
String get clearAll => 'Alle löschen';
|
|
|
|
@override
|
|
String get noLocalDrawings => 'Keine lokalen Zeichnungen zum Teilen';
|
|
|
|
@override
|
|
String get publicChannel => 'Öffentlicher Kanal';
|
|
|
|
@override
|
|
String get broadcastToAll => 'An alle Knoten in der Nähe senden (temporär)';
|
|
|
|
@override
|
|
String get storedPermanently => 'Dauerhaft im Raum gespeichert';
|
|
|
|
@override
|
|
String drawingsSentToPublicChannel(int count, String plural) {
|
|
return '$count Kartenzeichnung$plural an öffentlichen Kanal gesendet';
|
|
}
|
|
|
|
@override
|
|
String drawingsSharedToPublicChannel(int success, int total) {
|
|
return '$success/$total Zeichnungen mit öffentlichem Kanal geteilt';
|
|
}
|
|
|
|
@override
|
|
String get notConnectedToDevice => 'Nicht mit Gerät verbunden';
|
|
|
|
@override
|
|
String get directMessage => 'Direktnachricht';
|
|
|
|
@override
|
|
String directMessageSentTo(String contactName) {
|
|
return 'Direktnachricht an $contactName gesendet';
|
|
}
|
|
|
|
@override
|
|
String failedToSend(String error) {
|
|
return 'Senden fehlgeschlagen: $error';
|
|
}
|
|
|
|
@override
|
|
String directMessageInfo(String contactName) {
|
|
return 'Diese Nachricht wird direkt an $contactName gesendet. Sie erscheint auch im Hauptnachrichten-Feed.';
|
|
}
|
|
|
|
@override
|
|
String get typeYourMessage => 'Geben Sie Ihre Nachricht ein...';
|
|
|
|
@override
|
|
String get quickLocationMarker => 'Schnelle Standortmarkierung';
|
|
|
|
@override
|
|
String get markerType => 'Markierungstyp';
|
|
|
|
@override
|
|
String get sendTo => 'Senden an';
|
|
|
|
@override
|
|
String get noDestinationsAvailable => 'Keine Ziele verfügbar.';
|
|
|
|
@override
|
|
String get selectDestination => 'Ziel auswählen...';
|
|
|
|
@override
|
|
String get ephemeralBroadcastInfo =>
|
|
'Temporär: Nur Over-the-Air-Übertragung. Nicht gespeichert - Knoten müssen online sein.';
|
|
|
|
@override
|
|
String get persistentRoomInfo =>
|
|
'Dauerhaft: Unveränderlich im Raum gespeichert. Automatisch synchronisiert und offline gespeichert.';
|
|
|
|
@override
|
|
String get location => 'Standort';
|
|
|
|
@override
|
|
String get myLocation => 'Mein Standort';
|
|
|
|
@override
|
|
String get fromMap => 'Von Karte';
|
|
|
|
@override
|
|
String get gettingLocation => 'Standort wird abgerufen...';
|
|
|
|
@override
|
|
String get locationError => 'Standortfehler';
|
|
|
|
@override
|
|
String get retry => 'Wiederholen';
|
|
|
|
@override
|
|
String get refreshLocation => 'Standort aktualisieren';
|
|
|
|
@override
|
|
String accuracyMeters(int accuracy) {
|
|
return 'Genauigkeit: ±${accuracy}m';
|
|
}
|
|
|
|
@override
|
|
String get notesOptional => 'Notizen (optional)';
|
|
|
|
@override
|
|
String get addAdditionalInformation =>
|
|
'Zusätzliche Informationen hinzufügen...';
|
|
|
|
@override
|
|
String lowAccuracyWarning(int accuracy) {
|
|
return 'Standortgenauigkeit beträgt ±${accuracy}m. Dies ist möglicherweise nicht genau genug für SAR-Operationen.\n\nTrotzdem fortfahren?';
|
|
}
|
|
|
|
@override
|
|
String get loginToRoom => 'Bei Raum anmelden';
|
|
|
|
@override
|
|
String get enterPasswordInfo =>
|
|
'Geben Sie das Passwort ein, um auf diesen Raum zuzugreifen. Das Passwort wird für die zukünftige Verwendung gespeichert.';
|
|
|
|
@override
|
|
String get password => 'Passwort';
|
|
|
|
@override
|
|
String get enterRoomPassword => 'Raumpasswort eingeben';
|
|
|
|
@override
|
|
String get loggingInDots => 'Anmeldung läuft...';
|
|
|
|
@override
|
|
String get login => 'Anmelden';
|
|
|
|
@override
|
|
String failedToAddRoom(String error) {
|
|
return 'Fehler beim Hinzufügen des Raums zum Gerät: $error\n\nDer Raum hat möglicherweise noch nicht gesendet.\nVersuchen Sie zu warten, bis der Raum sendet.';
|
|
}
|
|
|
|
@override
|
|
String get direct => 'Direkt';
|
|
|
|
@override
|
|
String get flood => 'Flut';
|
|
|
|
@override
|
|
String get admin => 'Admin';
|
|
|
|
@override
|
|
String get loggedIn => 'Angemeldet';
|
|
|
|
@override
|
|
String get noGpsData => 'Keine GPS-Daten';
|
|
|
|
@override
|
|
String get distance => 'Entfernung';
|
|
|
|
@override
|
|
String pingingDirect(String name) {
|
|
return 'Pinge $name (direkt über Pfad)...';
|
|
}
|
|
|
|
@override
|
|
String pingingFlood(String name) {
|
|
return 'Pinge $name (Flutung - kein Pfad)...';
|
|
}
|
|
|
|
@override
|
|
String directPingTimeout(String name) {
|
|
return 'Direkter Ping-Timeout - wiederhole $name mit Flutung...';
|
|
}
|
|
|
|
@override
|
|
String pingSuccessful(String name, String fallback) {
|
|
return 'Ping erfolgreich an $name$fallback';
|
|
}
|
|
|
|
@override
|
|
String get viaFloodingFallback => ' (über Flutungs-Fallback)';
|
|
|
|
@override
|
|
String pingFailed(String name) {
|
|
return 'Ping fehlgeschlagen an $name - keine Antwort erhalten';
|
|
}
|
|
|
|
@override
|
|
String deleteContactConfirmation(String name) {
|
|
return 'Sind Sie sicher, dass Sie \"$name\" löschen möchten?\n\nDies entfernt den Kontakt sowohl aus der App als auch vom Begleitfunkgerät.';
|
|
}
|
|
|
|
@override
|
|
String removingContact(String name) {
|
|
return 'Entferne $name...';
|
|
}
|
|
|
|
@override
|
|
String contactRemoved(String name) {
|
|
return 'Kontakt \"$name\" entfernt';
|
|
}
|
|
|
|
@override
|
|
String failedToRemoveContact(String error) {
|
|
return 'Fehler beim Entfernen des Kontakts: $error';
|
|
}
|
|
|
|
@override
|
|
String get type => 'Typ';
|
|
|
|
@override
|
|
String get publicKey => 'Öffentlicher Schlüssel';
|
|
|
|
@override
|
|
String get lastSeen => 'Zuletzt gesehen';
|
|
|
|
@override
|
|
String get roomStatus => 'Raumstatus';
|
|
|
|
@override
|
|
String get loginStatus => 'Anmeldestatus';
|
|
|
|
@override
|
|
String get notLoggedIn => 'Nicht angemeldet';
|
|
|
|
@override
|
|
String get adminAccess => 'Admin-Zugriff';
|
|
|
|
@override
|
|
String get yes => 'Ja';
|
|
|
|
@override
|
|
String get no => 'Nein';
|
|
|
|
@override
|
|
String get permissions => 'Berechtigungen';
|
|
|
|
@override
|
|
String get passwordSaved => 'Passwort gespeichert';
|
|
|
|
@override
|
|
String get locationColon => 'Standort:';
|
|
|
|
@override
|
|
String get telemetry => 'Telemetrie';
|
|
|
|
@override
|
|
String requestingTelemetry(String name) {
|
|
return 'Fordere Telemetrie von $name an...';
|
|
}
|
|
|
|
@override
|
|
String get voltage => 'Spannung';
|
|
|
|
@override
|
|
String get battery => 'Batterie';
|
|
|
|
@override
|
|
String get temperature => 'Temperatur';
|
|
|
|
@override
|
|
String get humidity => 'Luftfeuchtigkeit';
|
|
|
|
@override
|
|
String get pressure => 'Druck';
|
|
|
|
@override
|
|
String get gpsTelemetry => 'GPS (Telemetrie)';
|
|
|
|
@override
|
|
String get updated => 'Aktualisiert';
|
|
|
|
@override
|
|
String pathResetInfo(String name) {
|
|
return 'Pfad zurückgesetzt für $name. Nächste Nachricht findet eine neue Route.';
|
|
}
|
|
|
|
@override
|
|
String get reLoginToRoom => 'Erneut bei Raum anmelden';
|
|
|
|
@override
|
|
String get heading => 'Kurs';
|
|
|
|
@override
|
|
String get elevation => 'Höhe';
|
|
|
|
@override
|
|
String get accuracy => 'Genauigkeit';
|
|
|
|
@override
|
|
String get bearing => 'Peilung';
|
|
|
|
@override
|
|
String get direction => 'Richtung';
|
|
|
|
@override
|
|
String get filterMarkers => 'Markierungen filtern';
|
|
|
|
@override
|
|
String get filterMarkersTooltip => 'Markierungen filtern';
|
|
|
|
@override
|
|
String get contactsFilter => 'Kontakte';
|
|
|
|
@override
|
|
String get repeatersFilter => 'Repeater';
|
|
|
|
@override
|
|
String get sarMarkers => 'SAR-Markierungen';
|
|
|
|
@override
|
|
String get foundPerson => 'Person gefunden';
|
|
|
|
@override
|
|
String get fire => 'Feuer';
|
|
|
|
@override
|
|
String get stagingArea => 'Sammelpunkt';
|
|
|
|
@override
|
|
String get showAll => 'Alle anzeigen';
|
|
|
|
@override
|
|
String get nearbyContacts => 'Kontakte in der Nähe';
|
|
|
|
@override
|
|
String get locationUnavailable => 'Standort nicht verfügbar';
|
|
|
|
@override
|
|
String get ahead => 'voraus';
|
|
|
|
@override
|
|
String degreesRight(int degrees) {
|
|
return '$degrees° rechts';
|
|
}
|
|
|
|
@override
|
|
String degreesLeft(int degrees) {
|
|
return '$degrees° links';
|
|
}
|
|
|
|
@override
|
|
String latLonFormat(String latitude, String longitude) {
|
|
return 'Lat: $latitude Lon: $longitude';
|
|
}
|
|
|
|
@override
|
|
String get noContactsYet => 'Noch keine Kontakte';
|
|
|
|
@override
|
|
String get connectToDeviceToLoadContacts =>
|
|
'Mit einem Gerät verbinden, um Kontakte zu laden';
|
|
|
|
@override
|
|
String get teamMembers => 'Teammitglieder';
|
|
|
|
@override
|
|
String get repeaters => 'Repeater';
|
|
|
|
@override
|
|
String get rooms => 'Räume';
|
|
|
|
@override
|
|
String get channels => 'Kanäle';
|
|
|
|
@override
|
|
String get cacheStatistics => 'Cache-Statistiken';
|
|
|
|
@override
|
|
String get totalTiles => 'Gesamte Tiles';
|
|
|
|
@override
|
|
String get cacheSize => 'Cache-Größe';
|
|
|
|
@override
|
|
String get storeName => 'Speichername';
|
|
|
|
@override
|
|
String get noCacheStatistics => 'Keine Cache-Statistiken verfügbar';
|
|
|
|
@override
|
|
String get downloadRegion => 'Region herunterladen';
|
|
|
|
@override
|
|
String get mapLayer => 'Kartenebene';
|
|
|
|
@override
|
|
String get regionBounds => 'Regionsgrenzen';
|
|
|
|
@override
|
|
String get north => 'Nord';
|
|
|
|
@override
|
|
String get south => 'Süd';
|
|
|
|
@override
|
|
String get east => 'Ost';
|
|
|
|
@override
|
|
String get west => 'West';
|
|
|
|
@override
|
|
String get zoomLevels => 'Zoom-Stufen';
|
|
|
|
@override
|
|
String minZoom(int zoom) {
|
|
return 'Min: $zoom';
|
|
}
|
|
|
|
@override
|
|
String maxZoom(int zoom) {
|
|
return 'Max: $zoom';
|
|
}
|
|
|
|
@override
|
|
String get downloadingDots => 'Lädt herunter...';
|
|
|
|
@override
|
|
String get cancelDownload => 'Download abbrechen';
|
|
|
|
@override
|
|
String get downloadRegionButton => 'Region herunterladen';
|
|
|
|
@override
|
|
String get downloadNote =>
|
|
'Hinweis: Große Regionen oder hohe Zoom-Stufen können erhebliche Zeit und Speicherplatz benötigen.';
|
|
|
|
@override
|
|
String get cacheManagement => 'Cache-Verwaltung';
|
|
|
|
@override
|
|
String get clearAllMaps => 'Alle Karten löschen';
|
|
|
|
@override
|
|
String get clearMapsConfirmTitle => 'Alle Karten löschen';
|
|
|
|
@override
|
|
String get clearMapsConfirmMessage =>
|
|
'Sind Sie sicher, dass Sie alle heruntergeladenen Karten löschen möchten? Diese Aktion kann nicht rückgängig gemacht werden.';
|
|
|
|
@override
|
|
String get mapDownloadCompleted => 'Karten-Download abgeschlossen!';
|
|
|
|
@override
|
|
String get cacheClearedSuccessfully => 'Cache erfolgreich gelöscht!';
|
|
|
|
@override
|
|
String get downloadCancelled => 'Download abgebrochen';
|
|
|
|
@override
|
|
String get startingDownload => 'Starte Download...';
|
|
|
|
@override
|
|
String get downloadingMapTiles => 'Lade Karten-Tiles herunter...';
|
|
|
|
@override
|
|
String get downloadCompletedSuccessfully =>
|
|
'Download erfolgreich abgeschlossen!';
|
|
|
|
@override
|
|
String get cancellingDownload => 'Breche Download ab...';
|
|
|
|
@override
|
|
String errorLoadingStats(String error) {
|
|
return 'Fehler beim Laden der Statistiken: $error';
|
|
}
|
|
|
|
@override
|
|
String downloadFailed(String error) {
|
|
return 'Download fehlgeschlagen: $error';
|
|
}
|
|
|
|
@override
|
|
String cancelFailed(String error) {
|
|
return 'Abbruch fehlgeschlagen: $error';
|
|
}
|
|
|
|
@override
|
|
String clearCacheFailed(String error) {
|
|
return 'Löschen des Caches fehlgeschlagen: $error';
|
|
}
|
|
|
|
@override
|
|
String minZoomError(String error) {
|
|
return 'Min-Zoom: $error';
|
|
}
|
|
|
|
@override
|
|
String maxZoomError(String error) {
|
|
return 'Max-Zoom: $error';
|
|
}
|
|
|
|
@override
|
|
String get minZoomGreaterThanMax =>
|
|
'Minimaler Zoom muss kleiner oder gleich dem maximalen Zoom sein';
|
|
|
|
@override
|
|
String get selectMapLayer => 'Kartenebene auswählen';
|
|
|
|
@override
|
|
String get mapOptions => 'Kartenoptionen';
|
|
|
|
@override
|
|
String get showLegend => 'Legende anzeigen';
|
|
|
|
@override
|
|
String get displayMarkerTypeCounts => 'Markierungstypen-Anzahl anzeigen';
|
|
|
|
@override
|
|
String get rotateMapWithHeading => 'Karte mit Kurs drehen';
|
|
|
|
@override
|
|
String get mapFollowsDirection =>
|
|
'Karte folgt Ihrer Richtung während der Bewegung';
|
|
|
|
@override
|
|
String get resetMapRotation => 'Drehung zurücksetzen';
|
|
|
|
@override
|
|
String get resetMapRotationTooltip => 'Karte nach Norden zurücksetzen';
|
|
|
|
@override
|
|
String get showMapDebugInfo => 'Karten-Debug-Info anzeigen';
|
|
|
|
@override
|
|
String get displayZoomLevelBounds => 'Zoom-Stufe und Grenzen anzeigen';
|
|
|
|
@override
|
|
String get fullscreenMode => 'Vollbildmodus';
|
|
|
|
@override
|
|
String get hideUiFullMapView =>
|
|
'Alle UI-Steuerelemente für volle Kartenansicht ausblenden';
|
|
|
|
@override
|
|
String get openStreetMap => 'OpenStreetMap';
|
|
|
|
@override
|
|
String get openTopoMap => 'OpenTopoMap';
|
|
|
|
@override
|
|
String get esriSatellite => 'ESRI-Satellit';
|
|
|
|
@override
|
|
String get googleHybrid => 'Google Hybrid';
|
|
|
|
@override
|
|
String get googleRoadmap => 'Google Straßenkarte';
|
|
|
|
@override
|
|
String get googleTerrain => 'Google Gelände';
|
|
|
|
@override
|
|
String get downloadVisibleArea => 'Sichtbaren Bereich herunterladen';
|
|
|
|
@override
|
|
String get initializingMap => 'Initialisiere Karte...';
|
|
|
|
@override
|
|
String get dragToPosition => 'Zur Position ziehen';
|
|
|
|
@override
|
|
String get createSarMarker => 'SAR-Markierung erstellen';
|
|
|
|
@override
|
|
String get compass => 'Kompass';
|
|
|
|
@override
|
|
String get navigationAndContacts => 'Navigation & Kontakte';
|
|
|
|
@override
|
|
String get sarAlert => 'SAR-ALARM';
|
|
|
|
@override
|
|
String get messageSentToPublicChannel =>
|
|
'Nachricht an öffentlichen Kanal gesendet';
|
|
|
|
@override
|
|
String get pleaseSelectRoomToSendSar =>
|
|
'Bitte wählen Sie einen Raum zum Senden der SAR-Markierung';
|
|
|
|
@override
|
|
String failedToSendSarMarker(String error) {
|
|
return 'Fehler beim Senden der SAR-Markierung: $error';
|
|
}
|
|
|
|
@override
|
|
String sarMarkerSentTo(String roomName) {
|
|
return 'SAR-Markierung an $roomName gesendet';
|
|
}
|
|
|
|
@override
|
|
String get notConnectedCannotSync =>
|
|
'Nicht verbunden - Nachrichten können nicht synchronisiert werden';
|
|
|
|
@override
|
|
String syncedMessageCount(int count) {
|
|
return '$count Nachricht(en) synchronisiert';
|
|
}
|
|
|
|
@override
|
|
String get noNewMessages => 'Keine neuen Nachrichten';
|
|
|
|
@override
|
|
String syncFailed(String error) {
|
|
return 'Synchronisation fehlgeschlagen: $error';
|
|
}
|
|
|
|
@override
|
|
String get failedToResendMessage =>
|
|
'Fehler beim erneuten Senden der Nachricht';
|
|
|
|
@override
|
|
String get retryingMessage => 'Wiederhole Nachricht...';
|
|
|
|
@override
|
|
String retryFailed(String error) {
|
|
return 'Wiederholen fehlgeschlagen: $error';
|
|
}
|
|
|
|
@override
|
|
String get textCopiedToClipboard => 'Text in Zwischenablage kopiert';
|
|
|
|
@override
|
|
String get cannotReplySenderMissing =>
|
|
'Antwort nicht möglich: Absenderinformationen fehlen';
|
|
|
|
@override
|
|
String get cannotReplyContactNotFound =>
|
|
'Antwort nicht möglich: Kontakt nicht gefunden';
|
|
|
|
@override
|
|
String get messageDeleted => 'Nachricht gelöscht';
|
|
|
|
@override
|
|
String get copyText => 'Text kopieren';
|
|
|
|
@override
|
|
String get saveAsTemplate => 'Als Vorlage speichern';
|
|
|
|
@override
|
|
String get templateSaved => 'Vorlage erfolgreich gespeichert';
|
|
|
|
@override
|
|
String get templateAlreadyExists =>
|
|
'Vorlage mit diesem Emoji existiert bereits';
|
|
|
|
@override
|
|
String get deleteMessage => 'Nachricht löschen';
|
|
|
|
@override
|
|
String get deleteMessageConfirmation =>
|
|
'Möchten Sie diese Nachricht wirklich löschen?';
|
|
|
|
@override
|
|
String get shareLocation => 'Standort teilen';
|
|
|
|
@override
|
|
String shareLocationText(
|
|
String markerInfo,
|
|
String lat,
|
|
String lon,
|
|
String url,
|
|
) {
|
|
return '$markerInfo\n\nKoordinaten: $lat, $lon\n\nGoogle Maps: $url';
|
|
}
|
|
|
|
@override
|
|
String get sarLocationShare => 'SAR Standort';
|
|
|
|
@override
|
|
String get locationShared => 'Standort geteilt';
|
|
|
|
@override
|
|
String get refreshedContacts => 'Kontakte aktualisiert';
|
|
|
|
@override
|
|
String get justNow => 'Gerade eben';
|
|
|
|
@override
|
|
String minutesAgo(int minutes) {
|
|
return 'vor ${minutes}m';
|
|
}
|
|
|
|
@override
|
|
String hoursAgo(int hours) {
|
|
return 'vor ${hours}h';
|
|
}
|
|
|
|
@override
|
|
String daysAgo(int days) {
|
|
return 'vor ${days}d';
|
|
}
|
|
|
|
@override
|
|
String secondsAgo(int seconds) {
|
|
return 'vor ${seconds}s';
|
|
}
|
|
|
|
@override
|
|
String get sending => 'Wird gesendet...';
|
|
|
|
@override
|
|
String get sent => 'Gesendet';
|
|
|
|
@override
|
|
String get delivered => 'Zugestellt';
|
|
|
|
@override
|
|
String deliveredWithTime(int time) {
|
|
return 'Zugestellt (${time}ms)';
|
|
}
|
|
|
|
@override
|
|
String get failed => 'Fehlgeschlagen';
|
|
|
|
@override
|
|
String get broadcast => 'Broadcast';
|
|
|
|
@override
|
|
String get sarMarkerFoundPerson => 'Person gefunden';
|
|
|
|
@override
|
|
String get sarMarkerFire => 'Feuerstandort';
|
|
|
|
@override
|
|
String get sarMarkerStagingArea => 'Sammelpunkt';
|
|
|
|
@override
|
|
String get sarMarkerObject => 'Objekt gefunden';
|
|
|
|
@override
|
|
String get from => 'Von';
|
|
|
|
@override
|
|
String get coordinates => 'Koordinaten';
|
|
|
|
@override
|
|
String get tapToViewOnMap => 'Tippen, um auf der Karte anzuzeigen';
|
|
|
|
@override
|
|
String get radioSettings => 'Funkeinstellungen';
|
|
|
|
@override
|
|
String get frequencyMHz => 'Frequenz (MHz)';
|
|
|
|
@override
|
|
String get frequencyExample => 'z.B. 869.618';
|
|
|
|
@override
|
|
String get bandwidth => 'Bandbreite';
|
|
|
|
@override
|
|
String get spreadingFactor => 'Spreading-Faktor';
|
|
|
|
@override
|
|
String get codingRate => 'Codierungsrate';
|
|
|
|
@override
|
|
String get txPowerDbm => 'TX-Leistung (dBm)';
|
|
|
|
@override
|
|
String maxPowerDbm(int power) {
|
|
return 'Max: $power dBm';
|
|
}
|
|
|
|
@override
|
|
String get you => 'Du';
|
|
|
|
@override
|
|
String get offlineVectorMaps => 'Offline-Vektorkarten';
|
|
|
|
@override
|
|
String get offlineVectorMapsDescription =>
|
|
'Importieren und verwalten Sie Offline-Vektorkarten-Tiles (MBTiles-Format) zur Verwendung ohne Internetverbindung';
|
|
|
|
@override
|
|
String get importMbtiles => 'MBTiles-Datei importieren';
|
|
|
|
@override
|
|
String get importMbtilesNote =>
|
|
'Unterstützt MBTiles-Dateien mit Vektor-Tiles (PBF/MVT-Format). Geofabrik-Auszüge funktionieren hervorragend!';
|
|
|
|
@override
|
|
String get noMbtilesFiles => 'Keine Offline-Vektorkarten gefunden';
|
|
|
|
@override
|
|
String get mbtilesImportedSuccessfully =>
|
|
'MBTiles-Datei erfolgreich importiert';
|
|
|
|
@override
|
|
String get failedToImportMbtiles =>
|
|
'Fehler beim Importieren der MBTiles-Datei';
|
|
|
|
@override
|
|
String get deleteMbtilesConfirmTitle => 'Offline-Karte löschen';
|
|
|
|
@override
|
|
String deleteMbtilesConfirmMessage(String name) {
|
|
return 'Sind Sie sicher, dass Sie \"$name\" löschen möchten? Dies entfernt die Offline-Karte dauerhaft.';
|
|
}
|
|
|
|
@override
|
|
String get mbtilesDeletedSuccessfully => 'Offline-Karte erfolgreich gelöscht';
|
|
|
|
@override
|
|
String get failedToDeleteMbtiles => 'Fehler beim Löschen der Offline-Karte';
|
|
|
|
@override
|
|
String get importExportCachedTiles => 'Import/Export gecachter Kacheln';
|
|
|
|
@override
|
|
String get importExportDescription =>
|
|
'Sichern, teilen und wiederherstellen Sie heruntergeladene Kartenkacheln zwischen Geräten';
|
|
|
|
@override
|
|
String get exportTilesToFile => 'Kacheln in Datei exportieren';
|
|
|
|
@override
|
|
String get importTilesFromFile => 'Kacheln aus Datei importieren';
|
|
|
|
@override
|
|
String get selectExportLocation => 'Exportspeicherort wählen';
|
|
|
|
@override
|
|
String get selectImportFile => 'Kachel-Archiv auswählen';
|
|
|
|
@override
|
|
String get exportingTiles => 'Exportiere Kacheln...';
|
|
|
|
@override
|
|
String get importingTiles => 'Importiere Kacheln...';
|
|
|
|
@override
|
|
String exportSuccess(int count) {
|
|
return '$count Kacheln erfolgreich exportiert';
|
|
}
|
|
|
|
@override
|
|
String importSuccess(int count) {
|
|
return '$count Speicher erfolgreich importiert';
|
|
}
|
|
|
|
@override
|
|
String exportFailed(String error) {
|
|
return 'Export failed: $error';
|
|
}
|
|
|
|
@override
|
|
String importFailed(String error) {
|
|
return 'Import failed: $error';
|
|
}
|
|
|
|
@override
|
|
String get exportNote =>
|
|
'Erstellt eine komprimierte Archivdatei (.fmtc), die auf anderen Geräten geteilt und importiert werden kann.';
|
|
|
|
@override
|
|
String get importNote =>
|
|
'Importiert Kartenkacheln aus einer zuvor exportierten Archivdatei. Kacheln werden mit dem vorhandenen Cache zusammengeführt.';
|
|
|
|
@override
|
|
String get noTilesToExport => 'Keine Kacheln zum Exportieren verfügbar';
|
|
|
|
@override
|
|
String archiveContainsStores(int count) {
|
|
return 'Archiv enthält $count Speicher';
|
|
}
|
|
|
|
@override
|
|
String get vectorTiles => 'Vektor-Tiles';
|
|
|
|
@override
|
|
String get schema => 'Schema';
|
|
|
|
@override
|
|
String get unknown => 'Unbekannt';
|
|
|
|
@override
|
|
String get bounds => 'Grenzen';
|
|
|
|
@override
|
|
String get onlineLayers => 'Online-Ebenen';
|
|
|
|
@override
|
|
String get offlineLayers => 'Offline-Ebenen';
|
|
|
|
@override
|
|
String get locationTrail => 'Standortverlauf';
|
|
|
|
@override
|
|
String get showTrailOnMap => 'Verlauf auf Karte anzeigen';
|
|
|
|
@override
|
|
String get trailVisible => 'Verlauf ist auf der Karte sichtbar';
|
|
|
|
@override
|
|
String get trailHiddenRecording =>
|
|
'Verlauf ist ausgeblendet (Aufzeichnung läuft noch)';
|
|
|
|
@override
|
|
String get duration => 'Dauer';
|
|
|
|
@override
|
|
String get points => 'Punkte';
|
|
|
|
@override
|
|
String get clearTrail => 'Verlauf löschen';
|
|
|
|
@override
|
|
String get clearTrailQuestion => 'Verlauf löschen?';
|
|
|
|
@override
|
|
String get clearTrailConfirmation =>
|
|
'Sind Sie sicher, dass Sie den aktuellen Standortverlauf löschen möchten? Diese Aktion kann nicht rückgängig gemacht werden.';
|
|
|
|
@override
|
|
String get noTrailRecorded => 'Noch kein Verlauf aufgezeichnet';
|
|
|
|
@override
|
|
String get startTrackingToRecord =>
|
|
'Standort-Tracking starten, um Ihren Verlauf aufzuzeichnen';
|
|
|
|
@override
|
|
String get trailControls => 'Verlaufssteuerung';
|
|
|
|
@override
|
|
String get exportTrailToGpx => 'Verlauf als GPX exportieren';
|
|
|
|
@override
|
|
String get importTrailFromGpx => 'Verlauf aus GPX importieren';
|
|
|
|
@override
|
|
String get trailExportedSuccessfully => 'Verlauf erfolgreich exportiert!';
|
|
|
|
@override
|
|
String get failedToExportTrail => 'Exportieren des Verlaufs fehlgeschlagen';
|
|
|
|
@override
|
|
String failedToImportTrail(String error) {
|
|
return 'Importieren des Verlaufs fehlgeschlagen: $error';
|
|
}
|
|
|
|
@override
|
|
String get importTrail => 'Verlauf importieren';
|
|
|
|
@override
|
|
String importTrailQuestion(int pointCount) {
|
|
return 'Verlauf mit $pointCount Punkten importieren?\n\nSie können Ihren aktuellen Verlauf ersetzen oder daneben anzeigen.';
|
|
}
|
|
|
|
@override
|
|
String get viewAlongside => 'Daneben anzeigen';
|
|
|
|
@override
|
|
String get replaceCurrent => 'Aktuellen ersetzen';
|
|
|
|
@override
|
|
String trailImported(int pointCount) {
|
|
return 'Verlauf importiert! ($pointCount Punkte)';
|
|
}
|
|
|
|
@override
|
|
String trailReplaced(int pointCount) {
|
|
return 'Verlauf ersetzt! ($pointCount Punkte)';
|
|
}
|
|
|
|
@override
|
|
String get contactTrails => 'Kontaktverläufe';
|
|
|
|
@override
|
|
String get showAllContactTrails => 'Alle Kontaktverläufe anzeigen';
|
|
|
|
@override
|
|
String get noContactsWithLocationHistory =>
|
|
'Keine Kontakte mit Standortverlauf';
|
|
|
|
@override
|
|
String showingTrailsForContacts(int count) {
|
|
return 'Verläufe für $count Kontakte anzeigen';
|
|
}
|
|
|
|
@override
|
|
String get individualContactTrails => 'Einzelne Kontaktverläufe';
|
|
|
|
@override
|
|
String get deviceInformation => 'Geräteinformationen';
|
|
|
|
@override
|
|
String get bleName => 'BLE-Name';
|
|
|
|
@override
|
|
String get meshName => 'Mesh-Name';
|
|
|
|
@override
|
|
String get notSet => 'Nicht festgelegt';
|
|
|
|
@override
|
|
String get model => 'Modell';
|
|
|
|
@override
|
|
String get version => 'Version';
|
|
|
|
@override
|
|
String get buildDate => 'Build-Datum';
|
|
|
|
@override
|
|
String get firmware => 'Firmware';
|
|
|
|
@override
|
|
String get maxContacts => 'Max. Kontakte';
|
|
|
|
@override
|
|
String get maxChannels => 'Max. Kanäle';
|
|
|
|
@override
|
|
String get publicInfo => 'Öffentliche Informationen';
|
|
|
|
@override
|
|
String get meshNetworkName => 'Mesh-Netzwerkname';
|
|
|
|
@override
|
|
String get nameBroadcastInMesh =>
|
|
'Name, der in Mesh-Sendungen übertragen wird';
|
|
|
|
@override
|
|
String get telemetryAndLocationSharing => 'Telemetrie & Standortfreigabe';
|
|
|
|
@override
|
|
String get lat => 'Lat';
|
|
|
|
@override
|
|
String get lon => 'Lon';
|
|
|
|
@override
|
|
String get useCurrentLocation => 'Aktuellen Standort verwenden';
|
|
|
|
@override
|
|
String get noneUnknown => 'Keine/Unbekannt';
|
|
|
|
@override
|
|
String get chatNode => 'Chat-Knoten';
|
|
|
|
@override
|
|
String get repeater => 'Repeater';
|
|
|
|
@override
|
|
String get roomChannel => 'Raum/Kanal';
|
|
|
|
@override
|
|
String typeNumber(int number) {
|
|
return 'Typ $number';
|
|
}
|
|
|
|
@override
|
|
String copiedToClipboardShort(String label) {
|
|
return '$label in Zwischenablage kopiert';
|
|
}
|
|
|
|
@override
|
|
String failedToSave(String error) {
|
|
return 'Fehler beim Speichern: $error';
|
|
}
|
|
|
|
@override
|
|
String failedToGetLocation(String error) {
|
|
return 'Fehler beim Abrufen des Standorts: $error';
|
|
}
|
|
|
|
@override
|
|
String get sarTemplates => 'SAR-Vorlagen';
|
|
|
|
@override
|
|
String get manageSarTemplates => 'SAR-Vorlagen verwalten';
|
|
|
|
@override
|
|
String get addTemplate => 'Vorlage hinzufügen';
|
|
|
|
@override
|
|
String get editTemplate => 'Vorlage bearbeiten';
|
|
|
|
@override
|
|
String get deleteTemplate => 'Vorlage löschen';
|
|
|
|
@override
|
|
String get templateName => 'Vorlagenname';
|
|
|
|
@override
|
|
String get templateNameHint => 'e.g. Found Person';
|
|
|
|
@override
|
|
String get templateEmoji => 'Emoji';
|
|
|
|
@override
|
|
String get emojiRequired => 'Emoji ist erforderlich';
|
|
|
|
@override
|
|
String get nameRequired => 'Name ist erforderlich';
|
|
|
|
@override
|
|
String get templateDescription => 'Description (Optional)';
|
|
|
|
@override
|
|
String get templateDescriptionHint => 'Add additional context...';
|
|
|
|
@override
|
|
String get templateColor => 'Color';
|
|
|
|
@override
|
|
String get previewFormat => 'Preview (SAR Message Format)';
|
|
|
|
@override
|
|
String get importFromClipboard => 'Importieren';
|
|
|
|
@override
|
|
String get exportToClipboard => 'Exportieren';
|
|
|
|
@override
|
|
String deleteTemplateConfirmation(String name) {
|
|
return 'Delete template \'$name\'?';
|
|
}
|
|
|
|
@override
|
|
String get templateAdded => 'Template added';
|
|
|
|
@override
|
|
String get templateUpdated => 'Template updated';
|
|
|
|
@override
|
|
String get templateDeleted => 'Template deleted';
|
|
|
|
@override
|
|
String templatesImported(int count) {
|
|
String _temp0 = intl.Intl.pluralLogic(
|
|
count,
|
|
locale: localeName,
|
|
other: 'Imported $count templates',
|
|
one: 'Imported 1 template',
|
|
zero: 'No templates imported',
|
|
);
|
|
return '$_temp0';
|
|
}
|
|
|
|
@override
|
|
String templatesExported(int count) {
|
|
String _temp0 = intl.Intl.pluralLogic(
|
|
count,
|
|
locale: localeName,
|
|
other: 'Exported $count templates to clipboard',
|
|
one: 'Exported 1 template to clipboard',
|
|
);
|
|
return '$_temp0';
|
|
}
|
|
|
|
@override
|
|
String get resetToDefaults => 'Auf Standard zurücksetzen';
|
|
|
|
@override
|
|
String get resetToDefaultsConfirmation =>
|
|
'Dadurch werden alle benutzerdefinierten Vorlagen gelöscht und die 4 Standardvorlagen wiederhergestellt. Fortfahren?';
|
|
|
|
@override
|
|
String get reset => 'Zurücksetzen';
|
|
|
|
@override
|
|
String get resetComplete => 'Vorlagen auf Standard zurückgesetzt';
|
|
|
|
@override
|
|
String get noTemplates => 'No templates available';
|
|
|
|
@override
|
|
String get tapAddToCreate => 'Tap + to create your first template';
|
|
|
|
@override
|
|
String get ok => 'OK';
|
|
|
|
@override
|
|
String get permissionsSection => 'Berechtigungen';
|
|
|
|
@override
|
|
String get locationPermission => 'Standortberechtigung';
|
|
|
|
@override
|
|
String get checking => 'Überprüfen...';
|
|
|
|
@override
|
|
String get locationPermissionGrantedAlways => 'Erteilt (Immer)';
|
|
|
|
@override
|
|
String get locationPermissionGrantedWhileInUse =>
|
|
'Erteilt (Während der Nutzung)';
|
|
|
|
@override
|
|
String get locationPermissionDeniedTapToRequest =>
|
|
'Verweigert - Tippen zum Anfragen';
|
|
|
|
@override
|
|
String get locationPermissionPermanentlyDeniedOpenSettings =>
|
|
'Dauerhaft verweigert - Einstellungen öffnen';
|
|
|
|
@override
|
|
String get locationPermissionDialogContent =>
|
|
'Die Standortberechtigung wurde dauerhaft verweigert. Bitte aktivieren Sie sie in Ihren Geräteeinstellungen, um GPS-Tracking und Standortfreigabe zu nutzen.';
|
|
|
|
@override
|
|
String get openSettings => 'Einstellungen öffnen';
|
|
|
|
@override
|
|
String get locationPermissionGranted => 'Standortberechtigung erteilt!';
|
|
|
|
@override
|
|
String get locationPermissionRequiredForGps =>
|
|
'Die Standortberechtigung ist erforderlich für GPS-Tracking und Standortfreigabe.';
|
|
|
|
@override
|
|
String get locationPermissionAlreadyGranted =>
|
|
'Die Standortberechtigung wurde bereits erteilt.';
|
|
|
|
@override
|
|
String get sarNavyBlue => 'SAR Navy Blau';
|
|
|
|
@override
|
|
String get sarNavyBlueDescription => 'Professionell/Einsatzmodus';
|
|
|
|
@override
|
|
String get selectRecipient => 'Empfänger auswählen';
|
|
|
|
@override
|
|
String get broadcastToAllNearby => 'An alle in der Nähe senden';
|
|
|
|
@override
|
|
String get searchRecipients => 'Empfänger suchen...';
|
|
|
|
@override
|
|
String get noContactsFound => 'Keine Kontakte gefunden';
|
|
|
|
@override
|
|
String get noRoomsFound => 'Keine Räume gefunden';
|
|
|
|
@override
|
|
String get noContactsOrRoomsAvailable =>
|
|
'Keine Kontakte oder Räume verfügbar';
|
|
|
|
@override
|
|
String get messagesWillBeSentToPublicChannel =>
|
|
'Nachrichten werden an öffentlichen Kanal gesendet';
|
|
|
|
@override
|
|
String get newMessage => 'Neue Nachricht';
|
|
|
|
@override
|
|
String get channel => 'Kanal';
|
|
|
|
@override
|
|
String get samplePoliceLead => 'Polizeiführer';
|
|
|
|
@override
|
|
String get sampleDroneOperator => 'Drohnenbediener';
|
|
|
|
@override
|
|
String get sampleFirefighterAlpha => 'Feuerwehrmann';
|
|
|
|
@override
|
|
String get sampleMedicCharlie => 'Sanitäter';
|
|
|
|
@override
|
|
String get sampleCommandDelta => 'Kommando';
|
|
|
|
@override
|
|
String get sampleFireEngine => 'Feuerwehrfahrzeug';
|
|
|
|
@override
|
|
String get sampleAirSupport => 'Luftunterstützung';
|
|
|
|
@override
|
|
String get sampleBaseCoordinator => 'Basiskoordinator';
|
|
|
|
@override
|
|
String get channelEmergency => 'Notfall';
|
|
|
|
@override
|
|
String get channelCoordination => 'Koordination';
|
|
|
|
@override
|
|
String get channelUpdates => 'Aktualisierungen';
|
|
|
|
@override
|
|
String get sampleTeamMember => 'Beispiel-Teammitglied';
|
|
|
|
@override
|
|
String get sampleScout => 'Beispiel-Späher';
|
|
|
|
@override
|
|
String get sampleBase => 'Beispiel-Basis';
|
|
|
|
@override
|
|
String get sampleSearcher => 'Beispiel-Sucher';
|
|
|
|
@override
|
|
String get sampleObjectBackpack => ' Rucksack gefunden - blaue Farbe';
|
|
|
|
@override
|
|
String get sampleObjectVehicle => ' Fahrzeug verlassen - Besitzer prüfen';
|
|
|
|
@override
|
|
String get sampleObjectCamping => ' Campingausrüstung entdeckt';
|
|
|
|
@override
|
|
String get sampleObjectTrailMarker =>
|
|
' Wegmarkierung abseits des Pfades gefunden';
|
|
|
|
@override
|
|
String get sampleMsgAllTeamsCheckIn => 'Alle Teams melden';
|
|
|
|
@override
|
|
String get sampleMsgWeatherUpdate =>
|
|
'Wetterupdate: Klarer Himmel, Temp. 18°C';
|
|
|
|
@override
|
|
String get sampleMsgBaseCamp => 'Basislager am Sammelplatz eingerichtet';
|
|
|
|
@override
|
|
String get sampleMsgTeamAlpha => 'Team bewegt sich zu Sektor 2';
|
|
|
|
@override
|
|
String get sampleMsgRadioCheck => 'Funkcheck - alle Stationen antworten';
|
|
|
|
@override
|
|
String get sampleMsgWaterSupply =>
|
|
'Wasserversorgung verfügbar an Kontrollpunkt 3';
|
|
|
|
@override
|
|
String get sampleMsgTeamBravo => 'Team meldet: Sektor 1 frei';
|
|
|
|
@override
|
|
String get sampleMsgEtaRallyPoint =>
|
|
'Ankunftszeit am Sammelpunkt: 15 Minuten';
|
|
|
|
@override
|
|
String get sampleMsgSupplyDrop => 'Versorgungsabwurf bestätigt für 14:00';
|
|
|
|
@override
|
|
String get sampleMsgDroneSurvey =>
|
|
'Drohnenüberwachung abgeschlossen - keine Funde';
|
|
|
|
@override
|
|
String get sampleMsgTeamCharlie => 'Team fordert Unterstützung an';
|
|
|
|
@override
|
|
String get sampleMsgRadioDiscipline =>
|
|
'An alle Einheiten: Funkdisziplin wahren';
|
|
|
|
@override
|
|
String get sampleMsgUrgentMedical =>
|
|
'DRINGEND: Medizinische Hilfe benötigt in Sektor 4';
|
|
|
|
@override
|
|
String get sampleMsgAdultMale => ' Erwachsener Mann, bei Bewusstsein';
|
|
|
|
@override
|
|
String get sampleMsgFireSpotted => 'Feuer gesichtet - Koordinaten folgen';
|
|
|
|
@override
|
|
String get sampleMsgSpreadingRapidly => ' Breitet sich schnell aus!';
|
|
|
|
@override
|
|
String get sampleMsgPriorityHelicopter =>
|
|
'PRIORITÄT: Brauche Hubschrauberunterstützung';
|
|
|
|
@override
|
|
String get sampleMsgMedicalTeamEnRoute =>
|
|
'Medizinisches Team auf dem Weg zu Ihrem Standort';
|
|
|
|
@override
|
|
String get sampleMsgEvacHelicopter =>
|
|
'Evakuierungshubschrauber ETA 10 Minuten';
|
|
|
|
@override
|
|
String get sampleMsgEmergencyResolved => 'Notfall behoben - alles klar';
|
|
|
|
@override
|
|
String get sampleMsgEmergencyStagingArea => ' Notfall-Sammelplatz';
|
|
|
|
@override
|
|
String get sampleMsgEmergencyServices =>
|
|
'Rettungsdienste benachrichtigt und auf dem Weg';
|
|
|
|
@override
|
|
String get sampleAlphaTeamLead => 'Team-Leiter';
|
|
|
|
@override
|
|
String get sampleBravoScout => 'Späher';
|
|
|
|
@override
|
|
String get sampleCharlieMedic => 'Sanitäter';
|
|
|
|
@override
|
|
String get sampleDeltaNavigator => 'Navigator';
|
|
|
|
@override
|
|
String get sampleEchoSupport => 'Unterstützung';
|
|
|
|
@override
|
|
String get sampleBaseCommand => 'Basis-Kommando';
|
|
|
|
@override
|
|
String get sampleFieldCoordinator => 'Feldkoordinator';
|
|
|
|
@override
|
|
String get sampleMedicalTeam => 'Medizinisches Team';
|
|
|
|
@override
|
|
String get mapDrawing => 'Kartenzeichnung';
|
|
|
|
@override
|
|
String get navigateToDrawing => 'Zur Zeichnung navigieren';
|
|
|
|
@override
|
|
String get copyCoordinates => 'Koordinaten kopieren';
|
|
|
|
@override
|
|
String get hideFromMap => 'Von Karte ausblenden';
|
|
|
|
@override
|
|
String get lineDrawing => 'Linie';
|
|
|
|
@override
|
|
String get rectangleDrawing => 'Rechteck';
|
|
|
|
@override
|
|
String get coordinatesCopiedToClipboard =>
|
|
'Koordinaten in Zwischenablage kopiert';
|
|
|
|
@override
|
|
String get drawingShared => 'Kartenzeichnung';
|
|
|
|
@override
|
|
String get drawingHidden => 'Zeichnung von Karte ausgeblendet';
|
|
|
|
@override
|
|
String alreadyShared(int count) {
|
|
return '$count bereits geteilt';
|
|
}
|
|
|
|
@override
|
|
String newDrawingsShared(int count, String plural) {
|
|
return '$count neue Zeichnung(en) geteilt';
|
|
}
|
|
|
|
@override
|
|
String get shareDrawing => 'Zeichnung teilen';
|
|
|
|
@override
|
|
String get shareWithAllNearbyDevices =>
|
|
'Mit allen Geräten in der Nähe teilen';
|
|
|
|
@override
|
|
String get shareToRoom => 'In Raum teilen';
|
|
|
|
@override
|
|
String get sendToPersistentStorage => 'An persistenten Raum-Speicher senden';
|
|
|
|
@override
|
|
String get deleteDrawingConfirm =>
|
|
'Möchten Sie diese Zeichnung wirklich löschen?';
|
|
|
|
@override
|
|
String get drawingDeleted => 'Zeichnung gelöscht';
|
|
|
|
@override
|
|
String yourDrawingsCount(int count) {
|
|
return 'Ihre Zeichnungen ($count)';
|
|
}
|
|
|
|
@override
|
|
String get shared => 'Geteilt';
|
|
|
|
@override
|
|
String get line => 'Linie';
|
|
|
|
@override
|
|
String get rectangle => 'Rechteck';
|
|
|
|
@override
|
|
String get updateAvailable => 'Update Verfügbar';
|
|
|
|
@override
|
|
String get currentVersion => 'Aktuell';
|
|
|
|
@override
|
|
String get latestVersion => 'Neueste';
|
|
|
|
@override
|
|
String get downloadUpdate => 'Herunterladen';
|
|
|
|
@override
|
|
String get updateLater => 'Später';
|
|
|
|
@override
|
|
String get cadastralParcels => 'Katasterparzellen';
|
|
|
|
@override
|
|
String get forestRoads => 'Waldwege';
|
|
|
|
@override
|
|
String get showCadastralParcels => 'Katasterparzellen anzeigen';
|
|
|
|
@override
|
|
String get showForestRoads => 'Waldwege anzeigen';
|
|
|
|
@override
|
|
String get wmsOverlays => 'WMS Überlagerungen';
|
|
|
|
@override
|
|
String get hikingTrails => 'Wanderwege';
|
|
|
|
@override
|
|
String get mainRoads => 'Hauptstraßen';
|
|
|
|
@override
|
|
String get houseNumbers => 'Hausnummern';
|
|
|
|
@override
|
|
String get fireHazardZones => 'Brandgefährdungszonen';
|
|
|
|
@override
|
|
String get historicalFires => 'Historische Brände';
|
|
|
|
@override
|
|
String get firebreaks => 'Brandschneisen';
|
|
|
|
@override
|
|
String get krasFireZones => 'Kras-Brandzonen';
|
|
|
|
@override
|
|
String get placeNames => 'Ortsnamen';
|
|
|
|
@override
|
|
String get municipalityBorders => 'Gemeindegrenzen';
|
|
|
|
@override
|
|
String get topographicMap => 'Topographische Karte 1:25000';
|
|
|
|
@override
|
|
String get recentMessages => 'Aktuelle Nachrichten';
|
|
|
|
@override
|
|
String get addChannel => 'Kanal hinzufügen';
|
|
|
|
@override
|
|
String get channelName => 'Kanalname';
|
|
|
|
@override
|
|
String get channelNameHint => 'z.B. Rettungsteam Alpha';
|
|
|
|
@override
|
|
String get channelSecret => 'Kanal-Passwort';
|
|
|
|
@override
|
|
String get channelSecretHint => 'Gemeinsames Passwort für diesen Kanal';
|
|
|
|
@override
|
|
String get channelSecretHelp =>
|
|
'Dieses Passwort muss mit allen Teammitgliedern geteilt werden, die Zugriff auf diesen Kanal benötigen';
|
|
|
|
@override
|
|
String get channelNameRequired => 'Kanalname ist erforderlich';
|
|
|
|
@override
|
|
String get channelNameTooLong =>
|
|
'Kanalname darf maximal 31 Zeichen lang sein';
|
|
|
|
@override
|
|
String get channelSecretRequired => 'Kanal-Passwort ist erforderlich';
|
|
|
|
@override
|
|
String get channelSecretTooLong =>
|
|
'Kanal-Passwort darf maximal 32 Zeichen lang sein';
|
|
|
|
@override
|
|
String get invalidAsciiCharacters => 'Nur ASCII-Zeichen sind erlaubt';
|
|
|
|
@override
|
|
String get channelCreatedSuccessfully => 'Kanal erfolgreich erstellt';
|
|
|
|
@override
|
|
String channelCreationFailed(String error) {
|
|
return 'Kanal konnte nicht erstellt werden: $error';
|
|
}
|
|
|
|
@override
|
|
String get allChannelSlotsInUse =>
|
|
'Alle Kanalplätze sind belegt (maximal 39 benutzerdefinierte Kanäle)';
|
|
|
|
@override
|
|
String get createChannel => 'Kanal erstellen';
|
|
|
|
@override
|
|
String get wizardBack => 'Zurück';
|
|
|
|
@override
|
|
String get wizardSkip => 'Überspringen';
|
|
|
|
@override
|
|
String get wizardNext => 'Weiter';
|
|
|
|
@override
|
|
String get wizardGetStarted => 'Loslegen';
|
|
|
|
@override
|
|
String get wizardWelcomeTitle => 'Willkommen bei MeshCore SAR';
|
|
|
|
@override
|
|
String get wizardWelcomeDescription =>
|
|
'Ein leistungsstarkes Offline-Kommunikationstool für Such- und Rettungseinsätze. Verbinden Sie sich mit Ihrem Team über Mesh-Funktechnologie, wenn herkömmliche Netzwerke nicht verfügbar sind.';
|
|
|
|
@override
|
|
String get wizardConnectingTitle => 'Verbindung zum Radio';
|
|
|
|
@override
|
|
String get wizardConnectingDescription =>
|
|
'Verbinden Sie Ihr Smartphone über Bluetooth mit einem MeshCore-Funkgerät, um offline zu kommunizieren.';
|
|
|
|
@override
|
|
String get wizardConnectingFeature1 =>
|
|
'Nach MeshCore-Geräten in der Nähe suchen';
|
|
|
|
@override
|
|
String get wizardConnectingFeature2 =>
|
|
'Mit Ihrem Funkgerät über Bluetooth koppeln';
|
|
|
|
@override
|
|
String get wizardConnectingFeature3 =>
|
|
'Funktioniert vollständig offline - kein Internet erforderlich';
|
|
|
|
@override
|
|
String get wizardSimpleModeTitle => 'Einfacher Modus';
|
|
|
|
@override
|
|
String get wizardSimpleModeDescription =>
|
|
'Neu im Mesh-Netzwerk? Aktivieren Sie den einfachen Modus für eine optimierte Benutzeroberfläche mit nur wesentlichen Funktionen.';
|
|
|
|
@override
|
|
String get wizardSimpleModeFeature1 =>
|
|
'Anfängerfreundliche Benutzeroberfläche mit Kernfunktionen';
|
|
|
|
@override
|
|
String get wizardSimpleModeFeature2 =>
|
|
'Jederzeit in den erweiterten Modus in den Einstellungen wechseln';
|
|
|
|
@override
|
|
String get wizardChannelTitle => 'Kanäle';
|
|
|
|
@override
|
|
String get wizardChannelDescription =>
|
|
'Senden Sie Nachrichten an alle auf einem Kanal, perfekt für teamweite Ankündigungen und Koordination.';
|
|
|
|
@override
|
|
String get wizardChannelFeature1 =>
|
|
'Öffentlicher Kanal für allgemeine Teamkommunikation';
|
|
|
|
@override
|
|
String get wizardChannelFeature2 =>
|
|
'Erstellen Sie benutzerdefinierte Kanäle für bestimmte Gruppen';
|
|
|
|
@override
|
|
String get wizardChannelFeature3 =>
|
|
'Nachrichten werden automatisch über das Mesh weitergeleitet';
|
|
|
|
@override
|
|
String get wizardContactsTitle => 'Kontakte';
|
|
|
|
@override
|
|
String get wizardContactsDescription =>
|
|
'Ihre Teammitglieder erscheinen automatisch, wenn sie dem Mesh-Netzwerk beitreten. Senden Sie ihnen direkte Nachrichten oder sehen Sie ihren Standort.';
|
|
|
|
@override
|
|
String get wizardContactsFeature1 => 'Kontakte werden automatisch erkannt';
|
|
|
|
@override
|
|
String get wizardContactsFeature2 => 'Private Direktnachrichten senden';
|
|
|
|
@override
|
|
String get wizardContactsFeature3 =>
|
|
'Batteriestand und letzte Aktivität anzeigen';
|
|
|
|
@override
|
|
String get wizardMapTitle => 'Karte & Standort';
|
|
|
|
@override
|
|
String get wizardMapDescription =>
|
|
'Verfolgen Sie Ihr Team in Echtzeit und markieren Sie wichtige Standorte für Such- und Rettungseinsätze.';
|
|
|
|
@override
|
|
String get wizardMapFeature1 =>
|
|
'SAR-Markierungen für gefundene Personen, Feuer und Sammelstellen';
|
|
|
|
@override
|
|
String get wizardMapFeature2 =>
|
|
'GPS-Verfolgung von Teammitgliedern in Echtzeit';
|
|
|
|
@override
|
|
String get wizardMapFeature3 =>
|
|
'Offline-Karten für entlegene Gebiete herunterladen';
|
|
|
|
@override
|
|
String get wizardMapFeature4 =>
|
|
'Formen zeichnen und taktische Informationen teilen';
|
|
|
|
@override
|
|
String get viewWelcomeTutorial => 'Willkommens-Tutorial ansehen';
|
|
}
|