diff --git a/lib/l10n/app_de.arb b/lib/l10n/app_de.arb index a9b1260..e36bcb3 100644 --- a/lib/l10n/app_de.arb +++ b/lib/l10n/app_de.arb @@ -1,104 +1,69 @@ { "@@locale": "de", - "appTitle": "MeshCore SAR", "@appTitle": { "description": "Der Anwendungstitel" }, - "messages": "Nachrichten", "@messages": { "description": "Beschriftung der Nachrichten-Registerkarte" }, - "contacts": "Kontakte", "@contacts": { "description": "Beschriftung der Kontakte-Registerkarte" }, - "map": "Karte", "@map": { "description": "Beschriftung der Karten-Registerkarte" }, - "settings": "Einstellungen", "@settings": { "description": "Titel des Einstellungsbildschirms" }, - "connect": "Verbinden", "@connect": { "description": "Beschriftung der Verbinden-Schaltfläche" }, - "disconnect": "Trennen", "@disconnect": { "description": "Beschriftung der Trennen-Schaltfläche" }, - - "scanningForDevices": "Suche nach Geräten...", - "@scanningForDevices": { - "description": "Text, der beim Scannen nach BLE-Geräten angezeigt wird" - }, - "noDevicesFound": "Keine Geräte gefunden", "@noDevicesFound": { "description": "Text, der angezeigt wird, wenn keine BLE-Geräte gefunden wurden" }, - "scanAgain": "Erneut scannen", "@scanAgain": { "description": "Schaltfläche zum Neustart des BLE-Scans" }, - "tapToConnect": "Zum Verbinden tippen", "@tapToConnect": { "description": "Untertiteltext für Gerät in der Scanliste" }, - "deviceNotConnected": "Gerät nicht verbunden", "@deviceNotConnected": { "description": "Fehlermeldung, wenn das Gerät nicht verbunden ist" }, - "locationPermissionDenied": "Standortberechtigung verweigert", "@locationPermissionDenied": { "description": "Fehler, wenn die Standortberechtigung verweigert wird" }, - "locationPermissionPermanentlyDenied": "Standortberechtigung dauerhaft verweigert. Bitte in den Einstellungen aktivieren.", "@locationPermissionPermanentlyDenied": { "description": "Fehler, wenn die Standortberechtigung dauerhaft verweigert wird" }, - "locationPermissionRequired": "Die Standortberechtigung ist für GPS-Tracking und Teamkoordination erforderlich. Sie können sie später in den Einstellungen aktivieren.", "@locationPermissionRequired": { "description": "Nachricht, wenn Standortberechtigung benötigt wird" }, - "locationServicesDisabled": "Standortdienste sind deaktiviert. Bitte aktivieren Sie sie in den Einstellungen.", "@locationServicesDisabled": { "description": "Fehler, wenn Standortdienste deaktiviert sind" }, - "failedToGetGpsLocation": "GPS-Position konnte nicht abgerufen werden", "@failedToGetGpsLocation": { "description": "Fehler, wenn die GPS-Position nicht abgerufen werden kann" }, - - "advertisedAtLocation": "Position gesendet bei {latitude}, {longitude}", - "@advertisedAtLocation": { - "description": "Erfolgsmeldung mit der gesendeten Position", - "placeholders": { - "latitude": { - "type": "String" - }, - "longitude": { - "type": "String" - } - } - }, - "failedToAdvertise": "Senden fehlgeschlagen: {error}", "@failedToAdvertise": { "description": "Fehlermeldung bei fehlgeschlagenem Senden", @@ -108,355 +73,162 @@ } } }, - - "reconnecting": "Wiederverbindung... ({attempt}/{max})", - "@reconnecting": { - "description": "Text, der während Wiederverbindungsversuchen angezeigt wird", - "placeholders": { - "attempt": { - "type": "int" - }, - "max": { - "type": "int" - } - } - }, - "cancelReconnection": "Wiederverbindung abbrechen", "@cancelReconnection": { "description": "Tooltip für die Schaltfläche zum Abbrechen der Wiederverbindung" }, - - "mapManagement": "Kartenverwaltung", - "@mapManagement": { - "description": "Menüeintrag für Kartenverwaltung" - }, - "general": "Allgemein", "@general": { "description": "Überschrift des allgemeinen Einstellungsbereichs" }, - "theme": "Design", "@theme": { "description": "Beschriftung der Design-Einstellung" }, - "chooseTheme": "Design auswählen", "@chooseTheme": { "description": "Titel des Design-Auswahldialogs" }, - "light": "Hell", "@light": { "description": "Helles Design-Option" }, - "dark": "Dunkel", "@dark": { "description": "Dunkles Design-Option" }, - "blueLightTheme": "Blaues helles Design", "@blueLightTheme": { "description": "Beschreibung für blaues helles Design" }, - "blueDarkTheme": "Blaues dunkles Design", "@blueDarkTheme": { "description": "Beschreibung für blaues dunkles Design" }, - "sarRed": "SAR Rot", "@sarRed": { "description": "SAR Rot Design-Option" }, - "alertEmergencyMode": "Alarm-/Notfallmodus", "@alertEmergencyMode": { "description": "Beschreibung für SAR Rot Design" }, - "sarGreen": "SAR Grün", "@sarGreen": { "description": "SAR Grün Design-Option" }, - "safeAllClearMode": "Sicher/Entwarnung-Modus", "@safeAllClearMode": { "description": "Beschreibung für SAR Grün Design" }, - "autoSystem": "Automatisch (System)", "@autoSystem": { "description": "Automatisches/System-Design-Option" }, - "followSystemTheme": "System-Design folgen", "@followSystemTheme": { "description": "Beschreibung für System-Design" }, - "showRxTxIndicators": "RX/TX-Indikatoren anzeigen", "@showRxTxIndicators": { "description": "Einstellung zum Anzeigen von RX/TX-Indikatoren" }, - "displayPacketActivity": "Paketaktivitätsindikatoren in der oberen Leiste anzeigen", "@displayPacketActivity": { "description": "Beschreibung für die Einstellung der RX/TX-Indikatoren" }, - - "simpleMode": "Einfacher Modus", - "@simpleMode": { - "description": "Einstellung zum Aktivieren des einfachen Modus" - }, - - "simpleModeDescription": "Nicht wesentliche Informationen in Nachrichten und Kontakten ausblenden", - "@simpleModeDescription": { - "description": "Beschreibung für die Einstellung des einfachen Modus" - }, - "disableMap": "Karte deaktivieren", "@disableMap": { "description": "Einstellung zum Deaktivieren des Karten-Tabs" }, - "disableMapDescription": "Karten-Tab ausblenden, um Akku zu sparen", "@disableMapDescription": { "description": "Beschreibung für die Einstellung zum Deaktivieren der Karte" }, - "language": "Sprache", "@language": { "description": "Beschriftung der Spracheinstellung" }, - "chooseLanguage": "Sprache auswählen", "@chooseLanguage": { "description": "Titel des Sprachauswahldialogs" }, - - "english": "Englisch", - "@english": { - "description": "Englische Sprachoption" - }, - - "slovenian": "Slowenisch", - "@slovenian": { - "description": "Slowenische Sprachoption" - }, - - "croatian": "Kroatisch", - "@croatian": { - "description": "Kroatische Sprachoption" - }, - - "german": "Deutsch", - "@german": { - "description": "Deutsche Sprachoption" - }, - - "spanish": "Spanisch", - "@spanish": { - "description": "Spanische Sprachoption" - }, - - "french": "Französisch", - "@french": { - "description": "Französische Sprachoption" - }, - - "italian": "Italienisch", - "@italian": { - "description": "Italienische Sprachoption" - }, - - "locationBroadcasting": "Standortübertragung", - "@locationBroadcasting": { - "description": "Überschrift des Standorteinstellungsbereichs" - }, - - "autoLocationTracking": "Automatisches Standort-Tracking", - "@autoLocationTracking": { - "description": "Einstellung für automatisches Standort-Tracking" - }, - - "automaticallyBroadcastPosition": "Positionsaktualisierungen automatisch übertragen", - "@automaticallyBroadcastPosition": { - "description": "Beschreibung für automatisches Standort-Tracking" - }, - - "configureTracking": "Tracking konfigurieren", - "@configureTracking": { - "description": "Beschriftung der Tracking-Konfigurations-Schaltfläche" - }, - - "distanceAndTimeThresholds": "Entfernungs- und Zeitschwellenwerte", - "@distanceAndTimeThresholds": { - "description": "Beschreibung für Tracking-Konfiguration" - }, - - "locationTrackingConfiguration": "Standort-Tracking-Konfiguration", - "@locationTrackingConfiguration": { - "description": "Titel des Tracking-Konfigurationsdialogs" - }, - - "configureWhenLocationBroadcasts": "Konfigurieren Sie, wann Standortübertragungen an das Mesh-Netzwerk gesendet werden", - "@configureWhenLocationBroadcasts": { - "description": "Beschreibung für den Tracking-Konfigurationsdialog" - }, - - "minimumDistance": "Mindestentfernung", - "@minimumDistance": { - "description": "Beschriftung der Mindestentfernungseinstellung" - }, - - "broadcastAfterMoving": "Nur nach Bewegung von {distance} Metern übertragen", - "@broadcastAfterMoving": { - "description": "Beschreibung für Mindestentfernung", - "placeholders": { - "distance": { - "type": "String" - } - } - }, - - "maximumDistance": "Maximale Entfernung", - "@maximumDistance": { - "description": "Beschriftung der maximalen Entfernungseinstellung" - }, - - "alwaysBroadcastAfterMoving": "Immer nach Bewegung von {distance} Metern übertragen", - "@alwaysBroadcastAfterMoving": { - "description": "Beschreibung für maximale Entfernung", - "placeholders": { - "distance": { - "type": "String" - } - } - }, - - "minimumTimeInterval": "Minimales Zeitintervall", - "@minimumTimeInterval": { - "description": "Beschriftung der minimalen Zeitintervalleinstellung" - }, - - "alwaysBroadcastEvery": "Immer alle {duration} übertragen", - "@alwaysBroadcastEvery": { - "description": "Beschreibung für Zeitintervall", - "placeholders": { - "duration": { - "type": "String" - } - } - }, - "save": "Speichern", "@save": { "description": "Beschriftung der Speichern-Schaltfläche" }, - "cancel": "Abbrechen", "@cancel": { "description": "Beschriftung der Abbrechen-Schaltfläche" }, - "close": "Schließen", "@close": { "description": "Beschriftung der Schließen-Schaltfläche" }, - "about": "Über", "@about": { "description": "Überschrift des Über-Bereichs" }, - "appVersion": "App-Version", "@appVersion": { "description": "Beschriftung der App-Version" }, - "appName": "App-Name", "@appName": { "description": "Beschriftung des App-Namens" }, - "aboutMeshCoreSar": "Über MeshCore SAR", "@aboutMeshCoreSar": { "description": "Titel des Über-Dialogs" }, - "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", "@aboutDescription": { "description": "Beschreibung des Über-Dialogs" }, - "technologiesUsed": "Verwendete Technologien:", "@technologiesUsed": { "description": "Titel des Abschnitts verwendete Technologien" }, - "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", "@technologiesList": { "description": "Liste der verwendeten Technologien" }, - "moreInfo": "Mehr Info", "@moreInfo": { "description": "Beschriftung für Mehr Info-Button" }, - - "learnMoreAbout": "Erfahren Sie mehr über MeshCore SAR", - "@learnMoreAbout": { - "description": "Beschreibung des Mehr-Info-Links" - }, - - "developer": "Entwickler", - "@developer": { - "description": "Überschrift des Entwickler-Bereichs" - }, - "packageName": "Paketname", "@packageName": { "description": "Beschriftung des Paketnamens" }, - "sampleData": "Beispieldaten", "@sampleData": { "description": "Überschrift des Beispieldaten-Bereichs" }, - "sampleDataDescription": "Laden oder löschen Sie Beispielkontakte, Kanalnachrichten und SAR-Markierungen zum Testen", "@sampleDataDescription": { "description": "Beschreibung des Beispieldaten-Bereichs" }, - "loadSampleData": "Beispieldaten laden", "@loadSampleData": { "description": "Schaltfläche zum Laden von Beispieldaten" }, - "clearAllData": "Alle Daten löschen", "@clearAllData": { "description": "Schaltfläche zum Löschen aller Daten" }, - "clearAllDataConfirmTitle": "Alle Daten löschen", "@clearAllDataConfirmTitle": { "description": "Titel des Dialogs zur Bestätigung des Löschens von Daten" }, - "clearAllDataConfirmMessage": "Dadurch werden alle Kontakte und SAR-Markierungen gelöscht. Sind Sie sicher?", "@clearAllDataConfirmMessage": { "description": "Bestätigungsnachricht zum Löschen von Daten" }, - "clear": "Löschen", "@clear": { "description": "Beschriftung der Löschen-Schaltfläche" }, - "loadedSampleData": "{teamCount} Teammitglieder, {channelCount} Kanäle, {sarCount} SAR-Markierungen, {messageCount} Nachrichten geladen", "@loadedSampleData": { "description": "Erfolgsmeldung nach dem Laden von Beispieldaten", @@ -475,7 +247,6 @@ } } }, - "failedToLoadSampleData": "Fehler beim Laden der Beispieldaten: {error}", "@failedToLoadSampleData": { "description": "Fehlermeldung, wenn das Laden der Beispieldaten fehlschlägt", @@ -485,17 +256,14 @@ } } }, - "allDataCleared": "Alle Daten gelöscht", "@allDataCleared": { "description": "Erfolgsmeldung nach dem Löschen aller Daten" }, - "failedToStartBackgroundTracking": "Hintergrund-Tracking konnte nicht gestartet werden. Überprüfen Sie Berechtigungen und BLE-Verbindung.", "@failedToStartBackgroundTracking": { "description": "Fehlermeldung, wenn das Hintergrund-Tracking nicht gestartet werden kann" }, - "locationBroadcast": "Standortübertragung: {latitude}, {longitude}", "@locationBroadcast": { "description": "Erfolgsmeldung für Standortübertragung", @@ -508,57 +276,42 @@ } } }, - "defaultPinInfo": "Die Standard-PIN für Geräte ohne Bildschirm ist 123456. Probleme beim Koppeln? Vergessen Sie das Bluetooth-Gerät in den Systemeinstellungen.", "@defaultPinInfo": { "description": "Informationen zur Standard-PIN für die Kopplung" }, - "noMessagesYet": "Noch keine Nachrichten", "@noMessagesYet": { "description": "Leerzustandsnachricht, wenn keine Nachrichten vorhanden sind" }, - "pullDownToSync": "Nach unten ziehen, um Nachrichten zu synchronisieren", "@pullDownToSync": { "description": "Anweisung zum Herunterziehen zum Aktualisieren von Nachrichten" }, - "deleteContact": "Kontakt löschen", "@deleteContact": { "description": "Beschriftung der Kontakt-löschen-Aktion" }, - "delete": "Löschen", "@delete": { "description": "Beschriftung der Löschen-Schaltfläche" }, - "viewOnMap": "Auf Karte anzeigen", "@viewOnMap": { "description": "Aktion zum Anzeigen des Kontaktstandorts auf der Karte" }, - "refresh": "Aktualisieren", "@refresh": { "description": "Beschriftung der Aktualisieren-Schaltfläche" }, - - "sendDirectMessage": "Senden", - "@sendDirectMessage": { - "description": "Aktion zum Senden einer Direktnachricht an Kontakt" - }, - "resetPath": "Pfad zurücksetzen (Umleitung)", "@resetPath": { "description": "Aktion zum Zurücksetzen des Kontaktpfads für Umleitung" }, - "publicKeyCopied": "Öffentlicher Schlüssel in die Zwischenablage kopiert", "@publicKeyCopied": { "description": "Erfolgsmeldung, wenn der öffentliche Schlüssel kopiert wurde" }, - "copiedToClipboard": "{label} in die Zwischenablage kopiert", "@copiedToClipboard": { "description": "Erfolgsmeldung, wenn ein Wert in die Zwischenablage kopiert wurde", @@ -568,12 +321,10 @@ } } }, - "pleaseEnterPassword": "Bitte geben Sie ein Passwort ein", "@pleaseEnterPassword": { "description": "Validierungsnachricht für leeres Passwortfeld" }, - "failedToSyncContacts": "Kontaktsynchronisation fehlgeschlagen: {error}", "@failedToSyncContacts": { "description": "Fehlermeldung, wenn die Kontaktsynchronisation fehlschlägt", @@ -583,17 +334,14 @@ } } }, - "loggedInSuccessfully": "Erfolgreich angemeldet! Warte auf Raumnachrichten...", "@loggedInSuccessfully": { "description": "Erfolgsmeldung nach erfolgreicher Raumanmeldung" }, - "loginFailed": "Anmeldung fehlgeschlagen - falsches Passwort", "@loginFailed": { "description": "Fehlermeldung, wenn die Raumanmeldung fehlschlägt" }, - "loggingIn": "Anmeldung bei {roomName}...", "@loggingIn": { "description": "Statusmeldung während des Raumanmeldungsvorgangs", @@ -603,7 +351,6 @@ } } }, - "failedToSendLogin": "Anmeldung senden fehlgeschlagen: {error}", "@failedToSendLogin": { "description": "Fehlermeldung, wenn das Senden des Anmeldebefehls fehlschlägt", @@ -613,355 +360,239 @@ } } }, - "lowLocationAccuracy": "Niedrige Standortgenauigkeit", "@lowLocationAccuracy": { "description": "Warnungstitel für niedrige GPS-Genauigkeit" }, - "continue_": "Fortfahren", "@continue_": { "description": "Beschriftung der Fortfahren-Schaltfläche" }, - "sendSarMarker": "SAR-Markierung senden", "@sendSarMarker": { "description": "Aktion zum Senden einer SAR-Markierung" }, - "deleteDrawing": "Zeichnung löschen", "@deleteDrawing": { "description": "Aktion zum Löschen einer Kartenzeichnung" }, - "drawingTools": "Zeichenwerkzeuge", "@drawingTools": { "description": "Zeichenwerkzeuge Abschnitt oder Menütitel" }, - "drawLine": "Linie zeichnen", "@drawLine": { "description": "Kartenzeichnungsmodus: Linie" }, - "drawLineDesc": "Freihandlinie auf der Karte zeichnen", "@drawLineDesc": { "description": "Beschreibung für Linienzeichnungsmodus" }, - "drawRectangle": "Rechteck zeichnen", "@drawRectangle": { "description": "Kartenzeichnungsmodus: Rechteck" }, - "drawRectangleDesc": "Rechteckigen Bereich auf der Karte zeichnen", "@drawRectangleDesc": { "description": "Beschreibung für Rechteckzeichnungsmodus" }, - "measureDistance": "Entfernung messen", "@measureDistance": { "description": "Kartenzeichnungsmodus: Entfernung messen" }, - "measureDistanceDesc": "Zwei Punkte lang drücken zum Messen", "@measureDistanceDesc": { "description": "Beschreibung für Entfernungsmessungsmodus" }, - "clearMeasurement": "Messung löschen", "@clearMeasurement": { "description": "Tooltip zum Löschen der Messung" }, - "distanceLabel": "Entfernung: {distance}", "@distanceLabel": { "description": "Beschriftung mit gemessener Entfernung", "placeholders": { - "distance": {"type": "String"} + "distance": { + "type": "String" + } } }, - "longPressForSecondPoint": "Langer Druck für zweiten Punkt", "@longPressForSecondPoint": { "description": "Anweisung wenn erster Messpunkt gesetzt ist" }, - "longPressToStartMeasurement": "Langer Druck für ersten Punkt", "@longPressToStartMeasurement": { "description": "Anweisung zum Starten der Messung" }, - "longPressToStartNewMeasurement": "Langer Druck für neue Messung", "@longPressToStartNewMeasurement": { "description": "Anweisung zum Neustarten der Messung nach Abschluss" }, - "shareDrawings": "Zeichnungen teilen", "@shareDrawings": { "description": "Aktion zum Teilen von Zeichnungen im Netzwerk" }, - "clearAllDrawings": "Alle Zeichnungen löschen", "@clearAllDrawings": { "description": "Aktion zum Löschen aller lokalen Zeichnungen" }, - "completeLine": "Linie fertigstellen", "@completeLine": { "description": "Tooltip zum Abschließen einer Linie" }, - "broadcastDrawingsToTeam": "{count} Zeichnung{plural} an Team senden", "@broadcastDrawingsToTeam": { "description": "Untertitel zeigt, wie viele Zeichnungen gesendet werden", "placeholders": { - "count": {"type": "int"}, - "plural": {"type": "String"} + "count": { + "type": "int" + }, + "plural": { + "type": "String" + } } }, - "removeAllDrawings": "Alle {count} Zeichnung{plural} entfernen", "@removeAllDrawings": { "description": "Untertitel für Aktion alle Zeichnungen entfernen", "placeholders": { - "count": {"type": "int"}, - "plural": {"type": "String"} + "count": { + "type": "int" + }, + "plural": { + "type": "String" + } } }, - "deleteAllDrawingsConfirm": "Alle {count} Zeichnung{plural} von der Karte löschen?", "@deleteAllDrawingsConfirm": { "description": "Bestätigungsdialog zum Löschen aller Zeichnungen", "placeholders": { - "count": {"type": "int"}, - "plural": {"type": "String"} + "count": { + "type": "int" + }, + "plural": { + "type": "String" + } } }, - "drawing": "Zeichnung", "@drawing": { "description": "Allgemeine Zeichnungsbezeichnung" }, - "shareDrawingsCount": "{count} Zeichnung{plural} teilen", "@shareDrawingsCount": { "description": "Titel für Dialog Zeichnungen teilen", "placeholders": { - "count": {"type": "int"}, - "plural": {"type": "String"} + "count": { + "type": "int" + }, + "plural": { + "type": "String" + } } }, - - "sentDrawingsToRoom": "{count} Kartenzeichnung{plural} an {roomName} gesendet", - "@sentDrawingsToRoom": { - "description": "Systemmeldung wenn Zeichnungen an Raum gesendet wurden", - "placeholders": { - "count": {"type": "int"}, - "plural": {"type": "String"}, - "roomName": {"type": "String"} - } - }, - - "sharedDrawingsToRoom": "{success}/{total} Zeichnung{plural} mit {roomName} geteilt", - "@sharedDrawingsToRoom": { - "description": "Snackbar-Meldung für geteilte Zeichnungen an Raum", - "placeholders": { - "success": {"type": "int"}, - "total": {"type": "int"}, - "plural": {"type": "String"}, - "roomName": {"type": "String"} - } - }, - "showReceivedDrawings": "Empfangene Zeichnungen anzeigen", "@showReceivedDrawings": { "description": "Umschalter zum Ein-/Ausblenden empfangener Zeichnungen von anderen Teammitgliedern" }, - "showingAllDrawings": "Alle Zeichnungen werden angezeigt", "@showingAllDrawings": { "description": "Untertitel, wenn empfangene Zeichnungen sichtbar sind" }, - "showingOnlyYourDrawings": "Nur Ihre Zeichnungen werden angezeigt", "@showingOnlyYourDrawings": { "description": "Untertitel, wenn empfangene Zeichnungen ausgeblendet sind" }, - "showSarMarkers": "SAR-Markierungen anzeigen", "@showSarMarkers": { "description": "Umschalter zum Ein-/Ausblenden von SAR-Markierungen auf der Karte" }, - "showingSarMarkers": "SAR-Markierungen werden angezeigt", "@showingSarMarkers": { "description": "Untertitel, wenn SAR-Markierungen sichtbar sind" }, - "hidingSarMarkers": "SAR-Markierungen ausgeblendet", "@hidingSarMarkers": { "description": "Untertitel, wenn SAR-Markierungen ausgeblendet sind" }, - "clearAll": "Alle löschen", "@clearAll": { "description": "Beschriftung der Alle-löschen-Schaltfläche" }, - - "noLocalDrawings": "Keine lokalen Zeichnungen zum Teilen", - "@noLocalDrawings": { - "description": "Nachricht, wenn keine Zeichnungen zum Teilen vorhanden sind" - }, - "publicChannel": "Öffentlicher Kanal", "@publicChannel": { "description": "Option für öffentlichen Kanal zum Teilen" }, - "broadcastToAll": "An alle Knoten in der Nähe senden (temporär)", "@broadcastToAll": { "description": "Beschreibung für öffentliche Kanalübertragung" }, - "storedPermanently": "Dauerhaft im Raum gespeichert", "@storedPermanently": { "description": "Beschreibung für dauerhafte Raumspeicherung" }, - - "drawingsSentToPublicChannel": "{count} Kartenzeichnung{plural} an öffentlichen Kanal gesendet", - "@drawingsSentToPublicChannel": { - "description": "Systemnachricht, wenn Zeichnungen an den öffentlichen Kanal gesendet werden", - "placeholders": { - "count": {"type": "int"}, - "plural": {"type": "String"} - } - }, - - "drawingsSharedToPublicChannel": "{success}/{total} Zeichnungen mit öffentlichem Kanal geteilt", - "@drawingsSharedToPublicChannel": { - "description": "Snackbar-Nachricht, die die Erfolgsanzahl für geteilte Zeichnungen im öffentlichen Kanal anzeigt", - "placeholders": { - "success": {"type": "int"}, - "total": {"type": "int"} - } - }, - "notConnectedToDevice": "Nicht mit Gerät verbunden", "@notConnectedToDevice": { "description": "Fehlermeldung, wenn das Gerät nicht für Direktnachrichten verbunden ist" }, - - "directMessage": "Direktnachricht", - "@directMessage": { - "description": "Titel für Direktnachrichtenblatt" - }, - - "directMessageSentTo": "Direktnachricht an {contactName} gesendet", - "@directMessageSentTo": { - "description": "Erfolgsmeldung nach dem Senden einer Direktnachricht", - "placeholders": { - "contactName": { - "type": "String" - } - } - }, - - "failedToSend": "Senden fehlgeschlagen: {error}", - "@failedToSend": { - "description": "Fehlermeldung, wenn das Senden einer Direktnachricht fehlschlägt", - "placeholders": { - "error": { - "type": "String" - } - } - }, - - "directMessageInfo": "Diese Nachricht wird direkt an {contactName} gesendet. Sie erscheint auch im Hauptnachrichten-Feed.", - "@directMessageInfo": { - "description": "Informationen zum Verhalten von Direktnachrichten", - "placeholders": { - "contactName": { - "type": "String" - } - } - }, - "typeYourMessage": "Geben Sie Ihre Nachricht ein...", "@typeYourMessage": { "description": "Platzhaltertext für Nachrichteneingabefeld" }, - "quickLocationMarker": "Schnelle Standortmarkierung", "@quickLocationMarker": { "description": "Untertitel für SAR-Markierungsblatt-Kopfzeile" }, - "markerType": "Markierungstyp", "@markerType": { "description": "Beschriftung für Markierungstypauswahlbereich" }, - "sendTo": "Senden an", "@sendTo": { "description": "Beschriftung für Zielauswahlbereich" }, - "noDestinationsAvailable": "Keine Ziele verfügbar.", "@noDestinationsAvailable": { "description": "Warnung, wenn keine Räume oder Kanäle vorhanden sind" }, - "selectDestination": "Ziel auswählen...", "@selectDestination": { "description": "Platzhalter für Ziel-Dropdown" }, - "ephemeralBroadcastInfo": "Temporär: Nur Over-the-Air-Übertragung. Nicht gespeichert - Knoten müssen online sein.", "@ephemeralBroadcastInfo": { "description": "Informationen über temporäre Kanalübertragungen" }, - "persistentRoomInfo": "Dauerhaft: Unveränderlich im Raum gespeichert. Automatisch synchronisiert und offline gespeichert.", "@persistentRoomInfo": { "description": "Informationen über dauerhafte Raumspeicherung" }, - "location": "Standort", "@location": { "description": "Beschriftung für Standortbereich" }, - - "myLocation": "Mein Standort", - "@myLocation": { - "description": "Schaltflächenbeschriftung zum Einfügen der aktuellen GPS-Position" - }, - "fromMap": "Von Karte", "@fromMap": { "description": "Badge, das anzeigt, dass der Standort vom Kartentippen stammt" }, - "gettingLocation": "Standort wird abgerufen...", "@gettingLocation": { "description": "Ladenachricht beim Abrufen der GPS-Position" }, - "locationError": "Standortfehler", "@locationError": { "description": "Titel für Standortfehlermeldungen" }, - "retry": "Wiederholen", "@retry": { "description": "Beschriftung der Wiederholen-Schaltfläche" }, - "refreshLocation": "Standort aktualisieren", "@refreshLocation": { "description": "Tooltip für Standort-aktualisieren-Schaltfläche" }, - "accuracyMeters": "Genauigkeit: ±{accuracy}m", "@accuracyMeters": { "description": "Anzeige der GPS-Genauigkeit in Metern", @@ -971,17 +602,14 @@ } } }, - "notesOptional": "Notizen (optional)", "@notesOptional": { "description": "Beschriftung für optionales Notizenfeld" }, - "addAdditionalInformation": "Zusätzliche Informationen hinzufügen...", "@addAdditionalInformation": { "description": "Platzhalter für Notizenfeld" }, - "lowAccuracyWarning": "Standortgenauigkeit beträgt ±{accuracy}m. Dies ist möglicherweise nicht genau genug für SAR-Operationen.\n\nTrotzdem fortfahren?", "@lowAccuracyWarning": { "description": "Warnungsdialoginhalt für niedrige GPS-Genauigkeit", @@ -991,37 +619,30 @@ } } }, - "loginToRoom": "Bei Raum anmelden", "@loginToRoom": { "description": "Titel für Raumanmeldedialog" }, - "enterPasswordInfo": "Geben Sie das Passwort ein, um auf diesen Raum zuzugreifen. Das Passwort wird für die zukünftige Verwendung gespeichert.", "@enterPasswordInfo": { "description": "Informationen zum Raumpasswort" }, - "password": "Passwort", "@password": { "description": "Beschriftung des Passwortfelds" }, - "enterRoomPassword": "Raumpasswort eingeben", "@enterRoomPassword": { "description": "Passwortfeld-Hinweis" }, - "loggingInDots": "Anmeldung läuft...", "@loggingInDots": { "description": "Schaltflächentext während der Anmeldung" }, - "login": "Anmelden", "@login": { "description": "Beschriftung der Anmelden-Schaltfläche" }, - "failedToAddRoom": "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.", "@failedToAddRoom": { "description": "Fehlermeldung, wenn das Hinzufügen des Raums fehlschlägt", @@ -1031,57 +652,26 @@ } } }, - "direct": "Direkt", "@direct": { "description": "Direkter Routing-Indikator" }, - "flood": "Flut", "@flood": { "description": "Flut-Routing-Indikator" }, - - "admin": "Admin", - "@admin": { - "description": "Admin-Badge-Beschriftung" - }, - "loggedIn": "Angemeldet", "@loggedIn": { "description": "Angemeldet-Status-Badge" }, - "noGpsData": "Keine GPS-Daten", "@noGpsData": { "description": "Nachricht, wenn GPS-Daten nicht verfügbar sind" }, - "distance": "Entfernung", "@distance": { "description": "Beschriftung der Entfernung" }, - - "pingingDirect": "Pinge {name} (direkt über Pfad)...", - "@pingingDirect": { - "description": "Statusmeldung für direkten Ping", - "placeholders": { - "name": { - "type": "String" - } - } - }, - - "pingingFlood": "Pinge {name} (Flutung - kein Pfad)...", - "@pingingFlood": { - "description": "Statusmeldung für Flut-Ping", - "placeholders": { - "name": { - "type": "String" - } - } - }, - "directPingTimeout": "Direkter Ping-Timeout - wiederhole {name} mit Flutung...", "@directPingTimeout": { "description": "Warnung, wenn direkter Ping ein Timeout hat", @@ -1091,25 +681,6 @@ } } }, - - "pingSuccessful": "Ping erfolgreich an {name}{fallback}", - "@pingSuccessful": { - "description": "Erfolgsmeldung für Ping", - "placeholders": { - "name": { - "type": "String" - }, - "fallback": { - "type": "String" - } - } - }, - - "viaFloodingFallback": " (über Flutungs-Fallback)", - "@viaFloodingFallback": { - "description": "Suffix für Ping-Erfolg mit Fallback" - }, - "pingFailed": "Ping fehlgeschlagen an {name} - keine Antwort erhalten", "@pingFailed": { "description": "Fehlermeldung, wenn Ping fehlschlägt", @@ -1119,7 +690,6 @@ } } }, - "deleteContactConfirmation": "Sind Sie sicher, dass Sie \"{name}\" löschen möchten?\n\nDies entfernt den Kontakt sowohl aus der App als auch vom Begleitfunkgerät.", "@deleteContactConfirmation": { "description": "Bestätigungsnachricht zum Löschen eines Kontakts", @@ -1129,27 +699,6 @@ } } }, - - "removingContact": "Entferne {name}...", - "@removingContact": { - "description": "Statusmeldung beim Entfernen des Kontakts", - "placeholders": { - "name": { - "type": "String" - } - } - }, - - "contactRemoved": "Kontakt \"{name}\" entfernt", - "@contactRemoved": { - "description": "Erfolgsmeldung nach dem Entfernen des Kontakts", - "placeholders": { - "name": { - "type": "String" - } - } - }, - "failedToRemoveContact": "Fehler beim Entfernen des Kontakts: {error}", "@failedToRemoveContact": { "description": "Fehlermeldung, wenn das Entfernen des Kontakts fehlschlägt", @@ -1159,117 +708,86 @@ } } }, - "type": "Typ", "@type": { "description": "Beschriftung des Kontakttyps" }, - "publicKey": "Öffentlicher Schlüssel", "@publicKey": { "description": "Beschriftung des öffentlichen Schlüssels" }, - "lastSeen": "Zuletzt gesehen", "@lastSeen": { "description": "Beschriftung Zuletzt gesehen" }, - "roomStatus": "Raumstatus", "@roomStatus": { "description": "Überschrift des Raumstatus-Bereichs" }, - "loginStatus": "Anmeldestatus", "@loginStatus": { "description": "Beschriftung des Anmeldestatus" }, - "notLoggedIn": "Nicht angemeldet", "@notLoggedIn": { "description": "Nicht angemeldet-Status" }, - "adminAccess": "Admin-Zugriff", "@adminAccess": { "description": "Beschriftung des Admin-Zugriffs" }, - "yes": "Ja", "@yes": { "description": "Ja-Antwort" }, - "no": "Nein", "@no": { "description": "Nein-Antwort" }, - "permissions": "Berechtigungen", "@permissions": { "description": "Beschriftung der Berechtigungen" }, - "passwordSaved": "Passwort gespeichert", "@passwordSaved": { "description": "Beschriftung Passwort gespeichert" }, - "locationColon": "Standort:", "@locationColon": { "description": "Überschrift des Standortbereichs" }, - "telemetry": "Telemetrie", "@telemetry": { "description": "Überschrift des Telemetrie-Bereichs" }, - - "requestingTelemetry": "Fordere Telemetrie von {name} an...", - "@requestingTelemetry": { - "description": "Statusmeldung beim Anfordern von Telemetrie", - "placeholders": { - "name": { - "type": "String" - } - } - }, - "voltage": "Spannung", "@voltage": { "description": "Beschriftung der Spannung" }, - "battery": "Batterie", "@battery": { "description": "Beschriftung der Batterie" }, - "temperature": "Temperatur", "@temperature": { "description": "Beschriftung der Temperatur" }, - "humidity": "Luftfeuchtigkeit", "@humidity": { "description": "Beschriftung der Luftfeuchtigkeit" }, - "pressure": "Druck", "@pressure": { "description": "Beschriftung des Drucks" }, - "gpsTelemetry": "GPS (Telemetrie)", "@gpsTelemetry": { "description": "GPS aus Telemetrie-Beschriftung" }, - "updated": "Aktualisiert", "@updated": { "description": "Beschriftung des Aktualisierungszeitstempels" }, - "pathResetInfo": "Pfad zurückgesetzt für {name}. Nächste Nachricht findet eine neue Route.", "@pathResetInfo": { "description": "Infonachricht nach Pfad-Reset", @@ -1279,102 +797,74 @@ } } }, - "reLoginToRoom": "Erneut bei Raum anmelden", "@reLoginToRoom": { "description": "Schaltfläche zur erneuten Anmeldung beim Raum" }, - "heading": "Kurs", "@heading": { "description": "Beschriftung des Kompasskurses" }, - "elevation": "Höhe", "@elevation": { "description": "Beschriftung der Höhe/Höhenlage" }, - "accuracy": "Genauigkeit", "@accuracy": { "description": "Beschriftung der GPS-Genauigkeit" }, - - "distance": "Entfernung", - "@distance": { - "description": "Entfernungsbeschriftung im Kompass" - }, - "bearing": "Peilung", "@bearing": { "description": "Peilungsbeschriftung im Kompass" }, - "direction": "Richtung", "@direction": { "description": "Richtungsbeschriftung im Kompass" }, - "filterMarkers": "Markierungen filtern", "@filterMarkers": { "description": "Titel für Markierungen-filtern-Dialog" }, - "filterMarkersTooltip": "Markierungen filtern", "@filterMarkersTooltip": { "description": "Tooltip für Filter-Schaltfläche" }, - "contactsFilter": "Kontakte", "@contactsFilter": { "description": "Filteroption für Kontakte" }, - "repeatersFilter": "Repeater", "@repeatersFilter": { "description": "Filteroption für Repeater" }, - "sarMarkers": "SAR-Markierungen", "@sarMarkers": { "description": "Überschrift des SAR-Markierungen-Bereichs" }, - "foundPerson": "Person gefunden", "@foundPerson": { "description": "Typ der SAR-Markierung: Person gefunden" }, - "fire": "Feuer", "@fire": { "description": "Typ der SAR-Markierung: Feuer" }, - "stagingArea": "Sammelpunkt", "@stagingArea": { "description": "Typ der SAR-Markierung: Sammelpunkt" }, - "showAll": "Alle anzeigen", "@showAll": { "description": "Schaltfläche zum Anzeigen aller Filter" }, - - "nearbyContacts": "Kontakte in der Nähe", - "@nearbyContacts": { - "description": "Titel für die Liste der Kontakte in der Nähe im Kompass" - }, - "locationUnavailable": "Standort nicht verfügbar", "@locationUnavailable": { "description": "Nachricht, wenn GPS-Standort nicht verfügbar ist" }, - "ahead": "voraus", "@ahead": { "description": "Relative Peilungsrichtung - voraus" }, - "degreesRight": "{degrees}° rechts", "@degreesRight": { "description": "Relative Peilungsrichtung - rechts", @@ -1384,7 +874,6 @@ } } }, - "degreesLeft": "{degrees}° links", "@degreesLeft": { "description": "Relative Peilungsrichtung - links", @@ -1394,7 +883,6 @@ } } }, - "latLonFormat": "Lat: {latitude} Lon: {longitude}", "@latLonFormat": { "description": "Anzeigenformat für Breiten- und Längengrad", @@ -1407,506 +895,100 @@ } } }, - "noContactsYet": "Noch keine Kontakte", "@noContactsYet": { "description": "Leerzustandsnachricht, wenn keine Kontakte vorhanden sind" }, - "connectToDeviceToLoadContacts": "Mit einem Gerät verbinden, um Kontakte zu laden", "@connectToDeviceToLoadContacts": { "description": "Anweisung zum Verbinden des Geräts zum Laden von Kontakten" }, - "teamMembers": "Teammitglieder", "@teamMembers": { "description": "Überschrift für Teammitglieder (Chat-Kontakte)" }, - "repeaters": "Repeater", "@repeaters": { "description": "Überschrift für Repeater-Knoten" }, - "rooms": "Räume", "@rooms": { "description": "Überschrift für Räume" }, - "channels": "Kanäle", "@channels": { "description": "Überschrift für Broadcast-Kanäle" }, - - "cacheStatistics": "Cache-Statistiken", - "@cacheStatistics": { - "description": "Titel für Cache-Statistik-Bereich" - }, - - "totalTiles": "Gesamte Tiles", - "@totalTiles": { - "description": "Beschriftung für Gesamtanzahl der gecachten Tiles" - }, - - "cacheSize": "Cache-Größe", - "@cacheSize": { - "description": "Beschriftung für Cache-Größe in MB" - }, - - "storeName": "Speichername", - "@storeName": { - "description": "Beschriftung für Cache-Speichernamen" - }, - - "noCacheStatistics": "Keine Cache-Statistiken verfügbar", - "@noCacheStatistics": { - "description": "Nachricht, wenn Cache-Statistiken nicht verfügbar sind" - }, - - "downloadRegion": "Region herunterladen", - "@downloadRegion": { - "description": "Titel für Region-herunterladen-Bereich" - }, - - "mapLayer": "Kartenebene", - "@mapLayer": { - "description": "Beschriftung für Kartenebenenauswahl" - }, - - "regionBounds": "Regionsgrenzen", - "@regionBounds": { - "description": "Titel für Regionsgrenzen-Eingabebereich" - }, - - "north": "Nord", - "@north": { - "description": "Beschriftung für Nordkoordinate" - }, - - "south": "Süd", - "@south": { - "description": "Beschriftung für Südkoordinate" - }, - - "east": "Ost", - "@east": { - "description": "Beschriftung für Ostkoordinate" - }, - - "west": "West", - "@west": { - "description": "Beschriftung für Westkoordinate" - }, - - "zoomLevels": "Zoom-Stufen", - "@zoomLevels": { - "description": "Titel für Zoom-Stufen-Bereich" - }, - - "minZoom": "Min: {zoom}", - "@minZoom": { - "description": "Beschriftung für minimale Zoom-Stufe", - "placeholders": { - "zoom": { - "type": "int" - } - } - }, - - "maxZoom": "Max: {zoom}", - "@maxZoom": { - "description": "Beschriftung für maximale Zoom-Stufe", - "placeholders": { - "zoom": { - "type": "int" - } - } - }, - - "downloadingDots": "Lädt herunter...", - "@downloadingDots": { - "description": "Statusmeldung während des Downloads" - }, - - "cancelDownload": "Download abbrechen", - "@cancelDownload": { - "description": "Schaltfläche zum Abbrechen des Downloads" - }, - - "downloadRegionButton": "Region herunterladen", - "@downloadRegionButton": { - "description": "Schaltfläche zum Starten des Regions-Downloads" - }, - - "downloadNote": "Hinweis: Große Regionen oder hohe Zoom-Stufen können erhebliche Zeit und Speicherplatz benötigen.", - "@downloadNote": { - "description": "Warnung zu Download-Größe und -Zeit" - }, - - "cacheManagement": "Cache-Verwaltung", - "@cacheManagement": { - "description": "Titel für Cache-Verwaltungsbereich" - }, - - "clearAllMaps": "Alle Karten löschen", - "@clearAllMaps": { - "description": "Schaltfläche zum Löschen aller gecachten Karten" - }, - - "clearMapsConfirmTitle": "Alle Karten löschen", - "@clearMapsConfirmTitle": { - "description": "Titel für Karten-löschen-Bestätigungsdialog" - }, - - "clearMapsConfirmMessage": "Sind Sie sicher, dass Sie alle heruntergeladenen Karten löschen möchten? Diese Aktion kann nicht rückgängig gemacht werden.", - "@clearMapsConfirmMessage": { - "description": "Bestätigungsnachricht zum Löschen von Karten" - }, - - "mapDownloadCompleted": "Karten-Download abgeschlossen!", - "@mapDownloadCompleted": { - "description": "Erfolgsmeldung nach Karten-Download" - }, - - "cacheClearedSuccessfully": "Cache erfolgreich gelöscht!", - "@cacheClearedSuccessfully": { - "description": "Erfolgsmeldung nach dem Löschen des Caches" - }, - - "downloadCancelled": "Download abgebrochen", - "@downloadCancelled": { - "description": "Nachricht, wenn der Download abgebrochen wird" - }, - - "startingDownload": "Starte Download...", - "@startingDownload": { - "description": "Anfangsstatus beim Beginn des Downloads" - }, - - "downloadingMapTiles": "Lade Karten-Tiles herunter...", - "@downloadingMapTiles": { - "description": "Status während des Tile-Downloads" - }, - - "downloadCompletedSuccessfully": "Download erfolgreich abgeschlossen!", - "@downloadCompletedSuccessfully": { - "description": "Status nach erfolgreichem Download" - }, - - "cancellingDownload": "Breche Download ab...", - "@cancellingDownload": { - "description": "Status beim Abbrechen des Downloads" - }, - - "errorLoadingStats": "Fehler beim Laden der Statistiken: {error}", - "@errorLoadingStats": { - "description": "Fehlermeldung, wenn das Laden der Cache-Statistiken fehlschlägt", - "placeholders": { - "error": { - "type": "String" - } - } - }, - - "downloadFailed": "Download fehlgeschlagen: {error}", - "@downloadFailed": { - "description": "Fehlermeldung, wenn der Download fehlschlägt", - "placeholders": { - "error": { - "type": "String" - } - } - }, - - "cancelFailed": "Abbruch fehlgeschlagen: {error}", - "@cancelFailed": { - "description": "Fehlermeldung, wenn der Abbruch fehlschlägt", - "placeholders": { - "error": { - "type": "String" - } - } - }, - - "clearCacheFailed": "Löschen des Caches fehlgeschlagen: {error}", - "@clearCacheFailed": { - "description": "Fehlermeldung, wenn das Löschen des Caches fehlschlägt", - "placeholders": { - "error": { - "type": "String" - } - } - }, - - "minZoomError": "Min-Zoom: {error}", - "@minZoomError": { - "description": "Validierungsfehler für minimalen Zoom", - "placeholders": { - "error": { - "type": "String" - } - } - }, - - "maxZoomError": "Max-Zoom: {error}", - "@maxZoomError": { - "description": "Validierungsfehler für maximalen Zoom", - "placeholders": { - "error": { - "type": "String" - } - } - }, - - "minZoomGreaterThanMax": "Minimaler Zoom muss kleiner oder gleich dem maximalen Zoom sein", - "@minZoomGreaterThanMax": { - "description": "Validierungsfehler, wenn Min-Zoom > Max-Zoom" - }, - "selectMapLayer": "Kartenebene auswählen", "@selectMapLayer": { "description": "Titel für Kartenebenen-Auswahldialog" }, - - "mapOptions": "Kartenoptionen", - "@mapOptions": { - "description": "Titel für Kartenoptionen-Dialog" - }, - - "showLegend": "Legende anzeigen", - "@showLegend": { - "description": "Umschalter zum Anzeigen der Kartenlegende" - }, - - "displayMarkerTypeCounts": "Markierungstypen-Anzahl anzeigen", - "@displayMarkerTypeCounts": { - "description": "Beschreibung für Legende-anzeigen-Umschalter" - }, - - "rotateMapWithHeading": "Karte mit Kurs drehen", - "@rotateMapWithHeading": { - "description": "Umschalter zum Drehen der Karte mit Kompasskurs" - }, - - "mapFollowsDirection": "Karte folgt Ihrer Richtung während der Bewegung", - "@mapFollowsDirection": { - "description": "Beschreibung für Karte-drehen-Umschalter" - }, - - "resetMapRotation": "Drehung zurücksetzen", - "@resetMapRotation": { - "description": "Schaltfläche zum Zurücksetzen der Kartendrehung nach Norden" - }, - - "resetMapRotationTooltip": "Karte nach Norden zurücksetzen", - "@resetMapRotationTooltip": { - "description": "Tooltip für Drehung-zurücksetzen-Schaltfläche" - }, - - "showMapDebugInfo": "Karten-Debug-Info anzeigen", - "@showMapDebugInfo": { - "description": "Umschalter zum Anzeigen von Karten-Debug-Informationen" - }, - - "displayZoomLevelBounds": "Zoom-Stufe und Grenzen anzeigen", - "@displayZoomLevelBounds": { - "description": "Beschreibung für Debug-Info-Umschalter" - }, - - "fullscreenMode": "Vollbildmodus", - "@fullscreenMode": { - "description": "Umschalter für Vollbild-Kartenmodus" - }, - - "hideUiFullMapView": "Alle UI-Steuerelemente für volle Kartenansicht ausblenden", - "@hideUiFullMapView": { - "description": "Beschreibung für Vollbildmodus-Umschalter" - }, - "openStreetMap": "OpenStreetMap", "@openStreetMap": { "description": "Name der OpenStreetMap-Ebene" }, - "openTopoMap": "OpenTopoMap", "@openTopoMap": { "description": "Name der OpenTopoMap-Ebene" }, - "esriSatellite": "ESRI-Satellit", "@esriSatellite": { "description": "Name der ESRI-Satellitenbildebene" }, - "googleHybrid": "Google Hybrid", "@googleHybrid": { "description": "Name der Google Hybrid-Ebene (Satellit + Beschriftungen)" }, - "googleRoadmap": "Google Straßenkarte", "@googleRoadmap": { "description": "Name der Google Straßenkarten-Ebene" }, - "googleTerrain": "Google Gelände", "@googleTerrain": { "description": "Name der Google Gelände-Ebene (topografisch)" }, - - "downloadVisibleArea": "Sichtbaren Bereich herunterladen", - "@downloadVisibleArea": { - "description": "Tooltip für Schaltfläche zum Herunterladen des sichtbaren Bereichs" - }, - - "initializingMap": "Initialisiere Karte...", - "@initializingMap": { - "description": "Ladenachricht für Karteninitialisierung" - }, - "dragToPosition": "Zur Position ziehen", "@dragToPosition": { "description": "Beschriftung beim Ziehen einer Stecknadel auf der Karte" }, - "createSarMarker": "SAR-Markierung erstellen", "@createSarMarker": { "description": "Beschriftung zum Erstellen einer SAR-Markierung von Stecknadel" }, - "compass": "Kompass", "@compass": { "description": "Kompasstitel im detaillierten Kompassdialog" }, - "navigationAndContacts": "Navigation & Kontakte", "@navigationAndContacts": { "description": "Untertitel für Kompassdialog" }, - "sarAlert": "SAR-ALARM", "@sarAlert": { "description": "Beschriftung für SAR-Alarm-Badge auf Nachrichten" }, - - "messageSentToPublicChannel": "Nachricht an öffentlichen Kanal gesendet", - "@messageSentToPublicChannel": { - "description": "Erfolgsmeldung, wenn Nachricht an öffentlichen Kanal gesendet wird" - }, - - "pleaseSelectRoomToSendSar": "Bitte wählen Sie einen Raum zum Senden der SAR-Markierung", - "@pleaseSelectRoomToSendSar": { - "description": "Fehler, wenn kein Raum für SAR-Markierung ausgewählt ist" - }, - - "failedToSendSarMarker": "Fehler beim Senden der SAR-Markierung: {error}", - "@failedToSendSarMarker": { - "description": "Fehlermeldung, wenn das Senden der SAR-Markierung fehlschlägt", - "placeholders": { - "error": { - "type": "String" - } - } - }, - - "sarMarkerSentTo": "SAR-Markierung an {roomName} gesendet", - "@sarMarkerSentTo": { - "description": "Erfolgsmeldung, wenn SAR-Markierung an Raum gesendet wird", - "placeholders": { - "roomName": { - "type": "String" - } - } - }, - - "notConnectedCannotSync": "Nicht verbunden - Nachrichten können nicht synchronisiert werden", - "@notConnectedCannotSync": { - "description": "Warnung beim Versuch, Nachrichten zu synchronisieren, während nicht verbunden" - }, - - "syncedMessageCount": "{count} Nachricht(en) synchronisiert", - "@syncedMessageCount": { - "description": "Erfolgsmeldung mit Anzahl der synchronisierten Nachrichten", - "placeholders": { - "count": { - "type": "int" - } - } - }, - - "noNewMessages": "Keine neuen Nachrichten", - "@noNewMessages": { - "description": "Infonachricht, wenn keine neuen Nachrichten zum Synchronisieren vorhanden sind" - }, - - "syncFailed": "Synchronisation fehlgeschlagen: {error}", - "@syncFailed": { - "description": "Fehlermeldung, wenn Synchronisation fehlschlägt", - "placeholders": { - "error": { - "type": "String" - } - } - }, - - "failedToResendMessage": "Fehler beim erneuten Senden der Nachricht", - "@failedToResendMessage": { - "description": "Fehler, wenn erneutes Senden der Nachricht fehlschlägt" - }, - - "retryingMessage": "Wiederhole Nachricht...", - "@retryingMessage": { - "description": "Infonachricht beim Wiederholen einer fehlgeschlagenen Nachricht" - }, - - "retryFailed": "Wiederholen fehlgeschlagen: {error}", - "@retryFailed": { - "description": "Fehlermeldung, wenn Wiederholen fehlschlägt", - "placeholders": { - "error": { - "type": "String" - } - } - }, - "textCopiedToClipboard": "Text in Zwischenablage kopiert", "@textCopiedToClipboard": { "description": "Erfolgsmeldung, wenn Text kopiert wird" }, - "cannotReplySenderMissing": "Antwort nicht möglich: Absenderinformationen fehlen", "@cannotReplySenderMissing": { "description": "Fehler, wenn Absenderinformationen für Antwort fehlen" }, - "cannotReplyContactNotFound": "Antwort nicht möglich: Kontakt nicht gefunden", "@cannotReplyContactNotFound": { "description": "Fehler, wenn Kontakt für Antwort nicht gefunden wird" }, - - "messageDeleted": "Nachricht gelöscht", - "@messageDeleted": { - "description": "Infonachricht, wenn Nachricht gelöscht wird" - }, - "copyText": "Text kopieren", - "textCopiedToClipboard": "Text in Zwischenablage kopiert", "deleteMessage": "Nachricht löschen", "deleteMessageConfirmation": "Möchten Sie diese Nachricht wirklich löschen?", "shareLocation": "Standort teilen", "shareLocationText": "{markerInfo}\n\nKoordinaten: {lat}, {lon}\n\nGoogle Maps: {url}", "sarLocationShare": "SAR Standort", - "locationShared": "Standort geteilt", - - "refreshedContacts": "Kontakte aktualisiert", - "@refreshedContacts": { - "description": "Erfolgsmeldung, wenn Kontakte aktualisiert werden" - }, - "justNow": "Gerade eben", "@justNow": { "description": "Zeitindikator für sehr aktuelle Aktivität" }, - "minutesAgo": "vor {minutes}m", "@minutesAgo": { "description": "Zeitindikator für Minuten zuvor", @@ -1916,7 +998,6 @@ } } }, - "hoursAgo": "vor {hours}h", "@hoursAgo": { "description": "Zeitindikator für Stunden zuvor", @@ -1926,7 +1007,6 @@ } } }, - "daysAgo": "vor {days}d", "@daysAgo": { "description": "Zeitindikator für Tage zuvor", @@ -1936,7 +1016,6 @@ } } }, - "secondsAgo": "vor {seconds}s", "@secondsAgo": { "description": "Zeitindikator für Sekunden zuvor", @@ -1946,22 +1025,18 @@ } } }, - "sending": "Wird gesendet...", "@sending": { "description": "Zustellungsstatus: wird gesendet" }, - "sent": "Gesendet", "@sent": { "description": "Zustellungsstatus: gesendet" }, - "delivered": "Zugestellt", "@delivered": { "description": "Zustellungsstatus: zugestellt" }, - "deliveredWithTime": "Zugestellt ({time}ms)", "@deliveredWithTime": { "description": "Zustellungsstatus mit Rundlaufzeit", @@ -1971,17 +1046,14 @@ } } }, - "failed": "Fehlgeschlagen", "@failed": { "description": "Zustellungsstatus: fehlgeschlagen" }, - "broadcast": "Broadcast", "@broadcast": { "description": "Zustellstatus für Kanalnachrichten (noch keine Echos)" }, - "deliveredToContacts": "Zugestellt an {delivered}/{total} Kontakte", "@deliveredToContacts": { "description": "Gruppennachricht Zustellungsanzahl", @@ -1994,226 +1066,88 @@ } } }, - "allDelivered": "Alle zugestellt", "@allDelivered": { "description": "Status wenn alle Empfänger die Nachricht erhalten haben" }, - "recipientDetails": "Empfängerdetails", "@recipientDetails": { "description": "Überschrift für erweiterbare Empfängerliste" }, - "pending": "Ausstehend", "@pending": { "description": "Zustellungsstatus: ausstehend/wartend" }, - "sarMarkerFoundPerson": "Person gefunden", "@sarMarkerFoundPerson": { "description": "SAR-Markierungstyp: Person gefunden" }, - "sarMarkerFire": "Feuerstandort", "@sarMarkerFire": { "description": "SAR-Markierungstyp: Feuer" }, - "sarMarkerStagingArea": "Sammelpunkt", "@sarMarkerStagingArea": { "description": "SAR-Markierungstyp: Sammelpunkt" }, - "sarMarkerObject": "Objekt gefunden", "@sarMarkerObject": { "description": "SAR-Markierungstyp: Objekt" }, - "from": "Von", "@from": { "description": "Absender-Beschriftung in Benachrichtigungen" }, - "coordinates": "Koordinaten", "@coordinates": { "description": "Koordinaten-Beschriftung" }, - "tapToViewOnMap": "Tippen, um auf der Karte anzuzeigen", "@tapToViewOnMap": { "description": "Benachrichtigungsaktionstext" }, - "radioSettings": "Funkeinstellungen", "@radioSettings": { "description": "Titel des Abschnitts für Funkeinstellungen" }, - "frequencyMHz": "Frequenz (MHz)", "@frequencyMHz": { "description": "Beschriftung für Funkfrequenzfeld" }, - "frequencyExample": "z.B. 869.618", "@frequencyExample": { "description": "Hilfetext-Beispiel für Frequenz" }, - "bandwidth": "Bandbreite", "@bandwidth": { "description": "Beschriftung für Bandbreiten-Dropdown" }, - "spreadingFactor": "Spreading-Faktor", "@spreadingFactor": { "description": "Beschriftung für Spreading-Faktor-Dropdown" }, - "codingRate": "Codierungsrate", "@codingRate": { "description": "Beschriftung für Codierungsraten-Dropdown" }, - "txPowerDbm": "TX-Leistung (dBm)", "@txPowerDbm": { "description": "Beschriftung für TX-Leistungsfeld" }, - "maxPowerDbm": "Max: {power} dBm", "@maxPowerDbm": { "description": "Hilfetext zur maximalen TX-Leistung", "placeholders": { - "power": { "type": "int" } + "power": { + "type": "int" + } } }, - "you": "Du", "@you": { "description": "Beschriftung für den aktuellen Benutzer in Nachrichtenblasen" }, - - "offlineVectorMaps": "Offline-Vektorkarten", - "@offlineVectorMaps": { - "description": "Titel für den Abschnitt Offline-Vektorkarten" - }, - - "offlineVectorMapsDescription": "Importieren und verwalten Sie Offline-Vektorkarten-Tiles (MBTiles-Format) zur Verwendung ohne Internetverbindung", - "@offlineVectorMapsDescription": { - "description": "Beschreibung für den Abschnitt Offline-Vektorkarten" - }, - - "importMbtiles": "MBTiles-Datei importieren", - "@importMbtiles": { - "description": "Schaltfläche zum Importieren einer MBTiles-Datei" - }, - - "importMbtilesNote": "Unterstützt MBTiles-Dateien mit Vektor-Tiles (PBF/MVT-Format). Geofabrik-Auszüge funktionieren hervorragend!", - "@importMbtilesNote": { - "description": "Hinweis zu unterstützten MBTiles-Dateitypen" - }, - - "noMbtilesFiles": "Keine Offline-Vektorkarten gefunden", - "@noMbtilesFiles": { - "description": "Nachricht, wenn keine MBTiles-Dateien verfügbar sind" - }, - - "mbtilesImportedSuccessfully": "MBTiles-Datei erfolgreich importiert", - "@mbtilesImportedSuccessfully": { - "description": "Erfolgsmeldung nach dem Importieren der MBTiles-Datei" - }, - - "failedToImportMbtiles": "Fehler beim Importieren der MBTiles-Datei", - "@failedToImportMbtiles": { - "description": "Fehlermeldung, wenn MBTiles-Import fehlschlägt" - }, - - "deleteMbtilesConfirmTitle": "Offline-Karte löschen", - "@deleteMbtilesConfirmTitle": { - "description": "Titel für MBTiles-Löschbestätigungsdialog" - }, - - "deleteMbtilesConfirmMessage": "Sind Sie sicher, dass Sie \"{name}\" löschen möchten? Dies entfernt die Offline-Karte dauerhaft.", - "@deleteMbtilesConfirmMessage": { - "description": "Bestätigungsnachricht zum Löschen der MBTiles-Datei", - "placeholders": { - "name": { - "type": "String" - } - } - }, - - "mbtilesDeletedSuccessfully": "Offline-Karte erfolgreich gelöscht", - "@mbtilesDeletedSuccessfully": { - "description": "Erfolgsmeldung nach dem Löschen der MBTiles-Datei" - }, - - "failedToDeleteMbtiles": "Fehler beim Löschen der Offline-Karte", - "@failedToDeleteMbtiles": { - "description": "Fehlermeldung, wenn MBTiles-Löschung fehlschlägt" - }, - - "importExportCachedTiles": "Import/Export gecachter Kacheln", - "@importExportCachedTiles": { - "description": "Titel für Import/Export-Bereich" - }, - - "importExportDescription": "Sichern, teilen und wiederherstellen Sie heruntergeladene Kartenkacheln zwischen Geräten", - "@importExportDescription": { - "description": "Beschreibung der Import/Export-Funktionalität" - }, - - "exportTilesToFile": "Kacheln in Datei exportieren", - "@exportTilesToFile": { - "description": "Schaltfläche zum Exportieren von Kacheln" - }, - - "importTilesFromFile": "Kacheln aus Datei importieren", - "@importTilesFromFile": { - "description": "Schaltfläche zum Importieren von Kacheln" - }, - - "selectExportLocation": "Exportspeicherort wählen", - "@selectExportLocation": { - "description": "Titel für Export-Dateiauswahl" - }, - - "selectImportFile": "Kachel-Archiv auswählen", - "@selectImportFile": { - "description": "Titel für Import-Dateiauswahl" - }, - - "exportingTiles": "Exportiere Kacheln...", - "@exportingTiles": { - "description": "Statusmeldung während des Exports" - }, - - "importingTiles": "Importiere Kacheln...", - "@importingTiles": { - "description": "Statusmeldung während des Imports" - }, - - "exportSuccess": "{count} Kacheln erfolgreich exportiert", - "@exportSuccess": { - "description": "Erfolgsmeldung nach Export", - "placeholders": { - "count": { - "type": "int" - } - } - }, - - "importSuccess": "{count} Speicher erfolgreich importiert", - "@importSuccess": { - "description": "Erfolgsmeldung nach Import", - "placeholders": { - "count": { - "type": "int" - } - } - }, - - "exportFailed": "Export fehlgeschlagen: {error}", + "exportFailed": "Export failed: {error}", "@exportFailed": { "description": "Fehlermeldung bei Export-Fehler", "placeholders": { @@ -2222,8 +1156,7 @@ } } }, - - "importFailed": "Import fehlgeschlagen: {error}", + "importFailed": "Import failed: {error}", "@importFailed": { "description": "Fehlermeldung bei Import-Fehler", "placeholders": { @@ -2232,217 +1165,74 @@ } } }, - - "exportNote": "Erstellt eine komprimierte Archivdatei (.fmtc), die auf anderen Geräten geteilt und importiert werden kann.", - "@exportNote": { - "description": "Hinweis zur Export-Funktionalität" - }, - - "importNote": "Importiert Kartenkacheln aus einer zuvor exportierten Archivdatei. Kacheln werden mit dem vorhandenen Cache zusammengeführt.", - "@importNote": { - "description": "Hinweis zur Import-Funktionalität" - }, - - "noTilesToExport": "Keine Kacheln zum Exportieren verfügbar", - "@noTilesToExport": { - "description": "Meldung wenn Cache leer ist" - }, - - "archiveContainsStores": "Archiv enthält {count} Speicher", - "@archiveContainsStores": { - "description": "Information über Archivinhalte", - "placeholders": { - "count": { - "type": "int" - } - } - }, - - "vectorTiles": "Vektor-Tiles", - "@vectorTiles": { - "description": "Beschriftung für Vektor-Tile-Typ" - }, - - "schema": "Schema", - "@schema": { - "description": "Beschriftung für Vektor-Tile-Schema" - }, - "unknown": "Unbekannt", "@unknown": { "description": "Beschriftung für unbekannten Wert" }, - - "bounds": "Grenzen", - "@bounds": { - "description": "Beschriftung für geografische Grenzen" - }, - "onlineLayers": "Online-Ebenen", "@onlineLayers": { "description": "Überschrift für Online-Kartenebenen" }, - - "offlineLayers": "Offline-Ebenen", - "@offlineLayers": { - "description": "Überschrift für Offline-Kartenebenen (MBTiles)" - }, - "locationTrail": "Standortverlauf", "@locationTrail": { "description": "Titel des Standortverlaufs" }, - "showTrailOnMap": "Verlauf auf Karte anzeigen", "@showTrailOnMap": { "description": "Umschalter zum Ein-/Ausblenden des Verlaufs auf der Karte" }, - "trailVisible": "Verlauf ist auf der Karte sichtbar", "@trailVisible": { "description": "Verlaufssichtbarkeitsstatus - sichtbar" }, - "trailHiddenRecording": "Verlauf ist ausgeblendet (Aufzeichnung läuft noch)", "@trailHiddenRecording": { "description": "Verlaufssichtbarkeitsstatus - ausgeblendet, aber Aufzeichnung läuft" }, - - "distance": "Entfernung", - "@distance": { - "description": "Beschriftung der Entfernung" - }, - "duration": "Dauer", "@duration": { "description": "Beschriftung der Dauer" }, - "points": "Punkte", "@points": { "description": "Beschriftung der Verlaufspunkte-Anzahl" }, - "clearTrail": "Verlauf löschen", "@clearTrail": { "description": "Schaltfläche zum Löschen des Standortverlaufs" }, - "clearTrailQuestion": "Verlauf löschen?", "@clearTrailQuestion": { "description": "Titel des Bestätigungsdialogs" }, - "clearTrailConfirmation": "Sind Sie sicher, dass Sie den aktuellen Standortverlauf löschen möchten? Diese Aktion kann nicht rückgängig gemacht werden.", "@clearTrailConfirmation": { "description": "Nachricht des Bestätigungsdialogs" }, - "noTrailRecorded": "Noch kein Verlauf aufgezeichnet", "@noTrailRecorded": { "description": "Nachricht, wenn kein Verlauf vorhanden ist" }, - "startTrackingToRecord": "Standort-Tracking starten, um Ihren Verlauf aufzuzeichnen", "@startTrackingToRecord": { "description": "Anweisungen zum Starten der Verlaufsaufzeichnung" }, - "trailControls": "Verlaufssteuerung", "@trailControls": { "description": "Tooltip für Verlaufssteuerung" }, - - "exportTrailToGpx": "Verlauf als GPX exportieren", - "@exportTrailToGpx": { - "description": "Beschriftung der Schaltfläche zum Exportieren des Verlaufs in eine GPX-Datei" - }, - - "importTrailFromGpx": "Verlauf aus GPX importieren", - "@importTrailFromGpx": { - "description": "Beschriftung der Schaltfläche zum Importieren des Verlaufs aus einer GPX-Datei" - }, - - "trailExportedSuccessfully": "Verlauf erfolgreich exportiert!", - "@trailExportedSuccessfully": { - "description": "Erfolgsmeldung beim Exportieren des Verlaufs" - }, - - "failedToExportTrail": "Exportieren des Verlaufs fehlgeschlagen", - "@failedToExportTrail": { - "description": "Fehlermeldung beim Exportieren des Verlaufs" - }, - - "failedToImportTrail": "Importieren des Verlaufs fehlgeschlagen: {error}", - "@failedToImportTrail": { - "description": "Fehlermeldung beim Importieren des Verlaufs", - "placeholders": { - "error": { - "type": "String" - } - } - }, - - "importTrail": "Verlauf importieren", - "@importTrail": { - "description": "Titel des Dialogs zum Importieren des Verlaufs" - }, - - "importTrailQuestion": "Verlauf mit {pointCount} Punkten importieren?\n\nSie können Ihren aktuellen Verlauf ersetzen oder daneben anzeigen.", - "@importTrailQuestion": { - "description": "Inhalt des Bestätigungsdialogs zum Importieren des Verlaufs", - "placeholders": { - "pointCount": { - "type": "int" - } - } - }, - - "viewAlongside": "Daneben anzeigen", - "@viewAlongside": { - "description": "Schaltfläche zum Importieren des Verlaufs neben dem aktuellen Verlauf" - }, - - "replaceCurrent": "Aktuellen ersetzen", - "@replaceCurrent": { - "description": "Schaltfläche zum Ersetzen des aktuellen Verlaufs durch importierten Verlauf" - }, - - "trailImported": "Verlauf importiert! ({pointCount} Punkte)", - "@trailImported": { - "description": "Erfolgsmeldung beim Importieren des Verlaufs", - "placeholders": { - "pointCount": { - "type": "int" - } - } - }, - - "trailReplaced": "Verlauf ersetzt! ({pointCount} Punkte)", - "@trailReplaced": { - "description": "Erfolgsmeldung beim Ersetzen des Verlaufs", - "placeholders": { - "pointCount": { - "type": "int" - } - } - }, - "contactTrails": "Kontaktverläufe", "@contactTrails": { "description": "Überschrift des Bereichs für Kontaktverläufe" }, - "showAllContactTrails": "Alle Kontaktverläufe anzeigen", "@showAllContactTrails": { "description": "Beschriftung zum Umschalten der Anzeige aller Kontaktverläufe" }, - "noContactsWithLocationHistory": "Keine Kontakte mit Standortverlauf", "@noContactsWithLocationHistory": { "description": "Untertitel, wenn keine Kontakte mit Verläufen vorhanden sind" }, - "showingTrailsForContacts": "Verläufe für {count} Kontakte anzeigen", "@showingTrailsForContacts": { "description": "Untertitel mit Anzahl der Kontakte mit Verläufen", @@ -2452,117 +1242,94 @@ } } }, - "individualContactTrails": "Einzelne Kontaktverläufe", "@individualContactTrails": { "description": "Titel des Erweiterungselements für einzelne Kontaktverläufe" }, - "deviceInformation": "Geräteinformationen", "@deviceInformation": { "description": "Überschrift des Geräteinformationen-Bereichs" }, - "bleName": "BLE-Name", "@bleName": { "description": "Beschriftung des Bluetooth-Low-Energy-Gerätenamens" }, - "meshName": "Mesh-Name", "@meshName": { "description": "Beschriftung des Mesh-Netzwerknamens" }, - "notSet": "Nicht festgelegt", "@notSet": { "description": "Beschriftung, wenn ein Wert nicht festgelegt ist" }, - "model": "Modell", "@model": { "description": "Beschriftung des Gerätemodells" }, - "version": "Version", "@version": { "description": "Beschriftung der Version" }, - "buildDate": "Build-Datum", "@buildDate": { "description": "Beschriftung des Firmware-Build-Datums" }, - "firmware": "Firmware", "@firmware": { "description": "Beschriftung der Firmware" }, - "maxContacts": "Max. Kontakte", "@maxContacts": { "description": "Beschriftung der maximalen Kontaktkapazität" }, - "maxChannels": "Max. Kanäle", "@maxChannels": { "description": "Beschriftung der maximalen Kanalkapazität" }, - "publicInfo": "Öffentliche Informationen", "@publicInfo": { "description": "Überschrift des öffentlichen Informationen-Bereichs" }, - "meshNetworkName": "Mesh-Netzwerkname", "@meshNetworkName": { "description": "Beschriftung des Mesh-Netzwerknamens-Felds" }, - "nameBroadcastInMesh": "Name, der in Mesh-Sendungen übertragen wird", "@nameBroadcastInMesh": { "description": "Hilfetext für Mesh-Netzwerknamens-Feld" }, - "telemetryAndLocationSharing": "Telemetrie & Standortfreigabe", "@telemetryAndLocationSharing": { "description": "Beschriftung des Telemetrie- und Standortfreigabe-Umschalters" }, - "lat": "Lat", "@lat": { "description": "Beschriftung des Breitengradfelds (Kurzform)" }, - "lon": "Lon", "@lon": { "description": "Beschriftung des Längengradfelds (Kurzform)" }, - "useCurrentLocation": "Aktuellen Standort verwenden", "@useCurrentLocation": { "description": "Tooltip für Schaltfläche zum Verwenden des aktuellen Standorts" }, - "noneUnknown": "Keine/Unbekannt", "@noneUnknown": { "description": "Gerätetyp: keine oder unbekannt" }, - "chatNode": "Chat-Knoten", "@chatNode": { "description": "Gerätetyp: Chat-Knoten" }, - "repeater": "Repeater", "@repeater": { "description": "Gerätetyp: Repeater" }, - "roomChannel": "Raum/Kanal", "@roomChannel": { "description": "Gerätetyp: Raum oder Kanal" }, - "typeNumber": "Typ {number}", "@typeNumber": { "description": "Generischer Gerätetyp mit Nummer", @@ -2572,7 +1339,6 @@ } } }, - "copiedToClipboardShort": "{label} in Zwischenablage kopiert", "@copiedToClipboardShort": { "description": "Kurze Erfolgsmeldung beim Kopieren in die Zwischenablage", @@ -2582,7 +1348,6 @@ } } }, - "failedToSave": "Fehler beim Speichern: {error}", "@failedToSave": { "description": "Allgemeine Fehlermeldung für Speicherfehler", @@ -2592,7 +1357,6 @@ } } }, - "failedToGetLocation": "Fehler beim Abrufen des Standorts: {error}", "@failedToGetLocation": { "description": "Fehlermeldung, wenn das Abrufen des Standorts fehlschlägt", @@ -2602,7 +1366,6 @@ } } }, - "sarTemplates": "SAR-Vorlagen", "manageSarTemplates": "SAR-Vorlagen verwalten", "addTemplate": "Vorlage hinzufügen", @@ -2625,8 +1388,6 @@ "templateDeleted": "Template deleted", "templatesImported": "{count, plural, =0{No templates imported} =1{Imported 1 template} other{Imported {count} templates}}", "templatesExported": "{count, plural, =1{Exported 1 template to clipboard} other{Exported {count} templates to clipboard}}", - "importFailed": "Import failed: {error}", - "exportFailed": "Export failed: {error}", "resetToDefaults": "Auf Standard zurücksetzen", "resetToDefaultsConfirmation": "Dadurch werden alle benutzerdefinierten Vorlagen gelöscht und die 4 Standardvorlagen wiederhergestellt. Fortfahren?", "reset": "Zurücksetzen", @@ -2634,8 +1395,6 @@ "noTemplates": "No templates available", "tapAddToCreate": "Tap + to create your first template", "ok": "OK", - "delete": "Löschen", - "permissionsSection": "Berechtigungen", "locationPermission": "Standortberechtigung", "checking": "Überprüfen...", @@ -2650,19 +1409,15 @@ "locationPermissionAlreadyGranted": "Die Standortberechtigung wurde bereits erteilt.", "sarNavyBlue": "SAR Navy Blau", "sarNavyBlueDescription": "Professionell/Einsatzmodus", - "selectRecipient": "Empfänger auswählen", "broadcastToAllNearby": "An alle in der Nähe senden", "searchRecipients": "Empfänger suchen...", "noContactsFound": "Keine Kontakte gefunden", "noRoomsFound": "Keine Räume gefunden", - "noContactsOrRoomsAvailable": "Keine Kontakte oder Räume verfügbar", "noRecipientsAvailable": "Keine Empfänger verfügbar", "noChannelsFound": "Keine Kanäle gefunden", - "messagesWillBeSentToPublicChannel": "Nachrichten werden an öffentlichen Kanal gesendet", "newMessage": "Neue Nachricht", "channel": "Kanal", - "samplePoliceLead": "Polizeiführer", "sampleDroneOperator": "Drohnenbediener", "sampleFirefighterAlpha": "Feuerwehrmann", @@ -2712,28 +1467,17 @@ "sampleBaseCommand": "Basis-Kommando", "sampleFieldCoordinator": "Feldkoordinator", "sampleMedicalTeam": "Medizinisches Team", - "mapDrawing": "Kartenzeichnung", - "drawingShared": "Kartenzeichnung", "lineDrawing": "Linie", "rectangleDrawing": "Rechteck", "navigateToDrawing": "Zur Zeichnung navigieren", "hideFromMap": "Von Karte ausblenden", "copyCoordinates": "Koordinaten kopieren", - "coordinatesCopiedToClipboard": "Koordinaten in Zwischenablage kopiert", - "manualCoordinates": "Manuelle Koordinaten", "enterCoordinatesManually": "Koordinaten manuell eingeben", "latitudeLabel": "Breitengrad", "longitudeLabel": "Längengrad", - "invalidLatitude": "Ungültiger Breitengrad (-90 bis 90)", - "invalidLongitude": "Ungültiger Längengrad (-180 bis 180)", "exampleCoordinates": "Beispiel: 46.0569, 14.5058", - - "drawingHidden": "Zeichnung von Karte ausgeblendet", - "alreadyShared": "{count} bereits geteilt", - "newDrawingsShared": "{count} neue Zeichnung(en) geteilt", - "drawingTools": "Zeichenwerkzeuge", "shareDrawing": "Zeichnung teilen", "shareWithAllNearbyDevices": "Mit allen Geräten in der Nähe teilen", "shareToRoom": "In Raum teilen", @@ -2744,23 +1488,17 @@ "shared": "Geteilt", "line": "Linie", "rectangle": "Rechteck", - "saveAsTemplate": "Als Vorlage speichern", "templateSaved": "Vorlage erfolgreich gespeichert", "templateAlreadyExists": "Vorlage mit diesem Emoji existiert bereits", - "updateAvailable": "Update Verfügbar", "currentVersion": "Aktuell", "latestVersion": "Neueste", "downloadUpdate": "Herunterladen", "updateLater": "Später", - "cadastralParcels": "Katasterparzellen", "forestRoads": "Waldwege", - "showCadastralParcels": "Katasterparzellen anzeigen", - "showForestRoads": "Waldwege anzeigen", "wmsOverlays": "WMS Überlagerungen", - "hikingTrails": "Wanderwege", "mainRoads": "Hauptstraßen", "houseNumbers": "Hausnummern", @@ -2771,9 +1509,7 @@ "placeNames": "Ortsnamen", "municipalityBorders": "Gemeindegrenzen", "topographicMap": "Topographische Karte 1:25000", - "recentMessages": "Aktuelle Nachrichten", - "addChannel": "Kanal hinzufügen", "channelName": "Kanalname", "channelNameHint": "z.B. Rettungsteam Alpha", @@ -2793,9 +1529,7 @@ "deleteChannelConfirmation": "Sind Sie sicher, dass Sie den Kanal \"{channelName}\" löschen möchten? Diese Aktion kann nicht rückgängig gemacht werden.", "channelDeletedSuccessfully": "Kanal erfolgreich gelöscht", "channelDeletionFailed": "Kanal konnte nicht gelöscht werden: {error}", - "allChannelSlotsInUse": "Alle Kanalplätze sind belegt (maximal 39 benutzerdefinierte Kanäle)", "createChannel": "Kanal erstellen", - "wizardBack": "Zurück", "wizardSkip": "Überspringen", "wizardNext": "Weiter", @@ -2807,10 +1541,6 @@ "wizardConnectingFeature1": "Nach MeshCore-Geräten in der Nähe suchen", "wizardConnectingFeature2": "Mit Ihrem Funkgerät über Bluetooth koppeln", "wizardConnectingFeature3": "Funktioniert vollständig offline - kein Internet erforderlich", - "wizardSimpleModeTitle": "Einfacher Modus", - "wizardSimpleModeDescription": "Neu im Mesh-Netzwerk? Aktivieren Sie den einfachen Modus für eine optimierte Benutzeroberfläche mit nur wesentlichen Funktionen.", - "wizardSimpleModeFeature1": "Anfängerfreundliche Benutzeroberfläche mit Kernfunktionen", - "wizardSimpleModeFeature2": "Jederzeit in den erweiterten Modus in den Einstellungen wechseln", "wizardChannelTitle": "Kanäle", "wizardChannelDescription": "Senden Sie Nachrichten an alle auf einem Kanal, perfekt für teamweite Ankündigungen und Koordination.", "wizardChannelFeature1": "Öffentlicher Kanal für allgemeine Teamkommunikation", @@ -2831,56 +1561,30 @@ "allTeamContacts": "Alle Team-Kontakte", "directMessagesInfo": "Direktnachrichten mit Bestätigungen. An {count} Teammitglieder gesendet.", "sarMarkerSentToContacts": "SAR-Marker an {count} Kontakte gesendet", - "noContactsAvailable": "Keine Team-Kontakte verfügbar" -, - + "noContactsAvailable": "Keine Team-Kontakte verfügbar", "reply": "Antworten", - "technicalDetails": "Technische Details", - "messageTechnicalDetails": "Technische Nachrichtendetails", - "linkQuality": "Verbindungsqualität", - "delivery": "Zustellung", - "status": "Status", - "expectedAckTag": "Erwartetes ACK-Tag", - "roundTrip": "Roundtrip", - "retryAttempt": "Wiederholungsversuch", - "floodFallback": "Flood-Fallback", - "identity": "Identität", - "messageId": "Nachrichten-ID", - "sender": "Absender", - "senderKey": "Absenderschlüssel", - "recipient": "Empfänger", - "recipientKey": "Empfängerschlüssel", - "voice": "Sprachnachricht", - "voiceId": "Sprach-ID", - "envelope": "Umschlag", - "sessionProgress": "Sitzungsfortschritt", - "complete": "Vollständig", - "rawDump": "Rohdaten", - "cannotRetryMissingRecipient": "Wiederholung nicht möglich: Empfängerinformationen fehlen", - "voiceUnavailable": "Sprachnachricht momentan nicht verfügbar", - "requestingVoice": "Sprachnachricht wird angefordert" -} \ No newline at end of file +} diff --git a/lib/l10n/app_el.arb b/lib/l10n/app_el.arb index 3a59ccc..40b8a57 100644 --- a/lib/l10n/app_el.arb +++ b/lib/l10n/app_el.arb @@ -1,104 +1,69 @@ { "@@locale": "el", - "appTitle": "MeshCore SAR", "@appTitle": { "description": "The application title" }, - "messages": "Messages", "@messages": { "description": "Messages tab label" }, - "contacts": "Contacts", "@contacts": { "description": "Contacts tab label" }, - "map": "Map", "@map": { "description": "Map tab label" }, - "settings": "Settings", "@settings": { "description": "Settings screen title" }, - "connect": "Connect", "@connect": { "description": "Connect button label" }, - "disconnect": "Disconnect", "@disconnect": { "description": "Disconnect button label" }, - - "scanningForDevices": "Scanning for devices...", - "@scanningForDevices": { - "description": "Text shown when scanning for BLE devices" - }, - "noDevicesFound": "No devices found", "@noDevicesFound": { "description": "Text shown when no BLE devices are found" }, - "scanAgain": "Scan Again", "@scanAgain": { "description": "Button to restart BLE scanning" }, - "tapToConnect": "Tap to connect", "@tapToConnect": { "description": "Subtitle text for device in scan list" }, - "deviceNotConnected": "Device not connected", "@deviceNotConnected": { "description": "Error message when device is not connected" }, - "locationPermissionDenied": "Location permission denied", "@locationPermissionDenied": { "description": "Error when location permission is denied" }, - "locationPermissionPermanentlyDenied": "Location permission permanently denied. Please enable in Settings.", "@locationPermissionPermanentlyDenied": { "description": "Error when location permission is permanently denied" }, - "locationPermissionRequired": "Location permission is required for GPS tracking and team coordination. You can enable it later in Settings.", "@locationPermissionRequired": { "description": "Message when location permission is needed" }, - "locationServicesDisabled": "Location services are disabled. Please enable them in Settings.", "@locationServicesDisabled": { "description": "Error when location services are disabled" }, - "failedToGetGpsLocation": "Failed to get GPS location", "@failedToGetGpsLocation": { "description": "Error when GPS location cannot be obtained" }, - - "advertisedAtLocation": "Advertised at {latitude}, {longitude}", - "@advertisedAtLocation": { - "description": "Success message showing advertised location", - "placeholders": { - "latitude": { - "type": "String" - }, - "longitude": { - "type": "String" - } - } - }, - "failedToAdvertise": "Failed to advertise: {error}", "@failedToAdvertise": { "description": "Error message for failed advertisement", @@ -108,355 +73,162 @@ } } }, - - "reconnecting": "Reconnecting... ({attempt}/{max})", - "@reconnecting": { - "description": "Text shown during reconnection attempts", - "placeholders": { - "attempt": { - "type": "int" - }, - "max": { - "type": "int" - } - } - }, - "cancelReconnection": "Cancel reconnection", "@cancelReconnection": { "description": "Tooltip for cancel reconnection button" }, - - "mapManagement": "Map Management", - "@mapManagement": { - "description": "Menu item for map management" - }, - "general": "General", "@general": { "description": "General settings section header" }, - "theme": "Theme", "@theme": { "description": "Theme setting label" }, - "chooseTheme": "Choose Theme", "@chooseTheme": { "description": "Theme selection dialog title" }, - "light": "Light", "@light": { "description": "Light theme option" }, - "dark": "Dark", "@dark": { "description": "Dark theme option" }, - "blueLightTheme": "Blue light theme", "@blueLightTheme": { "description": "Description for blue light theme" }, - "blueDarkTheme": "Blue dark theme", "@blueDarkTheme": { "description": "Description for blue dark theme" }, - "sarRed": "SAR Red", "@sarRed": { "description": "SAR Red theme option" }, - "alertEmergencyMode": "Alert/Emergency mode", "@alertEmergencyMode": { "description": "Description for SAR Red theme" }, - "sarGreen": "SAR Green", "@sarGreen": { "description": "SAR Green theme option" }, - "safeAllClearMode": "Safe/All Clear mode", "@safeAllClearMode": { "description": "Description for SAR Green theme" }, - "autoSystem": "Auto (System)", "@autoSystem": { "description": "Auto/System theme option" }, - "followSystemTheme": "Follow system theme", "@followSystemTheme": { "description": "Description for system theme" }, - "showRxTxIndicators": "Show RX/TX Indicators", "@showRxTxIndicators": { "description": "Setting to show RX/TX indicators" }, - "displayPacketActivity": "Display packet activity indicators in top bar", "@displayPacketActivity": { "description": "Description for RX/TX indicators setting" }, - - "simpleMode": "Simple Mode", - "@simpleMode": { - "description": "Setting to enable simple mode" - }, - - "simpleModeDescription": "Hide non-essential information in messages and contacts", - "@simpleModeDescription": { - "description": "Description for simple mode setting" - }, - "disableMap": "Disable Map", "@disableMap": { "description": "Setting to disable the map tab" }, - "disableMapDescription": "Hide the map tab to reduce battery usage", "@disableMapDescription": { "description": "Description for disable map setting" }, - "language": "Language", "@language": { "description": "Language setting label" }, - "chooseLanguage": "Choose Language", "@chooseLanguage": { "description": "Language selection dialog title" }, - - "english": "English", - "@english": { - "description": "English language option" - }, - - "slovenian": "Slovenian", - "@slovenian": { - "description": "Slovenian language option" - }, - - "croatian": "Croatian", - "@croatian": { - "description": "Croatian language option" - }, - - "german": "German", - "@german": { - "description": "German language option" - }, - - "spanish": "Spanish", - "@spanish": { - "description": "Spanish language option" - }, - - "french": "French", - "@french": { - "description": "French language option" - }, - - "italian": "Italian", - "@italian": { - "description": "Italian language option" - }, - - "locationBroadcasting": "Location Broadcasting", - "@locationBroadcasting": { - "description": "Location settings section header" - }, - - "autoLocationTracking": "Auto Location Tracking", - "@autoLocationTracking": { - "description": "Auto location tracking setting" - }, - - "automaticallyBroadcastPosition": "Automatically broadcast position updates", - "@automaticallyBroadcastPosition": { - "description": "Description for auto location tracking" - }, - - "configureTracking": "Configure Tracking", - "@configureTracking": { - "description": "Configure tracking button label" - }, - - "distanceAndTimeThresholds": "Distance and time thresholds", - "@distanceAndTimeThresholds": { - "description": "Description for tracking configuration" - }, - - "locationTrackingConfiguration": "Location Tracking Configuration", - "@locationTrackingConfiguration": { - "description": "Tracking configuration dialog title" - }, - - "configureWhenLocationBroadcasts": "Configure when location broadcasts are sent to the mesh network", - "@configureWhenLocationBroadcasts": { - "description": "Description for tracking configuration dialog" - }, - - "minimumDistance": "Minimum Distance", - "@minimumDistance": { - "description": "Minimum distance setting label" - }, - - "broadcastAfterMoving": "Broadcast only after moving {distance} meters", - "@broadcastAfterMoving": { - "description": "Description for minimum distance", - "placeholders": { - "distance": { - "type": "String" - } - } - }, - - "maximumDistance": "Maximum Distance", - "@maximumDistance": { - "description": "Maximum distance setting label" - }, - - "alwaysBroadcastAfterMoving": "Always broadcast after moving {distance} meters", - "@alwaysBroadcastAfterMoving": { - "description": "Description for maximum distance", - "placeholders": { - "distance": { - "type": "String" - } - } - }, - - "minimumTimeInterval": "Minimum Time Interval", - "@minimumTimeInterval": { - "description": "Minimum time interval setting label" - }, - - "alwaysBroadcastEvery": "Always broadcast every {duration}", - "@alwaysBroadcastEvery": { - "description": "Description for time interval", - "placeholders": { - "duration": { - "type": "String" - } - } - }, - "save": "Save", "@save": { "description": "Save button label" }, - "cancel": "Cancel", "@cancel": { "description": "Cancel button label" }, - "close": "Close", "@close": { "description": "Close button label" }, - "about": "About", "@about": { "description": "About section header" }, - "appVersion": "App Version", "@appVersion": { "description": "App version label" }, - "appName": "App Name", "@appName": { "description": "App name label" }, - "aboutMeshCoreSar": "About MeshCore SAR", "@aboutMeshCoreSar": { "description": "About dialog title" }, - "aboutDescription": "A Search & Rescue application designed for emergency response teams. Features include:\n\n• BLE mesh networking for device-to-device communication\n• Offline maps with multiple layer options\n• Real-time team member tracking\n• SAR tactical markers (found person, fire, staging)\n• Contact management and messaging\n• GPS tracking with compass heading\n• Map tile caching for offline use", "@aboutDescription": { "description": "About dialog description" }, - "technologiesUsed": "Technologies Used:", "@technologiesUsed": { "description": "Technologies used section title" }, - "technologiesList": "• Flutter for cross-platform development\n• BLE (Bluetooth Low Energy) for mesh networking\n• OpenStreetMap for mapping\n• Provider for state management\n• SharedPreferences for local storage", "@technologiesList": { "description": "List of technologies used" }, - "moreInfo": "More Info", "@moreInfo": { "description": "More info button label" }, - - "learnMoreAbout": "Learn more about MeshCore SAR", - "@learnMoreAbout": { - "description": "Learn more link description" - }, - - "developer": "Developer", - "@developer": { - "description": "Developer section header" - }, - "packageName": "Package Name", "@packageName": { "description": "Package name label" }, - "sampleData": "Sample Data", "@sampleData": { "description": "Sample data section header" }, - "sampleDataDescription": "Load or clear sample contacts, channel messages, and SAR markers for testing", "@sampleDataDescription": { "description": "Sample data section description" }, - "loadSampleData": "Load Sample Data", "@loadSampleData": { "description": "Load sample data button" }, - "clearAllData": "Clear All Data", "@clearAllData": { "description": "Clear all data button" }, - "clearAllDataConfirmTitle": "Clear All Data", "@clearAllDataConfirmTitle": { "description": "Clear data confirmation dialog title" }, - "clearAllDataConfirmMessage": "This will clear all contacts and SAR markers. Are you sure?", "@clearAllDataConfirmMessage": { "description": "Clear data confirmation message" }, - "clear": "Clear", "@clear": { "description": "Clear button label" }, - "loadedSampleData": "Loaded {teamCount} team members, {channelCount} channels, {sarCount} SAR markers, {messageCount} messages", "@loadedSampleData": { "description": "Success message after loading sample data", @@ -475,7 +247,6 @@ } } }, - "failedToLoadSampleData": "Failed to load sample data: {error}", "@failedToLoadSampleData": { "description": "Error message when sample data fails to load", @@ -485,17 +256,14 @@ } } }, - "allDataCleared": "All data cleared", "@allDataCleared": { "description": "Success message after clearing all data" }, - "failedToStartBackgroundTracking": "Failed to start background tracking. Check permissions and BLE connection.", "@failedToStartBackgroundTracking": { "description": "Error message when background tracking fails to start" }, - "locationBroadcast": "Location broadcast: {latitude}, {longitude}", "@locationBroadcast": { "description": "Success message for location broadcast", @@ -508,57 +276,42 @@ } } }, - "defaultPinInfo": "The default pin for devices without a screen is 123456. Trouble pairing? Forget the bluetooth device in system settings.", "@defaultPinInfo": { "description": "Information about default PIN for pairing" }, - "noMessagesYet": "No messages yet", "@noMessagesYet": { "description": "Empty state message when there are no messages" }, - "pullDownToSync": "Pull down to sync messages", "@pullDownToSync": { "description": "Instruction to pull down to refresh messages" }, - "deleteContact": "Delete Contact", "@deleteContact": { "description": "Delete contact action label" }, - "delete": "Delete", "@delete": { "description": "Delete button label" }, - "viewOnMap": "View on Map", "@viewOnMap": { "description": "Action to view contact location on map" }, - "refresh": "Refresh", "@refresh": { "description": "Refresh button label" }, - - "sendDirectMessage": "Send", - "@sendDirectMessage": { - "description": "Action to send direct message to contact" - }, - "resetPath": "Reset Path (Re-route)", "@resetPath": { "description": "Action to reset contact path for re-routing" }, - "publicKeyCopied": "Public key copied to clipboard", "@publicKeyCopied": { "description": "Success message when public key is copied" }, - "copiedToClipboard": "{label} copied to clipboard", "@copiedToClipboard": { "description": "Success message when a value is copied to clipboard", @@ -568,12 +321,10 @@ } } }, - "pleaseEnterPassword": "Please enter a password", "@pleaseEnterPassword": { "description": "Validation message for empty password field" }, - "failedToSyncContacts": "Failed to sync contacts: {error}", "@failedToSyncContacts": { "description": "Error message when contact sync fails", @@ -583,17 +334,14 @@ } } }, - "loggedInSuccessfully": "Logged in successfully! Waiting for room messages...", "@loggedInSuccessfully": { "description": "Success message after successful room login" }, - "loginFailed": "Login failed - incorrect password", "@loginFailed": { "description": "Error message when room login fails" }, - "loggingIn": "Logging in to {roomName}...", "@loggingIn": { "description": "Status message during room login process", @@ -603,7 +351,6 @@ } } }, - "failedToSendLogin": "Failed to send login: {error}", "@failedToSendLogin": { "description": "Error message when login command fails to send", @@ -613,355 +360,239 @@ } } }, - "lowLocationAccuracy": "Low Location Accuracy", "@lowLocationAccuracy": { "description": "Warning title for low GPS accuracy" }, - "continue_": "Continue", "@continue_": { "description": "Continue button label" }, - "sendSarMarker": "Send SAR marker", "@sendSarMarker": { "description": "Action to send SAR marker" }, - "deleteDrawing": "Delete Drawing", "@deleteDrawing": { "description": "Action to delete a map drawing" }, - "drawingTools": "Drawing Tools", "@drawingTools": { "description": "Drawing tools section or menu title" }, - "drawLine": "Draw Line", "@drawLine": { "description": "Map drawing mode: line" }, - "drawLineDesc": "Draw a freehand line on the map", "@drawLineDesc": { "description": "Description for line drawing mode" }, - "drawRectangle": "Draw Rectangle", "@drawRectangle": { "description": "Map drawing mode: rectangle" }, - "drawRectangleDesc": "Draw a rectangular area on the map", "@drawRectangleDesc": { "description": "Description for rectangle drawing mode" }, - "measureDistance": "Measure Distance", "@measureDistance": { "description": "Map drawing mode: measure distance" }, - "measureDistanceDesc": "Long press two points to measure", "@measureDistanceDesc": { "description": "Description for distance measurement mode" }, - "clearMeasurement": "Clear Measurement", "@clearMeasurement": { "description": "Tooltip to clear measurement" }, - "distanceLabel": "Distance: {distance}", "@distanceLabel": { "description": "Label showing measured distance", "placeholders": { - "distance": {"type": "String"} + "distance": { + "type": "String" + } } }, - "longPressForSecondPoint": "Long press for second point", "@longPressForSecondPoint": { "description": "Instruction when first measurement point is set" }, - "longPressToStartMeasurement": "Long press to set first point", "@longPressToStartMeasurement": { "description": "Instruction to start measurement" }, - "longPressToStartNewMeasurement": "Long press to start new measurement", "@longPressToStartNewMeasurement": { "description": "Instruction to restart measurement after completion" }, - "shareDrawings": "Share Drawings", "@shareDrawings": { "description": "Action to share drawings to network" }, - "clearAllDrawings": "Clear All Drawings", "@clearAllDrawings": { "description": "Action to clear all local drawings" }, - "completeLine": "Complete Line", "@completeLine": { "description": "Tooltip to complete drawing a line" }, - "broadcastDrawingsToTeam": "Broadcast {count} drawing{plural} to team", "@broadcastDrawingsToTeam": { "description": "Subtitle showing how many drawings will be broadcast", "placeholders": { - "count": {"type": "int"}, - "plural": {"type": "String"} + "count": { + "type": "int" + }, + "plural": { + "type": "String" + } } }, - "removeAllDrawings": "Remove all {count} drawing{plural}", "@removeAllDrawings": { "description": "Subtitle for remove all drawings action", "placeholders": { - "count": {"type": "int"}, - "plural": {"type": "String"} + "count": { + "type": "int" + }, + "plural": { + "type": "String" + } } }, - "deleteAllDrawingsConfirm": "Delete all {count} drawing{plural} from the map?", "@deleteAllDrawingsConfirm": { "description": "Confirmation dialog message for deleting all drawings", "placeholders": { - "count": {"type": "int"}, - "plural": {"type": "String"} + "count": { + "type": "int" + }, + "plural": { + "type": "String" + } } }, - "drawing": "Drawing", "@drawing": { "description": "Generic drawing label" }, - "shareDrawingsCount": "Share {count} Drawing{plural}", "@shareDrawingsCount": { "description": "Title for share drawings dialog", "placeholders": { - "count": {"type": "int"}, - "plural": {"type": "String"} + "count": { + "type": "int" + }, + "plural": { + "type": "String" + } } }, - - "sentDrawingsToRoom": "Sent {count} map drawing{plural} to {roomName}", - "@sentDrawingsToRoom": { - "description": "System message when drawings are sent to room", - "placeholders": { - "count": {"type": "int"}, - "plural": {"type": "String"}, - "roomName": {"type": "String"} - } - }, - - "sharedDrawingsToRoom": "Shared {success}/{total} drawing{plural} to {roomName}", - "@sharedDrawingsToRoom": { - "description": "Snackbar message showing drawings shared to room", - "placeholders": { - "success": {"type": "int"}, - "total": {"type": "int"}, - "plural": {"type": "String"}, - "roomName": {"type": "String"} - } - }, - "showReceivedDrawings": "Show Received Drawings", "@showReceivedDrawings": { "description": "Toggle to show/hide received drawings from other team members" }, - "showingAllDrawings": "Showing all drawings", "@showingAllDrawings": { "description": "Subtitle when received drawings are visible" }, - "showingOnlyYourDrawings": "Showing only your drawings", "@showingOnlyYourDrawings": { "description": "Subtitle when received drawings are hidden" }, - "showSarMarkers": "Show SAR Markers", "@showSarMarkers": { "description": "Toggle to show/hide SAR markers on map" }, - "showingSarMarkers": "Showing SAR markers", "@showingSarMarkers": { "description": "Subtitle when SAR markers are visible" }, - "hidingSarMarkers": "Hiding SAR markers", "@hidingSarMarkers": { "description": "Subtitle when SAR markers are hidden" }, - "clearAll": "Clear All", "@clearAll": { "description": "Clear all button label" }, - - "noLocalDrawings": "No local drawings to share", - "@noLocalDrawings": { - "description": "Message when there are no drawings to share" - }, - "publicChannel": "Public Channel", "@publicChannel": { "description": "Public channel option for sharing" }, - "broadcastToAll": "Broadcast to all nearby nodes (ephemeral)", "@broadcastToAll": { "description": "Description for public channel broadcast" }, - "storedPermanently": "Stored permanently in room", "@storedPermanently": { "description": "Description for room storage permanence" }, - - "drawingsSentToPublicChannel": "Sent {count} map drawing{plural} to Public Channel", - "@drawingsSentToPublicChannel": { - "description": "System message when drawings are sent to public channel", - "placeholders": { - "count": {"type": "int"}, - "plural": {"type": "String"} - } - }, - - "drawingsSharedToPublicChannel": "Shared {success}/{total} drawings to Public Channel", - "@drawingsSharedToPublicChannel": { - "description": "Snackbar message showing success count for drawings shared to public channel", - "placeholders": { - "success": {"type": "int"}, - "total": {"type": "int"} - } - }, - "notConnectedToDevice": "Not connected to device", "@notConnectedToDevice": { "description": "Error message when device is not connected for direct messaging" }, - - "directMessage": "Direct Message", - "@directMessage": { - "description": "Title for direct message sheet" - }, - - "directMessageSentTo": "Direct message sent to {contactName}", - "@directMessageSentTo": { - "description": "Success message after sending direct message", - "placeholders": { - "contactName": { - "type": "String" - } - } - }, - - "failedToSend": "Failed to send: {error}", - "@failedToSend": { - "description": "Error message when sending direct message fails", - "placeholders": { - "error": { - "type": "String" - } - } - }, - - "directMessageInfo": "This message will be sent directly to {contactName}. It will also appear in the main messages feed.", - "@directMessageInfo": { - "description": "Information about direct messaging behavior", - "placeholders": { - "contactName": { - "type": "String" - } - } - }, - "typeYourMessage": "Type your message...", "@typeYourMessage": { "description": "Placeholder text for message input field" }, - "quickLocationMarker": "Quick location marker", "@quickLocationMarker": { "description": "Subtitle for SAR marker sheet header" }, - "markerType": "Marker Type", "@markerType": { "description": "Label for marker type selection section" }, - "sendTo": "Send To", "@sendTo": { "description": "Label for destination selection section" }, - "noDestinationsAvailable": "No destinations available.", "@noDestinationsAvailable": { "description": "Warning when no rooms or channels exist" }, - "selectDestination": "Select destination...", "@selectDestination": { "description": "Placeholder for destination dropdown" }, - "ephemeralBroadcastInfo": "Ephemeral: Broadcast over-the-air only. Not stored - nodes must be online.", "@ephemeralBroadcastInfo": { "description": "Information about ephemeral channel broadcasts" }, - "persistentRoomInfo": "Persistent: Stored immutably in room. Synced automatically and preserved offline.", "@persistentRoomInfo": { "description": "Information about persistent room storage" }, - "location": "Location", "@location": { "description": "Label for location section" }, - - "myLocation": "My Location", - "@myLocation": { - "description": "Button label to insert current GPS location" - }, - "fromMap": "From Map", "@fromMap": { "description": "Badge showing location is from map tap" }, - "gettingLocation": "Getting location...", "@gettingLocation": { "description": "Loading message while fetching GPS location" }, - "locationError": "Location Error", "@locationError": { "description": "Title for location error messages" }, - "retry": "Retry", "@retry": { "description": "Retry button label" }, - "refreshLocation": "Refresh location", "@refreshLocation": { "description": "Tooltip for refresh location button" }, - "accuracyMeters": "Accuracy: ±{accuracy}m", "@accuracyMeters": { "description": "Display of GPS accuracy in meters", @@ -971,17 +602,14 @@ } } }, - "notesOptional": "Notes (optional)", "@notesOptional": { "description": "Label for optional notes field" }, - "addAdditionalInformation": "Add additional information...", "@addAdditionalInformation": { "description": "Placeholder for notes field" }, - "lowAccuracyWarning": "Location accuracy is ±{accuracy}m. This may not be accurate enough for SAR operations.\n\nContinue anyway?", "@lowAccuracyWarning": { "description": "Warning dialog content for low GPS accuracy", @@ -991,37 +619,30 @@ } } }, - "loginToRoom": "Login to Room", "@loginToRoom": { "description": "Title for room login dialog" }, - "enterPasswordInfo": "Enter the password to access this room. The password will be saved for future use.", "@enterPasswordInfo": { "description": "Information about room password" }, - "password": "Password", "@password": { "description": "Password field label" }, - "enterRoomPassword": "Enter room password", "@enterRoomPassword": { "description": "Password field hint" }, - "loggingInDots": "Logging in...", "@loggingInDots": { "description": "Button text while logging in" }, - "login": "Login", "@login": { "description": "Login button label" }, - "failedToAddRoom": "Failed to add room to device: {error}\n\nThe room may not have advertised yet.\nTry waiting for the room to broadcast.", "@failedToAddRoom": { "description": "Error message when adding room fails", @@ -1031,57 +652,26 @@ } } }, - "direct": "Direct", "@direct": { "description": "Direct routing indicator" }, - "flood": "Flood", "@flood": { "description": "Flood routing indicator" }, - - "admin": "Admin", - "@admin": { - "description": "Admin badge label" - }, - "loggedIn": "Logged In", "@loggedIn": { "description": "Logged in status badge" }, - "noGpsData": "No GPS data", "@noGpsData": { "description": "Message when GPS data is not available" }, - "distance": "Distance", "@distance": { "description": "Distance label" }, - - "pingingDirect": "Pinging {name} (direct via path)...", - "@pingingDirect": { - "description": "Status message for direct ping", - "placeholders": { - "name": { - "type": "String" - } - } - }, - - "pingingFlood": "Pinging {name} (flooding - no path)...", - "@pingingFlood": { - "description": "Status message for flood ping", - "placeholders": { - "name": { - "type": "String" - } - } - }, - "directPingTimeout": "Direct ping timeout - retrying {name} with flooding...", "@directPingTimeout": { "description": "Warning when direct ping times out", @@ -1091,25 +681,6 @@ } } }, - - "pingSuccessful": "Ping successful to {name}{fallback}", - "@pingSuccessful": { - "description": "Success message for ping", - "placeholders": { - "name": { - "type": "String" - }, - "fallback": { - "type": "String" - } - } - }, - - "viaFloodingFallback": " (via flooding fallback)", - "@viaFloodingFallback": { - "description": "Suffix for ping success with fallback" - }, - "pingFailed": "Ping failed to {name} - no response received", "@pingFailed": { "description": "Error message when ping fails", @@ -1119,7 +690,6 @@ } } }, - "deleteContactConfirmation": "Are you sure you want to delete \"{name}\"?\n\nThis will remove the contact from both the app and the companion radio device.", "@deleteContactConfirmation": { "description": "Confirmation message for deleting contact", @@ -1129,27 +699,6 @@ } } }, - - "removingContact": "Removing {name}...", - "@removingContact": { - "description": "Status message while removing contact", - "placeholders": { - "name": { - "type": "String" - } - } - }, - - "contactRemoved": "Contact \"{name}\" removed", - "@contactRemoved": { - "description": "Success message after removing contact", - "placeholders": { - "name": { - "type": "String" - } - } - }, - "failedToRemoveContact": "Failed to remove contact: {error}", "@failedToRemoveContact": { "description": "Error message when contact removal fails", @@ -1159,117 +708,86 @@ } } }, - "type": "Type", "@type": { "description": "Contact type label" }, - "publicKey": "Public Key", "@publicKey": { "description": "Public key label" }, - "lastSeen": "Last Seen", "@lastSeen": { "description": "Last seen label" }, - "roomStatus": "Room Status", "@roomStatus": { "description": "Room status section header" }, - "loginStatus": "Login Status", "@loginStatus": { "description": "Login status label" }, - "notLoggedIn": "Not Logged In", "@notLoggedIn": { "description": "Not logged in status" }, - "adminAccess": "Admin Access", "@adminAccess": { "description": "Admin access label" }, - "yes": "Yes", "@yes": { "description": "Yes answer" }, - "no": "No", "@no": { "description": "No answer" }, - "permissions": "Permissions", "@permissions": { "description": "Permissions label" }, - "passwordSaved": "Password Saved", "@passwordSaved": { "description": "Password saved label" }, - "locationColon": "Location:", "@locationColon": { "description": "Location section header" }, - "telemetry": "Telemetry", "@telemetry": { "description": "Telemetry section header" }, - - "requestingTelemetry": "Requesting telemetry from {name}...", - "@requestingTelemetry": { - "description": "Status message while requesting telemetry", - "placeholders": { - "name": { - "type": "String" - } - } - }, - "voltage": "Voltage", "@voltage": { "description": "Voltage label" }, - "battery": "Battery", "@battery": { "description": "Battery label" }, - "temperature": "Temperature", "@temperature": { "description": "Temperature label" }, - "humidity": "Humidity", "@humidity": { "description": "Humidity label" }, - "pressure": "Pressure", "@pressure": { "description": "Pressure label" }, - "gpsTelemetry": "GPS (Telemetry)", "@gpsTelemetry": { "description": "GPS from telemetry label" }, - "updated": "Updated", "@updated": { "description": "Updated timestamp label" }, - "pathResetInfo": "Path reset for {name}. Next message will find a new route.", "@pathResetInfo": { "description": "Info message after path reset", @@ -1279,102 +797,74 @@ } } }, - "reLoginToRoom": "Re-Login to Room", "@reLoginToRoom": { "description": "Button to re-login to room" }, - "heading": "Heading", "@heading": { "description": "Compass heading label" }, - "elevation": "Elevation", "@elevation": { "description": "Elevation/altitude label" }, - "accuracy": "Accuracy", "@accuracy": { "description": "GPS accuracy label" }, - - "distance": "Distance", - "@distance": { - "description": "Distance label in compass" - }, - "bearing": "Bearing", "@bearing": { "description": "Bearing label in compass" }, - "direction": "Direction", "@direction": { "description": "Direction label in compass" }, - "filterMarkers": "Filter Markers", "@filterMarkers": { "description": "Title for filter markers dialog" }, - "filterMarkersTooltip": "Filter markers", "@filterMarkersTooltip": { "description": "Tooltip for filter button" }, - "contactsFilter": "Contacts", "@contactsFilter": { "description": "Filter option for contacts" }, - "repeatersFilter": "Repeaters", "@repeatersFilter": { "description": "Filter option for repeaters" }, - "sarMarkers": "SAR Markers", "@sarMarkers": { "description": "SAR markers section header" }, - "foundPerson": "Found Person", "@foundPerson": { "description": "Found person SAR marker type" }, - "fire": "Fire", "@fire": { "description": "Fire SAR marker type" }, - "stagingArea": "Staging Area", "@stagingArea": { "description": "Staging area SAR marker type" }, - "showAll": "Show All", "@showAll": { "description": "Button to show all filters" }, - - "nearbyContacts": "Nearby Contacts", - "@nearbyContacts": { - "description": "Title for nearby contacts list in compass" - }, - "locationUnavailable": "Location unavailable", "@locationUnavailable": { "description": "Message when GPS location is unavailable" }, - "ahead": "ahead", "@ahead": { "description": "Relative bearing direction - ahead" }, - "degreesRight": "{degrees}° right", "@degreesRight": { "description": "Relative bearing direction - right", @@ -1384,7 +874,6 @@ } } }, - "degreesLeft": "{degrees}° left", "@degreesLeft": { "description": "Relative bearing direction - left", @@ -1394,7 +883,6 @@ } } }, - "latLonFormat": "Lat: {latitude} Lon: {longitude}", "@latLonFormat": { "description": "Latitude and longitude display format", @@ -1407,527 +895,118 @@ } } }, - "noContactsYet": "No contacts yet", "@noContactsYet": { "description": "Empty state message when there are no contacts" }, - "connectToDeviceToLoadContacts": "Connect to a device to load contacts", "@connectToDeviceToLoadContacts": { "description": "Instruction to connect device to load contacts" }, - "teamMembers": "Team Members", "@teamMembers": { "description": "Section header for team members (chat contacts)" }, - "repeaters": "Repeaters", "@repeaters": { "description": "Section header for repeater nodes" }, - "rooms": "Rooms", "@rooms": { "description": "Section header for rooms" }, - "channels": "Channels", "@channels": { "description": "Section header for broadcast channels" }, - - "cacheStatistics": "Cache Statistics", - "@cacheStatistics": { - "description": "Title for cache statistics section" - }, - - "totalTiles": "Total Tiles", - "@totalTiles": { - "description": "Label for total number of cached tiles" - }, - - "cacheSize": "Cache Size", - "@cacheSize": { - "description": "Label for cache size in MB" - }, - - "storeName": "Store Name", - "@storeName": { - "description": "Label for cache store name" - }, - - "noCacheStatistics": "No cache statistics available", - "@noCacheStatistics": { - "description": "Message when cache statistics are unavailable" - }, - - "downloadRegion": "Download Region", - "@downloadRegion": { - "description": "Title for download region section" - }, - - "mapLayer": "Map Layer", - "@mapLayer": { - "description": "Label for map layer selection" - }, - - "regionBounds": "Region Bounds", - "@regionBounds": { - "description": "Title for region bounds input section" - }, - - "north": "North", - "@north": { - "description": "Label for north coordinate" - }, - - "south": "South", - "@south": { - "description": "Label for south coordinate" - }, - - "east": "East", - "@east": { - "description": "Label for east coordinate" - }, - - "west": "West", - "@west": { - "description": "Label for west coordinate" - }, - - "zoomLevels": "Zoom Levels", - "@zoomLevels": { - "description": "Title for zoom levels section" - }, - - "minZoom": "Min: {zoom}", - "@minZoom": { - "description": "Label for minimum zoom level", - "placeholders": { - "zoom": { - "type": "int" - } - } - }, - - "maxZoom": "Max: {zoom}", - "@maxZoom": { - "description": "Label for maximum zoom level", - "placeholders": { - "zoom": { - "type": "int" - } - } - }, - - "downloadingDots": "Downloading...", - "@downloadingDots": { - "description": "Status message during download" - }, - - "cancelDownload": "Cancel Download", - "@cancelDownload": { - "description": "Button to cancel download" - }, - - "downloadRegionButton": "Download Region", - "@downloadRegionButton": { - "description": "Button to start region download" - }, - - "downloadNote": "Note: Large regions or high zoom levels may take significant time and storage.", - "@downloadNote": { - "description": "Warning about download size and time" - }, - - "cacheManagement": "Cache Management", - "@cacheManagement": { - "description": "Title for cache management section" - }, - - "clearAllMaps": "Clear All Maps", - "@clearAllMaps": { - "description": "Button to clear all cached maps" - }, - - "clearMapsConfirmTitle": "Clear All Maps", - "@clearMapsConfirmTitle": { - "description": "Title for clear maps confirmation dialog" - }, - - "clearMapsConfirmMessage": "Are you sure you want to delete all downloaded maps? This action cannot be undone.", - "@clearMapsConfirmMessage": { - "description": "Confirmation message for clearing maps" - }, - - "mapDownloadCompleted": "Map download completed!", - "@mapDownloadCompleted": { - "description": "Success message after map download" - }, - - "cacheClearedSuccessfully": "Cache cleared successfully!", - "@cacheClearedSuccessfully": { - "description": "Success message after clearing cache" - }, - - "downloadCancelled": "Download cancelled", - "@downloadCancelled": { - "description": "Message when download is cancelled" - }, - - "startingDownload": "Starting download...", - "@startingDownload": { - "description": "Initial status when download begins" - }, - - "downloadingMapTiles": "Downloading map tiles...", - "@downloadingMapTiles": { - "description": "Status during tile download" - }, - - "downloadCompletedSuccessfully": "Download completed successfully!", - "@downloadCompletedSuccessfully": { - "description": "Status after successful download" - }, - - "cancellingDownload": "Cancelling download...", - "@cancellingDownload": { - "description": "Status while cancelling download" - }, - - "errorLoadingStats": "Error loading stats: {error}", - "@errorLoadingStats": { - "description": "Error message when loading cache stats fails", - "placeholders": { - "error": { - "type": "String" - } - } - }, - - "downloadFailed": "Download failed: {error}", - "@downloadFailed": { - "description": "Error message when download fails", - "placeholders": { - "error": { - "type": "String" - } - } - }, - - "cancelFailed": "Cancel failed: {error}", - "@cancelFailed": { - "description": "Error message when cancel fails", - "placeholders": { - "error": { - "type": "String" - } - } - }, - - "clearCacheFailed": "Clear cache failed: {error}", - "@clearCacheFailed": { - "description": "Error message when clearing cache fails", - "placeholders": { - "error": { - "type": "String" - } - } - }, - - "minZoomError": "Min zoom: {error}", - "@minZoomError": { - "description": "Validation error for minimum zoom", - "placeholders": { - "error": { - "type": "String" - } - } - }, - - "maxZoomError": "Max zoom: {error}", - "@maxZoomError": { - "description": "Validation error for maximum zoom", - "placeholders": { - "error": { - "type": "String" - } - } - }, - - "minZoomGreaterThanMax": "Minimum zoom must be less than or equal to maximum zoom", - "@minZoomGreaterThanMax": { - "description": "Validation error when min zoom > max zoom" - }, - "selectMapLayer": "Select Map Layer", "@selectMapLayer": { "description": "Title for map layer selection dialog" }, - - "mapOptions": "Map Options", - "@mapOptions": { - "description": "Title for map options dialog" - }, - - "showLegend": "Show Legend", - "@showLegend": { - "description": "Toggle for showing map legend" - }, - - "displayMarkerTypeCounts": "Display marker type counts", - "@displayMarkerTypeCounts": { - "description": "Description for show legend toggle" - }, - - "rotateMapWithHeading": "Rotate Map with Heading", - "@rotateMapWithHeading": { - "description": "Toggle for rotating map with compass heading" - }, - - "mapFollowsDirection": "Map follows your direction when moving", - "@mapFollowsDirection": { - "description": "Description for rotate map toggle" - }, - - "resetMapRotation": "Reset Rotation", - "@resetMapRotation": { - "description": "Button to reset map rotation to north" - }, - - "resetMapRotationTooltip": "Reset map to north", - "@resetMapRotationTooltip": { - "description": "Tooltip for reset rotation button" - }, - - "showMapDebugInfo": "Show Map Debug Info", - "@showMapDebugInfo": { - "description": "Toggle for showing map debug information" - }, - - "displayZoomLevelBounds": "Display zoom level and bounds", - "@displayZoomLevelBounds": { - "description": "Description for debug info toggle" - }, - - "fullscreenMode": "Fullscreen Mode", - "@fullscreenMode": { - "description": "Toggle for fullscreen map mode" - }, - - "hideUiFullMapView": "Hide all UI controls for full map view", - "@hideUiFullMapView": { - "description": "Description for fullscreen mode toggle" - }, - "openStreetMap": "OpenStreetMap", "@openStreetMap": { "description": "OpenStreetMap layer name" }, - "openTopoMap": "OpenTopoMap", "@openTopoMap": { "description": "OpenTopoMap layer name" }, - "esriSatellite": "ESRI Satellite", "@esriSatellite": { "description": "ESRI Satellite imagery layer name" }, - "googleHybrid": "Google Hybrid", "@googleHybrid": { "description": "Google Hybrid layer name (satellite + labels)" }, - "googleRoadmap": "Google Roadmap", "@googleRoadmap": { "description": "Google Roadmap layer name (street map)" }, - "googleTerrain": "Google Terrain", "@googleTerrain": { "description": "Google Terrain layer name (topographic)" }, - - "downloadVisibleArea": "Download visible area", - "@downloadVisibleArea": { - "description": "Tooltip for download visible area button" - }, - - "initializingMap": "Initializing map...", - "@initializingMap": { - "description": "Loading message for map initialization" - }, - "dragToPosition": "Drag to Position", "@dragToPosition": { "description": "Label when dragging a pin on map" }, - "createSarMarker": "Create SAR Marker", "@createSarMarker": { "description": "Label for creating SAR marker from pin" }, - "compass": "Compass", "@compass": { "description": "Compass title in detailed compass dialog" }, - "navigationAndContacts": "Navigation & Contacts", "@navigationAndContacts": { "description": "Subtitle for compass dialog" }, - "sarAlert": "SAR ALERT", "@sarAlert": { "description": "Label for SAR alert badge on messages" }, - - "messageSentToPublicChannel": "Message sent to public channel", - "@messageSentToPublicChannel": { - "description": "Success message when message is sent to public channel" - }, - - "pleaseSelectRoomToSendSar": "Please select a room to send SAR marker", - "@pleaseSelectRoomToSendSar": { - "description": "Error when no room is selected for SAR marker" - }, - - "failedToSendSarMarker": "Failed to send SAR marker: {error}", - "@failedToSendSarMarker": { - "description": "Error message when SAR marker fails to send", - "placeholders": { - "error": { - "type": "String" - } - } - }, - - "sarMarkerSentTo": "SAR marker sent to {roomName}", - "@sarMarkerSentTo": { - "description": "Success message when SAR marker is sent to room", - "placeholders": { - "roomName": { - "type": "String" - } - } - }, - - "notConnectedCannotSync": "Not connected - cannot sync messages", - "@notConnectedCannotSync": { - "description": "Warning when trying to sync messages while not connected" - }, - - "syncedMessageCount": "Synced {count} message(s)", - "@syncedMessageCount": { - "description": "Success message showing number of synced messages", - "placeholders": { - "count": { - "type": "int" - } - } - }, - - "noNewMessages": "No new messages", - "@noNewMessages": { - "description": "Info message when no new messages to sync" - }, - - "syncFailed": "Sync failed: {error}", - "@syncFailed": { - "description": "Error message when sync fails", - "placeholders": { - "error": { - "type": "String" - } - } - }, - - "failedToResendMessage": "Failed to resend message", - "@failedToResendMessage": { - "description": "Error when message retry fails" - }, - - "retryingMessage": "Retrying message...", - "@retryingMessage": { - "description": "Info message when retrying a failed message" - }, - - "retryFailed": "Retry failed: {error}", - "@retryFailed": { - "description": "Error message when retry fails", - "placeholders": { - "error": { - "type": "String" - } - } - }, - "textCopiedToClipboard": "Text copied to clipboard", "@textCopiedToClipboard": { "description": "Success message when text is copied" }, - "cannotReplySenderMissing": "Cannot reply: sender information missing", "@cannotReplySenderMissing": { "description": "Error when sender info is missing for reply" }, - "cannotReplyContactNotFound": "Cannot reply: contact not found", "@cannotReplyContactNotFound": { "description": "Error when contact not found for reply" }, - - "messageDeleted": "Message deleted", - "@messageDeleted": { - "description": "Info message when message is deleted" - }, - "copyText": "Copy text", "@copyText": { "description": "Option to copy message text to clipboard" }, - - "textCopiedToClipboard": "Text copied to clipboard", - "@textCopiedToClipboard": { - "description": "Success message when text is copied" - }, - "saveAsTemplate": "Save as Template", "@saveAsTemplate": { "description": "Option to save SAR message as a reusable template" }, - "templateSaved": "Template saved successfully", "@templateSaved": { "description": "Success message when SAR template is saved" }, - "templateAlreadyExists": "Template with this emoji already exists", "@templateAlreadyExists": { "description": "Error message when trying to save duplicate template" }, - "deleteMessage": "Delete message", "@deleteMessage": { "description": "Dialog title for deleting a message" }, - "deleteMessageConfirmation": "Are you sure you want to delete this message?", "@deleteMessageConfirmation": { "description": "Confirmation text for message deletion" }, - "shareLocation": "Share location", "@shareLocation": { "description": "Option to share SAR marker location" }, - "shareLocationText": "{markerInfo}\n\nCoordinates: {lat}, {lon}\n\nGoogle Maps: {url}", "@shareLocationText": { "description": "Formatted text for sharing SAR marker location", @@ -1946,27 +1025,14 @@ } } }, - "sarLocationShare": "SAR Location", "@sarLocationShare": { "description": "Subject line when sharing SAR marker location" }, - - "locationShared": "Location shared", - "@locationShared": { - "description": "Success message when location is shared" - }, - - "refreshedContacts": "Refreshed contacts", - "@refreshedContacts": { - "description": "Success message when contacts are refreshed" - }, - "justNow": "Just now", "@justNow": { "description": "Time indicator for very recent activity" }, - "minutesAgo": "{minutes}m ago", "@minutesAgo": { "description": "Time indicator for minutes ago", @@ -1976,7 +1042,6 @@ } } }, - "hoursAgo": "{hours}h ago", "@hoursAgo": { "description": "Time indicator for hours ago", @@ -1986,7 +1051,6 @@ } } }, - "daysAgo": "{days}d ago", "@daysAgo": { "description": "Time indicator for days ago", @@ -1996,7 +1060,6 @@ } } }, - "secondsAgo": "{seconds}s ago", "@secondsAgo": { "description": "Time indicator for seconds ago", @@ -2006,22 +1069,18 @@ } } }, - "sending": "Sending...", "@sending": { "description": "Delivery status: sending" }, - "sent": "Sent", "@sent": { "description": "Delivery status: sent" }, - "delivered": "Delivered", "@delivered": { "description": "Delivery status: delivered" }, - "deliveredWithTime": "Delivered ({time}ms)", "@deliveredWithTime": { "description": "Delivery status with round-trip time", @@ -2031,17 +1090,14 @@ } } }, - "failed": "Failed", "@failed": { "description": "Delivery status: failed" }, - "broadcast": "Broadcast", "@broadcast": { "description": "Delivery status for channel messages (no echoes yet)" }, - "deliveredToContacts": "Delivered to {delivered}/{total} contacts", "@deliveredToContacts": { "description": "Grouped message delivery count", @@ -2054,225 +1110,87 @@ } } }, - "allDelivered": "All delivered", "@allDelivered": { "description": "Status when all recipients received the message" }, - "recipientDetails": "Recipient Details", "@recipientDetails": { "description": "Header for expandable recipient list" }, - "pending": "Pending", "@pending": { "description": "Delivery status: pending/waiting" }, - "sarMarkerFoundPerson": "Found Person", "@sarMarkerFoundPerson": { "description": "SAR marker type: found person" }, - "sarMarkerFire": "Fire Location", "@sarMarkerFire": { "description": "SAR marker type: fire" }, - "sarMarkerStagingArea": "Staging Area", "@sarMarkerStagingArea": { "description": "SAR marker type: staging area" }, - "sarMarkerObject": "Object Found", "@sarMarkerObject": { "description": "SAR marker type: object" }, - "from": "From", "@from": { "description": "Sender label in notifications" }, - "coordinates": "Coordinates", "@coordinates": { "description": "Coordinates label" }, - "tapToViewOnMap": "Tap to view on map", "@tapToViewOnMap": { "description": "Notification action text" }, - "radioSettings": "Radio Settings", "@radioSettings": { "description": "Section title for radio settings" }, - "frequencyMHz": "Frequency (MHz)", "@frequencyMHz": { "description": "Label for radio frequency field" }, - "frequencyExample": "e.g., 869.618", "@frequencyExample": { "description": "Helper text example for frequency" }, - "bandwidth": "Bandwidth", "@bandwidth": { "description": "Label for bandwidth dropdown" }, - "spreadingFactor": "Spreading Factor", "@spreadingFactor": { "description": "Label for spreading factor dropdown" }, - "codingRate": "Coding Rate", "@codingRate": { "description": "Label for coding rate dropdown" }, - "txPowerDbm": "TX Power (dBm)", "@txPowerDbm": { "description": "Label for TX power field" }, - "maxPowerDbm": "Max: {power} dBm", "@maxPowerDbm": { "description": "Helper text showing maximum TX power", "placeholders": { - "power": { "type": "int" } + "power": { + "type": "int" + } } }, - "you": "You", "@you": { "description": "Label for the current user in message bubbles" }, - - "offlineVectorMaps": "Offline Vector Maps", - "@offlineVectorMaps": { - "description": "Title for offline vector maps section" - }, - - "offlineVectorMapsDescription": "Import and manage offline vector map tiles (MBTiles format) for use without internet connection", - "@offlineVectorMapsDescription": { - "description": "Description for offline vector maps section" - }, - - "importMbtiles": "Import MBTiles File", - "@importMbtiles": { - "description": "Button to import MBTiles file" - }, - - "importMbtilesNote": "Supports MBTiles files with vector tiles (PBF/MVT format). Geofabrik extracts work great!", - "@importMbtilesNote": { - "description": "Note about supported MBTiles file types" - }, - - "noMbtilesFiles": "No offline vector maps found", - "@noMbtilesFiles": { - "description": "Message when no MBTiles files are available" - }, - - "mbtilesImportedSuccessfully": "MBTiles file imported successfully", - "@mbtilesImportedSuccessfully": { - "description": "Success message after importing MBTiles file" - }, - - "failedToImportMbtiles": "Failed to import MBTiles file", - "@failedToImportMbtiles": { - "description": "Error message when MBTiles import fails" - }, - - "deleteMbtilesConfirmTitle": "Delete Offline Map", - "@deleteMbtilesConfirmTitle": { - "description": "Title for delete MBTiles confirmation dialog" - }, - - "deleteMbtilesConfirmMessage": "Are you sure you want to delete \"{name}\"? This will permanently remove the offline map.", - "@deleteMbtilesConfirmMessage": { - "description": "Confirmation message for deleting MBTiles file", - "placeholders": { - "name": { - "type": "String" - } - } - }, - - "mbtilesDeletedSuccessfully": "Offline map deleted successfully", - "@mbtilesDeletedSuccessfully": { - "description": "Success message after deleting MBTiles file" - }, - - "failedToDeleteMbtiles": "Failed to delete offline map", - "@failedToDeleteMbtiles": { - "description": "Error message when MBTiles deletion fails" - }, - - "importExportCachedTiles": "Import/Export Cached Tiles", - "@importExportCachedTiles": { - "description": "Title for import/export section" - }, - - "importExportDescription": "Backup, share, and restore downloaded map tiles between devices", - "@importExportDescription": { - "description": "Description for import/export functionality" - }, - - "exportTilesToFile": "Export Tiles to File", - "@exportTilesToFile": { - "description": "Button to export tiles to archive file" - }, - - "importTilesFromFile": "Import Tiles from File", - "@importTilesFromFile": { - "description": "Button to import tiles from archive file" - }, - - "selectExportLocation": "Select Export Location", - "@selectExportLocation": { - "description": "Title for export file picker" - }, - - "selectImportFile": "Select Tile Archive", - "@selectImportFile": { - "description": "Title for import file picker" - }, - - "exportingTiles": "Exporting tiles...", - "@exportingTiles": { - "description": "Status message during export" - }, - - "importingTiles": "Importing tiles...", - "@importingTiles": { - "description": "Status message during import" - }, - - "exportSuccess": "Exported {count} tiles successfully", - "@exportSuccess": { - "description": "Success message after export", - "placeholders": { - "count": { - "type": "int" - } - } - }, - - "importSuccess": "Imported {count} stores successfully", - "@importSuccess": { - "description": "Success message after import", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "exportFailed": "Export failed: {error}", "@exportFailed": { "description": "Error message when export fails", @@ -2282,7 +1200,6 @@ } } }, - "importFailed": "Import failed: {error}", "@importFailed": { "description": "Error message when import fails", @@ -2292,217 +1209,74 @@ } } }, - - "exportNote": "Creates a compressed archive (.fmtc) file that can be shared and imported on other devices.", - "@exportNote": { - "description": "Note about export functionality" - }, - - "importNote": "Imports map tiles from a previously exported archive file. Tiles will be merged with existing cache.", - "@importNote": { - "description": "Note about import functionality" - }, - - "noTilesToExport": "No tiles available to export", - "@noTilesToExport": { - "description": "Message when cache is empty" - }, - - "archiveContainsStores": "Archive contains {count} stores", - "@archiveContainsStores": { - "description": "Information about archive contents", - "placeholders": { - "count": { - "type": "int" - } - } - }, - - "vectorTiles": "Vector Tiles", - "@vectorTiles": { - "description": "Label for vector tile type" - }, - - "schema": "Schema", - "@schema": { - "description": "Label for vector tile schema" - }, - "unknown": "Unknown", "@unknown": { "description": "Unknown value label" }, - - "bounds": "Bounds", - "@bounds": { - "description": "Label for geographic bounds" - }, - "onlineLayers": "Online Layers", "@onlineLayers": { "description": "Section header for online map layers" }, - - "offlineLayers": "Offline Layers", - "@offlineLayers": { - "description": "Section header for offline map layers (MBTiles)" - }, - "locationTrail": "Location Trail", "@locationTrail": { "description": "Location trail title" }, - "showTrailOnMap": "Show Trail on Map", "@showTrailOnMap": { "description": "Toggle to show/hide trail on map" }, - "trailVisible": "Trail is visible on the map", "@trailVisible": { "description": "Trail visibility status - visible" }, - "trailHiddenRecording": "Trail is hidden (still recording)", "@trailHiddenRecording": { "description": "Trail visibility status - hidden but recording" }, - - "distance": "Distance", - "@distance": { - "description": "Distance label" - }, - "duration": "Duration", "@duration": { "description": "Duration label" }, - "points": "Points", "@points": { "description": "Trail points count label" }, - "clearTrail": "Clear Trail", "@clearTrail": { "description": "Button to clear location trail" }, - "clearTrailQuestion": "Clear Trail?", "@clearTrailQuestion": { "description": "Confirmation dialog title" }, - "clearTrailConfirmation": "Are you sure you want to clear the current location trail? This action cannot be undone.", "@clearTrailConfirmation": { "description": "Confirmation dialog message" }, - "noTrailRecorded": "No trail recorded yet", "@noTrailRecorded": { "description": "Message when no trail exists" }, - "startTrackingToRecord": "Start location tracking to record your trail", "@startTrackingToRecord": { "description": "Instructions to start trail recording" }, - "trailControls": "Trail Controls", "@trailControls": { "description": "Trail controls tooltip" }, - - "exportTrailToGpx": "Export Trail to GPX", - "@exportTrailToGpx": { - "description": "Button label to export trail to GPX file" - }, - - "importTrailFromGpx": "Import Trail from GPX", - "@importTrailFromGpx": { - "description": "Button label to import trail from GPX file" - }, - - "trailExportedSuccessfully": "Trail exported successfully!", - "@trailExportedSuccessfully": { - "description": "Success message when trail is exported" - }, - - "failedToExportTrail": "Failed to export trail", - "@failedToExportTrail": { - "description": "Error message when trail export fails" - }, - - "failedToImportTrail": "Failed to import trail: {error}", - "@failedToImportTrail": { - "description": "Error message when trail import fails", - "placeholders": { - "error": { - "type": "String" - } - } - }, - - "importTrail": "Import Trail", - "@importTrail": { - "description": "Import trail dialog title" - }, - - "importTrailQuestion": "Import trail with {pointCount} points?\n\nYou can replace your current trail or view it alongside.", - "@importTrailQuestion": { - "description": "Import trail confirmation dialog content", - "placeholders": { - "pointCount": { - "type": "int" - } - } - }, - - "viewAlongside": "View Alongside", - "@viewAlongside": { - "description": "Button to import trail alongside current trail" - }, - - "replaceCurrent": "Replace Current", - "@replaceCurrent": { - "description": "Button to replace current trail with imported trail" - }, - - "trailImported": "Trail imported! ({pointCount} points)", - "@trailImported": { - "description": "Success message when trail is imported", - "placeholders": { - "pointCount": { - "type": "int" - } - } - }, - - "trailReplaced": "Trail replaced! ({pointCount} points)", - "@trailReplaced": { - "description": "Success message when trail is replaced", - "placeholders": { - "pointCount": { - "type": "int" - } - } - }, - "contactTrails": "Contact Trails", "@contactTrails": { "description": "Contact trails section header" }, - "showAllContactTrails": "Show All Contact Trails", "@showAllContactTrails": { "description": "Toggle label to show all contact trails" }, - "noContactsWithLocationHistory": "No contacts with location history", "@noContactsWithLocationHistory": { "description": "Subtitle when no contacts have trails" }, - "showingTrailsForContacts": "Showing trails for {count} contacts", "@showingTrailsForContacts": { "description": "Subtitle showing number of contacts with trails", @@ -2512,117 +1286,94 @@ } } }, - "individualContactTrails": "Individual Contact Trails", "@individualContactTrails": { "description": "Expansion tile title for individual contact trails" }, - "deviceInformation": "Device Information", "@deviceInformation": { "description": "Device information section header" }, - "bleName": "BLE Name", "@bleName": { "description": "Bluetooth Low Energy device name label" }, - "meshName": "Mesh Name", "@meshName": { "description": "Mesh network name label" }, - "notSet": "Not set", "@notSet": { "description": "Label when a value is not set" }, - "model": "Model", "@model": { "description": "Device model label" }, - "version": "Version", "@version": { "description": "Version label" }, - "buildDate": "Build Date", "@buildDate": { "description": "Firmware build date label" }, - "firmware": "Firmware", "@firmware": { "description": "Firmware label" }, - "maxContacts": "Max Contacts", "@maxContacts": { "description": "Maximum contacts capacity label" }, - "maxChannels": "Max Channels", "@maxChannels": { "description": "Maximum channels capacity label" }, - "publicInfo": "Public Info", "@publicInfo": { "description": "Public information section header" }, - "meshNetworkName": "Mesh Network Name", "@meshNetworkName": { "description": "Mesh network name field label" }, - "nameBroadcastInMesh": "Name broadcast in mesh advertisements", "@nameBroadcastInMesh": { "description": "Helper text for mesh network name field" }, - "telemetryAndLocationSharing": "Telemetry & Location Sharing", "@telemetryAndLocationSharing": { "description": "Telemetry and location sharing toggle label" }, - "lat": "Lat", "@lat": { "description": "Latitude field label (short form)" }, - "lon": "Lon", "@lon": { "description": "Longitude field label (short form)" }, - "useCurrentLocation": "Use current location", "@useCurrentLocation": { "description": "Tooltip for use current location button" }, - "noneUnknown": "None/Unknown", "@noneUnknown": { "description": "Device type: none or unknown" }, - "chatNode": "Chat Node", "@chatNode": { "description": "Device type: chat node" }, - "repeater": "Repeater", "@repeater": { "description": "Device type: repeater" }, - "roomChannel": "Room/Channel", "@roomChannel": { "description": "Device type: room or channel" }, - "typeNumber": "Type {number}", "@typeNumber": { "description": "Generic device type with number", @@ -2632,7 +1383,6 @@ } } }, - "copiedToClipboardShort": "Copied {label} to clipboard", "@copiedToClipboardShort": { "description": "Short success message when copying to clipboard", @@ -2642,7 +1392,6 @@ } } }, - "failedToSave": "Failed to save: {error}", "@failedToSave": { "description": "Generic error message for save failures", @@ -2652,7 +1401,6 @@ } } }, - "failedToGetLocation": "Failed to get location: {error}", "@failedToGetLocation": { "description": "Error message when getting location fails", @@ -2662,87 +1410,70 @@ } } }, - "sarTemplates": "SAR Templates", "@sarTemplates": { "description": "SAR templates menu title" }, - "manageSarTemplates": "Manage cursor on target templates", "@manageSarTemplates": { "description": "Subtitle for SAR templates settings" }, - "addTemplate": "Add Template", "@addTemplate": { "description": "Button to add new SAR template" }, - "editTemplate": "Edit Template", "@editTemplate": { "description": "Dialog title for editing template" }, - "deleteTemplate": "Delete Template", "@deleteTemplate": { "description": "Action to delete template" }, - "templateName": "Template Name", "@templateName": { "description": "Label for template name field" }, - "templateNameHint": "e.g. Found Person", "@templateNameHint": { "description": "Hint text for template name" }, - "templateEmoji": "Emoji", "@templateEmoji": { "description": "Label for template emoji field" }, - "emojiRequired": "Emoji is required", "@emojiRequired": { "description": "Validation error when emoji field is empty" }, - "nameRequired": "Name is required", "@nameRequired": { "description": "Validation error when name field is empty" }, - "templateDescription": "Description (Optional)", "@templateDescription": { "description": "Label for template description field" }, - "templateDescriptionHint": "Add additional context...", "@templateDescriptionHint": { "description": "Hint text for template description" }, - "templateColor": "Color", "@templateColor": { "description": "Label for template color picker" }, - "previewFormat": "Preview (SAR Message Format)", "@previewFormat": { "description": "Label for format preview" }, - "importFromClipboard": "Import", "@importFromClipboard": { "description": "Button to import templates from clipboard" }, - "exportToClipboard": "Export", "@exportToClipboard": { "description": "Button to export templates to clipboard" }, - "deleteTemplateConfirmation": "Delete template '{name}'?", "@deleteTemplateConfirmation": { "description": "Confirmation message for template deletion", @@ -2752,22 +1483,18 @@ } } }, - "templateAdded": "Template added", "@templateAdded": { "description": "Success message when template is added" }, - "templateUpdated": "Template updated", "@templateUpdated": { "description": "Success message when template is updated" }, - "templateDeleted": "Template deleted", "@templateDeleted": { "description": "Success message when template is deleted" }, - "templatesImported": "{count, plural, =0{No templates imported} =1{Imported 1 template} other{Imported {count} templates}}", "@templatesImported": { "description": "Success message after importing templates", @@ -2777,7 +1504,6 @@ } } }, - "templatesExported": "{count, plural, =1{Exported 1 template to clipboard} other{Exported {count} templates to clipboard}}", "@templatesExported": { "description": "Success message after exporting templates", @@ -2787,570 +1513,390 @@ } } }, - - "importFailed": "Import failed: {error}", - "@importFailed": { - "description": "Error message when import fails", - "placeholders": { - "error": { - "type": "String" - } - } - }, - - "exportFailed": "Export failed: {error}", - "@exportFailed": { - "description": "Error message when export fails", - "placeholders": { - "error": { - "type": "String" - } - } - }, - "resetToDefaults": "Reset to Defaults", "@resetToDefaults": { "description": "Action to reset templates to defaults" }, - "resetToDefaultsConfirmation": "This will delete all custom templates and restore the 4 default templates. Continue?", "@resetToDefaultsConfirmation": { "description": "Confirmation message for reset to defaults" }, - "reset": "Reset", "@reset": { "description": "Reset button label" }, - "resetComplete": "Templates reset to defaults", "@resetComplete": { "description": "Success message after reset" }, - "noTemplates": "No templates available", "@noTemplates": { "description": "Message when no templates exist" }, - "tapAddToCreate": "Tap + to create your first template", "@tapAddToCreate": { "description": "Helper text when no templates exist" }, - "ok": "OK", "@ok": { "description": "OK button label" }, - - "delete": "Delete", - "@delete": { - "description": "Delete button label" - }, - "permissionsSection": "Permissions", "@permissionsSection": { "description": "Permissions section header" }, - "locationPermission": "Location Permission", "@locationPermission": { "description": "Location permission label" }, - "checking": "Checking...", "@checking": { "description": "Loading state indicator" }, - "locationPermissionGrantedAlways": "Granted (Always)", "@locationPermissionGrantedAlways": { "description": "Location permission status: granted always" }, - "locationPermissionGrantedWhileInUse": "Granted (While In Use)", "@locationPermissionGrantedWhileInUse": { "description": "Location permission status: granted while in use" }, - "locationPermissionDeniedTapToRequest": "Denied - Tap to request", "@locationPermissionDeniedTapToRequest": { "description": "Location permission status: denied, user can request" }, - "locationPermissionPermanentlyDeniedOpenSettings": "Permanently Denied - Open Settings", "@locationPermissionPermanentlyDeniedOpenSettings": { "description": "Location permission status: permanently denied" }, - "locationPermissionDialogContent": "Location permission is permanently denied. Please enable it in your device settings to use GPS tracking and location sharing features.", "@locationPermissionDialogContent": { "description": "Content for location permission dialog when permanently denied" }, - "openSettings": "Open Settings", "@openSettings": { "description": "Button to open device settings" }, - "locationPermissionGranted": "Location permission granted!", "@locationPermissionGranted": { "description": "Success message when location permission is granted" }, - "locationPermissionRequiredForGps": "Location permission is required for GPS tracking and location sharing.", "@locationPermissionRequiredForGps": { "description": "Info message about location permission requirement" }, - "locationPermissionAlreadyGranted": "Location permission is already granted.", "@locationPermissionAlreadyGranted": { "description": "Info message when permission is already granted" }, - "sarNavyBlue": "SAR Navy Blue", "@sarNavyBlue": { "description": "SAR Navy Blue theme name" }, - "sarNavyBlueDescription": "Professional/Operations Mode", "@sarNavyBlueDescription": { "description": "Description for SAR Navy Blue theme" }, - "selectRecipient": "Select Recipient", "@selectRecipient": { "description": "Title for recipient selector sheet" }, - "broadcastToAllNearby": "Broadcast to all nearby", "@broadcastToAllNearby": { "description": "Subtitle for public channel option" }, - "searchRecipients": "Search recipients...", "@searchRecipients": { "description": "Placeholder text for recipient search field" }, - "noContactsFound": "No contacts found", "@noContactsFound": { "description": "Message when no contacts match search" }, - "noRoomsFound": "No rooms found", "@noRoomsFound": { "description": "Message when no rooms match search" }, - - "noContactsOrRoomsAvailable": "No contacts or rooms available", - "@noContactsOrRoomsAvailable": { - "description": "Message when no contacts or rooms exist" - }, - "noRecipientsAvailable": "No recipients available", "@noRecipientsAvailable": { "description": "Message when no recipients exist (contacts, rooms, or channels)" }, - "noChannelsFound": "No channels found", "@noChannelsFound": { "description": "Message when no channels match the search" }, - - "messagesWillBeSentToPublicChannel": "Messages will be sent to public channel", - "@messagesWillBeSentToPublicChannel": { - "description": "Info message when only public channel is available" - }, - "newMessage": "New message", "@newMessage": { "description": "Notification title for new message" }, - "channel": "Channel", "@channel": { "description": "Channel label in notifications" }, - "samplePoliceLead": "Police Lead", "@samplePoliceLead": { "description": "Sample team member name" }, - "sampleDroneOperator": "Drone Operator", "@sampleDroneOperator": { "description": "Sample team member name" }, - "sampleFirefighterAlpha": "Firefighter", "@sampleFirefighterAlpha": { "description": "Sample team member name" }, - "sampleMedicCharlie": "Medic", "@sampleMedicCharlie": { "description": "Sample team member name" }, - "sampleCommandDelta": "Command", "@sampleCommandDelta": { "description": "Sample team member name" }, - "sampleFireEngine": "Fire Engine", "@sampleFireEngine": { "description": "Sample team member name" }, - "sampleAirSupport": "Air Support", "@sampleAirSupport": { "description": "Sample team member name" }, - "sampleBaseCoordinator": "Base Coordinator", "@sampleBaseCoordinator": { "description": "Sample team member name" }, - "channelEmergency": "Emergency", "@channelEmergency": { "description": "Emergency channel name" }, - "channelCoordination": "Coordination", "@channelCoordination": { "description": "Coordination channel name" }, - "channelUpdates": "Updates", "@channelUpdates": { "description": "Updates channel name" }, - "sampleTeamMember": "Sample Team Member", "@sampleTeamMember": { "description": "Sample sender name" }, - "sampleScout": "Sample Scout", "@sampleScout": { "description": "Sample sender name" }, - "sampleBase": "Sample Base", "@sampleBase": { "description": "Sample sender name" }, - "sampleSearcher": "Sample Searcher", "@sampleSearcher": { "description": "Sample sender name" }, - "sampleObjectBackpack": " Backpack found - blue color", "@sampleObjectBackpack": { "description": "Sample object note" }, - "sampleObjectVehicle": " Vehicle abandoned - check for owner", "@sampleObjectVehicle": { "description": "Sample object note" }, - "sampleObjectCamping": " Camping equipment discovered", "@sampleObjectCamping": { "description": "Sample object note" }, - "sampleObjectTrailMarker": " Trail marker found off-path", "@sampleObjectTrailMarker": { "description": "Sample object note" }, - "sampleMsgAllTeamsCheckIn": "All teams check in", "@sampleMsgAllTeamsCheckIn": { "description": "Sample channel message" }, - "sampleMsgWeatherUpdate": "Weather update: Clear skies, temp 18°C", "@sampleMsgWeatherUpdate": { "description": "Sample channel message" }, - "sampleMsgBaseCamp": "Base camp established at staging area", "@sampleMsgBaseCamp": { "description": "Sample channel message" }, - "sampleMsgTeamAlpha": "Team moving to sector 2", "@sampleMsgTeamAlpha": { "description": "Sample channel message" }, - "sampleMsgRadioCheck": "Radio check - all stations respond", "@sampleMsgRadioCheck": { "description": "Sample channel message" }, - "sampleMsgWaterSupply": "Water supply available at checkpoint 3", "@sampleMsgWaterSupply": { "description": "Sample channel message" }, - "sampleMsgTeamBravo": "Team reporting: sector 1 clear", "@sampleMsgTeamBravo": { "description": "Sample channel message" }, - "sampleMsgEtaRallyPoint": "ETA to rally point: 15 minutes", "@sampleMsgEtaRallyPoint": { "description": "Sample channel message" }, - "sampleMsgSupplyDrop": "Supply drop confirmed for 14:00", "@sampleMsgSupplyDrop": { "description": "Sample channel message" }, - "sampleMsgDroneSurvey": "Drone survey completed - no findings", "@sampleMsgDroneSurvey": { "description": "Sample channel message" }, - "sampleMsgTeamCharlie": "Team requesting backup", "@sampleMsgTeamCharlie": { "description": "Sample channel message" }, - "sampleMsgRadioDiscipline": "All units: maintain radio discipline", "@sampleMsgRadioDiscipline": { "description": "Sample channel message" }, - "sampleMsgUrgentMedical": "URGENT: Medical assistance needed at sector 4", "@sampleMsgUrgentMedical": { "description": "Sample emergency message" }, - "sampleMsgAdultMale": " Adult male, conscious", "@sampleMsgAdultMale": { "description": "Sample emergency message note" }, - "sampleMsgFireSpotted": "Fire spotted - coordinates incoming", "@sampleMsgFireSpotted": { "description": "Sample emergency message" }, - "sampleMsgSpreadingRapidly": " Spreading rapidly!", "@sampleMsgSpreadingRapidly": { "description": "Sample emergency message note" }, - "sampleMsgPriorityHelicopter": "PRIORITY: Need helicopter support", "@sampleMsgPriorityHelicopter": { "description": "Sample emergency message" }, - "sampleMsgMedicalTeamEnRoute": "Medical team en route to your location", "@sampleMsgMedicalTeamEnRoute": { "description": "Sample emergency message" }, - "sampleMsgEvacHelicopter": "Evac helicopter ETA 10 minutes", "@sampleMsgEvacHelicopter": { "description": "Sample emergency message" }, - "sampleMsgEmergencyResolved": "Emergency resolved - all clear", "@sampleMsgEmergencyResolved": { "description": "Sample emergency message" }, - "sampleMsgEmergencyStagingArea": " Emergency staging area", "@sampleMsgEmergencyStagingArea": { "description": "Sample emergency message note" }, - "sampleMsgEmergencyServices": "Emergency services notified and responding", "@sampleMsgEmergencyServices": { "description": "Sample emergency message" }, - "sampleAlphaTeamLead": "Team Lead", "@sampleAlphaTeamLead": { "description": "Sample team name" }, - "sampleBravoScout": "Scout", "@sampleBravoScout": { "description": "Sample team name" }, - "sampleCharlieMedic": "Medic", "@sampleCharlieMedic": { "description": "Sample team name" }, - "sampleDeltaNavigator": "Navigator", "@sampleDeltaNavigator": { "description": "Sample team name" }, - "sampleEchoSupport": "Support", "@sampleEchoSupport": { "description": "Sample team name" }, - "sampleBaseCommand": "Base Command", "@sampleBaseCommand": { "description": "Sample team name" }, - "sampleFieldCoordinator": "Field Coordinator", "@sampleFieldCoordinator": { "description": "Sample team name" }, - "sampleMedicalTeam": "Medical Team", "@sampleMedicalTeam": { "description": "Sample team name" }, - "mapDrawing": "Map Drawing", "@mapDrawing": { "description": "Label for map drawing messages" }, - "navigateToDrawing": "Navigate to Drawing", "@navigateToDrawing": { "description": "Option to navigate to drawing on map" }, - "copyCoordinates": "Copy Coordinates", "@copyCoordinates": { "description": "Option to copy coordinates to clipboard" }, - "hideFromMap": "Hide from Map", "@hideFromMap": { "description": "Option to hide drawing from map" }, - "lineDrawing": "Line Drawing", "@lineDrawing": { "description": "Label for line type drawings" }, - "rectangleDrawing": "Rectangle Drawing", "@rectangleDrawing": { "description": "Label for rectangle type drawings" }, - - "coordinatesCopiedToClipboard": "Coordinates copied to clipboard", - "@coordinatesCopiedToClipboard": { - "description": "Success message when coordinates are copied" - }, - "manualCoordinates": "Manual Coordinates", "@manualCoordinates": { "description": "Label for manual coordinate input toggle" }, - "enterCoordinatesManually": "Enter coordinates manually", "@enterCoordinatesManually": { "description": "Description for manual coordinate input option" }, - "latitudeLabel": "Latitude", "@latitudeLabel": { "description": "Label for latitude input field" }, - "longitudeLabel": "Longitude", "@longitudeLabel": { "description": "Label for longitude input field" }, - - "invalidLatitude": "Invalid latitude (-90 to 90)", - "@invalidLatitude": { - "description": "Error message for invalid latitude value" - }, - - "invalidLongitude": "Invalid longitude (-180 to 180)", - "@invalidLongitude": { - "description": "Error message for invalid longitude value" - }, - "exampleCoordinates": "Example: 46.0569, 14.5058", "@exampleCoordinates": { "description": "Example coordinate format hint" }, - - "drawingShared": "Map Drawing", - "@drawingShared": { - "description": "Label for shared drawing notifications" - }, - - "drawingHidden": "Drawing hidden from map", - "@drawingHidden": { - "description": "Success message when drawing is hidden" - }, - - "alreadyShared": "{count, plural, =1{1 already shared} other{{count} already shared}}", - "@alreadyShared": { - "description": "Message showing how many drawings were already shared", - "placeholders": { - "count": { - "type": "int" - } - } - }, - - "newDrawingsShared": "Shared {count} new drawing{plural}", - "@newDrawingsShared": { - "description": "Success message after sharing new drawings", - "placeholders": { - "count": { - "type": "int" - }, - "plural": { - "type": "String" - } - } - }, - "shareDrawing": "Share Drawing", "@shareDrawing": { "description": "Title for share single drawing dialog" }, - "shareWithAllNearbyDevices": "Share with all nearby devices", "@shareWithAllNearbyDevices": { "description": "Subtitle for public channel sharing option" }, - "shareToRoom": "Share to Room", "@shareToRoom": { "description": "Header for room sharing section" }, - "sendToPersistentStorage": "Send to persistent room storage", "@sendToPersistentStorage": { "description": "Subtitle for room sharing option" }, - "deleteDrawingConfirm": "Are you sure you want to delete this drawing?", "@deleteDrawingConfirm": { "description": "Confirmation message for deleting a single drawing" }, - "drawingDeleted": "Drawing deleted", "@drawingDeleted": { "description": "Success message after deleting a drawing" }, - "yourDrawingsCount": "Your Drawings ({count})", "@yourDrawingsCount": { "description": "Header showing count of user's drawings", @@ -3360,197 +1906,150 @@ } } }, - "shared": "Shared", "@shared": { "description": "Status label for shared drawings" }, - "line": "Line", "@line": { "description": "Line drawing type label" }, - "rectangle": "Rectangle", "@rectangle": { "description": "Rectangle drawing type label" }, - "updateAvailable": "Update Available", "@updateAvailable": { "description": "Title for update dialog when new version is available" }, - "currentVersion": "Current", "@currentVersion": { "description": "Label for current app version" }, - "latestVersion": "Latest", "@latestVersion": { "description": "Label for latest available app version" }, - "downloadUpdate": "Download", "@downloadUpdate": { "description": "Button to download app update" }, - "updateLater": "Later", "@updateLater": { "description": "Button to dismiss update dialog" }, - "cadastralParcels": "Cadastral Parcels", "@cadastralParcels": { "description": "Label for cadastral parcels WMS overlay layer" }, - "forestRoads": "Forest Roads", "@forestRoads": { "description": "Label for forest roads WMS overlay layer" }, - - "showCadastralParcels": "Show Cadastral Parcels", - "@showCadastralParcels": { - "description": "Tooltip for cadastral parcels overlay toggle button" - }, - - "showForestRoads": "Show Forest Roads", - "@showForestRoads": { - "description": "Tooltip for forest roads overlay toggle button" - }, - "wmsOverlays": "WMS Overlays", "@wmsOverlays": { "description": "Section header for WMS overlay layers in layer selector" }, - "hikingTrails": "Hiking Trails", "@hikingTrails": { "description": "Label for hiking/mountain trails WMS overlay layer" }, - "mainRoads": "Main Roads", "@mainRoads": { "description": "Label for main roads WMS overlay layer" }, - "houseNumbers": "House Numbers", "@houseNumbers": { "description": "Label for house numbers WMS overlay layer" }, - "fireHazardZones": "Fire Hazard Zones", "@fireHazardZones": { "description": "Label for fire hazard risk zones WMS overlay layer" }, - "historicalFires": "Historical Fires", "@historicalFires": { "description": "Label for historical forest fires WMS overlay layer" }, - "firebreaks": "Firebreaks", "@firebreaks": { "description": "Label for firebreaks WMS overlay layer" }, - "krasFireZones": "Kras Fire Zones", "@krasFireZones": { "description": "Label for Kras fire zones WMS overlay layer" }, - "placeNames": "Place Names", "@placeNames": { "description": "Label for geographic place names WMS overlay layer" }, - "municipalityBorders": "Municipality Borders", "@municipalityBorders": { "description": "Label for municipality borders WMS overlay layer" }, - "topographicMap": "Topographic Map 1:25000", "@topographicMap": { "description": "Label for DTK25 topographic base map layer" }, - "recentMessages": "Recent Messages", "@recentMessages": { "description": "Header for recent messages overlay on map in fullscreen mode" }, - "addChannel": "Add Channel", "@addChannel": { "description": "Button to add a new channel" }, - "channelName": "Channel Name", "@channelName": { "description": "Label for channel name field" }, - "channelNameHint": "e.g., Rescue Team Alpha", "@channelNameHint": { "description": "Hint for channel name field" }, - "channelSecret": "Channel Secret", "@channelSecret": { "description": "Label for channel secret field" }, - "channelSecretHint": "Shared password for this channel", "@channelSecretHint": { "description": "Hint for channel secret field" }, - "channelSecretHelp": "This secret must be shared with all team members who need access to this channel", "@channelSecretHelp": { "description": "Help text explaining channel secret" }, - "channelTypesInfo": "Hash channels (#team): Secret auto-generated from name. Same name = same channel across devices.\n\nPrivate channels: Use explicit secret. Only those with the secret can join.", "@channelTypesInfo": { "description": "Information banner explaining hash and private channel types" }, - "hashChannelInfo": "Hash channel: Secret will be auto-generated from the channel name. Anyone using the same name will join the same channel.", "@hashChannelInfo": { "description": "Help text for hash channels (# prefix)" }, - "channelNameRequired": "Channel name is required", "@channelNameRequired": { "description": "Validation error for empty channel name" }, - "channelNameTooLong": "Channel name must be 31 characters or less", "@channelNameTooLong": { "description": "Validation error for channel name too long" }, - "channelSecretRequired": "Channel secret is required", "@channelSecretRequired": { "description": "Validation error for empty channel secret" }, - "channelSecretTooLong": "Channel secret must be 32 characters or less", "@channelSecretTooLong": { "description": "Validation error for channel secret too long" }, - "invalidAsciiCharacters": "Only ASCII characters are allowed", "@invalidAsciiCharacters": { "description": "Validation error for non-ASCII characters" }, - "channelCreatedSuccessfully": "Channel created successfully", "@channelCreatedSuccessfully": { "description": "Success message after creating channel" }, - "channelCreationFailed": "Failed to create channel: {error}", "@channelCreationFailed": { "description": "Error message when channel creation fails", @@ -3560,12 +2059,10 @@ } } }, - "deleteChannel": "Delete Channel", "@deleteChannel": { "description": "Delete channel button/menu item" }, - "deleteChannelConfirmation": "Are you sure you want to delete channel \"{channelName}\"? This action cannot be undone.", "@deleteChannelConfirmation": { "description": "Confirmation dialog when deleting a channel", @@ -3575,12 +2072,10 @@ } } }, - "channelDeletedSuccessfully": "Channel deleted successfully", "@channelDeletedSuccessfully": { "description": "Success message after deleting channel" }, - "channelDeletionFailed": "Failed to delete channel: {error}", "@channelDeletionFailed": { "description": "Error message when channel deletion fails", @@ -3590,182 +2085,126 @@ } } }, - - "allChannelSlotsInUse": "All channel slots are in use (maximum 39 custom channels)", - "@allChannelSlotsInUse": { - "description": "Error when no channel slots available" - }, - "createChannel": "Create Channel", "@createChannel": { "description": "Button text for creating a channel" }, - "wizardBack": "Back", "@wizardBack": { "description": "Wizard back button text" }, - "wizardSkip": "Skip", "@wizardSkip": { "description": "Wizard skip button text" }, - "wizardNext": "Next", "@wizardNext": { "description": "Wizard next button text" }, - "wizardGetStarted": "Get Started", "@wizardGetStarted": { "description": "Wizard final button text to complete onboarding" }, - "wizardWelcomeTitle": "Welcome to MeshCore SAR", "@wizardWelcomeTitle": { "description": "Welcome wizard first page title" }, - "wizardWelcomeDescription": "A powerful off-grid communication tool for search and rescue operations. Connect with your team using mesh radio technology when traditional networks are unavailable.", "@wizardWelcomeDescription": { "description": "Welcome wizard first page description" }, - "wizardConnectingTitle": "Connecting to Your Radio", "@wizardConnectingTitle": { "description": "Wizard connecting page title" }, - "wizardConnectingDescription": "Connect your smartphone to a MeshCore radio device via Bluetooth to start communicating off-grid.", "@wizardConnectingDescription": { "description": "Wizard connecting page description" }, - "wizardConnectingFeature1": "Scan for nearby MeshCore devices", "@wizardConnectingFeature1": { "description": "Wizard connecting feature 1" }, - "wizardConnectingFeature2": "Pair with your radio via Bluetooth", "@wizardConnectingFeature2": { "description": "Wizard connecting feature 2" }, - "wizardConnectingFeature3": "Works completely offline - no internet required", "@wizardConnectingFeature3": { "description": "Wizard connecting feature 3" }, - - "wizardSimpleModeTitle": "Simple Mode", - "@wizardSimpleModeTitle": { - "description": "Wizard simple mode page title" - }, - - "wizardSimpleModeDescription": "New to mesh networking? Enable Simple Mode for a streamlined interface with essential features only.", - "@wizardSimpleModeDescription": { - "description": "Wizard simple mode page description" - }, - - "wizardSimpleModeFeature1": "Beginner-friendly interface with core functions", - "@wizardSimpleModeFeature1": { - "description": "Wizard simple mode feature 1" - }, - - "wizardSimpleModeFeature2": "Switch to Advanced Mode anytime in Settings", - "@wizardSimpleModeFeature2": { - "description": "Wizard simple mode feature 2" - }, - "wizardChannelTitle": "Channels", "@wizardChannelTitle": { "description": "Wizard channel page title" }, - "wizardChannelDescription": "Broadcast messages to everyone on a channel, perfect for team-wide announcements and coordination.", "@wizardChannelDescription": { "description": "Wizard channel page description" }, - "wizardChannelFeature1": "Public Channel for general team communication", "@wizardChannelFeature1": { "description": "Wizard channel feature 1" }, - "wizardChannelFeature2": "Create custom channels for specific groups", "@wizardChannelFeature2": { "description": "Wizard channel feature 2" }, - "wizardChannelFeature3": "Messages are automatically relayed by the mesh", "@wizardChannelFeature3": { "description": "Wizard channel feature 3" }, - "wizardContactsTitle": "Contacts", "@wizardContactsTitle": { "description": "Wizard contacts page title" }, - "wizardContactsDescription": "Your team members appear automatically as they join the mesh network. Send them direct messages or view their location.", "@wizardContactsDescription": { "description": "Wizard contacts page description" }, - "wizardContactsFeature1": "Contacts discovered automatically", "@wizardContactsFeature1": { "description": "Wizard contacts feature 1" }, - "wizardContactsFeature2": "Send private direct messages", "@wizardContactsFeature2": { "description": "Wizard contacts feature 2" }, - "wizardContactsFeature3": "View battery level and last seen time", "@wizardContactsFeature3": { "description": "Wizard contacts feature 3" }, - "wizardMapTitle": "Map & Location", "@wizardMapTitle": { "description": "Wizard map page title" }, - "wizardMapDescription": "Track your team in real-time and mark important locations for search and rescue operations.", "@wizardMapDescription": { "description": "Wizard map page description" }, - "wizardMapFeature1": "SAR markers for found persons, fires, and staging areas", "@wizardMapFeature1": { "description": "Wizard map feature 1" }, - "wizardMapFeature2": "Real-time GPS tracking of team members", "@wizardMapFeature2": { "description": "Wizard map feature 2" }, - "wizardMapFeature3": "Download offline maps for remote areas", "@wizardMapFeature3": { "description": "Wizard map feature 3" }, - "wizardMapFeature4": "Draw shapes and share tactical information", "@wizardMapFeature4": { "description": "Wizard map feature 4" }, - "viewWelcomeTutorial": "View Welcome Tutorial", "@viewWelcomeTutorial": { "description": "Settings option to re-show welcome wizard" }, - "allTeamContacts": "All Team Contacts", "@allTeamContacts": { "description": "Destination option to send SAR marker to all team contacts" }, - "directMessagesInfo": "Direct messages with ACKs. Sent to {count} team members.", "@directMessagesInfo": { "description": "Information about sending to all contacts", @@ -3775,7 +2214,6 @@ } } }, - "sarMarkerSentToContacts": "SAR marker sent to {count} contacts", "@sarMarkerSentToContacts": { "description": "Success message after sending SAR marker to all contacts", @@ -3785,60 +2223,33 @@ } } }, - "noContactsAvailable": "No team contacts available", "@noContactsAvailable": { "description": "Message when there are no chat contacts to send to" - } -, - + }, "reply": "Απάντηση", - "technicalDetails": "Τεχνικές λεπτομέρειες", - "messageTechnicalDetails": "Τεχνικές λεπτομέρειες μηνύματος", - "linkQuality": "Ποιότητα σύνδεσης", - "delivery": "Παράδοση", - "status": "Κατάσταση", - "expectedAckTag": "Αναμενόμενη ετικέτα ACK", - "roundTrip": "Χρόνος μετ' επιστροφής", - "retryAttempt": "Απόπειρα επανάληψης", - "floodFallback": "Εφεδρική πλημμύρα", - "identity": "Ταυτότητα", - "messageId": "Αναγνωριστικό μηνύματος", - "sender": "Αποστολέας", - "senderKey": "Κλειδί αποστολέα", - "recipient": "Παραλήπτης", - "recipientKey": "Κλειδί παραλήπτη", - "voice": "Φωνή", - "voiceId": "Αναγνωριστικό φωνής", - "envelope": "Φάκελος", - "sessionProgress": "Πρόοδος συνεδρίας", - "complete": "Ολοκληρώθηκε", - "rawDump": "Ακατέργαστα δεδομένα", - "cannotRetryMissingRecipient": "Δεν είναι δυνατή η επανάληψη: λείπουν πληροφορίες παραλήπτη", - "voiceUnavailable": "Η φωνή δεν είναι διαθέσιμη αυτή τη στιγμή", - "requestingVoice": "Αίτηση φωνής" -} \ No newline at end of file +} diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb index 088edbf..417f03d 100644 --- a/lib/l10n/app_en.arb +++ b/lib/l10n/app_en.arb @@ -1,104 +1,69 @@ { "@@locale": "en", - "appTitle": "MeshCore SAR", "@appTitle": { "description": "The application title" }, - "messages": "Messages", "@messages": { "description": "Messages tab label" }, - "contacts": "Contacts", "@contacts": { "description": "Contacts tab label" }, - "map": "Map", "@map": { "description": "Map tab label" }, - "settings": "Settings", "@settings": { "description": "Settings screen title" }, - "connect": "Connect", "@connect": { "description": "Connect button label" }, - "disconnect": "Disconnect", "@disconnect": { "description": "Disconnect button label" }, - - "scanningForDevices": "Scanning for devices...", - "@scanningForDevices": { - "description": "Text shown when scanning for BLE devices" - }, - "noDevicesFound": "No devices found", "@noDevicesFound": { "description": "Text shown when no BLE devices are found" }, - "scanAgain": "Scan Again", "@scanAgain": { "description": "Button to restart BLE scanning" }, - "tapToConnect": "Tap to connect", "@tapToConnect": { "description": "Subtitle text for device in scan list" }, - "deviceNotConnected": "Device not connected", "@deviceNotConnected": { "description": "Error message when device is not connected" }, - "locationPermissionDenied": "Location permission denied", "@locationPermissionDenied": { "description": "Error when location permission is denied" }, - "locationPermissionPermanentlyDenied": "Location permission permanently denied. Please enable in Settings.", "@locationPermissionPermanentlyDenied": { "description": "Error when location permission is permanently denied" }, - "locationPermissionRequired": "Location permission is required for GPS tracking and team coordination. You can enable it later in Settings.", "@locationPermissionRequired": { "description": "Message when location permission is needed" }, - "locationServicesDisabled": "Location services are disabled. Please enable them in Settings.", "@locationServicesDisabled": { "description": "Error when location services are disabled" }, - "failedToGetGpsLocation": "Failed to get GPS location", "@failedToGetGpsLocation": { "description": "Error when GPS location cannot be obtained" }, - - "advertisedAtLocation": "Advertised at {latitude}, {longitude}", - "@advertisedAtLocation": { - "description": "Success message showing advertised location", - "placeholders": { - "latitude": { - "type": "String" - }, - "longitude": { - "type": "String" - } - } - }, - "failedToAdvertise": "Failed to advertise: {error}", "@failedToAdvertise": { "description": "Error message for failed advertisement", @@ -108,355 +73,162 @@ } } }, - - "reconnecting": "Reconnecting... ({attempt}/{max})", - "@reconnecting": { - "description": "Text shown during reconnection attempts", - "placeholders": { - "attempt": { - "type": "int" - }, - "max": { - "type": "int" - } - } - }, - "cancelReconnection": "Cancel reconnection", "@cancelReconnection": { "description": "Tooltip for cancel reconnection button" }, - - "mapManagement": "Map Management", - "@mapManagement": { - "description": "Menu item for map management" - }, - "general": "General", "@general": { "description": "General settings section header" }, - "theme": "Theme", "@theme": { "description": "Theme setting label" }, - "chooseTheme": "Choose Theme", "@chooseTheme": { "description": "Theme selection dialog title" }, - "light": "Light", "@light": { "description": "Light theme option" }, - "dark": "Dark", "@dark": { "description": "Dark theme option" }, - "blueLightTheme": "Blue light theme", "@blueLightTheme": { "description": "Description for blue light theme" }, - "blueDarkTheme": "Blue dark theme", "@blueDarkTheme": { "description": "Description for blue dark theme" }, - "sarRed": "SAR Red", "@sarRed": { "description": "SAR Red theme option" }, - "alertEmergencyMode": "Alert/Emergency mode", "@alertEmergencyMode": { "description": "Description for SAR Red theme" }, - "sarGreen": "SAR Green", "@sarGreen": { "description": "SAR Green theme option" }, - "safeAllClearMode": "Safe/All Clear mode", "@safeAllClearMode": { "description": "Description for SAR Green theme" }, - "autoSystem": "Auto (System)", "@autoSystem": { "description": "Auto/System theme option" }, - "followSystemTheme": "Follow system theme", "@followSystemTheme": { "description": "Description for system theme" }, - "showRxTxIndicators": "Show RX/TX Indicators", "@showRxTxIndicators": { "description": "Setting to show RX/TX indicators" }, - "displayPacketActivity": "Display packet activity indicators in top bar", "@displayPacketActivity": { "description": "Description for RX/TX indicators setting" }, - - "simpleMode": "Simple Mode", - "@simpleMode": { - "description": "Setting to enable simple mode" - }, - - "simpleModeDescription": "Hide non-essential information in messages and contacts", - "@simpleModeDescription": { - "description": "Description for simple mode setting" - }, - "disableMap": "Disable Map", "@disableMap": { "description": "Setting to disable the map tab" }, - "disableMapDescription": "Hide the map tab to reduce battery usage", "@disableMapDescription": { "description": "Description for disable map setting" }, - "language": "Language", "@language": { "description": "Language setting label" }, - "chooseLanguage": "Choose Language", "@chooseLanguage": { "description": "Language selection dialog title" }, - - "english": "English", - "@english": { - "description": "English language option" - }, - - "slovenian": "Slovenian", - "@slovenian": { - "description": "Slovenian language option" - }, - - "croatian": "Croatian", - "@croatian": { - "description": "Croatian language option" - }, - - "german": "German", - "@german": { - "description": "German language option" - }, - - "spanish": "Spanish", - "@spanish": { - "description": "Spanish language option" - }, - - "french": "French", - "@french": { - "description": "French language option" - }, - - "italian": "Italian", - "@italian": { - "description": "Italian language option" - }, - - "locationBroadcasting": "Location Broadcasting", - "@locationBroadcasting": { - "description": "Location settings section header" - }, - - "autoLocationTracking": "Auto Location Tracking", - "@autoLocationTracking": { - "description": "Auto location tracking setting" - }, - - "automaticallyBroadcastPosition": "Automatically broadcast position updates", - "@automaticallyBroadcastPosition": { - "description": "Description for auto location tracking" - }, - - "configureTracking": "Configure Tracking", - "@configureTracking": { - "description": "Configure tracking button label" - }, - - "distanceAndTimeThresholds": "Distance and time thresholds", - "@distanceAndTimeThresholds": { - "description": "Description for tracking configuration" - }, - - "locationTrackingConfiguration": "Location Tracking Configuration", - "@locationTrackingConfiguration": { - "description": "Tracking configuration dialog title" - }, - - "configureWhenLocationBroadcasts": "Configure when location broadcasts are sent to the mesh network", - "@configureWhenLocationBroadcasts": { - "description": "Description for tracking configuration dialog" - }, - - "minimumDistance": "Minimum Distance", - "@minimumDistance": { - "description": "Minimum distance setting label" - }, - - "broadcastAfterMoving": "Broadcast only after moving {distance} meters", - "@broadcastAfterMoving": { - "description": "Description for minimum distance", - "placeholders": { - "distance": { - "type": "String" - } - } - }, - - "maximumDistance": "Maximum Distance", - "@maximumDistance": { - "description": "Maximum distance setting label" - }, - - "alwaysBroadcastAfterMoving": "Always broadcast after moving {distance} meters", - "@alwaysBroadcastAfterMoving": { - "description": "Description for maximum distance", - "placeholders": { - "distance": { - "type": "String" - } - } - }, - - "minimumTimeInterval": "Minimum Time Interval", - "@minimumTimeInterval": { - "description": "Minimum time interval setting label" - }, - - "alwaysBroadcastEvery": "Always broadcast every {duration}", - "@alwaysBroadcastEvery": { - "description": "Description for time interval", - "placeholders": { - "duration": { - "type": "String" - } - } - }, - "save": "Save", "@save": { "description": "Save button label" }, - "cancel": "Cancel", "@cancel": { "description": "Cancel button label" }, - "close": "Close", "@close": { "description": "Close button label" }, - "about": "About", "@about": { "description": "About section header" }, - "appVersion": "App Version", "@appVersion": { "description": "App version label" }, - "appName": "App Name", "@appName": { "description": "App name label" }, - "aboutMeshCoreSar": "About MeshCore SAR", "@aboutMeshCoreSar": { "description": "About dialog title" }, - "aboutDescription": "A Search & Rescue application designed for emergency response teams. Features include:\n\n• BLE mesh networking for device-to-device communication\n• Offline maps with multiple layer options\n• Real-time team member tracking\n• SAR tactical markers (found person, fire, staging)\n• Contact management and messaging\n• GPS tracking with compass heading\n• Map tile caching for offline use", "@aboutDescription": { "description": "About dialog description" }, - "technologiesUsed": "Technologies Used:", "@technologiesUsed": { "description": "Technologies used section title" }, - "technologiesList": "• Flutter for cross-platform development\n• BLE (Bluetooth Low Energy) for mesh networking\n• OpenStreetMap for mapping\n• Provider for state management\n• SharedPreferences for local storage", "@technologiesList": { "description": "List of technologies used" }, - "moreInfo": "More Info", "@moreInfo": { "description": "More info button label" }, - - "learnMoreAbout": "Learn more about MeshCore SAR", - "@learnMoreAbout": { - "description": "Learn more link description" - }, - - "developer": "Developer", - "@developer": { - "description": "Developer section header" - }, - "packageName": "Package Name", "@packageName": { "description": "Package name label" }, - "sampleData": "Sample Data", "@sampleData": { "description": "Sample data section header" }, - "sampleDataDescription": "Load or clear sample contacts, channel messages, and SAR markers for testing", "@sampleDataDescription": { "description": "Sample data section description" }, - "loadSampleData": "Load Sample Data", "@loadSampleData": { "description": "Load sample data button" }, - "clearAllData": "Clear All Data", "@clearAllData": { "description": "Clear all data button" }, - "clearAllDataConfirmTitle": "Clear All Data", "@clearAllDataConfirmTitle": { "description": "Clear data confirmation dialog title" }, - "clearAllDataConfirmMessage": "This will clear all contacts and SAR markers. Are you sure?", "@clearAllDataConfirmMessage": { "description": "Clear data confirmation message" }, - "clear": "Clear", "@clear": { "description": "Clear button label" }, - "loadedSampleData": "Loaded {teamCount} team members, {channelCount} channels, {sarCount} SAR markers, {messageCount} messages", "@loadedSampleData": { "description": "Success message after loading sample data", @@ -475,7 +247,6 @@ } } }, - "failedToLoadSampleData": "Failed to load sample data: {error}", "@failedToLoadSampleData": { "description": "Error message when sample data fails to load", @@ -485,17 +256,14 @@ } } }, - "allDataCleared": "All data cleared", "@allDataCleared": { "description": "Success message after clearing all data" }, - "failedToStartBackgroundTracking": "Failed to start background tracking. Check permissions and BLE connection.", "@failedToStartBackgroundTracking": { "description": "Error message when background tracking fails to start" }, - "locationBroadcast": "Location broadcast: {latitude}, {longitude}", "@locationBroadcast": { "description": "Success message for location broadcast", @@ -508,57 +276,42 @@ } } }, - "defaultPinInfo": "The default pin for devices without a screen is 123456. Trouble pairing? Forget the bluetooth device in system settings.", "@defaultPinInfo": { "description": "Information about default PIN for pairing" }, - "noMessagesYet": "No messages yet", "@noMessagesYet": { "description": "Empty state message when there are no messages" }, - "pullDownToSync": "Pull down to sync messages", "@pullDownToSync": { "description": "Instruction to pull down to refresh messages" }, - "deleteContact": "Delete Contact", "@deleteContact": { "description": "Delete contact action label" }, - "delete": "Delete", "@delete": { "description": "Delete button label" }, - "viewOnMap": "View on Map", "@viewOnMap": { "description": "Action to view contact location on map" }, - "refresh": "Refresh", "@refresh": { "description": "Refresh button label" }, - - "sendDirectMessage": "Send", - "@sendDirectMessage": { - "description": "Action to send direct message to contact" - }, - "resetPath": "Reset Path (Re-route)", "@resetPath": { "description": "Action to reset contact path for re-routing" }, - "publicKeyCopied": "Public key copied to clipboard", "@publicKeyCopied": { "description": "Success message when public key is copied" }, - "copiedToClipboard": "{label} copied to clipboard", "@copiedToClipboard": { "description": "Success message when a value is copied to clipboard", @@ -568,12 +321,10 @@ } } }, - "pleaseEnterPassword": "Please enter a password", "@pleaseEnterPassword": { "description": "Validation message for empty password field" }, - "failedToSyncContacts": "Failed to sync contacts: {error}", "@failedToSyncContacts": { "description": "Error message when contact sync fails", @@ -583,17 +334,14 @@ } } }, - "loggedInSuccessfully": "Logged in successfully! Waiting for room messages...", "@loggedInSuccessfully": { "description": "Success message after successful room login" }, - "loginFailed": "Login failed - incorrect password", "@loginFailed": { "description": "Error message when room login fails" }, - "loggingIn": "Logging in to {roomName}...", "@loggingIn": { "description": "Status message during room login process", @@ -603,7 +351,6 @@ } } }, - "failedToSendLogin": "Failed to send login: {error}", "@failedToSendLogin": { "description": "Error message when login command fails to send", @@ -613,355 +360,239 @@ } } }, - "lowLocationAccuracy": "Low Location Accuracy", "@lowLocationAccuracy": { "description": "Warning title for low GPS accuracy" }, - "continue_": "Continue", "@continue_": { "description": "Continue button label" }, - "sendSarMarker": "Send SAR marker", "@sendSarMarker": { "description": "Action to send SAR marker" }, - "deleteDrawing": "Delete Drawing", "@deleteDrawing": { "description": "Action to delete a map drawing" }, - "drawingTools": "Drawing Tools", "@drawingTools": { "description": "Drawing tools section or menu title" }, - "drawLine": "Draw Line", "@drawLine": { "description": "Map drawing mode: line" }, - "drawLineDesc": "Draw a freehand line on the map", "@drawLineDesc": { "description": "Description for line drawing mode" }, - "drawRectangle": "Draw Rectangle", "@drawRectangle": { "description": "Map drawing mode: rectangle" }, - "drawRectangleDesc": "Draw a rectangular area on the map", "@drawRectangleDesc": { "description": "Description for rectangle drawing mode" }, - "measureDistance": "Measure Distance", "@measureDistance": { "description": "Map drawing mode: measure distance" }, - "measureDistanceDesc": "Long press two points to measure", "@measureDistanceDesc": { "description": "Description for distance measurement mode" }, - "clearMeasurement": "Clear Measurement", "@clearMeasurement": { "description": "Tooltip to clear measurement" }, - "distanceLabel": "Distance: {distance}", "@distanceLabel": { "description": "Label showing measured distance", "placeholders": { - "distance": {"type": "String"} + "distance": { + "type": "String" + } } }, - "longPressForSecondPoint": "Long press for second point", "@longPressForSecondPoint": { "description": "Instruction when first measurement point is set" }, - "longPressToStartMeasurement": "Long press to set first point", "@longPressToStartMeasurement": { "description": "Instruction to start measurement" }, - "longPressToStartNewMeasurement": "Long press to start new measurement", "@longPressToStartNewMeasurement": { "description": "Instruction to restart measurement after completion" }, - "shareDrawings": "Share Drawings", "@shareDrawings": { "description": "Action to share drawings to network" }, - "clearAllDrawings": "Clear All Drawings", "@clearAllDrawings": { "description": "Action to clear all local drawings" }, - "completeLine": "Complete Line", "@completeLine": { "description": "Tooltip to complete drawing a line" }, - "broadcastDrawingsToTeam": "Broadcast {count} drawing{plural} to team", "@broadcastDrawingsToTeam": { "description": "Subtitle showing how many drawings will be broadcast", "placeholders": { - "count": {"type": "int"}, - "plural": {"type": "String"} + "count": { + "type": "int" + }, + "plural": { + "type": "String" + } } }, - "removeAllDrawings": "Remove all {count} drawing{plural}", "@removeAllDrawings": { "description": "Subtitle for remove all drawings action", "placeholders": { - "count": {"type": "int"}, - "plural": {"type": "String"} + "count": { + "type": "int" + }, + "plural": { + "type": "String" + } } }, - "deleteAllDrawingsConfirm": "Delete all {count} drawing{plural} from the map?", "@deleteAllDrawingsConfirm": { "description": "Confirmation dialog message for deleting all drawings", "placeholders": { - "count": {"type": "int"}, - "plural": {"type": "String"} + "count": { + "type": "int" + }, + "plural": { + "type": "String" + } } }, - "drawing": "Drawing", "@drawing": { "description": "Generic drawing label" }, - "shareDrawingsCount": "Share {count} Drawing{plural}", "@shareDrawingsCount": { "description": "Title for share drawings dialog", "placeholders": { - "count": {"type": "int"}, - "plural": {"type": "String"} + "count": { + "type": "int" + }, + "plural": { + "type": "String" + } } }, - - "sentDrawingsToRoom": "Sent {count} map drawing{plural} to {roomName}", - "@sentDrawingsToRoom": { - "description": "System message when drawings are sent to room", - "placeholders": { - "count": {"type": "int"}, - "plural": {"type": "String"}, - "roomName": {"type": "String"} - } - }, - - "sharedDrawingsToRoom": "Shared {success}/{total} drawing{plural} to {roomName}", - "@sharedDrawingsToRoom": { - "description": "Snackbar message showing drawings shared to room", - "placeholders": { - "success": {"type": "int"}, - "total": {"type": "int"}, - "plural": {"type": "String"}, - "roomName": {"type": "String"} - } - }, - "showReceivedDrawings": "Show Received Drawings", "@showReceivedDrawings": { "description": "Toggle to show/hide received drawings from other team members" }, - "showingAllDrawings": "Showing all drawings", "@showingAllDrawings": { "description": "Subtitle when received drawings are visible" }, - "showingOnlyYourDrawings": "Showing only your drawings", "@showingOnlyYourDrawings": { "description": "Subtitle when received drawings are hidden" }, - "showSarMarkers": "Show SAR Markers", "@showSarMarkers": { "description": "Toggle to show/hide SAR markers on map" }, - "showingSarMarkers": "Showing SAR markers", "@showingSarMarkers": { "description": "Subtitle when SAR markers are visible" }, - "hidingSarMarkers": "Hiding SAR markers", "@hidingSarMarkers": { "description": "Subtitle when SAR markers are hidden" }, - "clearAll": "Clear All", "@clearAll": { "description": "Clear all button label" }, - - "noLocalDrawings": "No local drawings to share", - "@noLocalDrawings": { - "description": "Message when there are no drawings to share" - }, - "publicChannel": "Public Channel", "@publicChannel": { "description": "Public channel option for sharing" }, - "broadcastToAll": "Broadcast to all nearby nodes (ephemeral)", "@broadcastToAll": { "description": "Description for public channel broadcast" }, - "storedPermanently": "Stored permanently in room", "@storedPermanently": { "description": "Description for room storage permanence" }, - - "drawingsSentToPublicChannel": "Sent {count} map drawing{plural} to Public Channel", - "@drawingsSentToPublicChannel": { - "description": "System message when drawings are sent to public channel", - "placeholders": { - "count": {"type": "int"}, - "plural": {"type": "String"} - } - }, - - "drawingsSharedToPublicChannel": "Shared {success}/{total} drawings to Public Channel", - "@drawingsSharedToPublicChannel": { - "description": "Snackbar message showing success count for drawings shared to public channel", - "placeholders": { - "success": {"type": "int"}, - "total": {"type": "int"} - } - }, - "notConnectedToDevice": "Not connected to device", "@notConnectedToDevice": { "description": "Error message when device is not connected for direct messaging" }, - - "directMessage": "Direct Message", - "@directMessage": { - "description": "Title for direct message sheet" - }, - - "directMessageSentTo": "Direct message sent to {contactName}", - "@directMessageSentTo": { - "description": "Success message after sending direct message", - "placeholders": { - "contactName": { - "type": "String" - } - } - }, - - "failedToSend": "Failed to send: {error}", - "@failedToSend": { - "description": "Error message when sending direct message fails", - "placeholders": { - "error": { - "type": "String" - } - } - }, - - "directMessageInfo": "This message will be sent directly to {contactName}. It will also appear in the main messages feed.", - "@directMessageInfo": { - "description": "Information about direct messaging behavior", - "placeholders": { - "contactName": { - "type": "String" - } - } - }, - "typeYourMessage": "Type your message...", "@typeYourMessage": { "description": "Placeholder text for message input field" }, - "quickLocationMarker": "Quick location marker", "@quickLocationMarker": { "description": "Subtitle for SAR marker sheet header" }, - "markerType": "Marker Type", "@markerType": { "description": "Label for marker type selection section" }, - "sendTo": "Send To", "@sendTo": { "description": "Label for destination selection section" }, - "noDestinationsAvailable": "No destinations available.", "@noDestinationsAvailable": { "description": "Warning when no rooms or channels exist" }, - "selectDestination": "Select destination...", "@selectDestination": { "description": "Placeholder for destination dropdown" }, - "ephemeralBroadcastInfo": "Ephemeral: Broadcast over-the-air only. Not stored - nodes must be online.", "@ephemeralBroadcastInfo": { "description": "Information about ephemeral channel broadcasts" }, - "persistentRoomInfo": "Persistent: Stored immutably in room. Synced automatically and preserved offline.", "@persistentRoomInfo": { "description": "Information about persistent room storage" }, - "location": "Location", "@location": { "description": "Label for location section" }, - - "myLocation": "My Location", - "@myLocation": { - "description": "Button label to insert current GPS location" - }, - "fromMap": "From Map", "@fromMap": { "description": "Badge showing location is from map tap" }, - "gettingLocation": "Getting location...", "@gettingLocation": { "description": "Loading message while fetching GPS location" }, - "locationError": "Location Error", "@locationError": { "description": "Title for location error messages" }, - "retry": "Retry", "@retry": { "description": "Retry button label" }, - "refreshLocation": "Refresh location", "@refreshLocation": { "description": "Tooltip for refresh location button" }, - "accuracyMeters": "Accuracy: ±{accuracy}m", "@accuracyMeters": { "description": "Display of GPS accuracy in meters", @@ -971,17 +602,14 @@ } } }, - "notesOptional": "Notes (optional)", "@notesOptional": { "description": "Label for optional notes field" }, - "addAdditionalInformation": "Add additional information...", "@addAdditionalInformation": { "description": "Placeholder for notes field" }, - "lowAccuracyWarning": "Location accuracy is ±{accuracy}m. This may not be accurate enough for SAR operations.\n\nContinue anyway?", "@lowAccuracyWarning": { "description": "Warning dialog content for low GPS accuracy", @@ -991,37 +619,30 @@ } } }, - "loginToRoom": "Login to Room", "@loginToRoom": { "description": "Title for room login dialog" }, - "enterPasswordInfo": "Enter the password to access this room. The password will be saved for future use.", "@enterPasswordInfo": { "description": "Information about room password" }, - "password": "Password", "@password": { "description": "Password field label" }, - "enterRoomPassword": "Enter room password", "@enterRoomPassword": { "description": "Password field hint" }, - "loggingInDots": "Logging in...", "@loggingInDots": { "description": "Button text while logging in" }, - "login": "Login", "@login": { "description": "Login button label" }, - "failedToAddRoom": "Failed to add room to device: {error}\n\nThe room may not have advertised yet.\nTry waiting for the room to broadcast.", "@failedToAddRoom": { "description": "Error message when adding room fails", @@ -1031,57 +652,26 @@ } } }, - "direct": "Direct", "@direct": { "description": "Direct routing indicator" }, - "flood": "Flood", "@flood": { "description": "Flood routing indicator" }, - - "admin": "Admin", - "@admin": { - "description": "Admin badge label" - }, - "loggedIn": "Logged In", "@loggedIn": { "description": "Logged in status badge" }, - "noGpsData": "No GPS data", "@noGpsData": { "description": "Message when GPS data is not available" }, - "distance": "Distance", "@distance": { "description": "Distance label" }, - - "pingingDirect": "Pinging {name} (direct via path)...", - "@pingingDirect": { - "description": "Status message for direct ping", - "placeholders": { - "name": { - "type": "String" - } - } - }, - - "pingingFlood": "Pinging {name} (flooding - no path)...", - "@pingingFlood": { - "description": "Status message for flood ping", - "placeholders": { - "name": { - "type": "String" - } - } - }, - "directPingTimeout": "Direct ping timeout - retrying {name} with flooding...", "@directPingTimeout": { "description": "Warning when direct ping times out", @@ -1091,25 +681,6 @@ } } }, - - "pingSuccessful": "Ping successful to {name}{fallback}", - "@pingSuccessful": { - "description": "Success message for ping", - "placeholders": { - "name": { - "type": "String" - }, - "fallback": { - "type": "String" - } - } - }, - - "viaFloodingFallback": " (via flooding fallback)", - "@viaFloodingFallback": { - "description": "Suffix for ping success with fallback" - }, - "pingFailed": "Ping failed to {name} - no response received", "@pingFailed": { "description": "Error message when ping fails", @@ -1119,7 +690,6 @@ } } }, - "deleteContactConfirmation": "Are you sure you want to delete \"{name}\"?\n\nThis will remove the contact from both the app and the companion radio device.", "@deleteContactConfirmation": { "description": "Confirmation message for deleting contact", @@ -1129,27 +699,6 @@ } } }, - - "removingContact": "Removing {name}...", - "@removingContact": { - "description": "Status message while removing contact", - "placeholders": { - "name": { - "type": "String" - } - } - }, - - "contactRemoved": "Contact \"{name}\" removed", - "@contactRemoved": { - "description": "Success message after removing contact", - "placeholders": { - "name": { - "type": "String" - } - } - }, - "failedToRemoveContact": "Failed to remove contact: {error}", "@failedToRemoveContact": { "description": "Error message when contact removal fails", @@ -1159,117 +708,86 @@ } } }, - "type": "Type", "@type": { "description": "Contact type label" }, - "publicKey": "Public Key", "@publicKey": { "description": "Public key label" }, - "lastSeen": "Last Seen", "@lastSeen": { "description": "Last seen label" }, - "roomStatus": "Room Status", "@roomStatus": { "description": "Room status section header" }, - "loginStatus": "Login Status", "@loginStatus": { "description": "Login status label" }, - "notLoggedIn": "Not Logged In", "@notLoggedIn": { "description": "Not logged in status" }, - "adminAccess": "Admin Access", "@adminAccess": { "description": "Admin access label" }, - "yes": "Yes", "@yes": { "description": "Yes answer" }, - "no": "No", "@no": { "description": "No answer" }, - "permissions": "Permissions", "@permissions": { "description": "Permissions label" }, - "passwordSaved": "Password Saved", "@passwordSaved": { "description": "Password saved label" }, - "locationColon": "Location:", "@locationColon": { "description": "Location section header" }, - "telemetry": "Telemetry", "@telemetry": { "description": "Telemetry section header" }, - - "requestingTelemetry": "Requesting telemetry from {name}...", - "@requestingTelemetry": { - "description": "Status message while requesting telemetry", - "placeholders": { - "name": { - "type": "String" - } - } - }, - "voltage": "Voltage", "@voltage": { "description": "Voltage label" }, - "battery": "Battery", "@battery": { "description": "Battery label" }, - "temperature": "Temperature", "@temperature": { "description": "Temperature label" }, - "humidity": "Humidity", "@humidity": { "description": "Humidity label" }, - "pressure": "Pressure", "@pressure": { "description": "Pressure label" }, - "gpsTelemetry": "GPS (Telemetry)", "@gpsTelemetry": { "description": "GPS from telemetry label" }, - "updated": "Updated", "@updated": { "description": "Updated timestamp label" }, - "pathResetInfo": "Path reset for {name}. Next message will find a new route.", "@pathResetInfo": { "description": "Info message after path reset", @@ -1279,102 +797,74 @@ } } }, - "reLoginToRoom": "Re-Login to Room", "@reLoginToRoom": { "description": "Button to re-login to room" }, - "heading": "Heading", "@heading": { "description": "Compass heading label" }, - "elevation": "Elevation", "@elevation": { "description": "Elevation/altitude label" }, - "accuracy": "Accuracy", "@accuracy": { "description": "GPS accuracy label" }, - - "distance": "Distance", - "@distance": { - "description": "Distance label in compass" - }, - "bearing": "Bearing", "@bearing": { "description": "Bearing label in compass" }, - "direction": "Direction", "@direction": { "description": "Direction label in compass" }, - "filterMarkers": "Filter Markers", "@filterMarkers": { "description": "Title for filter markers dialog" }, - "filterMarkersTooltip": "Filter markers", "@filterMarkersTooltip": { "description": "Tooltip for filter button" }, - "contactsFilter": "Contacts", "@contactsFilter": { "description": "Filter option for contacts" }, - "repeatersFilter": "Repeaters", "@repeatersFilter": { "description": "Filter option for repeaters" }, - "sarMarkers": "SAR Markers", "@sarMarkers": { "description": "SAR markers section header" }, - "foundPerson": "Found Person", "@foundPerson": { "description": "Found person SAR marker type" }, - "fire": "Fire", "@fire": { "description": "Fire SAR marker type" }, - "stagingArea": "Staging Area", "@stagingArea": { "description": "Staging area SAR marker type" }, - "showAll": "Show All", "@showAll": { "description": "Button to show all filters" }, - - "nearbyContacts": "Nearby Contacts", - "@nearbyContacts": { - "description": "Title for nearby contacts list in compass" - }, - "locationUnavailable": "Location unavailable", "@locationUnavailable": { "description": "Message when GPS location is unavailable" }, - "ahead": "ahead", "@ahead": { "description": "Relative bearing direction - ahead" }, - "degreesRight": "{degrees}° right", "@degreesRight": { "description": "Relative bearing direction - right", @@ -1384,7 +874,6 @@ } } }, - "degreesLeft": "{degrees}° left", "@degreesLeft": { "description": "Relative bearing direction - left", @@ -1394,7 +883,6 @@ } } }, - "latLonFormat": "Lat: {latitude} Lon: {longitude}", "@latLonFormat": { "description": "Latitude and longitude display format", @@ -1407,527 +895,118 @@ } } }, - "noContactsYet": "No contacts yet", "@noContactsYet": { "description": "Empty state message when there are no contacts" }, - "connectToDeviceToLoadContacts": "Connect to a device to load contacts", "@connectToDeviceToLoadContacts": { "description": "Instruction to connect device to load contacts" }, - "teamMembers": "Team Members", "@teamMembers": { "description": "Section header for team members (chat contacts)" }, - "repeaters": "Repeaters", "@repeaters": { "description": "Section header for repeater nodes" }, - "rooms": "Rooms", "@rooms": { "description": "Section header for rooms" }, - "channels": "Channels", "@channels": { "description": "Section header for broadcast channels" }, - - "cacheStatistics": "Cache Statistics", - "@cacheStatistics": { - "description": "Title for cache statistics section" - }, - - "totalTiles": "Total Tiles", - "@totalTiles": { - "description": "Label for total number of cached tiles" - }, - - "cacheSize": "Cache Size", - "@cacheSize": { - "description": "Label for cache size in MB" - }, - - "storeName": "Store Name", - "@storeName": { - "description": "Label for cache store name" - }, - - "noCacheStatistics": "No cache statistics available", - "@noCacheStatistics": { - "description": "Message when cache statistics are unavailable" - }, - - "downloadRegion": "Download Region", - "@downloadRegion": { - "description": "Title for download region section" - }, - - "mapLayer": "Map Layer", - "@mapLayer": { - "description": "Label for map layer selection" - }, - - "regionBounds": "Region Bounds", - "@regionBounds": { - "description": "Title for region bounds input section" - }, - - "north": "North", - "@north": { - "description": "Label for north coordinate" - }, - - "south": "South", - "@south": { - "description": "Label for south coordinate" - }, - - "east": "East", - "@east": { - "description": "Label for east coordinate" - }, - - "west": "West", - "@west": { - "description": "Label for west coordinate" - }, - - "zoomLevels": "Zoom Levels", - "@zoomLevels": { - "description": "Title for zoom levels section" - }, - - "minZoom": "Min: {zoom}", - "@minZoom": { - "description": "Label for minimum zoom level", - "placeholders": { - "zoom": { - "type": "int" - } - } - }, - - "maxZoom": "Max: {zoom}", - "@maxZoom": { - "description": "Label for maximum zoom level", - "placeholders": { - "zoom": { - "type": "int" - } - } - }, - - "downloadingDots": "Downloading...", - "@downloadingDots": { - "description": "Status message during download" - }, - - "cancelDownload": "Cancel Download", - "@cancelDownload": { - "description": "Button to cancel download" - }, - - "downloadRegionButton": "Download Region", - "@downloadRegionButton": { - "description": "Button to start region download" - }, - - "downloadNote": "Note: Large regions or high zoom levels may take significant time and storage.", - "@downloadNote": { - "description": "Warning about download size and time" - }, - - "cacheManagement": "Cache Management", - "@cacheManagement": { - "description": "Title for cache management section" - }, - - "clearAllMaps": "Clear All Maps", - "@clearAllMaps": { - "description": "Button to clear all cached maps" - }, - - "clearMapsConfirmTitle": "Clear All Maps", - "@clearMapsConfirmTitle": { - "description": "Title for clear maps confirmation dialog" - }, - - "clearMapsConfirmMessage": "Are you sure you want to delete all downloaded maps? This action cannot be undone.", - "@clearMapsConfirmMessage": { - "description": "Confirmation message for clearing maps" - }, - - "mapDownloadCompleted": "Map download completed!", - "@mapDownloadCompleted": { - "description": "Success message after map download" - }, - - "cacheClearedSuccessfully": "Cache cleared successfully!", - "@cacheClearedSuccessfully": { - "description": "Success message after clearing cache" - }, - - "downloadCancelled": "Download cancelled", - "@downloadCancelled": { - "description": "Message when download is cancelled" - }, - - "startingDownload": "Starting download...", - "@startingDownload": { - "description": "Initial status when download begins" - }, - - "downloadingMapTiles": "Downloading map tiles...", - "@downloadingMapTiles": { - "description": "Status during tile download" - }, - - "downloadCompletedSuccessfully": "Download completed successfully!", - "@downloadCompletedSuccessfully": { - "description": "Status after successful download" - }, - - "cancellingDownload": "Cancelling download...", - "@cancellingDownload": { - "description": "Status while cancelling download" - }, - - "errorLoadingStats": "Error loading stats: {error}", - "@errorLoadingStats": { - "description": "Error message when loading cache stats fails", - "placeholders": { - "error": { - "type": "String" - } - } - }, - - "downloadFailed": "Download failed: {error}", - "@downloadFailed": { - "description": "Error message when download fails", - "placeholders": { - "error": { - "type": "String" - } - } - }, - - "cancelFailed": "Cancel failed: {error}", - "@cancelFailed": { - "description": "Error message when cancel fails", - "placeholders": { - "error": { - "type": "String" - } - } - }, - - "clearCacheFailed": "Clear cache failed: {error}", - "@clearCacheFailed": { - "description": "Error message when clearing cache fails", - "placeholders": { - "error": { - "type": "String" - } - } - }, - - "minZoomError": "Min zoom: {error}", - "@minZoomError": { - "description": "Validation error for minimum zoom", - "placeholders": { - "error": { - "type": "String" - } - } - }, - - "maxZoomError": "Max zoom: {error}", - "@maxZoomError": { - "description": "Validation error for maximum zoom", - "placeholders": { - "error": { - "type": "String" - } - } - }, - - "minZoomGreaterThanMax": "Minimum zoom must be less than or equal to maximum zoom", - "@minZoomGreaterThanMax": { - "description": "Validation error when min zoom > max zoom" - }, - "selectMapLayer": "Select Map Layer", "@selectMapLayer": { "description": "Title for map layer selection dialog" }, - - "mapOptions": "Map Options", - "@mapOptions": { - "description": "Title for map options dialog" - }, - - "showLegend": "Show Legend", - "@showLegend": { - "description": "Toggle for showing map legend" - }, - - "displayMarkerTypeCounts": "Display marker type counts", - "@displayMarkerTypeCounts": { - "description": "Description for show legend toggle" - }, - - "rotateMapWithHeading": "Rotate Map with Heading", - "@rotateMapWithHeading": { - "description": "Toggle for rotating map with compass heading" - }, - - "mapFollowsDirection": "Map follows your direction when moving", - "@mapFollowsDirection": { - "description": "Description for rotate map toggle" - }, - - "resetMapRotation": "Reset Rotation", - "@resetMapRotation": { - "description": "Button to reset map rotation to north" - }, - - "resetMapRotationTooltip": "Reset map to north", - "@resetMapRotationTooltip": { - "description": "Tooltip for reset rotation button" - }, - - "showMapDebugInfo": "Show Map Debug Info", - "@showMapDebugInfo": { - "description": "Toggle for showing map debug information" - }, - - "displayZoomLevelBounds": "Display zoom level and bounds", - "@displayZoomLevelBounds": { - "description": "Description for debug info toggle" - }, - - "fullscreenMode": "Fullscreen Mode", - "@fullscreenMode": { - "description": "Toggle for fullscreen map mode" - }, - - "hideUiFullMapView": "Hide all UI controls for full map view", - "@hideUiFullMapView": { - "description": "Description for fullscreen mode toggle" - }, - "openStreetMap": "OpenStreetMap", "@openStreetMap": { "description": "OpenStreetMap layer name" }, - "openTopoMap": "OpenTopoMap", "@openTopoMap": { "description": "OpenTopoMap layer name" }, - "esriSatellite": "ESRI Satellite", "@esriSatellite": { "description": "ESRI Satellite imagery layer name" }, - "googleHybrid": "Google Hybrid", "@googleHybrid": { "description": "Google Hybrid layer name (satellite + labels)" }, - "googleRoadmap": "Google Roadmap", "@googleRoadmap": { "description": "Google Roadmap layer name (street map)" }, - "googleTerrain": "Google Terrain", "@googleTerrain": { "description": "Google Terrain layer name (topographic)" }, - - "downloadVisibleArea": "Download visible area", - "@downloadVisibleArea": { - "description": "Tooltip for download visible area button" - }, - - "initializingMap": "Initializing map...", - "@initializingMap": { - "description": "Loading message for map initialization" - }, - "dragToPosition": "Drag to Position", "@dragToPosition": { "description": "Label when dragging a pin on map" }, - "createSarMarker": "Create SAR Marker", "@createSarMarker": { "description": "Label for creating SAR marker from pin" }, - "compass": "Compass", "@compass": { "description": "Compass title in detailed compass dialog" }, - "navigationAndContacts": "Navigation & Contacts", "@navigationAndContacts": { "description": "Subtitle for compass dialog" }, - "sarAlert": "SAR ALERT", "@sarAlert": { "description": "Label for SAR alert badge on messages" }, - - "messageSentToPublicChannel": "Message sent to public channel", - "@messageSentToPublicChannel": { - "description": "Success message when message is sent to public channel" - }, - - "pleaseSelectRoomToSendSar": "Please select a room to send SAR marker", - "@pleaseSelectRoomToSendSar": { - "description": "Error when no room is selected for SAR marker" - }, - - "failedToSendSarMarker": "Failed to send SAR marker: {error}", - "@failedToSendSarMarker": { - "description": "Error message when SAR marker fails to send", - "placeholders": { - "error": { - "type": "String" - } - } - }, - - "sarMarkerSentTo": "SAR marker sent to {roomName}", - "@sarMarkerSentTo": { - "description": "Success message when SAR marker is sent to room", - "placeholders": { - "roomName": { - "type": "String" - } - } - }, - - "notConnectedCannotSync": "Not connected - cannot sync messages", - "@notConnectedCannotSync": { - "description": "Warning when trying to sync messages while not connected" - }, - - "syncedMessageCount": "Synced {count} message(s)", - "@syncedMessageCount": { - "description": "Success message showing number of synced messages", - "placeholders": { - "count": { - "type": "int" - } - } - }, - - "noNewMessages": "No new messages", - "@noNewMessages": { - "description": "Info message when no new messages to sync" - }, - - "syncFailed": "Sync failed: {error}", - "@syncFailed": { - "description": "Error message when sync fails", - "placeholders": { - "error": { - "type": "String" - } - } - }, - - "failedToResendMessage": "Failed to resend message", - "@failedToResendMessage": { - "description": "Error when message retry fails" - }, - - "retryingMessage": "Retrying message...", - "@retryingMessage": { - "description": "Info message when retrying a failed message" - }, - - "retryFailed": "Retry failed: {error}", - "@retryFailed": { - "description": "Error message when retry fails", - "placeholders": { - "error": { - "type": "String" - } - } - }, - "textCopiedToClipboard": "Text copied to clipboard", "@textCopiedToClipboard": { "description": "Success message when text is copied" }, - "cannotReplySenderMissing": "Cannot reply: sender information missing", "@cannotReplySenderMissing": { "description": "Error when sender info is missing for reply" }, - "cannotReplyContactNotFound": "Cannot reply: contact not found", "@cannotReplyContactNotFound": { "description": "Error when contact not found for reply" }, - - "messageDeleted": "Message deleted", - "@messageDeleted": { - "description": "Info message when message is deleted" - }, - "copyText": "Copy text", "@copyText": { "description": "Option to copy message text to clipboard" }, - - "textCopiedToClipboard": "Text copied to clipboard", - "@textCopiedToClipboard": { - "description": "Success message when text is copied" - }, - "saveAsTemplate": "Save as Template", "@saveAsTemplate": { "description": "Option to save SAR message as a reusable template" }, - "templateSaved": "Template saved successfully", "@templateSaved": { "description": "Success message when SAR template is saved" }, - "templateAlreadyExists": "Template with this emoji already exists", "@templateAlreadyExists": { "description": "Error message when trying to save duplicate template" }, - "deleteMessage": "Delete message", "@deleteMessage": { "description": "Dialog title for deleting a message" }, - "deleteMessageConfirmation": "Are you sure you want to delete this message?", "@deleteMessageConfirmation": { "description": "Confirmation text for message deletion" }, - "shareLocation": "Share location", "@shareLocation": { "description": "Option to share SAR marker location" }, - "shareLocationText": "{markerInfo}\n\nCoordinates: {lat}, {lon}\n\nGoogle Maps: {url}", "@shareLocationText": { "description": "Formatted text for sharing SAR marker location", @@ -1946,27 +1025,14 @@ } } }, - "sarLocationShare": "SAR Location", "@sarLocationShare": { "description": "Subject line when sharing SAR marker location" }, - - "locationShared": "Location shared", - "@locationShared": { - "description": "Success message when location is shared" - }, - - "refreshedContacts": "Refreshed contacts", - "@refreshedContacts": { - "description": "Success message when contacts are refreshed" - }, - "justNow": "Just now", "@justNow": { "description": "Time indicator for very recent activity" }, - "minutesAgo": "{minutes}m ago", "@minutesAgo": { "description": "Time indicator for minutes ago", @@ -1976,7 +1042,6 @@ } } }, - "hoursAgo": "{hours}h ago", "@hoursAgo": { "description": "Time indicator for hours ago", @@ -1986,7 +1051,6 @@ } } }, - "daysAgo": "{days}d ago", "@daysAgo": { "description": "Time indicator for days ago", @@ -1996,7 +1060,6 @@ } } }, - "secondsAgo": "{seconds}s ago", "@secondsAgo": { "description": "Time indicator for seconds ago", @@ -2006,22 +1069,18 @@ } } }, - "sending": "Sending...", "@sending": { "description": "Delivery status: sending" }, - "sent": "Sent", "@sent": { "description": "Delivery status: sent" }, - "delivered": "Delivered", "@delivered": { "description": "Delivery status: delivered" }, - "deliveredWithTime": "Delivered ({time}ms)", "@deliveredWithTime": { "description": "Delivery status with round-trip time", @@ -2031,17 +1090,14 @@ } } }, - "failed": "Failed", "@failed": { "description": "Delivery status: failed" }, - "broadcast": "Broadcast", "@broadcast": { "description": "Delivery status for channel messages (no echoes yet)" }, - "deliveredToContacts": "Delivered to {delivered}/{total} contacts", "@deliveredToContacts": { "description": "Grouped message delivery count", @@ -2054,225 +1110,87 @@ } } }, - "allDelivered": "All delivered", "@allDelivered": { "description": "Status when all recipients received the message" }, - "recipientDetails": "Recipient Details", "@recipientDetails": { "description": "Header for expandable recipient list" }, - "pending": "Pending", "@pending": { "description": "Delivery status: pending/waiting" }, - "sarMarkerFoundPerson": "Found Person", "@sarMarkerFoundPerson": { "description": "SAR marker type: found person" }, - "sarMarkerFire": "Fire Location", "@sarMarkerFire": { "description": "SAR marker type: fire" }, - "sarMarkerStagingArea": "Staging Area", "@sarMarkerStagingArea": { "description": "SAR marker type: staging area" }, - "sarMarkerObject": "Object Found", "@sarMarkerObject": { "description": "SAR marker type: object" }, - "from": "From", "@from": { "description": "Sender label in notifications" }, - "coordinates": "Coordinates", "@coordinates": { "description": "Coordinates label" }, - "tapToViewOnMap": "Tap to view on map", "@tapToViewOnMap": { "description": "Notification action text" }, - "radioSettings": "Radio Settings", "@radioSettings": { "description": "Section title for radio settings" }, - "frequencyMHz": "Frequency (MHz)", "@frequencyMHz": { "description": "Label for radio frequency field" }, - "frequencyExample": "e.g., 869.618", "@frequencyExample": { "description": "Helper text example for frequency" }, - "bandwidth": "Bandwidth", "@bandwidth": { "description": "Label for bandwidth dropdown" }, - "spreadingFactor": "Spreading Factor", "@spreadingFactor": { "description": "Label for spreading factor dropdown" }, - "codingRate": "Coding Rate", "@codingRate": { "description": "Label for coding rate dropdown" }, - "txPowerDbm": "TX Power (dBm)", "@txPowerDbm": { "description": "Label for TX power field" }, - "maxPowerDbm": "Max: {power} dBm", "@maxPowerDbm": { "description": "Helper text showing maximum TX power", "placeholders": { - "power": { "type": "int" } + "power": { + "type": "int" + } } }, - "you": "You", "@you": { "description": "Label for the current user in message bubbles" }, - - "offlineVectorMaps": "Offline Vector Maps", - "@offlineVectorMaps": { - "description": "Title for offline vector maps section" - }, - - "offlineVectorMapsDescription": "Import and manage offline vector map tiles (MBTiles format) for use without internet connection", - "@offlineVectorMapsDescription": { - "description": "Description for offline vector maps section" - }, - - "importMbtiles": "Import MBTiles File", - "@importMbtiles": { - "description": "Button to import MBTiles file" - }, - - "importMbtilesNote": "Supports MBTiles files with vector tiles (PBF/MVT format). Geofabrik extracts work great!", - "@importMbtilesNote": { - "description": "Note about supported MBTiles file types" - }, - - "noMbtilesFiles": "No offline vector maps found", - "@noMbtilesFiles": { - "description": "Message when no MBTiles files are available" - }, - - "mbtilesImportedSuccessfully": "MBTiles file imported successfully", - "@mbtilesImportedSuccessfully": { - "description": "Success message after importing MBTiles file" - }, - - "failedToImportMbtiles": "Failed to import MBTiles file", - "@failedToImportMbtiles": { - "description": "Error message when MBTiles import fails" - }, - - "deleteMbtilesConfirmTitle": "Delete Offline Map", - "@deleteMbtilesConfirmTitle": { - "description": "Title for delete MBTiles confirmation dialog" - }, - - "deleteMbtilesConfirmMessage": "Are you sure you want to delete \"{name}\"? This will permanently remove the offline map.", - "@deleteMbtilesConfirmMessage": { - "description": "Confirmation message for deleting MBTiles file", - "placeholders": { - "name": { - "type": "String" - } - } - }, - - "mbtilesDeletedSuccessfully": "Offline map deleted successfully", - "@mbtilesDeletedSuccessfully": { - "description": "Success message after deleting MBTiles file" - }, - - "failedToDeleteMbtiles": "Failed to delete offline map", - "@failedToDeleteMbtiles": { - "description": "Error message when MBTiles deletion fails" - }, - - "importExportCachedTiles": "Import/Export Cached Tiles", - "@importExportCachedTiles": { - "description": "Title for import/export section" - }, - - "importExportDescription": "Backup, share, and restore downloaded map tiles between devices", - "@importExportDescription": { - "description": "Description for import/export functionality" - }, - - "exportTilesToFile": "Export Tiles to File", - "@exportTilesToFile": { - "description": "Button to export tiles to archive file" - }, - - "importTilesFromFile": "Import Tiles from File", - "@importTilesFromFile": { - "description": "Button to import tiles from archive file" - }, - - "selectExportLocation": "Select Export Location", - "@selectExportLocation": { - "description": "Title for export file picker" - }, - - "selectImportFile": "Select Tile Archive", - "@selectImportFile": { - "description": "Title for import file picker" - }, - - "exportingTiles": "Exporting tiles...", - "@exportingTiles": { - "description": "Status message during export" - }, - - "importingTiles": "Importing tiles...", - "@importingTiles": { - "description": "Status message during import" - }, - - "exportSuccess": "Exported {count} tiles successfully", - "@exportSuccess": { - "description": "Success message after export", - "placeholders": { - "count": { - "type": "int" - } - } - }, - - "importSuccess": "Imported {count} stores successfully", - "@importSuccess": { - "description": "Success message after import", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "exportFailed": "Export failed: {error}", "@exportFailed": { "description": "Error message when export fails", @@ -2282,7 +1200,6 @@ } } }, - "importFailed": "Import failed: {error}", "@importFailed": { "description": "Error message when import fails", @@ -2292,217 +1209,74 @@ } } }, - - "exportNote": "Creates a compressed archive (.fmtc) file that can be shared and imported on other devices.", - "@exportNote": { - "description": "Note about export functionality" - }, - - "importNote": "Imports map tiles from a previously exported archive file. Tiles will be merged with existing cache.", - "@importNote": { - "description": "Note about import functionality" - }, - - "noTilesToExport": "No tiles available to export", - "@noTilesToExport": { - "description": "Message when cache is empty" - }, - - "archiveContainsStores": "Archive contains {count} stores", - "@archiveContainsStores": { - "description": "Information about archive contents", - "placeholders": { - "count": { - "type": "int" - } - } - }, - - "vectorTiles": "Vector Tiles", - "@vectorTiles": { - "description": "Label for vector tile type" - }, - - "schema": "Schema", - "@schema": { - "description": "Label for vector tile schema" - }, - "unknown": "Unknown", "@unknown": { "description": "Unknown value label" }, - - "bounds": "Bounds", - "@bounds": { - "description": "Label for geographic bounds" - }, - "onlineLayers": "Online Layers", "@onlineLayers": { "description": "Section header for online map layers" }, - - "offlineLayers": "Offline Layers", - "@offlineLayers": { - "description": "Section header for offline map layers (MBTiles)" - }, - "locationTrail": "Location Trail", "@locationTrail": { "description": "Location trail title" }, - "showTrailOnMap": "Show Trail on Map", "@showTrailOnMap": { "description": "Toggle to show/hide trail on map" }, - "trailVisible": "Trail is visible on the map", "@trailVisible": { "description": "Trail visibility status - visible" }, - "trailHiddenRecording": "Trail is hidden (still recording)", "@trailHiddenRecording": { "description": "Trail visibility status - hidden but recording" }, - - "distance": "Distance", - "@distance": { - "description": "Distance label" - }, - "duration": "Duration", "@duration": { "description": "Duration label" }, - "points": "Points", "@points": { "description": "Trail points count label" }, - "clearTrail": "Clear Trail", "@clearTrail": { "description": "Button to clear location trail" }, - "clearTrailQuestion": "Clear Trail?", "@clearTrailQuestion": { "description": "Confirmation dialog title" }, - "clearTrailConfirmation": "Are you sure you want to clear the current location trail? This action cannot be undone.", "@clearTrailConfirmation": { "description": "Confirmation dialog message" }, - "noTrailRecorded": "No trail recorded yet", "@noTrailRecorded": { "description": "Message when no trail exists" }, - "startTrackingToRecord": "Start location tracking to record your trail", "@startTrackingToRecord": { "description": "Instructions to start trail recording" }, - "trailControls": "Trail Controls", "@trailControls": { "description": "Trail controls tooltip" }, - - "exportTrailToGpx": "Export Trail to GPX", - "@exportTrailToGpx": { - "description": "Button label to export trail to GPX file" - }, - - "importTrailFromGpx": "Import Trail from GPX", - "@importTrailFromGpx": { - "description": "Button label to import trail from GPX file" - }, - - "trailExportedSuccessfully": "Trail exported successfully!", - "@trailExportedSuccessfully": { - "description": "Success message when trail is exported" - }, - - "failedToExportTrail": "Failed to export trail", - "@failedToExportTrail": { - "description": "Error message when trail export fails" - }, - - "failedToImportTrail": "Failed to import trail: {error}", - "@failedToImportTrail": { - "description": "Error message when trail import fails", - "placeholders": { - "error": { - "type": "String" - } - } - }, - - "importTrail": "Import Trail", - "@importTrail": { - "description": "Import trail dialog title" - }, - - "importTrailQuestion": "Import trail with {pointCount} points?\n\nYou can replace your current trail or view it alongside.", - "@importTrailQuestion": { - "description": "Import trail confirmation dialog content", - "placeholders": { - "pointCount": { - "type": "int" - } - } - }, - - "viewAlongside": "View Alongside", - "@viewAlongside": { - "description": "Button to import trail alongside current trail" - }, - - "replaceCurrent": "Replace Current", - "@replaceCurrent": { - "description": "Button to replace current trail with imported trail" - }, - - "trailImported": "Trail imported! ({pointCount} points)", - "@trailImported": { - "description": "Success message when trail is imported", - "placeholders": { - "pointCount": { - "type": "int" - } - } - }, - - "trailReplaced": "Trail replaced! ({pointCount} points)", - "@trailReplaced": { - "description": "Success message when trail is replaced", - "placeholders": { - "pointCount": { - "type": "int" - } - } - }, - "contactTrails": "Contact Trails", "@contactTrails": { "description": "Contact trails section header" }, - "showAllContactTrails": "Show All Contact Trails", "@showAllContactTrails": { "description": "Toggle label to show all contact trails" }, - "noContactsWithLocationHistory": "No contacts with location history", "@noContactsWithLocationHistory": { "description": "Subtitle when no contacts have trails" }, - "showingTrailsForContacts": "Showing trails for {count} contacts", "@showingTrailsForContacts": { "description": "Subtitle showing number of contacts with trails", @@ -2512,117 +1286,94 @@ } } }, - "individualContactTrails": "Individual Contact Trails", "@individualContactTrails": { "description": "Expansion tile title for individual contact trails" }, - "deviceInformation": "Device Information", "@deviceInformation": { "description": "Device information section header" }, - "bleName": "BLE Name", "@bleName": { "description": "Bluetooth Low Energy device name label" }, - "meshName": "Mesh Name", "@meshName": { "description": "Mesh network name label" }, - "notSet": "Not set", "@notSet": { "description": "Label when a value is not set" }, - "model": "Model", "@model": { "description": "Device model label" }, - "version": "Version", "@version": { "description": "Version label" }, - "buildDate": "Build Date", "@buildDate": { "description": "Firmware build date label" }, - "firmware": "Firmware", "@firmware": { "description": "Firmware label" }, - "maxContacts": "Max Contacts", "@maxContacts": { "description": "Maximum contacts capacity label" }, - "maxChannels": "Max Channels", "@maxChannels": { "description": "Maximum channels capacity label" }, - "publicInfo": "Public Info", "@publicInfo": { "description": "Public information section header" }, - "meshNetworkName": "Mesh Network Name", "@meshNetworkName": { "description": "Mesh network name field label" }, - "nameBroadcastInMesh": "Name broadcast in mesh advertisements", "@nameBroadcastInMesh": { "description": "Helper text for mesh network name field" }, - "telemetryAndLocationSharing": "Telemetry & Location Sharing", "@telemetryAndLocationSharing": { "description": "Telemetry and location sharing toggle label" }, - "lat": "Lat", "@lat": { "description": "Latitude field label (short form)" }, - "lon": "Lon", "@lon": { "description": "Longitude field label (short form)" }, - "useCurrentLocation": "Use current location", "@useCurrentLocation": { "description": "Tooltip for use current location button" }, - "noneUnknown": "None/Unknown", "@noneUnknown": { "description": "Device type: none or unknown" }, - "chatNode": "Chat Node", "@chatNode": { "description": "Device type: chat node" }, - "repeater": "Repeater", "@repeater": { "description": "Device type: repeater" }, - "roomChannel": "Room/Channel", "@roomChannel": { "description": "Device type: room or channel" }, - "typeNumber": "Type {number}", "@typeNumber": { "description": "Generic device type with number", @@ -2632,7 +1383,6 @@ } } }, - "copiedToClipboardShort": "Copied {label} to clipboard", "@copiedToClipboardShort": { "description": "Short success message when copying to clipboard", @@ -2642,7 +1392,6 @@ } } }, - "failedToSave": "Failed to save: {error}", "@failedToSave": { "description": "Generic error message for save failures", @@ -2652,7 +1401,6 @@ } } }, - "failedToGetLocation": "Failed to get location: {error}", "@failedToGetLocation": { "description": "Error message when getting location fails", @@ -2662,87 +1410,70 @@ } } }, - "sarTemplates": "SAR Templates", "@sarTemplates": { "description": "SAR templates menu title" }, - "manageSarTemplates": "Manage cursor on target templates", "@manageSarTemplates": { "description": "Subtitle for SAR templates settings" }, - "addTemplate": "Add Template", "@addTemplate": { "description": "Button to add new SAR template" }, - "editTemplate": "Edit Template", "@editTemplate": { "description": "Dialog title for editing template" }, - "deleteTemplate": "Delete Template", "@deleteTemplate": { "description": "Action to delete template" }, - "templateName": "Template Name", "@templateName": { "description": "Label for template name field" }, - "templateNameHint": "e.g. Found Person", "@templateNameHint": { "description": "Hint text for template name" }, - "templateEmoji": "Emoji", "@templateEmoji": { "description": "Label for template emoji field" }, - "emojiRequired": "Emoji is required", "@emojiRequired": { "description": "Validation error when emoji field is empty" }, - "nameRequired": "Name is required", "@nameRequired": { "description": "Validation error when name field is empty" }, - "templateDescription": "Description (Optional)", "@templateDescription": { "description": "Label for template description field" }, - "templateDescriptionHint": "Add additional context...", "@templateDescriptionHint": { "description": "Hint text for template description" }, - "templateColor": "Color", "@templateColor": { "description": "Label for template color picker" }, - "previewFormat": "Preview (SAR Message Format)", "@previewFormat": { "description": "Label for format preview" }, - "importFromClipboard": "Import", "@importFromClipboard": { "description": "Button to import templates from clipboard" }, - "exportToClipboard": "Export", "@exportToClipboard": { "description": "Button to export templates to clipboard" }, - "deleteTemplateConfirmation": "Delete template '{name}'?", "@deleteTemplateConfirmation": { "description": "Confirmation message for template deletion", @@ -2752,22 +1483,18 @@ } } }, - "templateAdded": "Template added", "@templateAdded": { "description": "Success message when template is added" }, - "templateUpdated": "Template updated", "@templateUpdated": { "description": "Success message when template is updated" }, - "templateDeleted": "Template deleted", "@templateDeleted": { "description": "Success message when template is deleted" }, - "templatesImported": "{count, plural, =0{No templates imported} =1{Imported 1 template} other{Imported {count} templates}}", "@templatesImported": { "description": "Success message after importing templates", @@ -2777,7 +1504,6 @@ } } }, - "templatesExported": "{count, plural, =1{Exported 1 template to clipboard} other{Exported {count} templates to clipboard}}", "@templatesExported": { "description": "Success message after exporting templates", @@ -2787,570 +1513,390 @@ } } }, - - "importFailed": "Import failed: {error}", - "@importFailed": { - "description": "Error message when import fails", - "placeholders": { - "error": { - "type": "String" - } - } - }, - - "exportFailed": "Export failed: {error}", - "@exportFailed": { - "description": "Error message when export fails", - "placeholders": { - "error": { - "type": "String" - } - } - }, - "resetToDefaults": "Reset to Defaults", "@resetToDefaults": { "description": "Action to reset templates to defaults" }, - "resetToDefaultsConfirmation": "This will delete all custom templates and restore the 4 default templates. Continue?", "@resetToDefaultsConfirmation": { "description": "Confirmation message for reset to defaults" }, - "reset": "Reset", "@reset": { "description": "Reset button label" }, - "resetComplete": "Templates reset to defaults", "@resetComplete": { "description": "Success message after reset" }, - "noTemplates": "No templates available", "@noTemplates": { "description": "Message when no templates exist" }, - "tapAddToCreate": "Tap + to create your first template", "@tapAddToCreate": { "description": "Helper text when no templates exist" }, - "ok": "OK", "@ok": { "description": "OK button label" }, - - "delete": "Delete", - "@delete": { - "description": "Delete button label" - }, - "permissionsSection": "Permissions", "@permissionsSection": { "description": "Permissions section header" }, - "locationPermission": "Location Permission", "@locationPermission": { "description": "Location permission label" }, - "checking": "Checking...", "@checking": { "description": "Loading state indicator" }, - "locationPermissionGrantedAlways": "Granted (Always)", "@locationPermissionGrantedAlways": { "description": "Location permission status: granted always" }, - "locationPermissionGrantedWhileInUse": "Granted (While In Use)", "@locationPermissionGrantedWhileInUse": { "description": "Location permission status: granted while in use" }, - "locationPermissionDeniedTapToRequest": "Denied - Tap to request", "@locationPermissionDeniedTapToRequest": { "description": "Location permission status: denied, user can request" }, - "locationPermissionPermanentlyDeniedOpenSettings": "Permanently Denied - Open Settings", "@locationPermissionPermanentlyDeniedOpenSettings": { "description": "Location permission status: permanently denied" }, - "locationPermissionDialogContent": "Location permission is permanently denied. Please enable it in your device settings to use GPS tracking and location sharing features.", "@locationPermissionDialogContent": { "description": "Content for location permission dialog when permanently denied" }, - "openSettings": "Open Settings", "@openSettings": { "description": "Button to open device settings" }, - "locationPermissionGranted": "Location permission granted!", "@locationPermissionGranted": { "description": "Success message when location permission is granted" }, - "locationPermissionRequiredForGps": "Location permission is required for GPS tracking and location sharing.", "@locationPermissionRequiredForGps": { "description": "Info message about location permission requirement" }, - "locationPermissionAlreadyGranted": "Location permission is already granted.", "@locationPermissionAlreadyGranted": { "description": "Info message when permission is already granted" }, - "sarNavyBlue": "SAR Navy Blue", "@sarNavyBlue": { "description": "SAR Navy Blue theme name" }, - "sarNavyBlueDescription": "Professional/Operations Mode", "@sarNavyBlueDescription": { "description": "Description for SAR Navy Blue theme" }, - "selectRecipient": "Select Recipient", "@selectRecipient": { "description": "Title for recipient selector sheet" }, - "broadcastToAllNearby": "Broadcast to all nearby", "@broadcastToAllNearby": { "description": "Subtitle for public channel option" }, - "searchRecipients": "Search recipients...", "@searchRecipients": { "description": "Placeholder text for recipient search field" }, - "noContactsFound": "No contacts found", "@noContactsFound": { "description": "Message when no contacts match search" }, - "noRoomsFound": "No rooms found", "@noRoomsFound": { "description": "Message when no rooms match search" }, - - "noContactsOrRoomsAvailable": "No contacts or rooms available", - "@noContactsOrRoomsAvailable": { - "description": "Message when no contacts or rooms exist" - }, - "noRecipientsAvailable": "No recipients available", "@noRecipientsAvailable": { "description": "Message when no recipients exist (contacts, rooms, or channels)" }, - "noChannelsFound": "No channels found", "@noChannelsFound": { "description": "Message when no channels match the search" }, - - "messagesWillBeSentToPublicChannel": "Messages will be sent to public channel", - "@messagesWillBeSentToPublicChannel": { - "description": "Info message when only public channel is available" - }, - "newMessage": "New message", "@newMessage": { "description": "Notification title for new message" }, - "channel": "Channel", "@channel": { "description": "Channel label in notifications" }, - "samplePoliceLead": "Police Lead", "@samplePoliceLead": { "description": "Sample team member name" }, - "sampleDroneOperator": "Drone Operator", "@sampleDroneOperator": { "description": "Sample team member name" }, - "sampleFirefighterAlpha": "Firefighter", "@sampleFirefighterAlpha": { "description": "Sample team member name" }, - "sampleMedicCharlie": "Medic", "@sampleMedicCharlie": { "description": "Sample team member name" }, - "sampleCommandDelta": "Command", "@sampleCommandDelta": { "description": "Sample team member name" }, - "sampleFireEngine": "Fire Engine", "@sampleFireEngine": { "description": "Sample team member name" }, - "sampleAirSupport": "Air Support", "@sampleAirSupport": { "description": "Sample team member name" }, - "sampleBaseCoordinator": "Base Coordinator", "@sampleBaseCoordinator": { "description": "Sample team member name" }, - "channelEmergency": "Emergency", "@channelEmergency": { "description": "Emergency channel name" }, - "channelCoordination": "Coordination", "@channelCoordination": { "description": "Coordination channel name" }, - "channelUpdates": "Updates", "@channelUpdates": { "description": "Updates channel name" }, - "sampleTeamMember": "Sample Team Member", "@sampleTeamMember": { "description": "Sample sender name" }, - "sampleScout": "Sample Scout", "@sampleScout": { "description": "Sample sender name" }, - "sampleBase": "Sample Base", "@sampleBase": { "description": "Sample sender name" }, - "sampleSearcher": "Sample Searcher", "@sampleSearcher": { "description": "Sample sender name" }, - "sampleObjectBackpack": " Backpack found - blue color", "@sampleObjectBackpack": { "description": "Sample object note" }, - "sampleObjectVehicle": " Vehicle abandoned - check for owner", "@sampleObjectVehicle": { "description": "Sample object note" }, - "sampleObjectCamping": " Camping equipment discovered", "@sampleObjectCamping": { "description": "Sample object note" }, - "sampleObjectTrailMarker": " Trail marker found off-path", "@sampleObjectTrailMarker": { "description": "Sample object note" }, - "sampleMsgAllTeamsCheckIn": "All teams check in", "@sampleMsgAllTeamsCheckIn": { "description": "Sample channel message" }, - "sampleMsgWeatherUpdate": "Weather update: Clear skies, temp 18°C", "@sampleMsgWeatherUpdate": { "description": "Sample channel message" }, - "sampleMsgBaseCamp": "Base camp established at staging area", "@sampleMsgBaseCamp": { "description": "Sample channel message" }, - "sampleMsgTeamAlpha": "Team moving to sector 2", "@sampleMsgTeamAlpha": { "description": "Sample channel message" }, - "sampleMsgRadioCheck": "Radio check - all stations respond", "@sampleMsgRadioCheck": { "description": "Sample channel message" }, - "sampleMsgWaterSupply": "Water supply available at checkpoint 3", "@sampleMsgWaterSupply": { "description": "Sample channel message" }, - "sampleMsgTeamBravo": "Team reporting: sector 1 clear", "@sampleMsgTeamBravo": { "description": "Sample channel message" }, - "sampleMsgEtaRallyPoint": "ETA to rally point: 15 minutes", "@sampleMsgEtaRallyPoint": { "description": "Sample channel message" }, - "sampleMsgSupplyDrop": "Supply drop confirmed for 14:00", "@sampleMsgSupplyDrop": { "description": "Sample channel message" }, - "sampleMsgDroneSurvey": "Drone survey completed - no findings", "@sampleMsgDroneSurvey": { "description": "Sample channel message" }, - "sampleMsgTeamCharlie": "Team requesting backup", "@sampleMsgTeamCharlie": { "description": "Sample channel message" }, - "sampleMsgRadioDiscipline": "All units: maintain radio discipline", "@sampleMsgRadioDiscipline": { "description": "Sample channel message" }, - "sampleMsgUrgentMedical": "URGENT: Medical assistance needed at sector 4", "@sampleMsgUrgentMedical": { "description": "Sample emergency message" }, - "sampleMsgAdultMale": " Adult male, conscious", "@sampleMsgAdultMale": { "description": "Sample emergency message note" }, - "sampleMsgFireSpotted": "Fire spotted - coordinates incoming", "@sampleMsgFireSpotted": { "description": "Sample emergency message" }, - "sampleMsgSpreadingRapidly": " Spreading rapidly!", "@sampleMsgSpreadingRapidly": { "description": "Sample emergency message note" }, - "sampleMsgPriorityHelicopter": "PRIORITY: Need helicopter support", "@sampleMsgPriorityHelicopter": { "description": "Sample emergency message" }, - "sampleMsgMedicalTeamEnRoute": "Medical team en route to your location", "@sampleMsgMedicalTeamEnRoute": { "description": "Sample emergency message" }, - "sampleMsgEvacHelicopter": "Evac helicopter ETA 10 minutes", "@sampleMsgEvacHelicopter": { "description": "Sample emergency message" }, - "sampleMsgEmergencyResolved": "Emergency resolved - all clear", "@sampleMsgEmergencyResolved": { "description": "Sample emergency message" }, - "sampleMsgEmergencyStagingArea": " Emergency staging area", "@sampleMsgEmergencyStagingArea": { "description": "Sample emergency message note" }, - "sampleMsgEmergencyServices": "Emergency services notified and responding", "@sampleMsgEmergencyServices": { "description": "Sample emergency message" }, - "sampleAlphaTeamLead": "Team Lead", "@sampleAlphaTeamLead": { "description": "Sample team name" }, - "sampleBravoScout": "Scout", "@sampleBravoScout": { "description": "Sample team name" }, - "sampleCharlieMedic": "Medic", "@sampleCharlieMedic": { "description": "Sample team name" }, - "sampleDeltaNavigator": "Navigator", "@sampleDeltaNavigator": { "description": "Sample team name" }, - "sampleEchoSupport": "Support", "@sampleEchoSupport": { "description": "Sample team name" }, - "sampleBaseCommand": "Base Command", "@sampleBaseCommand": { "description": "Sample team name" }, - "sampleFieldCoordinator": "Field Coordinator", "@sampleFieldCoordinator": { "description": "Sample team name" }, - "sampleMedicalTeam": "Medical Team", "@sampleMedicalTeam": { "description": "Sample team name" }, - "mapDrawing": "Map Drawing", "@mapDrawing": { "description": "Label for map drawing messages" }, - "navigateToDrawing": "Navigate to Drawing", "@navigateToDrawing": { "description": "Option to navigate to drawing on map" }, - "copyCoordinates": "Copy Coordinates", "@copyCoordinates": { "description": "Option to copy coordinates to clipboard" }, - "hideFromMap": "Hide from Map", "@hideFromMap": { "description": "Option to hide drawing from map" }, - "lineDrawing": "Line Drawing", "@lineDrawing": { "description": "Label for line type drawings" }, - "rectangleDrawing": "Rectangle Drawing", "@rectangleDrawing": { "description": "Label for rectangle type drawings" }, - - "coordinatesCopiedToClipboard": "Coordinates copied to clipboard", - "@coordinatesCopiedToClipboard": { - "description": "Success message when coordinates are copied" - }, - "manualCoordinates": "Manual Coordinates", "@manualCoordinates": { "description": "Label for manual coordinate input toggle" }, - "enterCoordinatesManually": "Enter coordinates manually", "@enterCoordinatesManually": { "description": "Description for manual coordinate input option" }, - "latitudeLabel": "Latitude", "@latitudeLabel": { "description": "Label for latitude input field" }, - "longitudeLabel": "Longitude", "@longitudeLabel": { "description": "Label for longitude input field" }, - - "invalidLatitude": "Invalid latitude (-90 to 90)", - "@invalidLatitude": { - "description": "Error message for invalid latitude value" - }, - - "invalidLongitude": "Invalid longitude (-180 to 180)", - "@invalidLongitude": { - "description": "Error message for invalid longitude value" - }, - "exampleCoordinates": "Example: 46.0569, 14.5058", "@exampleCoordinates": { "description": "Example coordinate format hint" }, - - "drawingShared": "Map Drawing", - "@drawingShared": { - "description": "Label for shared drawing notifications" - }, - - "drawingHidden": "Drawing hidden from map", - "@drawingHidden": { - "description": "Success message when drawing is hidden" - }, - - "alreadyShared": "{count, plural, =1{1 already shared} other{{count} already shared}}", - "@alreadyShared": { - "description": "Message showing how many drawings were already shared", - "placeholders": { - "count": { - "type": "int" - } - } - }, - - "newDrawingsShared": "Shared {count} new drawing{plural}", - "@newDrawingsShared": { - "description": "Success message after sharing new drawings", - "placeholders": { - "count": { - "type": "int" - }, - "plural": { - "type": "String" - } - } - }, - "shareDrawing": "Share Drawing", "@shareDrawing": { "description": "Title for share single drawing dialog" }, - "shareWithAllNearbyDevices": "Share with all nearby devices", "@shareWithAllNearbyDevices": { "description": "Subtitle for public channel sharing option" }, - "shareToRoom": "Share to Room", "@shareToRoom": { "description": "Header for room sharing section" }, - "sendToPersistentStorage": "Send to persistent room storage", "@sendToPersistentStorage": { "description": "Subtitle for room sharing option" }, - "deleteDrawingConfirm": "Are you sure you want to delete this drawing?", "@deleteDrawingConfirm": { "description": "Confirmation message for deleting a single drawing" }, - "drawingDeleted": "Drawing deleted", "@drawingDeleted": { "description": "Success message after deleting a drawing" }, - "yourDrawingsCount": "Your Drawings ({count})", "@yourDrawingsCount": { "description": "Header showing count of user's drawings", @@ -3360,197 +1906,150 @@ } } }, - "shared": "Shared", "@shared": { "description": "Status label for shared drawings" }, - "line": "Line", "@line": { "description": "Line drawing type label" }, - "rectangle": "Rectangle", "@rectangle": { "description": "Rectangle drawing type label" }, - "updateAvailable": "Update Available", "@updateAvailable": { "description": "Title for update dialog when new version is available" }, - "currentVersion": "Current", "@currentVersion": { "description": "Label for current app version" }, - "latestVersion": "Latest", "@latestVersion": { "description": "Label for latest available app version" }, - "downloadUpdate": "Download", "@downloadUpdate": { "description": "Button to download app update" }, - "updateLater": "Later", "@updateLater": { "description": "Button to dismiss update dialog" }, - "cadastralParcels": "Cadastral Parcels", "@cadastralParcels": { "description": "Label for cadastral parcels WMS overlay layer" }, - "forestRoads": "Forest Roads", "@forestRoads": { "description": "Label for forest roads WMS overlay layer" }, - - "showCadastralParcels": "Show Cadastral Parcels", - "@showCadastralParcels": { - "description": "Tooltip for cadastral parcels overlay toggle button" - }, - - "showForestRoads": "Show Forest Roads", - "@showForestRoads": { - "description": "Tooltip for forest roads overlay toggle button" - }, - "wmsOverlays": "WMS Overlays", "@wmsOverlays": { "description": "Section header for WMS overlay layers in layer selector" }, - "hikingTrails": "Hiking Trails", "@hikingTrails": { "description": "Label for hiking/mountain trails WMS overlay layer" }, - "mainRoads": "Main Roads", "@mainRoads": { "description": "Label for main roads WMS overlay layer" }, - "houseNumbers": "House Numbers", "@houseNumbers": { "description": "Label for house numbers WMS overlay layer" }, - "fireHazardZones": "Fire Hazard Zones", "@fireHazardZones": { "description": "Label for fire hazard risk zones WMS overlay layer" }, - "historicalFires": "Historical Fires", "@historicalFires": { "description": "Label for historical forest fires WMS overlay layer" }, - "firebreaks": "Firebreaks", "@firebreaks": { "description": "Label for firebreaks WMS overlay layer" }, - "krasFireZones": "Kras Fire Zones", "@krasFireZones": { "description": "Label for Kras fire zones WMS overlay layer" }, - "placeNames": "Place Names", "@placeNames": { "description": "Label for geographic place names WMS overlay layer" }, - "municipalityBorders": "Municipality Borders", "@municipalityBorders": { "description": "Label for municipality borders WMS overlay layer" }, - "topographicMap": "Topographic Map 1:25000", "@topographicMap": { "description": "Label for DTK25 topographic base map layer" }, - "recentMessages": "Recent Messages", "@recentMessages": { "description": "Header for recent messages overlay on map in fullscreen mode" }, - "addChannel": "Add Channel", "@addChannel": { "description": "Button to add a new channel" }, - "channelName": "Channel Name", "@channelName": { "description": "Label for channel name field" }, - "channelNameHint": "e.g., Rescue Team Alpha", "@channelNameHint": { "description": "Hint for channel name field" }, - "channelSecret": "Channel Secret", "@channelSecret": { "description": "Label for channel secret field" }, - "channelSecretHint": "Shared password for this channel", "@channelSecretHint": { "description": "Hint for channel secret field" }, - "channelSecretHelp": "This secret must be shared with all team members who need access to this channel", "@channelSecretHelp": { "description": "Help text explaining channel secret" }, - "channelTypesInfo": "Hash channels (#team): Secret auto-generated from name. Same name = same channel across devices.\n\nPrivate channels: Use explicit secret. Only those with the secret can join.", "@channelTypesInfo": { "description": "Information banner explaining hash and private channel types" }, - "hashChannelInfo": "Hash channel: Secret will be auto-generated from the channel name. Anyone using the same name will join the same channel.", "@hashChannelInfo": { "description": "Help text for hash channels (# prefix)" }, - "channelNameRequired": "Channel name is required", "@channelNameRequired": { "description": "Validation error for empty channel name" }, - "channelNameTooLong": "Channel name must be 31 characters or less", "@channelNameTooLong": { "description": "Validation error for channel name too long" }, - "channelSecretRequired": "Channel secret is required", "@channelSecretRequired": { "description": "Validation error for empty channel secret" }, - "channelSecretTooLong": "Channel secret must be 32 characters or less", "@channelSecretTooLong": { "description": "Validation error for channel secret too long" }, - "invalidAsciiCharacters": "Only ASCII characters are allowed", "@invalidAsciiCharacters": { "description": "Validation error for non-ASCII characters" }, - "channelCreatedSuccessfully": "Channel created successfully", "@channelCreatedSuccessfully": { "description": "Success message after creating channel" }, - "channelCreationFailed": "Failed to create channel: {error}", "@channelCreationFailed": { "description": "Error message when channel creation fails", @@ -3560,12 +2059,10 @@ } } }, - "deleteChannel": "Delete Channel", "@deleteChannel": { "description": "Delete channel button/menu item" }, - "deleteChannelConfirmation": "Are you sure you want to delete channel \"{channelName}\"? This action cannot be undone.", "@deleteChannelConfirmation": { "description": "Confirmation dialog when deleting a channel", @@ -3575,12 +2072,10 @@ } } }, - "channelDeletedSuccessfully": "Channel deleted successfully", "@channelDeletedSuccessfully": { "description": "Success message after deleting channel" }, - "channelDeletionFailed": "Failed to delete channel: {error}", "@channelDeletionFailed": { "description": "Error message when channel deletion fails", @@ -3590,182 +2085,126 @@ } } }, - - "allChannelSlotsInUse": "All channel slots are in use (maximum 39 custom channels)", - "@allChannelSlotsInUse": { - "description": "Error when no channel slots available" - }, - "createChannel": "Create Channel", "@createChannel": { "description": "Button text for creating a channel" }, - "wizardBack": "Back", "@wizardBack": { "description": "Wizard back button text" }, - "wizardSkip": "Skip", "@wizardSkip": { "description": "Wizard skip button text" }, - "wizardNext": "Next", "@wizardNext": { "description": "Wizard next button text" }, - "wizardGetStarted": "Get Started", "@wizardGetStarted": { "description": "Wizard final button text to complete onboarding" }, - "wizardWelcomeTitle": "Welcome to MeshCore SAR", "@wizardWelcomeTitle": { "description": "Welcome wizard first page title" }, - "wizardWelcomeDescription": "A powerful off-grid communication tool for search and rescue operations. Connect with your team using mesh radio technology when traditional networks are unavailable.", "@wizardWelcomeDescription": { "description": "Welcome wizard first page description" }, - "wizardConnectingTitle": "Connecting to Your Radio", "@wizardConnectingTitle": { "description": "Wizard connecting page title" }, - "wizardConnectingDescription": "Connect your smartphone to a MeshCore radio device via Bluetooth to start communicating off-grid.", "@wizardConnectingDescription": { "description": "Wizard connecting page description" }, - "wizardConnectingFeature1": "Scan for nearby MeshCore devices", "@wizardConnectingFeature1": { "description": "Wizard connecting feature 1" }, - "wizardConnectingFeature2": "Pair with your radio via Bluetooth", "@wizardConnectingFeature2": { "description": "Wizard connecting feature 2" }, - "wizardConnectingFeature3": "Works completely offline - no internet required", "@wizardConnectingFeature3": { "description": "Wizard connecting feature 3" }, - - "wizardSimpleModeTitle": "Simple Mode", - "@wizardSimpleModeTitle": { - "description": "Wizard simple mode page title" - }, - - "wizardSimpleModeDescription": "New to mesh networking? Enable Simple Mode for a streamlined interface with essential features only.", - "@wizardSimpleModeDescription": { - "description": "Wizard simple mode page description" - }, - - "wizardSimpleModeFeature1": "Beginner-friendly interface with core functions", - "@wizardSimpleModeFeature1": { - "description": "Wizard simple mode feature 1" - }, - - "wizardSimpleModeFeature2": "Switch to Advanced Mode anytime in Settings", - "@wizardSimpleModeFeature2": { - "description": "Wizard simple mode feature 2" - }, - "wizardChannelTitle": "Channels", "@wizardChannelTitle": { "description": "Wizard channel page title" }, - "wizardChannelDescription": "Broadcast messages to everyone on a channel, perfect for team-wide announcements and coordination.", "@wizardChannelDescription": { "description": "Wizard channel page description" }, - "wizardChannelFeature1": "Public Channel for general team communication", "@wizardChannelFeature1": { "description": "Wizard channel feature 1" }, - "wizardChannelFeature2": "Create custom channels for specific groups", "@wizardChannelFeature2": { "description": "Wizard channel feature 2" }, - "wizardChannelFeature3": "Messages are automatically relayed by the mesh", "@wizardChannelFeature3": { "description": "Wizard channel feature 3" }, - "wizardContactsTitle": "Contacts", "@wizardContactsTitle": { "description": "Wizard contacts page title" }, - "wizardContactsDescription": "Your team members appear automatically as they join the mesh network. Send them direct messages or view their location.", "@wizardContactsDescription": { "description": "Wizard contacts page description" }, - "wizardContactsFeature1": "Contacts discovered automatically", "@wizardContactsFeature1": { "description": "Wizard contacts feature 1" }, - "wizardContactsFeature2": "Send private direct messages", "@wizardContactsFeature2": { "description": "Wizard contacts feature 2" }, - "wizardContactsFeature3": "View battery level and last seen time", "@wizardContactsFeature3": { "description": "Wizard contacts feature 3" }, - "wizardMapTitle": "Map & Location", "@wizardMapTitle": { "description": "Wizard map page title" }, - "wizardMapDescription": "Track your team in real-time and mark important locations for search and rescue operations.", "@wizardMapDescription": { "description": "Wizard map page description" }, - "wizardMapFeature1": "SAR markers for found persons, fires, and staging areas", "@wizardMapFeature1": { "description": "Wizard map feature 1" }, - "wizardMapFeature2": "Real-time GPS tracking of team members", "@wizardMapFeature2": { "description": "Wizard map feature 2" }, - "wizardMapFeature3": "Download offline maps for remote areas", "@wizardMapFeature3": { "description": "Wizard map feature 3" }, - "wizardMapFeature4": "Draw shapes and share tactical information", "@wizardMapFeature4": { "description": "Wizard map feature 4" }, - "viewWelcomeTutorial": "View Welcome Tutorial", "@viewWelcomeTutorial": { "description": "Settings option to re-show welcome wizard" }, - "allTeamContacts": "All Team Contacts", "@allTeamContacts": { "description": "Destination option to send SAR marker to all team contacts" }, - "directMessagesInfo": "Direct messages with ACKs. Sent to {count} team members.", "@directMessagesInfo": { "description": "Information about sending to all contacts", @@ -3775,7 +2214,6 @@ } } }, - "sarMarkerSentToContacts": "SAR marker sent to {count} contacts", "@sarMarkerSentToContacts": { "description": "Success message after sending SAR marker to all contacts", @@ -3785,85 +2223,83 @@ } } }, - "noContactsAvailable": "No team contacts available", "@noContactsAvailable": { "description": "Message when there are no chat contacts to send to" - } -, - + }, "reply": "Reply", - "@reply": {}, - + "@reply": { + }, "technicalDetails": "Technical details", - "@technicalDetails": {}, - + "@technicalDetails": { + }, "messageTechnicalDetails": "Message technical details", - "@messageTechnicalDetails": {}, - + "@messageTechnicalDetails": { + }, "linkQuality": "Link quality", - "@linkQuality": {}, - + "@linkQuality": { + }, "delivery": "Delivery", - "@delivery": {}, - + "@delivery": { + }, "status": "Status", - "@status": {}, - + "@status": { + }, "expectedAckTag": "Expected ACK tag", - "@expectedAckTag": {}, - + "@expectedAckTag": { + }, "roundTrip": "Round-trip", - "@roundTrip": {}, - + "@roundTrip": { + }, "retryAttempt": "Retry attempt", - "@retryAttempt": {}, - + "@retryAttempt": { + }, "floodFallback": "Flood fallback", - "@floodFallback": {}, - + "@floodFallback": { + }, "identity": "Identity", - "@identity": {}, - + "@identity": { + }, "messageId": "Message ID", - "@messageId": {}, - + "@messageId": { + }, "sender": "Sender", - "@sender": {}, - + "@sender": { + }, "senderKey": "Sender key", - "@senderKey": {}, - + "@senderKey": { + }, "recipient": "Recipient", - "@recipient": {}, - + "@recipient": { + }, "recipientKey": "Recipient key", - "@recipientKey": {}, - + "@recipientKey": { + }, "voice": "Voice", - "@voice": {}, - + "@voice": { + }, "voiceId": "Voice ID", - "@voiceId": {}, - + "@voiceId": { + }, "envelope": "Envelope", - "@envelope": {}, - + "@envelope": { + }, "sessionProgress": "Session progress", - "@sessionProgress": {}, - + "@sessionProgress": { + }, "complete": "Complete", - "@complete": {}, - + "@complete": { + }, "rawDump": "Raw dump", - "@rawDump": {}, - + "@rawDump": { + }, "cannotRetryMissingRecipient": "Cannot retry: recipient information missing", - "@cannotRetryMissingRecipient": {}, - + "@cannotRetryMissingRecipient": { + }, "voiceUnavailable": "Voice unavailable right now", - "@voiceUnavailable": {}, - + "@voiceUnavailable": { + }, "requestingVoice": "Requesting voice", - "@requestingVoice": {} -} \ No newline at end of file + "@requestingVoice": { + } +} diff --git a/lib/l10n/app_es.arb b/lib/l10n/app_es.arb index 035e3a8..f4547bf 100644 --- a/lib/l10n/app_es.arb +++ b/lib/l10n/app_es.arb @@ -1,104 +1,69 @@ { "@@locale": "es", - "appTitle": "MeshCore SAR", "@appTitle": { "description": "El título de la aplicación" }, - "messages": "Mensajes", "@messages": { "description": "Etiqueta de la pestaña de mensajes" }, - "contacts": "Contactos", "@contacts": { "description": "Etiqueta de la pestaña de contactos" }, - "map": "Mapa", "@map": { "description": "Etiqueta de la pestaña del mapa" }, - "settings": "Configuración", "@settings": { "description": "Título de la pantalla de configuración" }, - "connect": "Conectar", "@connect": { "description": "Etiqueta del botón de conectar" }, - "disconnect": "Desconectar", "@disconnect": { "description": "Etiqueta del botón de desconectar" }, - - "scanningForDevices": "Buscando dispositivos...", - "@scanningForDevices": { - "description": "Texto mostrado al buscar dispositivos BLE" - }, - "noDevicesFound": "No se encontraron dispositivos", "@noDevicesFound": { "description": "Texto mostrado cuando no se encuentran dispositivos BLE" }, - "scanAgain": "Buscar de nuevo", "@scanAgain": { "description": "Botón para reiniciar el escaneo BLE" }, - "tapToConnect": "Toca para conectar", "@tapToConnect": { "description": "Texto de subtítulo para dispositivo en la lista de escaneo" }, - "deviceNotConnected": "Dispositivo no conectado", "@deviceNotConnected": { "description": "Mensaje de error cuando el dispositivo no está conectado" }, - "locationPermissionDenied": "Permiso de ubicación denegado", "@locationPermissionDenied": { "description": "Error cuando se deniega el permiso de ubicación" }, - "locationPermissionPermanentlyDenied": "Permiso de ubicación denegado permanentemente. Por favor, actívalo en Configuración.", "@locationPermissionPermanentlyDenied": { "description": "Error cuando el permiso de ubicación se deniega permanentemente" }, - "locationPermissionRequired": "El permiso de ubicación es necesario para el seguimiento GPS y la coordinación del equipo. Puedes activarlo más tarde en Configuración.", "@locationPermissionRequired": { "description": "Mensaje cuando se necesita el permiso de ubicación" }, - "locationServicesDisabled": "Los servicios de ubicación están desactivados. Por favor, actívalos en Configuración.", "@locationServicesDisabled": { "description": "Error cuando los servicios de ubicación están desactivados" }, - "failedToGetGpsLocation": "Error al obtener la ubicación GPS", "@failedToGetGpsLocation": { "description": "Error cuando no se puede obtener la ubicación GPS" }, - - "advertisedAtLocation": "Anunciado en {latitude}, {longitude}", - "@advertisedAtLocation": { - "description": "Mensaje de éxito mostrando la ubicación anunciada", - "placeholders": { - "latitude": { - "type": "String" - }, - "longitude": { - "type": "String" - } - } - }, - "failedToAdvertise": "Error al anunciar: {error}", "@failedToAdvertise": { "description": "Mensaje de error para anuncio fallido", @@ -108,355 +73,162 @@ } } }, - - "reconnecting": "Reconectando... ({attempt}/{max})", - "@reconnecting": { - "description": "Texto mostrado durante los intentos de reconexión", - "placeholders": { - "attempt": { - "type": "int" - }, - "max": { - "type": "int" - } - } - }, - "cancelReconnection": "Cancelar reconexión", "@cancelReconnection": { "description": "Tooltip para el botón de cancelar reconexión" }, - - "mapManagement": "Gestión de mapas", - "@mapManagement": { - "description": "Elemento del menú para gestión de mapas" - }, - "general": "General", "@general": { "description": "Encabezado de la sección de configuración general" }, - "theme": "Tema", "@theme": { "description": "Etiqueta de la configuración del tema" }, - "chooseTheme": "Elegir tema", "@chooseTheme": { "description": "Título del diálogo de selección de tema" }, - "light": "Claro", "@light": { "description": "Opción de tema claro" }, - "dark": "Oscuro", "@dark": { "description": "Opción de tema oscuro" }, - "blueLightTheme": "Tema azul claro", "@blueLightTheme": { "description": "Descripción del tema azul claro" }, - "blueDarkTheme": "Tema azul oscuro", "@blueDarkTheme": { "description": "Descripción del tema azul oscuro" }, - "sarRed": "SAR Rojo", "@sarRed": { "description": "Opción de tema SAR Rojo" }, - "alertEmergencyMode": "Modo de alerta/emergencia", "@alertEmergencyMode": { "description": "Descripción del tema SAR Rojo" }, - "sarGreen": "SAR Verde", "@sarGreen": { "description": "Opción de tema SAR Verde" }, - "safeAllClearMode": "Modo seguro/todo despejado", "@safeAllClearMode": { "description": "Descripción del tema SAR Verde" }, - "autoSystem": "Auto (Sistema)", "@autoSystem": { "description": "Opción de tema automático/sistema" }, - "followSystemTheme": "Seguir el tema del sistema", "@followSystemTheme": { "description": "Descripción del tema del sistema" }, - "showRxTxIndicators": "Mostrar indicadores RX/TX", "@showRxTxIndicators": { "description": "Configuración para mostrar indicadores RX/TX" }, - "displayPacketActivity": "Mostrar indicadores de actividad de paquetes en la barra superior", "@displayPacketActivity": { "description": "Descripción de la configuración de indicadores RX/TX" }, - - "simpleMode": "Modo Simple", - "@simpleMode": { - "description": "Configuración para habilitar el modo simple" - }, - - "simpleModeDescription": "Ocultar información no esencial en mensajes y contactos", - "@simpleModeDescription": { - "description": "Descripción de la configuración del modo simple" - }, - "disableMap": "Desactivar mapa", "@disableMap": { "description": "Configuración para desactivar la pestaña del mapa" }, - "disableMapDescription": "Ocultar la pestaña del mapa para reducir el uso de batería", "@disableMapDescription": { "description": "Descripción de la configuración para desactivar el mapa" }, - "language": "Idioma", "@language": { "description": "Etiqueta de la configuración de idioma" }, - "chooseLanguage": "Elegir idioma", "@chooseLanguage": { "description": "Título del diálogo de selección de idioma" }, - - "english": "Inglés", - "@english": { - "description": "Opción de idioma inglés" - }, - - "slovenian": "Esloveno", - "@slovenian": { - "description": "Opción de idioma esloveno" - }, - - "croatian": "Croata", - "@croatian": { - "description": "Opción de idioma croata" - }, - - "german": "Alemán", - "@german": { - "description": "Opción de idioma alemán" - }, - - "spanish": "Español", - "@spanish": { - "description": "Opción de idioma español" - }, - - "french": "Francés", - "@french": { - "description": "Opción de idioma francés" - }, - - "italian": "Italiano", - "@italian": { - "description": "Opción de idioma italiano" - }, - - "locationBroadcasting": "Difusión de ubicación", - "@locationBroadcasting": { - "description": "Encabezado de la sección de configuración de ubicación" - }, - - "autoLocationTracking": "Seguimiento automático de ubicación", - "@autoLocationTracking": { - "description": "Configuración de seguimiento automático de ubicación" - }, - - "automaticallyBroadcastPosition": "Difundir automáticamente actualizaciones de posición", - "@automaticallyBroadcastPosition": { - "description": "Descripción del seguimiento automático de ubicación" - }, - - "configureTracking": "Configurar seguimiento", - "@configureTracking": { - "description": "Etiqueta del botón de configurar seguimiento" - }, - - "distanceAndTimeThresholds": "Umbrales de distancia y tiempo", - "@distanceAndTimeThresholds": { - "description": "Descripción de la configuración de seguimiento" - }, - - "locationTrackingConfiguration": "Configuración de seguimiento de ubicación", - "@locationTrackingConfiguration": { - "description": "Título del diálogo de configuración de seguimiento" - }, - - "configureWhenLocationBroadcasts": "Configurar cuándo se envían difusiones de ubicación a la red mesh", - "@configureWhenLocationBroadcasts": { - "description": "Descripción del diálogo de configuración de seguimiento" - }, - - "minimumDistance": "Distancia mínima", - "@minimumDistance": { - "description": "Etiqueta de la configuración de distancia mínima" - }, - - "broadcastAfterMoving": "Difundir solo después de moverse {distance} metros", - "@broadcastAfterMoving": { - "description": "Descripción de la distancia mínima", - "placeholders": { - "distance": { - "type": "String" - } - } - }, - - "maximumDistance": "Distancia máxima", - "@maximumDistance": { - "description": "Etiqueta de la configuración de distancia máxima" - }, - - "alwaysBroadcastAfterMoving": "Siempre difundir después de moverse {distance} metros", - "@alwaysBroadcastAfterMoving": { - "description": "Descripción de la distancia máxima", - "placeholders": { - "distance": { - "type": "String" - } - } - }, - - "minimumTimeInterval": "Intervalo de tiempo mínimo", - "@minimumTimeInterval": { - "description": "Etiqueta de la configuración de intervalo de tiempo mínimo" - }, - - "alwaysBroadcastEvery": "Siempre difundir cada {duration}", - "@alwaysBroadcastEvery": { - "description": "Descripción del intervalo de tiempo", - "placeholders": { - "duration": { - "type": "String" - } - } - }, - "save": "Guardar", "@save": { "description": "Etiqueta del botón de guardar" }, - "cancel": "Cancelar", "@cancel": { "description": "Etiqueta del botón de cancelar" }, - "close": "Cerrar", "@close": { "description": "Etiqueta del botón de cerrar" }, - "about": "Acerca de", "@about": { "description": "Encabezado de la sección acerca de" }, - "appVersion": "Versión de la aplicación", "@appVersion": { "description": "Etiqueta de la versión de la aplicación" }, - "appName": "Nombre de la aplicación", "@appName": { "description": "Etiqueta del nombre de la aplicación" }, - "aboutMeshCoreSar": "Acerca de MeshCore SAR", "@aboutMeshCoreSar": { "description": "Título del diálogo acerca de" }, - "aboutDescription": "Una aplicación de Búsqueda y Rescate diseñada para equipos de respuesta a emergencias. Las características incluyen:\n\n• Red mesh BLE para comunicación entre dispositivos\n• Mapas sin conexión con múltiples opciones de capas\n• Seguimiento en tiempo real de miembros del equipo\n• Marcadores tácticos SAR (persona encontrada, fuego, zona de preparación)\n• Gestión de contactos y mensajería\n• Seguimiento GPS con rumbo de brújula\n• Caché de teselas de mapa para uso sin conexión", "@aboutDescription": { "description": "Descripción del diálogo acerca de" }, - "technologiesUsed": "Tecnologías utilizadas:", "@technologiesUsed": { "description": "Título de la sección de tecnologías utilizadas" }, - "technologiesList": "• Flutter para desarrollo multiplataforma\n• BLE (Bluetooth Low Energy) para redes mesh\n• OpenStreetMap para mapas\n• Provider para gestión de estado\n• SharedPreferences para almacenamiento local", "@technologiesList": { "description": "Lista de tecnologías utilizadas" }, - "moreInfo": "Más información", "@moreInfo": { "description": "Etiqueta del botón Más información" }, - - "learnMoreAbout": "Más información sobre MeshCore SAR", - "@learnMoreAbout": { - "description": "Descripción del enlace Más información" - }, - - "developer": "Desarrollador", - "@developer": { - "description": "Encabezado de la sección de desarrollador" - }, - "packageName": "Nombre del paquete", "@packageName": { "description": "Etiqueta del nombre del paquete" }, - "sampleData": "Datos de muestra", "@sampleData": { "description": "Encabezado de la sección de datos de muestra" }, - "sampleDataDescription": "Cargar o borrar contactos de muestra, mensajes de canal y marcadores SAR para pruebas", "@sampleDataDescription": { "description": "Descripción de la sección de datos de muestra" }, - "loadSampleData": "Cargar datos de muestra", "@loadSampleData": { "description": "Botón de cargar datos de muestra" }, - "clearAllData": "Borrar todos los datos", "@clearAllData": { "description": "Botón de borrar todos los datos" }, - "clearAllDataConfirmTitle": "Borrar todos los datos", "@clearAllDataConfirmTitle": { "description": "Título del diálogo de confirmación de borrar datos" }, - "clearAllDataConfirmMessage": "Esto borrará todos los contactos y marcadores SAR. ¿Estás seguro?", "@clearAllDataConfirmMessage": { "description": "Mensaje de confirmación de borrar datos" }, - "clear": "Borrar", "@clear": { "description": "Etiqueta del botón de borrar" }, - "loadedSampleData": "Cargados {teamCount} miembros del equipo, {channelCount} canales, {sarCount} marcadores SAR, {messageCount} mensajes", "@loadedSampleData": { "description": "Mensaje de éxito después de cargar datos de muestra", @@ -475,7 +247,6 @@ } } }, - "failedToLoadSampleData": "Error al cargar datos de muestra: {error}", "@failedToLoadSampleData": { "description": "Mensaje de error cuando fallan los datos de muestra", @@ -485,17 +256,14 @@ } } }, - "allDataCleared": "Todos los datos borrados", "@allDataCleared": { "description": "Mensaje de éxito después de borrar todos los datos" }, - "failedToStartBackgroundTracking": "Error al iniciar el seguimiento en segundo plano. Verifica los permisos y la conexión BLE.", "@failedToStartBackgroundTracking": { "description": "Mensaje de error cuando falla el inicio del seguimiento en segundo plano" }, - "locationBroadcast": "Difusión de ubicación: {latitude}, {longitude}", "@locationBroadcast": { "description": "Mensaje de éxito para difusión de ubicación", @@ -508,57 +276,42 @@ } } }, - "defaultPinInfo": "El PIN predeterminado para dispositivos sin pantalla es 123456. ¿Problemas para emparejar? Olvida el dispositivo bluetooth en la configuración del sistema.", "@defaultPinInfo": { "description": "Información sobre el PIN predeterminado para emparejamiento" }, - "noMessagesYet": "Aún no hay mensajes", "@noMessagesYet": { "description": "Mensaje de estado vacío cuando no hay mensajes" }, - "pullDownToSync": "Desliza hacia abajo para sincronizar mensajes", "@pullDownToSync": { "description": "Instrucción para deslizar hacia abajo para actualizar mensajes" }, - "deleteContact": "Eliminar contacto", "@deleteContact": { "description": "Etiqueta de la acción de eliminar contacto" }, - "delete": "Eliminar", "@delete": { "description": "Etiqueta del botón de eliminar" }, - "viewOnMap": "Ver en el mapa", "@viewOnMap": { "description": "Acción para ver la ubicación del contacto en el mapa" }, - "refresh": "Actualizar", "@refresh": { "description": "Etiqueta del botón de actualizar" }, - - "sendDirectMessage": "Enviar", - "@sendDirectMessage": { - "description": "Acción para enviar mensaje directo al contacto" - }, - "resetPath": "Restablecer ruta (Re-enrutar)", "@resetPath": { "description": "Acción para restablecer la ruta del contacto para re-enrutamiento" }, - "publicKeyCopied": "Clave pública copiada al portapapeles", "@publicKeyCopied": { "description": "Mensaje de éxito cuando se copia la clave pública" }, - "copiedToClipboard": "{label} copiado al portapapeles", "@copiedToClipboard": { "description": "Mensaje de éxito cuando se copia un valor al portapapeles", @@ -568,12 +321,10 @@ } } }, - "pleaseEnterPassword": "Por favor, introduce una contraseña", "@pleaseEnterPassword": { "description": "Mensaje de validación para campo de contraseña vacío" }, - "failedToSyncContacts": "Error al sincronizar contactos: {error}", "@failedToSyncContacts": { "description": "Mensaje de error cuando falla la sincronización de contactos", @@ -583,17 +334,14 @@ } } }, - "loggedInSuccessfully": "¡Inicio de sesión exitoso! Esperando mensajes de la sala...", "@loggedInSuccessfully": { "description": "Mensaje de éxito después de iniciar sesión en la sala exitosamente" }, - "loginFailed": "Error de inicio de sesión - contraseña incorrecta", "@loginFailed": { "description": "Mensaje de error cuando falla el inicio de sesión en la sala" }, - "loggingIn": "Iniciando sesión en {roomName}...", "@loggingIn": { "description": "Mensaje de estado durante el proceso de inicio de sesión en la sala", @@ -603,7 +351,6 @@ } } }, - "failedToSendLogin": "Error al enviar inicio de sesión: {error}", "@failedToSendLogin": { "description": "Mensaje de error cuando falla el envío del comando de inicio de sesión", @@ -613,355 +360,239 @@ } } }, - "lowLocationAccuracy": "Baja precisión de ubicación", "@lowLocationAccuracy": { "description": "Título de advertencia para baja precisión GPS" }, - "continue_": "Continuar", "@continue_": { "description": "Etiqueta del botón de continuar" }, - "sendSarMarker": "Enviar marcador SAR", "@sendSarMarker": { "description": "Acción para enviar marcador SAR" }, - "deleteDrawing": "Eliminar dibujo", "@deleteDrawing": { "description": "Acción para eliminar un dibujo del mapa" }, - - "drawingTools": "Herramientas de dibujo", + "drawingTools": "Herramientas de Dibujo", "@drawingTools": { "description": "Sección de herramientas de dibujo o título del menú" }, - "drawLine": "Dibujar línea", "@drawLine": { "description": "Modo de dibujo del mapa: línea" }, - "drawLineDesc": "Dibujar una línea a mano alzada en el mapa", "@drawLineDesc": { "description": "Descripción del modo de dibujo de línea" }, - "drawRectangle": "Dibujar rectángulo", "@drawRectangle": { "description": "Modo de dibujo del mapa: rectángulo" }, - "drawRectangleDesc": "Dibujar un área rectangular en el mapa", "@drawRectangleDesc": { "description": "Descripción del modo de dibujo de rectángulo" }, - "measureDistance": "Medir distancia", "@measureDistance": { "description": "Modo de dibujo del mapa: medir distancia" }, - "measureDistanceDesc": "Presión prolongada en dos puntos para medir", "@measureDistanceDesc": { "description": "Descripción del modo de medición de distancia" }, - "clearMeasurement": "Borrar medición", "@clearMeasurement": { "description": "Tooltip para borrar la medición" }, - "distanceLabel": "Distancia: {distance}", "@distanceLabel": { "description": "Etiqueta que muestra la distancia medida", "placeholders": { - "distance": {"type": "String"} + "distance": { + "type": "String" + } } }, - "longPressForSecondPoint": "Presión prolongada para el segundo punto", "@longPressForSecondPoint": { "description": "Instrucción cuando se ha establecido el primer punto de medición" }, - "longPressToStartMeasurement": "Presión prolongada para establecer el primer punto", "@longPressToStartMeasurement": { "description": "Instrucción para comenzar la medición" }, - "longPressToStartNewMeasurement": "Presión prolongada para nueva medición", "@longPressToStartNewMeasurement": { "description": "Instrucción para reiniciar la medición después de completarla" }, - "shareDrawings": "Compartir dibujos", "@shareDrawings": { "description": "Acción para compartir dibujos a la red" }, - "clearAllDrawings": "Borrar todos los dibujos", "@clearAllDrawings": { "description": "Acción para borrar todos los dibujos locales" }, - "completeLine": "Completar línea", "@completeLine": { "description": "Tooltip para completar el dibujo de una línea" }, - "broadcastDrawingsToTeam": "Transmitir {count} dibujo{plural} al equipo", "@broadcastDrawingsToTeam": { "description": "Subtítulo que muestra cuántos dibujos se transmitirán", "placeholders": { - "count": {"type": "int"}, - "plural": {"type": "String"} + "count": { + "type": "int" + }, + "plural": { + "type": "String" + } } }, - "removeAllDrawings": "Eliminar todos los {count} dibujo{plural}", "@removeAllDrawings": { "description": "Subtítulo para la acción de eliminar todos los dibujos", "placeholders": { - "count": {"type": "int"}, - "plural": {"type": "String"} + "count": { + "type": "int" + }, + "plural": { + "type": "String" + } } }, - "deleteAllDrawingsConfirm": "¿Eliminar todos los {count} dibujo{plural} del mapa?", "@deleteAllDrawingsConfirm": { "description": "Mensaje de confirmación para eliminar todos los dibujos", "placeholders": { - "count": {"type": "int"}, - "plural": {"type": "String"} + "count": { + "type": "int" + }, + "plural": { + "type": "String" + } } }, - "drawing": "Dibujo", "@drawing": { "description": "Etiqueta genérica de dibujo" }, - "shareDrawingsCount": "Compartir {count} dibujo{plural}", "@shareDrawingsCount": { "description": "Título para el diálogo de compartir dibujos", "placeholders": { - "count": {"type": "int"}, - "plural": {"type": "String"} + "count": { + "type": "int" + }, + "plural": { + "type": "String" + } } }, - - "sentDrawingsToRoom": "Enviados {count} dibujo{plural} de mapa a {roomName}", - "@sentDrawingsToRoom": { - "description": "Mensaje del sistema cuando se envían dibujos a una sala", - "placeholders": { - "count": {"type": "int"}, - "plural": {"type": "String"}, - "roomName": {"type": "String"} - } - }, - - "sharedDrawingsToRoom": "Compartidos {success}/{total} dibujo{plural} con {roomName}", - "@sharedDrawingsToRoom": { - "description": "Mensaje snackbar mostrando dibujos compartidos con sala", - "placeholders": { - "success": {"type": "int"}, - "total": {"type": "int"}, - "plural": {"type": "String"}, - "roomName": {"type": "String"} - } - }, - "showReceivedDrawings": "Mostrar dibujos recibidos", "@showReceivedDrawings": { "description": "Alternar para mostrar/ocultar dibujos recibidos de otros miembros del equipo" }, - "showingAllDrawings": "Mostrando todos los dibujos", "@showingAllDrawings": { "description": "Subtítulo cuando los dibujos recibidos son visibles" }, - "showingOnlyYourDrawings": "Mostrando solo tus dibujos", "@showingOnlyYourDrawings": { "description": "Subtítulo cuando los dibujos recibidos están ocultos" }, - "showSarMarkers": "Mostrar marcadores SAR", "@showSarMarkers": { "description": "Alternar para mostrar/ocultar marcadores SAR en el mapa" }, - "showingSarMarkers": "Mostrando marcadores SAR", "@showingSarMarkers": { "description": "Subtítulo cuando los marcadores SAR son visibles" }, - "hidingSarMarkers": "Ocultando marcadores SAR", "@hidingSarMarkers": { "description": "Subtítulo cuando los marcadores SAR están ocultos" }, - "clearAll": "Borrar todo", "@clearAll": { "description": "Etiqueta del botón de borrar todo" }, - - "noLocalDrawings": "No hay dibujos locales para compartir", - "@noLocalDrawings": { - "description": "Mensaje cuando no hay dibujos para compartir" - }, - "publicChannel": "Canal público", "@publicChannel": { "description": "Opción de canal público para compartir" }, - "broadcastToAll": "Difundir a todos los nodos cercanos (efímero)", "@broadcastToAll": { "description": "Descripción de la difusión de canal público" }, - "storedPermanently": "Almacenado permanentemente en la sala", "@storedPermanently": { "description": "Descripción de la permanencia del almacenamiento en la sala" }, - - "drawingsSentToPublicChannel": "{count} dibujo{plural} de mapa enviado al Canal Público", - "@drawingsSentToPublicChannel": { - "description": "Mensaje del sistema cuando se envían dibujos al canal público", - "placeholders": { - "count": {"type": "int"}, - "plural": {"type": "String"} - } - }, - - "drawingsSharedToPublicChannel": "{success}/{total} dibujos compartidos al Canal Público", - "@drawingsSharedToPublicChannel": { - "description": "Mensaje de snackbar mostrando el recuento de éxitos para dibujos compartidos al canal público", - "placeholders": { - "success": {"type": "int"}, - "total": {"type": "int"} - } - }, - "notConnectedToDevice": "No conectado al dispositivo", "@notConnectedToDevice": { "description": "Mensaje de error cuando el dispositivo no está conectado para mensajería directa" }, - - "directMessage": "Mensaje directo", - "@directMessage": { - "description": "Título de la hoja de mensaje directo" - }, - - "directMessageSentTo": "Mensaje directo enviado a {contactName}", - "@directMessageSentTo": { - "description": "Mensaje de éxito después de enviar mensaje directo", - "placeholders": { - "contactName": { - "type": "String" - } - } - }, - - "failedToSend": "Error al enviar: {error}", - "@failedToSend": { - "description": "Mensaje de error cuando falla el envío de mensaje directo", - "placeholders": { - "error": { - "type": "String" - } - } - }, - - "directMessageInfo": "Este mensaje se enviará directamente a {contactName}. También aparecerá en el feed de mensajes principal.", - "@directMessageInfo": { - "description": "Información sobre el comportamiento de la mensajería directa", - "placeholders": { - "contactName": { - "type": "String" - } - } - }, - "typeYourMessage": "Escribe tu mensaje...", "@typeYourMessage": { "description": "Texto de marcador de posición para el campo de entrada de mensaje" }, - "quickLocationMarker": "Marcador de ubicación rápida", "@quickLocationMarker": { "description": "Subtítulo para el encabezado de la hoja de marcador SAR" }, - "markerType": "Tipo de marcador", "@markerType": { "description": "Etiqueta para la sección de selección de tipo de marcador" }, - "sendTo": "Enviar a", "@sendTo": { "description": "Etiqueta para la sección de selección de destino" }, - "noDestinationsAvailable": "No hay destinos disponibles.", "@noDestinationsAvailable": { "description": "Advertencia cuando no existen salas o canales" }, - "selectDestination": "Seleccionar destino...", "@selectDestination": { "description": "Marcador de posición para menú desplegable de destino" }, - "ephemeralBroadcastInfo": "Efímero: Solo difusión por el aire. No se almacena - los nodos deben estar en línea.", "@ephemeralBroadcastInfo": { "description": "Información sobre difusiones de canal efímeras" }, - "persistentRoomInfo": "Persistente: Almacenado de manera inmutable en la sala. Se sincroniza automáticamente y se conserva sin conexión.", "@persistentRoomInfo": { "description": "Información sobre almacenamiento persistente en sala" }, - "location": "Ubicación", "@location": { "description": "Etiqueta para la sección de ubicación" }, - - "myLocation": "Mi ubicación", - "@myLocation": { - "description": "Etiqueta del botón para insertar la ubicación GPS actual" - }, - "fromMap": "Desde el mapa", "@fromMap": { "description": "Insignia que muestra que la ubicación es desde un toque en el mapa" }, - "gettingLocation": "Obteniendo ubicación...", "@gettingLocation": { "description": "Mensaje de carga mientras se obtiene la ubicación GPS" }, - "locationError": "Error de ubicación", "@locationError": { "description": "Título para mensajes de error de ubicación" }, - "retry": "Reintentar", "@retry": { "description": "Etiqueta del botón de reintentar" }, - "refreshLocation": "Actualizar ubicación", "@refreshLocation": { "description": "Tooltip para el botón de actualizar ubicación" }, - "accuracyMeters": "Precisión: ±{accuracy}m", "@accuracyMeters": { "description": "Visualización de la precisión GPS en metros", @@ -971,17 +602,14 @@ } } }, - "notesOptional": "Notas (opcional)", "@notesOptional": { "description": "Etiqueta para el campo de notas opcional" }, - "addAdditionalInformation": "Agregar información adicional...", "@addAdditionalInformation": { "description": "Marcador de posición para el campo de notas" }, - "lowAccuracyWarning": "La precisión de la ubicación es ±{accuracy}m. Esto puede no ser lo suficientemente preciso para operaciones SAR.\n\n¿Continuar de todos modos?", "@lowAccuracyWarning": { "description": "Contenido del diálogo de advertencia para baja precisión GPS", @@ -991,37 +619,30 @@ } } }, - "loginToRoom": "Iniciar sesión en la sala", "@loginToRoom": { "description": "Título del diálogo de inicio de sesión en la sala" }, - "enterPasswordInfo": "Introduce la contraseña para acceder a esta sala. La contraseña se guardará para uso futuro.", "@enterPasswordInfo": { "description": "Información sobre la contraseña de la sala" }, - "password": "Contraseña", "@password": { "description": "Etiqueta del campo de contraseña" }, - "enterRoomPassword": "Introduce la contraseña de la sala", "@enterRoomPassword": { "description": "Sugerencia del campo de contraseña" }, - "loggingInDots": "Iniciando sesión...", "@loggingInDots": { "description": "Texto del botón mientras se inicia sesión" }, - "login": "Iniciar sesión", "@login": { "description": "Etiqueta del botón de iniciar sesión" }, - "failedToAddRoom": "Error al agregar la sala al dispositivo: {error}\n\nLa sala puede no haber anunciado aún.\nIntenta esperar a que la sala transmita.", "@failedToAddRoom": { "description": "Mensaje de error cuando falla la adición de la sala", @@ -1031,57 +652,26 @@ } } }, - "direct": "Directo", "@direct": { "description": "Indicador de enrutamiento directo" }, - "flood": "Inundación", "@flood": { "description": "Indicador de enrutamiento por inundación" }, - - "admin": "Admin", - "@admin": { - "description": "Etiqueta de insignia de administrador" - }, - "loggedIn": "Sesión iniciada", "@loggedIn": { "description": "Insignia de estado de sesión iniciada" }, - "noGpsData": "Sin datos GPS", "@noGpsData": { "description": "Mensaje cuando los datos GPS no están disponibles" }, - "distance": "Distancia", "@distance": { - "description": "Etiqueta de distancia" + "description": "Etiqueta de distancia en la brújula" }, - - "pingingDirect": "Haciendo ping a {name} (directo vía ruta)...", - "@pingingDirect": { - "description": "Mensaje de estado para ping directo", - "placeholders": { - "name": { - "type": "String" - } - } - }, - - "pingingFlood": "Haciendo ping a {name} (inundación - sin ruta)...", - "@pingingFlood": { - "description": "Mensaje de estado para ping por inundación", - "placeholders": { - "name": { - "type": "String" - } - } - }, - "directPingTimeout": "Tiempo de espera de ping directo agotado - reintentando {name} con inundación...", "@directPingTimeout": { "description": "Advertencia cuando el ping directo agota el tiempo de espera", @@ -1091,25 +681,6 @@ } } }, - - "pingSuccessful": "Ping exitoso a {name}{fallback}", - "@pingSuccessful": { - "description": "Mensaje de éxito para ping", - "placeholders": { - "name": { - "type": "String" - }, - "fallback": { - "type": "String" - } - } - }, - - "viaFloodingFallback": " (vía respaldo de inundación)", - "@viaFloodingFallback": { - "description": "Sufijo para éxito de ping con respaldo" - }, - "pingFailed": "Ping fallido a {name} - no se recibió respuesta", "@pingFailed": { "description": "Mensaje de error cuando falla el ping", @@ -1119,7 +690,6 @@ } } }, - "deleteContactConfirmation": "¿Estás seguro de que quieres eliminar \"{name}\"?\n\nEsto eliminará el contacto tanto de la aplicación como del dispositivo de radio compañero.", "@deleteContactConfirmation": { "description": "Mensaje de confirmación para eliminar contacto", @@ -1129,27 +699,6 @@ } } }, - - "removingContact": "Eliminando {name}...", - "@removingContact": { - "description": "Mensaje de estado mientras se elimina el contacto", - "placeholders": { - "name": { - "type": "String" - } - } - }, - - "contactRemoved": "Contacto \"{name}\" eliminado", - "@contactRemoved": { - "description": "Mensaje de éxito después de eliminar contacto", - "placeholders": { - "name": { - "type": "String" - } - } - }, - "failedToRemoveContact": "Error al eliminar contacto: {error}", "@failedToRemoveContact": { "description": "Mensaje de error cuando falla la eliminación del contacto", @@ -1159,117 +708,86 @@ } } }, - "type": "Tipo", "@type": { "description": "Etiqueta de tipo de contacto" }, - "publicKey": "Clave pública", "@publicKey": { "description": "Etiqueta de clave pública" }, - "lastSeen": "Visto por última vez", "@lastSeen": { "description": "Etiqueta de visto por última vez" }, - "roomStatus": "Estado de la sala", "@roomStatus": { "description": "Encabezado de la sección de estado de la sala" }, - "loginStatus": "Estado de inicio de sesión", "@loginStatus": { "description": "Etiqueta de estado de inicio de sesión" }, - "notLoggedIn": "No ha iniciado sesión", "@notLoggedIn": { "description": "Estado de no ha iniciado sesión" }, - "adminAccess": "Acceso de administrador", "@adminAccess": { "description": "Etiqueta de acceso de administrador" }, - "yes": "Sí", "@yes": { "description": "Respuesta sí" }, - "no": "No", "@no": { "description": "Respuesta no" }, - "permissions": "Permisos", "@permissions": { "description": "Etiqueta de permisos" }, - "passwordSaved": "Contraseña guardada", "@passwordSaved": { "description": "Etiqueta de contraseña guardada" }, - "locationColon": "Ubicación:", "@locationColon": { "description": "Encabezado de la sección de ubicación" }, - "telemetry": "Telemetría", "@telemetry": { "description": "Encabezado de la sección de telemetría" }, - - "requestingTelemetry": "Solicitando telemetría de {name}...", - "@requestingTelemetry": { - "description": "Mensaje de estado mientras se solicita telemetría", - "placeholders": { - "name": { - "type": "String" - } - } - }, - "voltage": "Voltaje", "@voltage": { "description": "Etiqueta de voltaje" }, - "battery": "Batería", "@battery": { "description": "Etiqueta de batería" }, - "temperature": "Temperatura", "@temperature": { "description": "Etiqueta de temperatura" }, - "humidity": "Humedad", "@humidity": { "description": "Etiqueta de humedad" }, - "pressure": "Presión", "@pressure": { "description": "Etiqueta de presión" }, - "gpsTelemetry": "GPS (Telemetría)", "@gpsTelemetry": { "description": "Etiqueta de GPS desde telemetría" }, - "updated": "Actualizado", "@updated": { "description": "Etiqueta de marca de tiempo actualizada" }, - "pathResetInfo": "Ruta restablecida para {name}. El próximo mensaje encontrará una nueva ruta.", "@pathResetInfo": { "description": "Mensaje de información después de restablecer ruta", @@ -1279,102 +797,74 @@ } } }, - "reLoginToRoom": "Re-iniciar sesión en la sala", "@reLoginToRoom": { "description": "Botón para re-iniciar sesión en la sala" }, - "heading": "Rumbo", "@heading": { "description": "Etiqueta de rumbo de brújula" }, - "elevation": "Elevación", "@elevation": { "description": "Etiqueta de elevación/altitud" }, - "accuracy": "Precisión", "@accuracy": { "description": "Etiqueta de precisión GPS" }, - - "distance": "Distancia", - "@distance": { - "description": "Etiqueta de distancia en la brújula" - }, - "bearing": "Rumbo", "@bearing": { "description": "Etiqueta de rumbo en la brújula" }, - "direction": "Dirección", "@direction": { "description": "Etiqueta de dirección en la brújula" }, - "filterMarkers": "Filtrar marcadores", "@filterMarkers": { "description": "Título del diálogo de filtrar marcadores" }, - "filterMarkersTooltip": "Filtrar marcadores", "@filterMarkersTooltip": { "description": "Tooltip para el botón de filtrar" }, - "contactsFilter": "Contactos", "@contactsFilter": { "description": "Opción de filtro para contactos" }, - "repeatersFilter": "Repetidores", "@repeatersFilter": { "description": "Opción de filtro para repetidores" }, - "sarMarkers": "Marcadores SAR", "@sarMarkers": { "description": "Encabezado de la sección de marcadores SAR" }, - "foundPerson": "Persona encontrada", "@foundPerson": { "description": "Tipo de marcador SAR de persona encontrada" }, - "fire": "Fuego", "@fire": { "description": "Tipo de marcador SAR de fuego" }, - "stagingArea": "Área de preparación", "@stagingArea": { "description": "Tipo de marcador SAR de área de preparación" }, - "showAll": "Mostrar todo", "@showAll": { "description": "Botón para mostrar todos los filtros" }, - - "nearbyContacts": "Contactos cercanos", - "@nearbyContacts": { - "description": "Título para la lista de contactos cercanos en brújula" - }, - "locationUnavailable": "Ubicación no disponible", "@locationUnavailable": { "description": "Mensaje cuando la ubicación GPS no está disponible" }, - "ahead": "adelante", "@ahead": { "description": "Dirección de rumbo relativo - adelante" }, - "degreesRight": "{degrees}° derecha", "@degreesRight": { "description": "Dirección de rumbo relativo - derecha", @@ -1384,7 +874,6 @@ } } }, - "degreesLeft": "{degrees}° izquierda", "@degreesLeft": { "description": "Dirección de rumbo relativo - izquierda", @@ -1394,7 +883,6 @@ } } }, - "latLonFormat": "Lat: {latitude} Lon: {longitude}", "@latLonFormat": { "description": "Formato de visualización de latitud y longitud", @@ -1407,506 +895,100 @@ } } }, - "noContactsYet": "Aún no hay contactos", "@noContactsYet": { "description": "Mensaje de estado vacío cuando no hay contactos" }, - "connectToDeviceToLoadContacts": "Conéctate a un dispositivo para cargar contactos", "@connectToDeviceToLoadContacts": { "description": "Instrucción para conectar dispositivo para cargar contactos" }, - "teamMembers": "Miembros del equipo", "@teamMembers": { "description": "Encabezado de sección para miembros del equipo (contactos de chat)" }, - "repeaters": "Repetidores", "@repeaters": { "description": "Encabezado de sección para nodos repetidores" }, - "rooms": "Salas", "@rooms": { "description": "Encabezado de sección para salas" }, - "channels": "Canales", "@channels": { "description": "Encabezado de sección para canales de difusión" }, - - "cacheStatistics": "Estadísticas de caché", - "@cacheStatistics": { - "description": "Título de la sección de estadísticas de caché" - }, - - "totalTiles": "Total de teselas", - "@totalTiles": { - "description": "Etiqueta del número total de teselas en caché" - }, - - "cacheSize": "Tamaño de caché", - "@cacheSize": { - "description": "Etiqueta del tamaño de caché en MB" - }, - - "storeName": "Nombre del almacén", - "@storeName": { - "description": "Etiqueta del nombre del almacén de caché" - }, - - "noCacheStatistics": "No hay estadísticas de caché disponibles", - "@noCacheStatistics": { - "description": "Mensaje cuando las estadísticas de caché no están disponibles" - }, - - "downloadRegion": "Descargar región", - "@downloadRegion": { - "description": "Título de la sección de descargar región" - }, - - "mapLayer": "Capa de mapa", - "@mapLayer": { - "description": "Etiqueta de selección de capa de mapa" - }, - - "regionBounds": "Límites de región", - "@regionBounds": { - "description": "Título de la sección de entrada de límites de región" - }, - - "north": "Norte", - "@north": { - "description": "Etiqueta de coordenada norte" - }, - - "south": "Sur", - "@south": { - "description": "Etiqueta de coordenada sur" - }, - - "east": "Este", - "@east": { - "description": "Etiqueta de coordenada este" - }, - - "west": "Oeste", - "@west": { - "description": "Etiqueta de coordenada oeste" - }, - - "zoomLevels": "Niveles de zoom", - "@zoomLevels": { - "description": "Título de la sección de niveles de zoom" - }, - - "minZoom": "Mín: {zoom}", - "@minZoom": { - "description": "Etiqueta del nivel de zoom mínimo", - "placeholders": { - "zoom": { - "type": "int" - } - } - }, - - "maxZoom": "Máx: {zoom}", - "@maxZoom": { - "description": "Etiqueta del nivel de zoom máximo", - "placeholders": { - "zoom": { - "type": "int" - } - } - }, - - "downloadingDots": "Descargando...", - "@downloadingDots": { - "description": "Mensaje de estado durante la descarga" - }, - - "cancelDownload": "Cancelar descarga", - "@cancelDownload": { - "description": "Botón para cancelar descarga" - }, - - "downloadRegionButton": "Descargar región", - "@downloadRegionButton": { - "description": "Botón para iniciar descarga de región" - }, - - "downloadNote": "Nota: Las regiones grandes o niveles de zoom altos pueden tomar un tiempo y espacio de almacenamiento significativos.", - "@downloadNote": { - "description": "Advertencia sobre el tamaño y tiempo de descarga" - }, - - "cacheManagement": "Gestión de caché", - "@cacheManagement": { - "description": "Título de la sección de gestión de caché" - }, - - "clearAllMaps": "Borrar todos los mapas", - "@clearAllMaps": { - "description": "Botón para borrar todos los mapas en caché" - }, - - "clearMapsConfirmTitle": "Borrar todos los mapas", - "@clearMapsConfirmTitle": { - "description": "Título del diálogo de confirmación de borrar mapas" - }, - - "clearMapsConfirmMessage": "¿Estás seguro de que quieres eliminar todos los mapas descargados? Esta acción no se puede deshacer.", - "@clearMapsConfirmMessage": { - "description": "Mensaje de confirmación para borrar mapas" - }, - - "mapDownloadCompleted": "¡Descarga de mapa completada!", - "@mapDownloadCompleted": { - "description": "Mensaje de éxito después de descargar mapa" - }, - - "cacheClearedSuccessfully": "¡Caché borrada exitosamente!", - "@cacheClearedSuccessfully": { - "description": "Mensaje de éxito después de borrar caché" - }, - - "downloadCancelled": "Descarga cancelada", - "@downloadCancelled": { - "description": "Mensaje cuando se cancela la descarga" - }, - - "startingDownload": "Iniciando descarga...", - "@startingDownload": { - "description": "Estado inicial cuando comienza la descarga" - }, - - "downloadingMapTiles": "Descargando teselas de mapa...", - "@downloadingMapTiles": { - "description": "Estado durante la descarga de teselas" - }, - - "downloadCompletedSuccessfully": "¡Descarga completada exitosamente!", - "@downloadCompletedSuccessfully": { - "description": "Estado después de descarga exitosa" - }, - - "cancellingDownload": "Cancelando descarga...", - "@cancellingDownload": { - "description": "Estado mientras se cancela la descarga" - }, - - "errorLoadingStats": "Error al cargar estadísticas: {error}", - "@errorLoadingStats": { - "description": "Mensaje de error cuando falla la carga de estadísticas de caché", - "placeholders": { - "error": { - "type": "String" - } - } - }, - - "downloadFailed": "Error en la descarga: {error}", - "@downloadFailed": { - "description": "Mensaje de error cuando falla la descarga", - "placeholders": { - "error": { - "type": "String" - } - } - }, - - "cancelFailed": "Error al cancelar: {error}", - "@cancelFailed": { - "description": "Mensaje de error cuando falla la cancelación", - "placeholders": { - "error": { - "type": "String" - } - } - }, - - "clearCacheFailed": "Error al borrar caché: {error}", - "@clearCacheFailed": { - "description": "Mensaje de error cuando falla el borrado de caché", - "placeholders": { - "error": { - "type": "String" - } - } - }, - - "minZoomError": "Zoom mín: {error}", - "@minZoomError": { - "description": "Error de validación para zoom mínimo", - "placeholders": { - "error": { - "type": "String" - } - } - }, - - "maxZoomError": "Zoom máx: {error}", - "@maxZoomError": { - "description": "Error de validación para zoom máximo", - "placeholders": { - "error": { - "type": "String" - } - } - }, - - "minZoomGreaterThanMax": "El zoom mínimo debe ser menor o igual al zoom máximo", - "@minZoomGreaterThanMax": { - "description": "Error de validación cuando zoom mín > zoom máx" - }, - "selectMapLayer": "Seleccionar capa de mapa", "@selectMapLayer": { "description": "Título del diálogo de selección de capa de mapa" }, - - "mapOptions": "Opciones de mapa", - "@mapOptions": { - "description": "Título del diálogo de opciones de mapa" - }, - - "showLegend": "Mostrar leyenda", - "@showLegend": { - "description": "Alternar para mostrar leyenda del mapa" - }, - - "displayMarkerTypeCounts": "Mostrar recuentos de tipos de marcadores", - "@displayMarkerTypeCounts": { - "description": "Descripción del alternar de mostrar leyenda" - }, - - "rotateMapWithHeading": "Rotar mapa con rumbo", - "@rotateMapWithHeading": { - "description": "Alternar para rotar mapa con rumbo de brújula" - }, - - "mapFollowsDirection": "El mapa sigue tu dirección cuando te mueves", - "@mapFollowsDirection": { - "description": "Descripción del alternar de rotar mapa" - }, - - "resetMapRotation": "Restablecer rotación", - "@resetMapRotation": { - "description": "Botón para restablecer la rotación del mapa al norte" - }, - - "resetMapRotationTooltip": "Restablecer mapa al norte", - "@resetMapRotationTooltip": { - "description": "Tooltip para botón de restablecer rotación" - }, - - "showMapDebugInfo": "Mostrar información de depuración del mapa", - "@showMapDebugInfo": { - "description": "Alternar para mostrar información de depuración del mapa" - }, - - "displayZoomLevelBounds": "Mostrar nivel de zoom y límites", - "@displayZoomLevelBounds": { - "description": "Descripción del alternar de información de depuración" - }, - - "fullscreenMode": "Modo de pantalla completa", - "@fullscreenMode": { - "description": "Alternar para modo de mapa de pantalla completa" - }, - - "hideUiFullMapView": "Ocultar todos los controles de IU para vista de mapa completo", - "@hideUiFullMapView": { - "description": "Descripción del alternar de modo de pantalla completa" - }, - "openStreetMap": "OpenStreetMap", "@openStreetMap": { "description": "Nombre de capa OpenStreetMap" }, - "openTopoMap": "OpenTopoMap", "@openTopoMap": { "description": "Nombre de capa OpenTopoMap" }, - "esriSatellite": "ESRI Satélite", "@esriSatellite": { "description": "Nombre de capa de imágenes de satélite ESRI" }, - "googleHybrid": "Google Híbrido", "@googleHybrid": { "description": "Nombre de capa Google Híbrido (satélite + etiquetas)" }, - "googleRoadmap": "Google Mapa de Carreteras", "@googleRoadmap": { "description": "Nombre de capa Google Mapa de Carreteras" }, - "googleTerrain": "Google Terreno", "@googleTerrain": { "description": "Nombre de capa Google Terreno (topográfico)" }, - - "downloadVisibleArea": "Descargar área visible", - "@downloadVisibleArea": { - "description": "Tooltip para el botón de descargar área visible" - }, - - "initializingMap": "Inicializando mapa...", - "@initializingMap": { - "description": "Mensaje de carga para inicialización del mapa" - }, - "dragToPosition": "Arrastrar a posición", "@dragToPosition": { "description": "Etiqueta al arrastrar un pin en el mapa" }, - "createSarMarker": "Crear marcador SAR", "@createSarMarker": { "description": "Etiqueta para crear marcador SAR desde pin" }, - "compass": "Brújula", "@compass": { "description": "Título de brújula en diálogo de brújula detallada" }, - "navigationAndContacts": "Navegación y contactos", "@navigationAndContacts": { "description": "Subtítulo del diálogo de brújula" }, - "sarAlert": "ALERTA SAR", "@sarAlert": { "description": "Etiqueta de insignia de alerta SAR en mensajes" }, - - "messageSentToPublicChannel": "Mensaje enviado al canal público", - "@messageSentToPublicChannel": { - "description": "Mensaje de éxito cuando el mensaje se envía al canal público" - }, - - "pleaseSelectRoomToSendSar": "Por favor, selecciona una sala para enviar marcador SAR", - "@pleaseSelectRoomToSendSar": { - "description": "Error cuando no se selecciona sala para marcador SAR" - }, - - "failedToSendSarMarker": "Error al enviar marcador SAR: {error}", - "@failedToSendSarMarker": { - "description": "Mensaje de error cuando falla el envío del marcador SAR", - "placeholders": { - "error": { - "type": "String" - } - } - }, - - "sarMarkerSentTo": "Marcador SAR enviado a {roomName}", - "@sarMarkerSentTo": { - "description": "Mensaje de éxito cuando el marcador SAR se envía a la sala", - "placeholders": { - "roomName": { - "type": "String" - } - } - }, - - "notConnectedCannotSync": "No conectado - no se pueden sincronizar mensajes", - "@notConnectedCannotSync": { - "description": "Advertencia al intentar sincronizar mensajes sin estar conectado" - }, - - "syncedMessageCount": "Sincronizados {count} mensaje(s)", - "@syncedMessageCount": { - "description": "Mensaje de éxito mostrando número de mensajes sincronizados", - "placeholders": { - "count": { - "type": "int" - } - } - }, - - "noNewMessages": "No hay mensajes nuevos", - "@noNewMessages": { - "description": "Mensaje de información cuando no hay mensajes nuevos para sincronizar" - }, - - "syncFailed": "Error de sincronización: {error}", - "@syncFailed": { - "description": "Mensaje de error cuando falla la sincronización", - "placeholders": { - "error": { - "type": "String" - } - } - }, - - "failedToResendMessage": "Error al reenviar mensaje", - "@failedToResendMessage": { - "description": "Error cuando falla el reintento de mensaje" - }, - - "retryingMessage": "Reintentando mensaje...", - "@retryingMessage": { - "description": "Mensaje de información al reintentar un mensaje fallido" - }, - - "retryFailed": "Error de reintento: {error}", - "@retryFailed": { - "description": "Mensaje de error cuando falla el reintento", - "placeholders": { - "error": { - "type": "String" - } - } - }, - "textCopiedToClipboard": "Texto copiado al portapapeles", "@textCopiedToClipboard": { "description": "Mensaje de éxito cuando se copia texto" }, - "cannotReplySenderMissing": "No se puede responder: falta información del remitente", "@cannotReplySenderMissing": { "description": "Error cuando falta información del remitente para responder" }, - "cannotReplyContactNotFound": "No se puede responder: contacto no encontrado", "@cannotReplyContactNotFound": { "description": "Error cuando no se encuentra contacto para responder" }, - - "messageDeleted": "Mensaje eliminado", - "@messageDeleted": { - "description": "Mensaje de información cuando se elimina mensaje" - }, - "copyText": "Copiar texto", - "textCopiedToClipboard": "Texto copiado al portapapeles", "deleteMessage": "Eliminar mensaje", "deleteMessageConfirmation": "¿Está seguro de que desea eliminar este mensaje?", "shareLocation": "Compartir ubicación", "shareLocationText": "{markerInfo}\n\nCoordenadas: {lat}, {lon}\n\nGoogle Maps: {url}", "sarLocationShare": "Ubicación SAR", - "locationShared": "Ubicación compartida", - - "refreshedContacts": "Contactos actualizados", - "@refreshedContacts": { - "description": "Mensaje de éxito cuando se actualizan contactos" - }, - "justNow": "Justo ahora", "@justNow": { "description": "Indicador de tiempo para actividad muy reciente" }, - "minutesAgo": "Hace {minutes}m", "@minutesAgo": { "description": "Indicador de tiempo para hace minutos", @@ -1916,7 +998,6 @@ } } }, - "hoursAgo": "Hace {hours}h", "@hoursAgo": { "description": "Indicador de tiempo para hace horas", @@ -1926,7 +1007,6 @@ } } }, - "daysAgo": "Hace {days}d", "@daysAgo": { "description": "Indicador de tiempo para hace días", @@ -1936,7 +1016,6 @@ } } }, - "secondsAgo": "Hace {seconds}s", "@secondsAgo": { "description": "Indicador de tiempo para hace segundos", @@ -1946,22 +1025,18 @@ } } }, - "sending": "Enviando...", "@sending": { "description": "Estado de entrega: enviando" }, - "sent": "Enviado", "@sent": { "description": "Estado de entrega: enviado" }, - "delivered": "Entregado", "@delivered": { "description": "Estado de entrega: entregado" }, - "deliveredWithTime": "Entregado ({time}ms)", "@deliveredWithTime": { "description": "Estado de entrega con tiempo de ida y vuelta", @@ -1971,17 +1046,14 @@ } } }, - "failed": "Fallido", "@failed": { "description": "Estado de entrega: fallido" }, - "broadcast": "Difusión", "@broadcast": { "description": "Estado de entrega para mensajes de canal (sin ecos aún)" }, - "deliveredToContacts": "Entregado a {delivered}/{total} contactos", "@deliveredToContacts": { "description": "Recuento de entrega de mensaje agrupado", @@ -1994,226 +1066,88 @@ } } }, - "allDelivered": "Todo entregado", "@allDelivered": { "description": "Estado cuando todos los destinatarios recibieron el mensaje" }, - "recipientDetails": "Detalles de destinatarios", "@recipientDetails": { "description": "Encabezado para lista de destinatarios expandible" }, - "pending": "Pendiente", "@pending": { "description": "Estado de entrega: pendiente/esperando" }, - "sarMarkerFoundPerson": "Persona encontrada", "@sarMarkerFoundPerson": { "description": "Tipo de marcador SAR: persona encontrada" }, - "sarMarkerFire": "Ubicación de fuego", "@sarMarkerFire": { "description": "Tipo de marcador SAR: fuego" }, - "sarMarkerStagingArea": "Área de preparación", "@sarMarkerStagingArea": { "description": "Tipo de marcador SAR: área de preparación" }, - "sarMarkerObject": "Objeto encontrado", "@sarMarkerObject": { "description": "Tipo de marcador SAR: objeto" }, - "from": "De", "@from": { "description": "Etiqueta de remitente en notificaciones" }, - "coordinates": "Coordenadas", "@coordinates": { "description": "Etiqueta de coordenadas" }, - "tapToViewOnMap": "Toca para ver en el mapa", "@tapToViewOnMap": { "description": "Texto de acción de notificación" }, - "radioSettings": "Configuración de radio", "@radioSettings": { "description": "Título de sección para configuración de radio" }, - "frequencyMHz": "Frecuencia (MHz)", "@frequencyMHz": { "description": "Etiqueta del campo de frecuencia de radio" }, - "frequencyExample": "ej., 869.618", "@frequencyExample": { "description": "Texto de ayuda de ejemplo para frecuencia" }, - "bandwidth": "Ancho de banda", "@bandwidth": { "description": "Etiqueta del menú desplegable de ancho de banda" }, - "spreadingFactor": "Factor de dispersión", "@spreadingFactor": { "description": "Etiqueta del menú desplegable de factor de dispersión" }, - "codingRate": "Tasa de codificación", "@codingRate": { "description": "Etiqueta del menú desplegable de tasa de codificación" }, - "txPowerDbm": "Potencia TX (dBm)", "@txPowerDbm": { "description": "Etiqueta del campo de potencia TX" }, - "maxPowerDbm": "Máx: {power} dBm", "@maxPowerDbm": { "description": "Texto de ayuda mostrando potencia TX máxima", "placeholders": { - "power": { "type": "int" } + "power": { + "type": "int" + } } }, - "you": "Tú", "@you": { "description": "Etiqueta para el usuario actual en burbujas de mensaje" }, - - "offlineVectorMaps": "Mapas vectoriales sin conexión", - "@offlineVectorMaps": { - "description": "Título de la sección de mapas vectoriales sin conexión" - }, - - "offlineVectorMapsDescription": "Importar y gestionar teselas de mapas vectoriales sin conexión (formato MBTiles) para usar sin conexión a internet", - "@offlineVectorMapsDescription": { - "description": "Descripción de la sección de mapas vectoriales sin conexión" - }, - - "importMbtiles": "Importar archivo MBTiles", - "@importMbtiles": { - "description": "Botón para importar archivo MBTiles" - }, - - "importMbtilesNote": "Compatible con archivos MBTiles con teselas vectoriales (formato PBF/MVT). ¡Los extractos de Geofabrik funcionan muy bien!", - "@importMbtilesNote": { - "description": "Nota sobre tipos de archivo MBTiles compatibles" - }, - - "noMbtilesFiles": "No se encontraron mapas vectoriales sin conexión", - "@noMbtilesFiles": { - "description": "Mensaje cuando no hay archivos MBTiles disponibles" - }, - - "mbtilesImportedSuccessfully": "Archivo MBTiles importado exitosamente", - "@mbtilesImportedSuccessfully": { - "description": "Mensaje de éxito después de importar archivo MBTiles" - }, - - "failedToImportMbtiles": "Error al importar archivo MBTiles", - "@failedToImportMbtiles": { - "description": "Mensaje de error cuando falla la importación de MBTiles" - }, - - "deleteMbtilesConfirmTitle": "Eliminar mapa sin conexión", - "@deleteMbtilesConfirmTitle": { - "description": "Título del diálogo de confirmación de eliminar MBTiles" - }, - - "deleteMbtilesConfirmMessage": "¿Estás seguro de que quieres eliminar \"{name}\"? Esto eliminará permanentemente el mapa sin conexión.", - "@deleteMbtilesConfirmMessage": { - "description": "Mensaje de confirmación para eliminar archivo MBTiles", - "placeholders": { - "name": { - "type": "String" - } - } - }, - - "mbtilesDeletedSuccessfully": "Mapa sin conexión eliminado exitosamente", - "@mbtilesDeletedSuccessfully": { - "description": "Mensaje de éxito después de eliminar archivo MBTiles" - }, - - "failedToDeleteMbtiles": "Error al eliminar mapa sin conexión", - "@failedToDeleteMbtiles": { - "description": "Mensaje de error cuando falla la eliminación de MBTiles" - }, - - "importExportCachedTiles": "Importar/Exportar teselas en caché", - "@importExportCachedTiles": { - "description": "Título para sección de importar/exportar" - }, - - "importExportDescription": "Realice copias de seguridad, comparta y restaure teselas de mapas descargadas entre dispositivos", - "@importExportDescription": { - "description": "Descripción de funcionalidad de importar/exportar" - }, - - "exportTilesToFile": "Exportar teselas a archivo", - "@exportTilesToFile": { - "description": "Botón para exportar teselas" - }, - - "importTilesFromFile": "Importar teselas desde archivo", - "@importTilesFromFile": { - "description": "Botón para importar teselas" - }, - - "selectExportLocation": "Seleccionar ubicación de exportación", - "@selectExportLocation": { - "description": "Título para selector de archivo de exportación" - }, - - "selectImportFile": "Seleccionar archivo de teselas", - "@selectImportFile": { - "description": "Título para selector de archivo de importación" - }, - - "exportingTiles": "Exportando teselas...", - "@exportingTiles": { - "description": "Mensaje de estado durante exportación" - }, - - "importingTiles": "Importando teselas...", - "@importingTiles": { - "description": "Mensaje de estado durante importación" - }, - - "exportSuccess": "{count} teselas exportadas exitosamente", - "@exportSuccess": { - "description": "Mensaje de éxito después de exportar", - "placeholders": { - "count": { - "type": "int" - } - } - }, - - "importSuccess": "{count} almacenes importados exitosamente", - "@importSuccess": { - "description": "Mensaje de éxito después de importar", - "placeholders": { - "count": { - "type": "int" - } - } - }, - - "exportFailed": "Error en exportación: {error}", + "exportFailed": "Export failed: {error}", "@exportFailed": { "description": "Mensaje de error cuando falla exportación", "placeholders": { @@ -2222,8 +1156,7 @@ } } }, - - "importFailed": "Error en importación: {error}", + "importFailed": "Import failed: {error}", "@importFailed": { "description": "Mensaje de error cuando falla importación", "placeholders": { @@ -2232,212 +1165,74 @@ } } }, - - "exportNote": "Crea un archivo comprimido (.fmtc) que se puede compartir e importar en otros dispositivos.", - "@exportNote": { - "description": "Nota sobre funcionalidad de exportación" - }, - - "importNote": "Importa teselas de mapa desde un archivo previamente exportado. Las teselas se fusionarán con la caché existente.", - "@importNote": { - "description": "Nota sobre funcionalidad de importación" - }, - - "noTilesToExport": "No hay teselas para exportar", - "@noTilesToExport": { - "description": "Mensaje cuando caché está vacío" - }, - - "archiveContainsStores": "El archivo contiene {count} almacenes", - "@archiveContainsStores": { - "description": "Información sobre contenido del archivo", - "placeholders": { - "count": { - "type": "int" - } - } - }, - - "vectorTiles": "Teselas vectoriales", - "@vectorTiles": { - "description": "Etiqueta del tipo de tesela vectorial" - }, - - "schema": "Esquema", - "@schema": { - "description": "Etiqueta del esquema de tesela vectorial" - }, - "unknown": "Desconocido", "@unknown": { "description": "Etiqueta de valor desconocido" }, - - "bounds": "Límites", - "@bounds": { - "description": "Etiqueta de límites geográficos" - }, - "onlineLayers": "Capas en línea", "@onlineLayers": { "description": "Encabezado de sección para capas de mapa en línea" }, - - "offlineLayers": "Capas sin conexión", - "@offlineLayers": { - "description": "Encabezado de sección para capas de mapa sin conexión (MBTiles)" - }, - "locationTrail": "Rastro de ubicación", "@locationTrail": { "description": "Título del rastro de ubicación" }, - "showTrailOnMap": "Mostrar rastro en el mapa", "@showTrailOnMap": { "description": "Alternar para mostrar/ocultar rastro en el mapa" }, - "trailVisible": "El rastro es visible en el mapa", "@trailVisible": { "description": "Estado de visibilidad del rastro - visible" }, - "trailHiddenRecording": "El rastro está oculto (aún grabando)", "@trailHiddenRecording": { "description": "Estado de visibilidad del rastro - oculto pero grabando" }, - "duration": "Duración", "@duration": { "description": "Etiqueta de duración" }, - "points": "Puntos", "@points": { "description": "Etiqueta de recuento de puntos del rastro" }, - "clearTrail": "Borrar rastro", "@clearTrail": { "description": "Botón para borrar rastro de ubicación" }, - "clearTrailQuestion": "¿Borrar rastro?", "@clearTrailQuestion": { "description": "Título del diálogo de confirmación" }, - "clearTrailConfirmation": "¿Estás seguro de que quieres borrar el rastro de ubicación actual? Esta acción no se puede deshacer.", "@clearTrailConfirmation": { "description": "Mensaje del diálogo de confirmación" }, - "noTrailRecorded": "Aún no se ha grabado rastro", "@noTrailRecorded": { "description": "Mensaje cuando no existe rastro" }, - "startTrackingToRecord": "Inicia el seguimiento de ubicación para grabar tu rastro", "@startTrackingToRecord": { "description": "Instrucciones para iniciar la grabación del rastro" }, - "trailControls": "Controles del rastro", "@trailControls": { "description": "Tooltip de controles del rastro" }, - - "exportTrailToGpx": "Exportar rastro a GPX", - "@exportTrailToGpx": { - "description": "Etiqueta del botón para exportar el rastro a archivo GPX" - }, - - "importTrailFromGpx": "Importar rastro desde GPX", - "@importTrailFromGpx": { - "description": "Etiqueta del botón para importar el rastro desde archivo GPX" - }, - - "trailExportedSuccessfully": "¡Rastro exportado exitosamente!", - "@trailExportedSuccessfully": { - "description": "Mensaje de éxito cuando se exporta el rastro" - }, - - "failedToExportTrail": "Error al exportar el rastro", - "@failedToExportTrail": { - "description": "Mensaje de error cuando falla la exportación del rastro" - }, - - "failedToImportTrail": "Error al importar el rastro: {error}", - "@failedToImportTrail": { - "description": "Mensaje de error cuando falla la importación del rastro", - "placeholders": { - "error": { - "type": "String" - } - } - }, - - "importTrail": "Importar rastro", - "@importTrail": { - "description": "Título del diálogo de importación de rastro" - }, - - "importTrailQuestion": "¿Importar rastro con {pointCount} puntos?\n\nPuede reemplazar su rastro actual o verlo junto a él.", - "@importTrailQuestion": { - "description": "Contenido del diálogo de confirmación de importación de rastro", - "placeholders": { - "pointCount": { - "type": "int" - } - } - }, - - "viewAlongside": "Ver junto", - "@viewAlongside": { - "description": "Botón para importar el rastro junto al rastro actual" - }, - - "replaceCurrent": "Reemplazar actual", - "@replaceCurrent": { - "description": "Botón para reemplazar el rastro actual con el rastro importado" - }, - - "trailImported": "¡Rastro importado! ({pointCount} puntos)", - "@trailImported": { - "description": "Mensaje de éxito cuando se importa el rastro", - "placeholders": { - "pointCount": { - "type": "int" - } - } - }, - - "trailReplaced": "¡Rastro reemplazado! ({pointCount} puntos)", - "@trailReplaced": { - "description": "Mensaje de éxito cuando se reemplaza el rastro", - "placeholders": { - "pointCount": { - "type": "int" - } - } - }, - "contactTrails": "Rastros de contactos", "@contactTrails": { "description": "Encabezado de la sección de rastros de contactos" }, - "showAllContactTrails": "Mostrar todos los rastros de contactos", "@showAllContactTrails": { "description": "Etiqueta del interruptor para mostrar todos los rastros de contactos" }, - "noContactsWithLocationHistory": "No hay contactos con historial de ubicación", "@noContactsWithLocationHistory": { "description": "Subtítulo cuando no hay contactos con rastros" }, - "showingTrailsForContacts": "Mostrando rastros para {count} contactos", "@showingTrailsForContacts": { "description": "Subtítulo que muestra el número de contactos con rastros", @@ -2447,117 +1242,94 @@ } } }, - "individualContactTrails": "Rastros individuales de contactos", "@individualContactTrails": { "description": "Título del elemento expandible para rastros individuales de contactos" }, - "deviceInformation": "Información del dispositivo", "@deviceInformation": { "description": "Encabezado de la sección de información del dispositivo" }, - "bleName": "Nombre BLE", "@bleName": { "description": "Etiqueta del nombre del dispositivo Bluetooth Low Energy" }, - "meshName": "Nombre Mesh", "@meshName": { "description": "Etiqueta del nombre de red mesh" }, - "notSet": "No establecido", "@notSet": { "description": "Etiqueta cuando no se establece un valor" }, - "model": "Modelo", "@model": { "description": "Etiqueta del modelo del dispositivo" }, - "version": "Versión", "@version": { "description": "Etiqueta de versión" }, - "buildDate": "Fecha de compilación", "@buildDate": { "description": "Etiqueta de fecha de compilación del firmware" }, - "firmware": "Firmware", "@firmware": { "description": "Etiqueta de firmware" }, - "maxContacts": "Contactos máximos", "@maxContacts": { "description": "Etiqueta de capacidad máxima de contactos" }, - "maxChannels": "Canales máximos", "@maxChannels": { "description": "Etiqueta de capacidad máxima de canales" }, - "publicInfo": "Información pública", "@publicInfo": { "description": "Encabezado de la sección de información pública" }, - "meshNetworkName": "Nombre de red Mesh", "@meshNetworkName": { "description": "Etiqueta del campo de nombre de red mesh" }, - "nameBroadcastInMesh": "Nombre difundido en anuncios mesh", "@nameBroadcastInMesh": { "description": "Texto de ayuda para el campo de nombre de red mesh" }, - "telemetryAndLocationSharing": "Telemetría y compartir ubicación", "@telemetryAndLocationSharing": { "description": "Etiqueta del alternar de telemetría y compartir ubicación" }, - "lat": "Lat", "@lat": { "description": "Etiqueta del campo de latitud (forma corta)" }, - "lon": "Lon", "@lon": { "description": "Etiqueta del campo de longitud (forma corta)" }, - "useCurrentLocation": "Usar ubicación actual", "@useCurrentLocation": { "description": "Tooltip para el botón de usar ubicación actual" }, - "noneUnknown": "Ninguno/Desconocido", "@noneUnknown": { "description": "Tipo de dispositivo: ninguno o desconocido" }, - "chatNode": "Nodo de chat", "@chatNode": { "description": "Tipo de dispositivo: nodo de chat" }, - "repeater": "Repetidor", "@repeater": { "description": "Tipo de dispositivo: repetidor" }, - "roomChannel": "Sala/Canal", "@roomChannel": { "description": "Tipo de dispositivo: sala o canal" }, - "typeNumber": "Tipo {number}", "@typeNumber": { "description": "Tipo de dispositivo genérico con número", @@ -2567,7 +1339,6 @@ } } }, - "copiedToClipboardShort": "Copiado {label} al portapapeles", "@copiedToClipboardShort": { "description": "Mensaje corto de éxito al copiar al portapapeles", @@ -2577,7 +1348,6 @@ } } }, - "failedToSave": "Error al guardar: {error}", "@failedToSave": { "description": "Mensaje de error genérico para fallos al guardar", @@ -2587,7 +1357,6 @@ } } }, - "failedToGetLocation": "Error al obtener ubicación: {error}", "@failedToGetLocation": { "description": "Mensaje de error cuando falla la obtención de ubicación", @@ -2597,7 +1366,6 @@ } } }, - "sarTemplates": "Plantillas SAR", "manageSarTemplates": "Gestionar plantillas SAR", "addTemplate": "Agregar plantilla", @@ -2620,8 +1388,6 @@ "templateDeleted": "Template deleted", "templatesImported": "{count, plural, =0{No templates imported} =1{Imported 1 template} other{Imported {count} templates}}", "templatesExported": "{count, plural, =1{Exported 1 template to clipboard} other{Exported {count} templates to clipboard}}", - "importFailed": "Import failed: {error}", - "exportFailed": "Export failed: {error}", "resetToDefaults": "Restablecer valores predeterminados", "resetToDefaultsConfirmation": "Esto eliminará todas las plantillas personalizadas y restaurará las 4 plantillas predeterminadas. ¿Continuar?", "reset": "Restablecer", @@ -2629,8 +1395,6 @@ "noTemplates": "No templates available", "tapAddToCreate": "Tap + to create your first template", "ok": "OK", - "delete": "Eliminar", - "permissionsSection": "Permisos", "locationPermission": "Permiso de ubicación", "checking": "Comprobando...", @@ -2645,19 +1409,15 @@ "locationPermissionAlreadyGranted": "El permiso de ubicación ya está concedido.", "sarNavyBlue": "SAR Azul Marino", "sarNavyBlueDescription": "Modo Profesional/Operaciones", - "selectRecipient": "Seleccionar destinatario", "broadcastToAllNearby": "Transmitir a todos cercanos", "searchRecipients": "Buscar destinatarios...", "noContactsFound": "No se encontraron contactos", "noRoomsFound": "No se encontraron salas", - "noContactsOrRoomsAvailable": "No hay contactos o salas disponibles", "noRecipientsAvailable": "No hay destinatarios disponibles", "noChannelsFound": "No se encontraron canales", - "messagesWillBeSentToPublicChannel": "Los mensajes se enviarán al canal público", "newMessage": "Nuevo mensaje", "channel": "Canal", - "samplePoliceLead": "Jefe de Policía", "sampleDroneOperator": "Operador de Dron", "sampleFirefighterAlpha": "Bombero", @@ -2707,28 +1467,17 @@ "sampleBaseCommand": "Comando de Base", "sampleFieldCoordinator": "Coordinador de Campo", "sampleMedicalTeam": "Equipo Médico", - "mapDrawing": "Dibujo del Mapa", - "drawingShared": "Dibujo del Mapa", "lineDrawing": "Línea", "rectangleDrawing": "Rectángulo", "navigateToDrawing": "Navegar al Dibujo", "hideFromMap": "Ocultar del Mapa", "copyCoordinates": "Copiar Coordenadas", - "coordinatesCopiedToClipboard": "Coordenadas copiadas al portapapeles", - "manualCoordinates": "Coordenadas Manuales", "enterCoordinatesManually": "Introducir coordenadas manualmente", "latitudeLabel": "Latitud", "longitudeLabel": "Longitud", - "invalidLatitude": "Latitud inválida (-90 a 90)", - "invalidLongitude": "Longitud inválida (-180 a 180)", "exampleCoordinates": "Ejemplo: 46.0569, 14.5058", - - "drawingHidden": "Dibujo ocultado del mapa", - "alreadyShared": "{count} ya compartido", - "newDrawingsShared": "{count} nuevo(s) dibujo(s) compartido(s)", - "drawingTools": "Herramientas de Dibujo", "shareDrawing": "Compartir Dibujo", "shareWithAllNearbyDevices": "Compartir con todos los dispositivos cercanos", "shareToRoom": "Compartir en Sala", @@ -2739,23 +1488,17 @@ "shared": "Compartido", "line": "Línea", "rectangle": "Rectángulo", - "saveAsTemplate": "Guardar como Plantilla", "templateSaved": "Plantilla guardada exitosamente", "templateAlreadyExists": "Ya existe una plantilla con este emoji", - "updateAvailable": "Actualización Disponible", "currentVersion": "Actual", "latestVersion": "Última", "downloadUpdate": "Descargar", "updateLater": "Más Tarde", - "cadastralParcels": "Parcelas Catastrales", "forestRoads": "Caminos Forestales", - "showCadastralParcels": "Mostrar parcelas catastrales", - "showForestRoads": "Mostrar caminos forestales", "wmsOverlays": "Superposiciones WMS", - "hikingTrails": "Senderos de Montaña", "mainRoads": "Carreteras Principales", "houseNumbers": "Números de Casa", @@ -2766,9 +1509,7 @@ "placeNames": "Nombres de Lugares", "municipalityBorders": "Límites Municipales", "topographicMap": "Mapa Topográfico 1:25000", - "recentMessages": "Mensajes Recientes", - "addChannel": "Agregar Canal", "channelName": "Nombre del Canal", "channelNameHint": "ej. Equipo de Rescate Alfa", @@ -2788,9 +1529,7 @@ "deleteChannelConfirmation": "¿Está seguro de que desea eliminar el canal \"{channelName}\"? Esta acción no se puede deshacer.", "channelDeletedSuccessfully": "Canal eliminado exitosamente", "channelDeletionFailed": "Error al eliminar el canal: {error}", - "allChannelSlotsInUse": "Todos los espacios de canales están en uso (máximo 39 canales personalizados)", "createChannel": "Crear Canal", - "wizardBack": "Atrás", "wizardSkip": "Omitir", "wizardNext": "Siguiente", @@ -2802,10 +1541,6 @@ "wizardConnectingFeature1": "Buscar dispositivos MeshCore cercanos", "wizardConnectingFeature2": "Emparejar con su radio vía Bluetooth", "wizardConnectingFeature3": "Funciona completamente sin conexión - no se requiere internet", - "wizardSimpleModeTitle": "Modo Simple", - "wizardSimpleModeDescription": "¿Nuevo en redes en malla? Habilite el modo simple para una interfaz optimizada con solo funciones esenciales.", - "wizardSimpleModeFeature1": "Interfaz amigable para principiantes con funciones principales", - "wizardSimpleModeFeature2": "Cambie al modo avanzado en cualquier momento en Configuración", "wizardChannelTitle": "Canales", "wizardChannelDescription": "Transmita mensajes a todos en un canal, perfecto para anuncios y coordinación de todo el equipo.", "wizardChannelFeature1": "Canal público para comunicación general del equipo", @@ -2826,56 +1561,30 @@ "allTeamContacts": "Todos los contactos del equipo", "directMessagesInfo": "Mensajes directos con confirmaciones. Enviado a {count} miembros del equipo.", "sarMarkerSentToContacts": "Marcador SAR enviado a {count} contactos", - "noContactsAvailable": "No hay contactos del equipo disponibles" -, - + "noContactsAvailable": "No hay contactos del equipo disponibles", "reply": "Responder", - "technicalDetails": "Detalles técnicos", - "messageTechnicalDetails": "Detalles técnicos del mensaje", - "linkQuality": "Calidad del enlace", - "delivery": "Entrega", - "status": "Estado", - "expectedAckTag": "Etiqueta ACK esperada", - "roundTrip": "Ida y vuelta", - "retryAttempt": "Intento de reenvío", - "floodFallback": "Reserva de inundación", - "identity": "Identidad", - "messageId": "ID de mensaje", - "sender": "Remitente", - "senderKey": "Clave del remitente", - "recipient": "Destinatario", - "recipientKey": "Clave del destinatario", - "voice": "Voz", - "voiceId": "ID de voz", - "envelope": "Envolvente", - "sessionProgress": "Progreso de sesión", - "complete": "Completo", - "rawDump": "Volcado sin procesar", - "cannotRetryMissingRecipient": "No se puede reintentar: falta información del destinatario", - "voiceUnavailable": "Voz no disponible en este momento", - "requestingVoice": "Solicitando voz" -} \ No newline at end of file +} diff --git a/lib/l10n/app_fr.arb b/lib/l10n/app_fr.arb index 449b384..6a19b29 100644 --- a/lib/l10n/app_fr.arb +++ b/lib/l10n/app_fr.arb @@ -1,104 +1,69 @@ { "@@locale": "fr", - "appTitle": "MeshCore SAR", "@appTitle": { "description": "Le titre de l'application" }, - "messages": "Messages", "@messages": { "description": "Libellé de l'onglet Messages" }, - "contacts": "Contacts", "@contacts": { "description": "Libellé de l'onglet Contacts" }, - "map": "Carte", "@map": { "description": "Libellé de l'onglet Carte" }, - "settings": "Paramètres", "@settings": { "description": "Titre de l'écran Paramètres" }, - "connect": "Connecter", "@connect": { "description": "Libellé du bouton Connecter" }, - "disconnect": "Déconnecter", "@disconnect": { "description": "Libellé du bouton Déconnecter" }, - - "scanningForDevices": "Recherche d'appareils...", - "@scanningForDevices": { - "description": "Texte affiché lors de la recherche d'appareils BLE" - }, - "noDevicesFound": "Aucun appareil trouvé", "@noDevicesFound": { "description": "Texte affiché lorsqu'aucun appareil BLE n'est trouvé" }, - "scanAgain": "Rechercher à nouveau", "@scanAgain": { "description": "Bouton pour relancer la recherche BLE" }, - "tapToConnect": "Appuyez pour connecter", "@tapToConnect": { "description": "Texte de sous-titre pour l'appareil dans la liste de recherche" }, - "deviceNotConnected": "Appareil non connecté", "@deviceNotConnected": { "description": "Message d'erreur lorsque l'appareil n'est pas connecté" }, - "locationPermissionDenied": "Permission de localisation refusée", "@locationPermissionDenied": { "description": "Erreur lorsque la permission de localisation est refusée" }, - "locationPermissionPermanentlyDenied": "Permission de localisation définitivement refusée. Veuillez l'activer dans les Paramètres.", "@locationPermissionPermanentlyDenied": { "description": "Erreur lorsque la permission de localisation est définitivement refusée" }, - "locationPermissionRequired": "La permission de localisation est requise pour le suivi GPS et la coordination d'équipe. Vous pouvez l'activer plus tard dans les Paramètres.", "@locationPermissionRequired": { "description": "Message lorsque la permission de localisation est nécessaire" }, - "locationServicesDisabled": "Les services de localisation sont désactivés. Veuillez les activer dans les Paramètres.", "@locationServicesDisabled": { "description": "Erreur lorsque les services de localisation sont désactivés" }, - "failedToGetGpsLocation": "Échec de l'obtention de la position GPS", "@failedToGetGpsLocation": { "description": "Erreur lorsque la position GPS ne peut pas être obtenue" }, - - "advertisedAtLocation": "Annoncé à {latitude}, {longitude}", - "@advertisedAtLocation": { - "description": "Message de succès affichant la position annoncée", - "placeholders": { - "latitude": { - "type": "String" - }, - "longitude": { - "type": "String" - } - } - }, - "failedToAdvertise": "Échec de l'annonce : {error}", "@failedToAdvertise": { "description": "Message d'erreur pour l'échec de l'annonce", @@ -108,355 +73,162 @@ } } }, - - "reconnecting": "Reconnexion... ({attempt}/{max})", - "@reconnecting": { - "description": "Texte affiché pendant les tentatives de reconnexion", - "placeholders": { - "attempt": { - "type": "int" - }, - "max": { - "type": "int" - } - } - }, - "cancelReconnection": "Annuler la reconnexion", "@cancelReconnection": { "description": "Info-bulle pour le bouton d'annulation de reconnexion" }, - - "mapManagement": "Gestion des cartes", - "@mapManagement": { - "description": "Élément de menu pour la gestion des cartes" - }, - "general": "Général", "@general": { "description": "En-tête de section des paramètres généraux" }, - "theme": "Thème", "@theme": { "description": "Libellé du paramètre de thème" }, - "chooseTheme": "Choisir le thème", "@chooseTheme": { "description": "Titre de la boîte de dialogue de sélection du thème" }, - "light": "Clair", "@light": { "description": "Option de thème clair" }, - "dark": "Sombre", "@dark": { "description": "Option de thème sombre" }, - "blueLightTheme": "Thème bleu clair", "@blueLightTheme": { "description": "Description du thème bleu clair" }, - "blueDarkTheme": "Thème bleu sombre", "@blueDarkTheme": { "description": "Description du thème bleu sombre" }, - "sarRed": "SAR Rouge", "@sarRed": { "description": "Option de thème SAR Rouge" }, - "alertEmergencyMode": "Mode alerte/urgence", "@alertEmergencyMode": { "description": "Description du thème SAR Rouge" }, - "sarGreen": "SAR Vert", "@sarGreen": { "description": "Option de thème SAR Vert" }, - "safeAllClearMode": "Mode sécurisé/dégagé", "@safeAllClearMode": { "description": "Description du thème SAR Vert" }, - "autoSystem": "Auto (Système)", "@autoSystem": { "description": "Option de thème automatique/système" }, - "followSystemTheme": "Suivre le thème du système", "@followSystemTheme": { "description": "Description du thème système" }, - "showRxTxIndicators": "Afficher les indicateurs RX/TX", "@showRxTxIndicators": { "description": "Paramètre pour afficher les indicateurs RX/TX" }, - "displayPacketActivity": "Afficher les indicateurs d'activité des paquets dans la barre supérieure", "@displayPacketActivity": { "description": "Description du paramètre des indicateurs RX/TX" }, - - "simpleMode": "Mode Simple", - "@simpleMode": { - "description": "Paramètre pour activer le mode simple" - }, - - "simpleModeDescription": "Masquer les informations non essentielles dans les messages et les contacts", - "@simpleModeDescription": { - "description": "Description du paramètre du mode simple" - }, - "disableMap": "Désactiver la carte", "@disableMap": { "description": "Paramètre pour désactiver l'onglet carte" }, - "disableMapDescription": "Masquer l'onglet carte pour réduire la consommation de batterie", "@disableMapDescription": { "description": "Description du paramètre pour désactiver la carte" }, - "language": "Langue", "@language": { "description": "Libellé du paramètre de langue" }, - "chooseLanguage": "Choisir la langue", "@chooseLanguage": { "description": "Titre de la boîte de dialogue de sélection de langue" }, - - "english": "Anglais", - "@english": { - "description": "Option de langue anglaise" - }, - - "slovenian": "Slovène", - "@slovenian": { - "description": "Option de langue slovène" - }, - - "croatian": "Croate", - "@croatian": { - "description": "Option de langue croate" - }, - - "german": "Allemand", - "@german": { - "description": "Option de langue allemande" - }, - - "spanish": "Espagnol", - "@spanish": { - "description": "Option de langue espagnole" - }, - - "french": "Français", - "@french": { - "description": "Option de langue française" - }, - - "italian": "Italien", - "@italian": { - "description": "Option de langue italienne" - }, - - "locationBroadcasting": "Diffusion de position", - "@locationBroadcasting": { - "description": "En-tête de section des paramètres de localisation" - }, - - "autoLocationTracking": "Suivi automatique de position", - "@autoLocationTracking": { - "description": "Paramètre de suivi automatique de position" - }, - - "automaticallyBroadcastPosition": "Diffuser automatiquement les mises à jour de position", - "@automaticallyBroadcastPosition": { - "description": "Description du suivi automatique de position" - }, - - "configureTracking": "Configurer le suivi", - "@configureTracking": { - "description": "Libellé du bouton de configuration du suivi" - }, - - "distanceAndTimeThresholds": "Seuils de distance et de temps", - "@distanceAndTimeThresholds": { - "description": "Description de la configuration du suivi" - }, - - "locationTrackingConfiguration": "Configuration du suivi de position", - "@locationTrackingConfiguration": { - "description": "Titre de la boîte de dialogue de configuration du suivi" - }, - - "configureWhenLocationBroadcasts": "Configurer quand les diffusions de position sont envoyées au réseau maillé", - "@configureWhenLocationBroadcasts": { - "description": "Description de la boîte de dialogue de configuration du suivi" - }, - - "minimumDistance": "Distance minimale", - "@minimumDistance": { - "description": "Libellé du paramètre de distance minimale" - }, - - "broadcastAfterMoving": "Diffuser uniquement après un déplacement de {distance} mètres", - "@broadcastAfterMoving": { - "description": "Description de la distance minimale", - "placeholders": { - "distance": { - "type": "String" - } - } - }, - - "maximumDistance": "Distance maximale", - "@maximumDistance": { - "description": "Libellé du paramètre de distance maximale" - }, - - "alwaysBroadcastAfterMoving": "Toujours diffuser après un déplacement de {distance} mètres", - "@alwaysBroadcastAfterMoving": { - "description": "Description de la distance maximale", - "placeholders": { - "distance": { - "type": "String" - } - } - }, - - "minimumTimeInterval": "Intervalle de temps minimal", - "@minimumTimeInterval": { - "description": "Libellé du paramètre d'intervalle de temps minimal" - }, - - "alwaysBroadcastEvery": "Toujours diffuser toutes les {duration}", - "@alwaysBroadcastEvery": { - "description": "Description de l'intervalle de temps", - "placeholders": { - "duration": { - "type": "String" - } - } - }, - "save": "Enregistrer", "@save": { "description": "Libellé du bouton Enregistrer" }, - "cancel": "Annuler", "@cancel": { "description": "Libellé du bouton Annuler" }, - "close": "Fermer", "@close": { "description": "Libellé du bouton Fermer" }, - "about": "À propos", "@about": { "description": "En-tête de section À propos" }, - "appVersion": "Version de l'application", "@appVersion": { "description": "Libellé de la version de l'application" }, - "appName": "Nom de l'application", "@appName": { "description": "Libellé du nom de l'application" }, - "aboutMeshCoreSar": "À propos de MeshCore SAR", "@aboutMeshCoreSar": { "description": "Titre de la boîte de dialogue À propos" }, - "aboutDescription": "Une application de recherche et sauvetage conçue pour les équipes d'intervention d'urgence. Les fonctionnalités incluent :\n\n• Réseau maillé BLE pour communication appareil à appareil\n• Cartes hors ligne avec options de couches multiples\n• Suivi en temps réel des membres de l'équipe\n• Marqueurs tactiques SAR (personne trouvée, feu, zone de rassemblement)\n• Gestion des contacts et messagerie\n• Suivi GPS avec cap du compas\n• Mise en cache des tuiles de carte pour utilisation hors ligne", "@aboutDescription": { "description": "Description de la boîte de dialogue À propos" }, - "technologiesUsed": "Technologies utilisées :", "@technologiesUsed": { "description": "Titre de la section des technologies utilisées" }, - "technologiesList": "• Flutter pour le développement multiplateforme\n• BLE (Bluetooth Low Energy) pour réseau maillé\n• OpenStreetMap pour la cartographie\n• Provider pour la gestion d'état\n• SharedPreferences pour le stockage local", "@technologiesList": { "description": "Liste des technologies utilisées" }, - "moreInfo": "Plus d'infos", "@moreInfo": { "description": "Libellé du bouton Plus d'infos" }, - - "learnMoreAbout": "En savoir plus sur MeshCore SAR", - "@learnMoreAbout": { - "description": "Description du lien En savoir plus" - }, - - "developer": "Développeur", - "@developer": { - "description": "En-tête de section Développeur" - }, - "packageName": "Nom du package", "@packageName": { "description": "Libellé du nom du package" }, - "sampleData": "Données d'exemple", "@sampleData": { "description": "En-tête de section Données d'exemple" }, - "sampleDataDescription": "Charger ou effacer les contacts d'exemple, les messages de canal et les marqueurs SAR pour les tests", "@sampleDataDescription": { "description": "Description de la section Données d'exemple" }, - "loadSampleData": "Charger des données d'exemple", "@loadSampleData": { "description": "Bouton pour charger des données d'exemple" }, - "clearAllData": "Effacer toutes les données", "@clearAllData": { "description": "Bouton pour effacer toutes les données" }, - "clearAllDataConfirmTitle": "Effacer toutes les données", "@clearAllDataConfirmTitle": { "description": "Titre de la boîte de dialogue de confirmation d'effacement des données" }, - "clearAllDataConfirmMessage": "Cela effacera tous les contacts et marqueurs SAR. Êtes-vous sûr ?", "@clearAllDataConfirmMessage": { "description": "Message de confirmation d'effacement des données" }, - "clear": "Effacer", "@clear": { "description": "Libellé du bouton Effacer" }, - "loadedSampleData": "Chargé {teamCount} membres d'équipe, {channelCount} canaux, {sarCount} marqueurs SAR, {messageCount} messages", "@loadedSampleData": { "description": "Message de succès après le chargement des données d'exemple", @@ -475,7 +247,6 @@ } } }, - "failedToLoadSampleData": "Échec du chargement des données d'exemple : {error}", "@failedToLoadSampleData": { "description": "Message d'erreur lorsque le chargement des données d'exemple échoue", @@ -485,17 +256,14 @@ } } }, - "allDataCleared": "Toutes les données effacées", "@allDataCleared": { "description": "Message de succès après l'effacement de toutes les données" }, - "failedToStartBackgroundTracking": "Échec du démarrage du suivi en arrière-plan. Vérifiez les permissions et la connexion BLE.", "@failedToStartBackgroundTracking": { "description": "Message d'erreur lorsque le suivi en arrière-plan échoue au démarrage" }, - "locationBroadcast": "Diffusion de position : {latitude}, {longitude}", "@locationBroadcast": { "description": "Message de succès pour la diffusion de position", @@ -508,57 +276,42 @@ } } }, - "defaultPinInfo": "Le code PIN par défaut pour les appareils sans écran est 123456. Problèmes d'appairage ? Oubliez l'appareil Bluetooth dans les paramètres système.", "@defaultPinInfo": { "description": "Information sur le code PIN par défaut pour l'appairage" }, - "noMessagesYet": "Aucun message pour le moment", "@noMessagesYet": { "description": "Message d'état vide lorsqu'il n'y a pas de messages" }, - "pullDownToSync": "Tirez vers le bas pour synchroniser les messages", "@pullDownToSync": { "description": "Instruction pour tirer vers le bas pour actualiser les messages" }, - "deleteContact": "Supprimer le contact", "@deleteContact": { "description": "Libellé de l'action de suppression de contact" }, - "delete": "Supprimer", "@delete": { "description": "Libellé du bouton Supprimer" }, - "viewOnMap": "Voir sur la carte", "@viewOnMap": { "description": "Action pour voir la position du contact sur la carte" }, - "refresh": "Actualiser", "@refresh": { "description": "Libellé du bouton Actualiser" }, - - "sendDirectMessage": "Envoyer", - "@sendDirectMessage": { - "description": "Action pour envoyer un message direct au contact" - }, - "resetPath": "Réinitialiser le chemin (Re-router)", "@resetPath": { "description": "Action pour réinitialiser le chemin du contact pour réacheminement" }, - "publicKeyCopied": "Clé publique copiée dans le presse-papiers", "@publicKeyCopied": { "description": "Message de succès lorsque la clé publique est copiée" }, - "copiedToClipboard": "{label} copié dans le presse-papiers", "@copiedToClipboard": { "description": "Message de succès lorsqu'une valeur est copiée dans le presse-papiers", @@ -568,12 +321,10 @@ } } }, - "pleaseEnterPassword": "Veuillez saisir un mot de passe", "@pleaseEnterPassword": { "description": "Message de validation pour le champ de mot de passe vide" }, - "failedToSyncContacts": "Échec de la synchronisation des contacts : {error}", "@failedToSyncContacts": { "description": "Message d'erreur lorsque la synchronisation des contacts échoue", @@ -583,17 +334,14 @@ } } }, - "loggedInSuccessfully": "Connexion réussie ! En attente des messages du salon...", "@loggedInSuccessfully": { "description": "Message de succès après une connexion au salon réussie" }, - "loginFailed": "Échec de la connexion - mot de passe incorrect", "@loginFailed": { "description": "Message d'erreur lorsque la connexion au salon échoue" }, - "loggingIn": "Connexion à {roomName}...", "@loggingIn": { "description": "Message d'état pendant le processus de connexion au salon", @@ -603,7 +351,6 @@ } } }, - "failedToSendLogin": "Échec de l'envoi de la connexion : {error}", "@failedToSendLogin": { "description": "Message d'erreur lorsque la commande de connexion échoue à l'envoi", @@ -613,355 +360,239 @@ } } }, - "lowLocationAccuracy": "Précision de localisation faible", "@lowLocationAccuracy": { "description": "Titre d'avertissement pour une faible précision GPS" }, - "continue_": "Continuer", "@continue_": { "description": "Libellé du bouton Continuer" }, - "sendSarMarker": "Envoyer un marqueur SAR", "@sendSarMarker": { "description": "Action pour envoyer un marqueur SAR" }, - "deleteDrawing": "Supprimer le dessin", "@deleteDrawing": { "description": "Action pour supprimer un dessin de carte" }, - - "drawingTools": "Outils de dessin", + "drawingTools": "Outils de Dessin", "@drawingTools": { "description": "Section des outils de dessin ou titre du menu" }, - "drawLine": "Tracer une ligne", "@drawLine": { "description": "Mode de dessin de carte : ligne" }, - "drawLineDesc": "Tracer une ligne à main levée sur la carte", "@drawLineDesc": { "description": "Description du mode de dessin de ligne" }, - "drawRectangle": "Tracer un rectangle", "@drawRectangle": { "description": "Mode de dessin de carte : rectangle" }, - "drawRectangleDesc": "Tracer une zone rectangulaire sur la carte", "@drawRectangleDesc": { "description": "Description du mode de dessin de rectangle" }, - "measureDistance": "Mesurer la distance", "@measureDistance": { "description": "Mode de dessin de carte : mesurer la distance" }, - "measureDistanceDesc": "Appui long sur deux points pour mesurer", "@measureDistanceDesc": { "description": "Description du mode de mesure de distance" }, - "clearMeasurement": "Effacer la mesure", "@clearMeasurement": { "description": "Infobulle pour effacer la mesure" }, - "distanceLabel": "Distance : {distance}", "@distanceLabel": { "description": "Étiquette affichant la distance mesurée", "placeholders": { - "distance": {"type": "String"} + "distance": { + "type": "String" + } } }, - "longPressForSecondPoint": "Appui long pour le deuxième point", "@longPressForSecondPoint": { "description": "Instruction lorsque le premier point de mesure est défini" }, - "longPressToStartMeasurement": "Appui long pour définir le premier point", "@longPressToStartMeasurement": { "description": "Instruction pour commencer la mesure" }, - "longPressToStartNewMeasurement": "Appui long pour nouvelle mesure", "@longPressToStartNewMeasurement": { "description": "Instruction pour redémarrer la mesure après achèvement" }, - "shareDrawings": "Partager les dessins", "@shareDrawings": { "description": "Action pour partager les dessins sur le réseau" }, - "clearAllDrawings": "Effacer tous les dessins", "@clearAllDrawings": { "description": "Action pour effacer tous les dessins locaux" }, - "completeLine": "Terminer la ligne", "@completeLine": { "description": "Tooltip pour terminer le tracé d'une ligne" }, - "broadcastDrawingsToTeam": "Diffuser {count} dessin{plural} à l'équipe", "@broadcastDrawingsToTeam": { "description": "Sous-titre indiquant combien de dessins seront diffusés", "placeholders": { - "count": {"type": "int"}, - "plural": {"type": "String"} + "count": { + "type": "int" + }, + "plural": { + "type": "String" + } } }, - "removeAllDrawings": "Supprimer tous les {count} dessin{plural}", "@removeAllDrawings": { "description": "Sous-titre pour l'action de suppression de tous les dessins", "placeholders": { - "count": {"type": "int"}, - "plural": {"type": "String"} + "count": { + "type": "int" + }, + "plural": { + "type": "String" + } } }, - "deleteAllDrawingsConfirm": "Supprimer tous les {count} dessin{plural} de la carte ?", "@deleteAllDrawingsConfirm": { "description": "Message de confirmation pour supprimer tous les dessins", "placeholders": { - "count": {"type": "int"}, - "plural": {"type": "String"} + "count": { + "type": "int" + }, + "plural": { + "type": "String" + } } }, - "drawing": "Dessin", "@drawing": { "description": "Étiquette de dessin générique" }, - "shareDrawingsCount": "Partager {count} dessin{plural}", "@shareDrawingsCount": { "description": "Titre pour le dialogue de partage de dessins", "placeholders": { - "count": {"type": "int"}, - "plural": {"type": "String"} + "count": { + "type": "int" + }, + "plural": { + "type": "String" + } } }, - - "sentDrawingsToRoom": "{count} dessin{plural} de carte envoyé{plural} à {roomName}", - "@sentDrawingsToRoom": { - "description": "Message système lorsque des dessins sont envoyés à une salle", - "placeholders": { - "count": {"type": "int"}, - "plural": {"type": "String"}, - "roomName": {"type": "String"} - } - }, - - "sharedDrawingsToRoom": "{success}/{total} dessin{plural} partagé{plural} avec {roomName}", - "@sharedDrawingsToRoom": { - "description": "Message snackbar montrant les dessins partagés avec la salle", - "placeholders": { - "success": {"type": "int"}, - "total": {"type": "int"}, - "plural": {"type": "String"}, - "roomName": {"type": "String"} - } - }, - "showReceivedDrawings": "Afficher les dessins reçus", "@showReceivedDrawings": { "description": "Basculer pour afficher/masquer les dessins reçus des autres membres de l'équipe" }, - "showingAllDrawings": "Affichage de tous les dessins", "@showingAllDrawings": { "description": "Sous-titre lorsque les dessins reçus sont visibles" }, - "showingOnlyYourDrawings": "Affichage uniquement de vos dessins", "@showingOnlyYourDrawings": { "description": "Sous-titre lorsque les dessins reçus sont masqués" }, - "showSarMarkers": "Afficher les marqueurs SAR", "@showSarMarkers": { "description": "Basculer pour afficher/masquer les marqueurs SAR sur la carte" }, - "showingSarMarkers": "Affichage des marqueurs SAR", "@showingSarMarkers": { "description": "Sous-titre lorsque les marqueurs SAR sont visibles" }, - "hidingSarMarkers": "Masquage des marqueurs SAR", "@hidingSarMarkers": { "description": "Sous-titre lorsque les marqueurs SAR sont masqués" }, - "clearAll": "Tout effacer", "@clearAll": { "description": "Libellé du bouton Tout effacer" }, - - "noLocalDrawings": "Aucun dessin local à partager", - "@noLocalDrawings": { - "description": "Message lorsqu'il n'y a pas de dessins à partager" - }, - "publicChannel": "Canal public", "@publicChannel": { "description": "Option de canal public pour le partage" }, - "broadcastToAll": "Diffuser à tous les nœuds à proximité (éphémère)", "@broadcastToAll": { "description": "Description de la diffusion du canal public" }, - "storedPermanently": "Stocké de manière permanente dans le salon", "@storedPermanently": { "description": "Description de la permanence du stockage dans le salon" }, - - "drawingsSentToPublicChannel": "{count} dessin{plural} de carte envoyé au Canal Public", - "@drawingsSentToPublicChannel": { - "description": "Message système lors de l'envoi de dessins au canal public", - "placeholders": { - "count": {"type": "int"}, - "plural": {"type": "String"} - } - }, - - "drawingsSharedToPublicChannel": "{success}/{total} dessins partagés sur le Canal Public", - "@drawingsSharedToPublicChannel": { - "description": "Message de snackbar montrant le nombre de succès pour les dessins partagés sur le canal public", - "placeholders": { - "success": {"type": "int"}, - "total": {"type": "int"} - } - }, - "notConnectedToDevice": "Non connecté à l'appareil", "@notConnectedToDevice": { "description": "Message d'erreur lorsque l'appareil n'est pas connecté pour la messagerie directe" }, - - "directMessage": "Message direct", - "@directMessage": { - "description": "Titre de la feuille de message direct" - }, - - "directMessageSentTo": "Message direct envoyé à {contactName}", - "@directMessageSentTo": { - "description": "Message de succès après l'envoi d'un message direct", - "placeholders": { - "contactName": { - "type": "String" - } - } - }, - - "failedToSend": "Échec de l'envoi : {error}", - "@failedToSend": { - "description": "Message d'erreur lorsque l'envoi du message direct échoue", - "placeholders": { - "error": { - "type": "String" - } - } - }, - - "directMessageInfo": "Ce message sera envoyé directement à {contactName}. Il apparaîtra également dans le fil de messages principal.", - "@directMessageInfo": { - "description": "Information sur le comportement de la messagerie directe", - "placeholders": { - "contactName": { - "type": "String" - } - } - }, - "typeYourMessage": "Saisissez votre message...", "@typeYourMessage": { "description": "Texte de l'espace réservé pour le champ de saisie de message" }, - "quickLocationMarker": "Marqueur de position rapide", "@quickLocationMarker": { "description": "Sous-titre de l'en-tête de la feuille de marqueur SAR" }, - "markerType": "Type de marqueur", "@markerType": { "description": "Libellé de la section de sélection du type de marqueur" }, - "sendTo": "Envoyer à", "@sendTo": { "description": "Libellé de la section de sélection de destination" }, - "noDestinationsAvailable": "Aucune destination disponible.", "@noDestinationsAvailable": { "description": "Avertissement lorsqu'il n'existe aucun salon ou canal" }, - "selectDestination": "Sélectionner la destination...", "@selectDestination": { "description": "Espace réservé pour le menu déroulant de destination" }, - "ephemeralBroadcastInfo": "Éphémère : Diffusion par ondes uniquement. Non stocké - les nœuds doivent être en ligne.", "@ephemeralBroadcastInfo": { "description": "Information sur les diffusions de canal éphémères" }, - "persistentRoomInfo": "Persistant : Stocké de manière immuable dans le salon. Synchronisé automatiquement et préservé hors ligne.", "@persistentRoomInfo": { "description": "Information sur le stockage persistant dans le salon" }, - "location": "Position", "@location": { "description": "Libellé de la section de position" }, - - "myLocation": "Ma position", - "@myLocation": { - "description": "Libellé du bouton pour insérer la position GPS actuelle" - }, - "fromMap": "Depuis la carte", "@fromMap": { "description": "Badge indiquant que la position provient d'un clic sur la carte" }, - "gettingLocation": "Obtention de la position...", "@gettingLocation": { "description": "Message de chargement lors de l'obtention de la position GPS" }, - "locationError": "Erreur de localisation", "@locationError": { "description": "Titre des messages d'erreur de localisation" }, - "retry": "Réessayer", "@retry": { "description": "Libellé du bouton Réessayer" }, - "refreshLocation": "Actualiser la position", "@refreshLocation": { "description": "Info-bulle pour le bouton d'actualisation de la position" }, - "accuracyMeters": "Précision : ±{accuracy}m", "@accuracyMeters": { "description": "Affichage de la précision GPS en mètres", @@ -971,17 +602,14 @@ } } }, - "notesOptional": "Notes (facultatives)", "@notesOptional": { "description": "Libellé du champ de notes facultatives" }, - "addAdditionalInformation": "Ajouter des informations supplémentaires...", "@addAdditionalInformation": { "description": "Espace réservé pour le champ de notes" }, - "lowAccuracyWarning": "La précision de localisation est de ±{accuracy}m. Cela peut ne pas être assez précis pour les opérations SAR.\n\nContinuer quand même ?", "@lowAccuracyWarning": { "description": "Contenu de la boîte de dialogue d'avertissement pour une faible précision GPS", @@ -991,37 +619,30 @@ } } }, - "loginToRoom": "Se connecter au salon", "@loginToRoom": { "description": "Titre de la boîte de dialogue de connexion au salon" }, - "enterPasswordInfo": "Entrez le mot de passe pour accéder à ce salon. Le mot de passe sera enregistré pour une utilisation future.", "@enterPasswordInfo": { "description": "Information sur le mot de passe du salon" }, - "password": "Mot de passe", "@password": { "description": "Libellé du champ de mot de passe" }, - "enterRoomPassword": "Entrez le mot de passe du salon", "@enterRoomPassword": { "description": "Indice du champ de mot de passe" }, - "loggingInDots": "Connexion...", "@loggingInDots": { "description": "Texte du bouton pendant la connexion" }, - "login": "Se connecter", "@login": { "description": "Libellé du bouton de connexion" }, - "failedToAddRoom": "Échec de l'ajout du salon à l'appareil : {error}\n\nLe salon n'a peut-être pas encore été annoncé.\nEssayez d'attendre que le salon diffuse.", "@failedToAddRoom": { "description": "Message d'erreur lorsque l'ajout du salon échoue", @@ -1031,57 +652,26 @@ } } }, - "direct": "Direct", "@direct": { "description": "Indicateur de routage direct" }, - "flood": "Inondation", "@flood": { "description": "Indicateur de routage par inondation" }, - - "admin": "Admin", - "@admin": { - "description": "Libellé du badge d'administrateur" - }, - "loggedIn": "Connecté", "@loggedIn": { "description": "Badge d'état connecté" }, - "noGpsData": "Aucune donnée GPS", "@noGpsData": { "description": "Message lorsque les données GPS ne sont pas disponibles" }, - "distance": "Distance", "@distance": { "description": "Libellé de la distance" }, - - "pingingDirect": "Ping de {name} (direct via chemin)...", - "@pingingDirect": { - "description": "Message d'état pour le ping direct", - "placeholders": { - "name": { - "type": "String" - } - } - }, - - "pingingFlood": "Ping de {name} (inondation - pas de chemin)...", - "@pingingFlood": { - "description": "Message d'état pour le ping par inondation", - "placeholders": { - "name": { - "type": "String" - } - } - }, - "directPingTimeout": "Délai d'attente du ping direct - nouvelle tentative de {name} avec inondation...", "@directPingTimeout": { "description": "Avertissement lorsque le ping direct expire", @@ -1091,25 +681,6 @@ } } }, - - "pingSuccessful": "Ping réussi vers {name}{fallback}", - "@pingSuccessful": { - "description": "Message de succès pour le ping", - "placeholders": { - "name": { - "type": "String" - }, - "fallback": { - "type": "String" - } - } - }, - - "viaFloodingFallback": " (via repli par inondation)", - "@viaFloodingFallback": { - "description": "Suffixe pour le succès du ping avec repli" - }, - "pingFailed": "Échec du ping vers {name} - aucune réponse reçue", "@pingFailed": { "description": "Message d'erreur lorsque le ping échoue", @@ -1119,7 +690,6 @@ } } }, - "deleteContactConfirmation": "Êtes-vous sûr de vouloir supprimer \"{name}\" ?\n\nCela supprimera le contact de l'application et de l'appareil radio compagnon.", "@deleteContactConfirmation": { "description": "Message de confirmation pour la suppression du contact", @@ -1129,27 +699,6 @@ } } }, - - "removingContact": "Suppression de {name}...", - "@removingContact": { - "description": "Message d'état lors de la suppression du contact", - "placeholders": { - "name": { - "type": "String" - } - } - }, - - "contactRemoved": "Contact \"{name}\" supprimé", - "@contactRemoved": { - "description": "Message de succès après la suppression du contact", - "placeholders": { - "name": { - "type": "String" - } - } - }, - "failedToRemoveContact": "Échec de la suppression du contact : {error}", "@failedToRemoveContact": { "description": "Message d'erreur lorsque la suppression du contact échoue", @@ -1159,117 +708,86 @@ } } }, - "type": "Type", "@type": { "description": "Libellé du type de contact" }, - "publicKey": "Clé publique", "@publicKey": { "description": "Libellé de la clé publique" }, - "lastSeen": "Dernière vue", "@lastSeen": { "description": "Libellé de la dernière vue" }, - "roomStatus": "État du salon", "@roomStatus": { "description": "En-tête de section de l'état du salon" }, - "loginStatus": "État de connexion", "@loginStatus": { "description": "Libellé de l'état de connexion" }, - "notLoggedIn": "Non connecté", "@notLoggedIn": { "description": "État non connecté" }, - "adminAccess": "Accès administrateur", "@adminAccess": { "description": "Libellé de l'accès administrateur" }, - "yes": "Oui", "@yes": { "description": "Réponse Oui" }, - "no": "Non", "@no": { "description": "Réponse Non" }, - "permissions": "Permissions", "@permissions": { "description": "Libellé des permissions" }, - "passwordSaved": "Mot de passe enregistré", "@passwordSaved": { "description": "Libellé du mot de passe enregistré" }, - "locationColon": "Position :", "@locationColon": { "description": "En-tête de section de position" }, - "telemetry": "Télémétrie", "@telemetry": { "description": "En-tête de section de télémétrie" }, - - "requestingTelemetry": "Demande de télémétrie à {name}...", - "@requestingTelemetry": { - "description": "Message d'état lors de la demande de télémétrie", - "placeholders": { - "name": { - "type": "String" - } - } - }, - "voltage": "Tension", "@voltage": { "description": "Libellé de la tension" }, - "battery": "Batterie", "@battery": { "description": "Libellé de la batterie" }, - "temperature": "Température", "@temperature": { "description": "Libellé de la température" }, - "humidity": "Humidité", "@humidity": { "description": "Libellé de l'humidité" }, - "pressure": "Pression", "@pressure": { "description": "Libellé de la pression" }, - "gpsTelemetry": "GPS (Télémétrie)", "@gpsTelemetry": { "description": "Libellé du GPS depuis la télémétrie" }, - "updated": "Mis à jour", "@updated": { "description": "Libellé de l'horodatage de mise à jour" }, - "pathResetInfo": "Chemin réinitialisé pour {name}. Le prochain message trouvera un nouvel itinéraire.", "@pathResetInfo": { "description": "Message d'information après la réinitialisation du chemin", @@ -1279,102 +797,74 @@ } } }, - "reLoginToRoom": "Se reconnecter au salon", "@reLoginToRoom": { "description": "Bouton pour se reconnecter au salon" }, - "heading": "Cap", "@heading": { "description": "Libellé du cap du compas" }, - "elevation": "Élévation", "@elevation": { "description": "Libellé de l'élévation/altitude" }, - "accuracy": "Précision", "@accuracy": { "description": "Libellé de la précision GPS" }, - - "distance": "Distance", - "@distance": { - "description": "Libellé de la distance dans la boussole" - }, - "bearing": "Relèvement", "@bearing": { "description": "Libellé du relèvement dans la boussole" }, - "direction": "Direction", "@direction": { "description": "Libellé de la direction dans la boussole" }, - "filterMarkers": "Filtrer les marqueurs", "@filterMarkers": { "description": "Titre de la boîte de dialogue de filtrage des marqueurs" }, - "filterMarkersTooltip": "Filtrer les marqueurs", "@filterMarkersTooltip": { "description": "Info-bulle du bouton de filtre" }, - "contactsFilter": "Contacts", "@contactsFilter": { "description": "Option de filtre pour les contacts" }, - "repeatersFilter": "Répéteurs", "@repeatersFilter": { "description": "Option de filtre pour les répéteurs" }, - "sarMarkers": "Marqueurs SAR", "@sarMarkers": { "description": "En-tête de section des marqueurs SAR" }, - "foundPerson": "Personne trouvée", "@foundPerson": { "description": "Type de marqueur SAR personne trouvée" }, - "fire": "Feu", "@fire": { "description": "Type de marqueur SAR feu" }, - "stagingArea": "Zone de rassemblement", "@stagingArea": { "description": "Type de marqueur SAR zone de rassemblement" }, - "showAll": "Tout afficher", "@showAll": { "description": "Bouton pour afficher tous les filtres" }, - - "nearbyContacts": "Contacts à proximité", - "@nearbyContacts": { - "description": "Titre de la liste des contacts à proximité dans le compas" - }, - "locationUnavailable": "Position non disponible", "@locationUnavailable": { "description": "Message lorsque la position GPS n'est pas disponible" }, - "ahead": "devant", "@ahead": { "description": "Direction de relèvement relatif - devant" }, - "degreesRight": "{degrees}° à droite", "@degreesRight": { "description": "Direction de relèvement relatif - à droite", @@ -1384,7 +874,6 @@ } } }, - "degreesLeft": "{degrees}° à gauche", "@degreesLeft": { "description": "Direction de relèvement relatif - à gauche", @@ -1394,7 +883,6 @@ } } }, - "latLonFormat": "Lat : {latitude} Lon : {longitude}", "@latLonFormat": { "description": "Format d'affichage de la latitude et de la longitude", @@ -1407,506 +895,100 @@ } } }, - "noContactsYet": "Aucun contact pour le moment", "@noContactsYet": { "description": "Message d'état vide lorsqu'il n'y a pas de contacts" }, - "connectToDeviceToLoadContacts": "Connectez-vous à un appareil pour charger les contacts", "@connectToDeviceToLoadContacts": { "description": "Instruction pour connecter l'appareil pour charger les contacts" }, - "teamMembers": "Membres de l'équipe", "@teamMembers": { "description": "En-tête de section pour les membres de l'équipe (contacts de discussion)" }, - "repeaters": "Répéteurs", "@repeaters": { "description": "En-tête de section pour les nœuds répéteurs" }, - "rooms": "Salons", "@rooms": { "description": "En-tête de section pour les salons" }, - "channels": "Canaux", "@channels": { "description": "En-tête de section pour les canaux de diffusion" }, - - "cacheStatistics": "Statistiques du cache", - "@cacheStatistics": { - "description": "Titre de la section des statistiques du cache" - }, - - "totalTiles": "Total de tuiles", - "@totalTiles": { - "description": "Libellé du nombre total de tuiles en cache" - }, - - "cacheSize": "Taille du cache", - "@cacheSize": { - "description": "Libellé de la taille du cache en Mo" - }, - - "storeName": "Nom du magasin", - "@storeName": { - "description": "Libellé du nom du magasin de cache" - }, - - "noCacheStatistics": "Aucune statistique de cache disponible", - "@noCacheStatistics": { - "description": "Message lorsque les statistiques du cache ne sont pas disponibles" - }, - - "downloadRegion": "Télécharger une région", - "@downloadRegion": { - "description": "Titre de la section de téléchargement de région" - }, - - "mapLayer": "Couche de carte", - "@mapLayer": { - "description": "Libellé de la sélection de la couche de carte" - }, - - "regionBounds": "Limites de la région", - "@regionBounds": { - "description": "Titre de la section de saisie des limites de la région" - }, - - "north": "Nord", - "@north": { - "description": "Libellé de la coordonnée nord" - }, - - "south": "Sud", - "@south": { - "description": "Libellé de la coordonnée sud" - }, - - "east": "Est", - "@east": { - "description": "Libellé de la coordonnée est" - }, - - "west": "Ouest", - "@west": { - "description": "Libellé de la coordonnée ouest" - }, - - "zoomLevels": "Niveaux de zoom", - "@zoomLevels": { - "description": "Titre de la section des niveaux de zoom" - }, - - "minZoom": "Min : {zoom}", - "@minZoom": { - "description": "Libellé du niveau de zoom minimal", - "placeholders": { - "zoom": { - "type": "int" - } - } - }, - - "maxZoom": "Max : {zoom}", - "@maxZoom": { - "description": "Libellé du niveau de zoom maximal", - "placeholders": { - "zoom": { - "type": "int" - } - } - }, - - "downloadingDots": "Téléchargement...", - "@downloadingDots": { - "description": "Message d'état pendant le téléchargement" - }, - - "cancelDownload": "Annuler le téléchargement", - "@cancelDownload": { - "description": "Bouton pour annuler le téléchargement" - }, - - "downloadRegionButton": "Télécharger la région", - "@downloadRegionButton": { - "description": "Bouton pour démarrer le téléchargement de région" - }, - - "downloadNote": "Remarque : Les grandes régions ou les niveaux de zoom élevés peuvent nécessiter beaucoup de temps et d'espace de stockage.", - "@downloadNote": { - "description": "Avertissement concernant la taille et le temps de téléchargement" - }, - - "cacheManagement": "Gestion du cache", - "@cacheManagement": { - "description": "Titre de la section de gestion du cache" - }, - - "clearAllMaps": "Effacer toutes les cartes", - "@clearAllMaps": { - "description": "Bouton pour effacer toutes les cartes en cache" - }, - - "clearMapsConfirmTitle": "Effacer toutes les cartes", - "@clearMapsConfirmTitle": { - "description": "Titre de la boîte de dialogue de confirmation d'effacement des cartes" - }, - - "clearMapsConfirmMessage": "Êtes-vous sûr de vouloir supprimer toutes les cartes téléchargées ? Cette action ne peut pas être annulée.", - "@clearMapsConfirmMessage": { - "description": "Message de confirmation pour l'effacement des cartes" - }, - - "mapDownloadCompleted": "Téléchargement de la carte terminé !", - "@mapDownloadCompleted": { - "description": "Message de succès après le téléchargement de la carte" - }, - - "cacheClearedSuccessfully": "Cache effacé avec succès !", - "@cacheClearedSuccessfully": { - "description": "Message de succès après l'effacement du cache" - }, - - "downloadCancelled": "Téléchargement annulé", - "@downloadCancelled": { - "description": "Message lorsque le téléchargement est annulé" - }, - - "startingDownload": "Démarrage du téléchargement...", - "@startingDownload": { - "description": "État initial lors du début du téléchargement" - }, - - "downloadingMapTiles": "Téléchargement des tuiles de carte...", - "@downloadingMapTiles": { - "description": "État pendant le téléchargement des tuiles" - }, - - "downloadCompletedSuccessfully": "Téléchargement terminé avec succès !", - "@downloadCompletedSuccessfully": { - "description": "État après un téléchargement réussi" - }, - - "cancellingDownload": "Annulation du téléchargement...", - "@cancellingDownload": { - "description": "État lors de l'annulation du téléchargement" - }, - - "errorLoadingStats": "Erreur de chargement des statistiques : {error}", - "@errorLoadingStats": { - "description": "Message d'erreur lorsque le chargement des statistiques du cache échoue", - "placeholders": { - "error": { - "type": "String" - } - } - }, - - "downloadFailed": "Échec du téléchargement : {error}", - "@downloadFailed": { - "description": "Message d'erreur lorsque le téléchargement échoue", - "placeholders": { - "error": { - "type": "String" - } - } - }, - - "cancelFailed": "Échec de l'annulation : {error}", - "@cancelFailed": { - "description": "Message d'erreur lorsque l'annulation échoue", - "placeholders": { - "error": { - "type": "String" - } - } - }, - - "clearCacheFailed": "Échec de l'effacement du cache : {error}", - "@clearCacheFailed": { - "description": "Message d'erreur lorsque l'effacement du cache échoue", - "placeholders": { - "error": { - "type": "String" - } - } - }, - - "minZoomError": "Zoom min : {error}", - "@minZoomError": { - "description": "Erreur de validation pour le zoom minimal", - "placeholders": { - "error": { - "type": "String" - } - } - }, - - "maxZoomError": "Zoom max : {error}", - "@maxZoomError": { - "description": "Erreur de validation pour le zoom maximal", - "placeholders": { - "error": { - "type": "String" - } - } - }, - - "minZoomGreaterThanMax": "Le zoom minimal doit être inférieur ou égal au zoom maximal", - "@minZoomGreaterThanMax": { - "description": "Erreur de validation lorsque le zoom min > zoom max" - }, - "selectMapLayer": "Sélectionner la couche de carte", "@selectMapLayer": { "description": "Titre de la boîte de dialogue de sélection de la couche de carte" }, - - "mapOptions": "Options de carte", - "@mapOptions": { - "description": "Titre de la boîte de dialogue des options de carte" - }, - - "showLegend": "Afficher la légende", - "@showLegend": { - "description": "Interrupteur pour afficher la légende de la carte" - }, - - "displayMarkerTypeCounts": "Afficher les décomptes des types de marqueurs", - "@displayMarkerTypeCounts": { - "description": "Description de l'interrupteur d'affichage de la légende" - }, - - "rotateMapWithHeading": "Faire pivoter la carte avec le cap", - "@rotateMapWithHeading": { - "description": "Interrupteur pour faire pivoter la carte avec le cap du compas" - }, - - "mapFollowsDirection": "La carte suit votre direction lorsque vous vous déplacez", - "@mapFollowsDirection": { - "description": "Description de l'interrupteur de rotation de la carte" - }, - - "resetMapRotation": "Réinitialiser la rotation", - "@resetMapRotation": { - "description": "Bouton pour réinitialiser la rotation de la carte vers le nord" - }, - - "resetMapRotationTooltip": "Réinitialiser la carte vers le nord", - "@resetMapRotationTooltip": { - "description": "Infobulle pour le bouton de réinitialisation de rotation" - }, - - "showMapDebugInfo": "Afficher les infos de débogage de la carte", - "@showMapDebugInfo": { - "description": "Interrupteur pour afficher les informations de débogage de la carte" - }, - - "displayZoomLevelBounds": "Afficher le niveau de zoom et les limites", - "@displayZoomLevelBounds": { - "description": "Description de l'interrupteur d'infos de débogage" - }, - - "fullscreenMode": "Mode plein écran", - "@fullscreenMode": { - "description": "Interrupteur pour le mode plein écran de la carte" - }, - - "hideUiFullMapView": "Masquer tous les contrôles d'interface pour une vue de carte complète", - "@hideUiFullMapView": { - "description": "Description de l'interrupteur du mode plein écran" - }, - "openStreetMap": "OpenStreetMap", "@openStreetMap": { "description": "Nom de la couche OpenStreetMap" }, - "openTopoMap": "OpenTopoMap", "@openTopoMap": { "description": "Nom de la couche OpenTopoMap" }, - "esriSatellite": "Satellite ESRI", "@esriSatellite": { "description": "Nom de la couche d'imagerie satellite ESRI" }, - "googleHybrid": "Google Hybride", "@googleHybrid": { "description": "Nom de la couche Google Hybride (satellite + étiquettes)" }, - "googleRoadmap": "Google Carte Routière", "@googleRoadmap": { "description": "Nom de la couche Google Carte Routière" }, - "googleTerrain": "Google Terrain", "@googleTerrain": { "description": "Nom de la couche Google Terrain (topographique)" }, - - "downloadVisibleArea": "Télécharger la zone visible", - "@downloadVisibleArea": { - "description": "Info-bulle du bouton de téléchargement de la zone visible" - }, - - "initializingMap": "Initialisation de la carte...", - "@initializingMap": { - "description": "Message de chargement pour l'initialisation de la carte" - }, - "dragToPosition": "Faire glisser vers la position", "@dragToPosition": { "description": "Libellé lors du glissement d'une épingle sur la carte" }, - "createSarMarker": "Créer un marqueur SAR", "@createSarMarker": { "description": "Libellé pour créer un marqueur SAR à partir d'une épingle" }, - "compass": "Boussole", "@compass": { "description": "Titre de la boussole dans la boîte de dialogue de boussole détaillée" }, - "navigationAndContacts": "Navigation et contacts", "@navigationAndContacts": { "description": "Sous-titre de la boîte de dialogue de la boussole" }, - "sarAlert": "ALERTE SAR", "@sarAlert": { "description": "Libellé du badge d'alerte SAR sur les messages" }, - - "messageSentToPublicChannel": "Message envoyé au canal public", - "@messageSentToPublicChannel": { - "description": "Message de succès lorsque le message est envoyé au canal public" - }, - - "pleaseSelectRoomToSendSar": "Veuillez sélectionner un salon pour envoyer le marqueur SAR", - "@pleaseSelectRoomToSendSar": { - "description": "Erreur lorsqu'aucun salon n'est sélectionné pour le marqueur SAR" - }, - - "failedToSendSarMarker": "Échec de l'envoi du marqueur SAR : {error}", - "@failedToSendSarMarker": { - "description": "Message d'erreur lorsque l'envoi du marqueur SAR échoue", - "placeholders": { - "error": { - "type": "String" - } - } - }, - - "sarMarkerSentTo": "Marqueur SAR envoyé à {roomName}", - "@sarMarkerSentTo": { - "description": "Message de succès lorsque le marqueur SAR est envoyé au salon", - "placeholders": { - "roomName": { - "type": "String" - } - } - }, - - "notConnectedCannotSync": "Non connecté - impossible de synchroniser les messages", - "@notConnectedCannotSync": { - "description": "Avertissement lors de la tentative de synchronisation des messages sans être connecté" - }, - - "syncedMessageCount": "Synchronisé {count} message(s)", - "@syncedMessageCount": { - "description": "Message de succès indiquant le nombre de messages synchronisés", - "placeholders": { - "count": { - "type": "int" - } - } - }, - - "noNewMessages": "Aucun nouveau message", - "@noNewMessages": { - "description": "Message d'information lorsqu'il n'y a pas de nouveaux messages à synchroniser" - }, - - "syncFailed": "Échec de la synchronisation : {error}", - "@syncFailed": { - "description": "Message d'erreur lorsque la synchronisation échoue", - "placeholders": { - "error": { - "type": "String" - } - } - }, - - "failedToResendMessage": "Échec du renvoi du message", - "@failedToResendMessage": { - "description": "Erreur lorsque la nouvelle tentative de message échoue" - }, - - "retryingMessage": "Nouvelle tentative de message...", - "@retryingMessage": { - "description": "Message d'information lors de la nouvelle tentative d'un message échoué" - }, - - "retryFailed": "Échec de la nouvelle tentative : {error}", - "@retryFailed": { - "description": "Message d'erreur lorsque la nouvelle tentative échoue", - "placeholders": { - "error": { - "type": "String" - } - } - }, - "textCopiedToClipboard": "Texte copié dans le presse-papiers", "@textCopiedToClipboard": { "description": "Message de succès lorsque le texte est copié" }, - "cannotReplySenderMissing": "Impossible de répondre : informations sur l'expéditeur manquantes", "@cannotReplySenderMissing": { "description": "Erreur lorsque les informations sur l'expéditeur manquent pour la réponse" }, - "cannotReplyContactNotFound": "Impossible de répondre : contact non trouvé", "@cannotReplyContactNotFound": { "description": "Erreur lorsque le contact n'est pas trouvé pour la réponse" }, - - "messageDeleted": "Message supprimé", - "@messageDeleted": { - "description": "Message d'information lorsque le message est supprimé" - }, - "copyText": "Copier le texte", - "textCopiedToClipboard": "Texte copié dans le presse-papiers", "deleteMessage": "Supprimer le message", "deleteMessageConfirmation": "Êtes-vous sûr de vouloir supprimer ce message?", "shareLocation": "Partager la position", "shareLocationText": "{markerInfo}\n\nCoordonnées: {lat}, {lon}\n\nGoogle Maps: {url}", "sarLocationShare": "Position SAR", - "locationShared": "Position partagée", - - "refreshedContacts": "Contacts actualisés", - "@refreshedContacts": { - "description": "Message de succès lorsque les contacts sont actualisés" - }, - "justNow": "À l'instant", "@justNow": { "description": "Indicateur de temps pour une activité très récente" }, - "minutesAgo": "Il y a {minutes}m", "@minutesAgo": { "description": "Indicateur de temps pour les minutes écoulées", @@ -1916,7 +998,6 @@ } } }, - "hoursAgo": "Il y a {hours}h", "@hoursAgo": { "description": "Indicateur de temps pour les heures écoulées", @@ -1926,7 +1007,6 @@ } } }, - "daysAgo": "Il y a {days}j", "@daysAgo": { "description": "Indicateur de temps pour les jours écoulés", @@ -1936,7 +1016,6 @@ } } }, - "secondsAgo": "Il y a {seconds}s", "@secondsAgo": { "description": "Indicateur de temps pour les secondes écoulées", @@ -1946,22 +1025,18 @@ } } }, - "sending": "Envoi...", "@sending": { "description": "État de livraison : envoi" }, - "sent": "Envoyé", "@sent": { "description": "État de livraison : envoyé" }, - "delivered": "Livré", "@delivered": { "description": "État de livraison : livré" }, - "deliveredWithTime": "Livré ({time}ms)", "@deliveredWithTime": { "description": "État de livraison avec temps aller-retour", @@ -1971,17 +1046,14 @@ } } }, - "failed": "Échec", "@failed": { "description": "État de livraison : échec" }, - "broadcast": "Diffusion", "@broadcast": { "description": "État de livraison pour les messages de canal (pas encore d'échos)" }, - "deliveredToContacts": "Livré à {delivered}/{total} contacts", "@deliveredToContacts": { "description": "Nombre de livraisons de message groupé", @@ -1994,226 +1066,88 @@ } } }, - "allDelivered": "Tout livré", "@allDelivered": { "description": "État lorsque tous les destinataires ont reçu le message" }, - "recipientDetails": "Détails des destinataires", "@recipientDetails": { "description": "En-tête pour la liste déroulante des destinataires" }, - "pending": "En attente", "@pending": { "description": "État de livraison : en attente" }, - "sarMarkerFoundPerson": "Personne trouvée", "@sarMarkerFoundPerson": { "description": "Type de marqueur SAR : personne trouvée" }, - "sarMarkerFire": "Lieu de feu", "@sarMarkerFire": { "description": "Type de marqueur SAR : feu" }, - "sarMarkerStagingArea": "Zone de rassemblement", "@sarMarkerStagingArea": { "description": "Type de marqueur SAR : zone de rassemblement" }, - "sarMarkerObject": "Objet trouvé", "@sarMarkerObject": { "description": "Type de marqueur SAR : objet" }, - "from": "De", "@from": { "description": "Libellé de l'expéditeur dans les notifications" }, - "coordinates": "Coordonnées", "@coordinates": { "description": "Libellé des coordonnées" }, - "tapToViewOnMap": "Appuyez pour voir sur la carte", "@tapToViewOnMap": { "description": "Texte de l'action de notification" }, - "radioSettings": "Paramètres radio", "@radioSettings": { "description": "Titre de section pour les paramètres radio" }, - "frequencyMHz": "Fréquence (MHz)", "@frequencyMHz": { "description": "Libellé du champ de fréquence radio" }, - "frequencyExample": "ex. : 869,618", "@frequencyExample": { "description": "Texte d'aide exemple pour la fréquence" }, - "bandwidth": "Bande passante", "@bandwidth": { "description": "Libellé du menu déroulant de bande passante" }, - "spreadingFactor": "Facteur d'étalement", "@spreadingFactor": { "description": "Libellé du menu déroulant du facteur d'étalement" }, - "codingRate": "Taux de codage", "@codingRate": { "description": "Libellé du menu déroulant du taux de codage" }, - "txPowerDbm": "Puissance TX (dBm)", "@txPowerDbm": { "description": "Libellé du champ de puissance TX" }, - "maxPowerDbm": "Max : {power} dBm", "@maxPowerDbm": { "description": "Texte d'aide indiquant la puissance TX maximale", "placeholders": { - "power": { "type": "int" } + "power": { + "type": "int" + } } }, - "you": "Vous", "@you": { "description": "Libellé pour l'utilisateur actuel dans les bulles de message" }, - - "offlineVectorMaps": "Cartes vectorielles hors ligne", - "@offlineVectorMaps": { - "description": "Titre de la section des cartes vectorielles hors ligne" - }, - - "offlineVectorMapsDescription": "Importer et gérer les tuiles de cartes vectorielles hors ligne (format MBTiles) pour une utilisation sans connexion Internet", - "@offlineVectorMapsDescription": { - "description": "Description de la section des cartes vectorielles hors ligne" - }, - - "importMbtiles": "Importer un fichier MBTiles", - "@importMbtiles": { - "description": "Bouton pour importer un fichier MBTiles" - }, - - "importMbtilesNote": "Prend en charge les fichiers MBTiles avec tuiles vectorielles (format PBF/MVT). Les extraits Geofabrik fonctionnent très bien !", - "@importMbtilesNote": { - "description": "Remarque sur les types de fichiers MBTiles pris en charge" - }, - - "noMbtilesFiles": "Aucune carte vectorielle hors ligne trouvée", - "@noMbtilesFiles": { - "description": "Message lorsqu'aucun fichier MBTiles n'est disponible" - }, - - "mbtilesImportedSuccessfully": "Fichier MBTiles importé avec succès", - "@mbtilesImportedSuccessfully": { - "description": "Message de succès après l'importation du fichier MBTiles" - }, - - "failedToImportMbtiles": "Échec de l'importation du fichier MBTiles", - "@failedToImportMbtiles": { - "description": "Message d'erreur lorsque l'importation MBTiles échoue" - }, - - "deleteMbtilesConfirmTitle": "Supprimer la carte hors ligne", - "@deleteMbtilesConfirmTitle": { - "description": "Titre de la boîte de dialogue de confirmation de suppression de MBTiles" - }, - - "deleteMbtilesConfirmMessage": "Êtes-vous sûr de vouloir supprimer \"{name}\" ? Cela supprimera définitivement la carte hors ligne.", - "@deleteMbtilesConfirmMessage": { - "description": "Message de confirmation pour la suppression du fichier MBTiles", - "placeholders": { - "name": { - "type": "String" - } - } - }, - - "mbtilesDeletedSuccessfully": "Carte hors ligne supprimée avec succès", - "@mbtilesDeletedSuccessfully": { - "description": "Message de succès après la suppression du fichier MBTiles" - }, - - "failedToDeleteMbtiles": "Échec de la suppression de la carte hors ligne", - "@failedToDeleteMbtiles": { - "description": "Message d'erreur lorsque la suppression de MBTiles échoue" - }, - - "importExportCachedTiles": "Importer/Exporter les tuiles en cache", - "@importExportCachedTiles": { - "description": "Titre pour section d'importation/exportation" - }, - - "importExportDescription": "Sauvegarder, partager et restaurer les tuiles de carte téléchargées entre appareils", - "@importExportDescription": { - "description": "Description de la fonctionnalité d'importation/exportation" - }, - - "exportTilesToFile": "Exporter les tuiles vers fichier", - "@exportTilesToFile": { - "description": "Bouton pour exporter les tuiles" - }, - - "importTilesFromFile": "Importer les tuiles depuis fichier", - "@importTilesFromFile": { - "description": "Bouton pour importer les tuiles" - }, - - "selectExportLocation": "Sélectionner l'emplacement d'exportation", - "@selectExportLocation": { - "description": "Titre pour sélecteur de fichier d'exportation" - }, - - "selectImportFile": "Sélectionner l'archive de tuiles", - "@selectImportFile": { - "description": "Titre pour sélecteur de fichier d'importation" - }, - - "exportingTiles": "Exportation des tuiles...", - "@exportingTiles": { - "description": "Message de statut pendant l'exportation" - }, - - "importingTiles": "Importation des tuiles...", - "@importingTiles": { - "description": "Message de statut pendant l'importation" - }, - - "exportSuccess": "{count} tuiles exportées avec succès", - "@exportSuccess": { - "description": "Message de succès après exportation", - "placeholders": { - "count": { - "type": "int" - } - } - }, - - "importSuccess": "{count} magasins importés avec succès", - "@importSuccess": { - "description": "Message de succès après importation", - "placeholders": { - "count": { - "type": "int" - } - } - }, - - "exportFailed": "Échec de l'exportation: {error}", + "exportFailed": "Export failed: {error}", "@exportFailed": { "description": "Message d'erreur lors de l'échec de l'exportation", "placeholders": { @@ -2222,8 +1156,7 @@ } } }, - - "importFailed": "Échec de l'importation: {error}", + "importFailed": "Import failed: {error}", "@importFailed": { "description": "Message d'erreur lors de l'échec de l'importation", "placeholders": { @@ -2232,217 +1165,74 @@ } } }, - - "exportNote": "Crée un fichier d'archive compressé (.fmtc) qui peut être partagé et importé sur d'autres appareils.", - "@exportNote": { - "description": "Note sur la fonctionnalité d'exportation" - }, - - "importNote": "Importe les tuiles de carte depuis un fichier d'archive précédemment exporté. Les tuiles seront fusionnées avec le cache existant.", - "@importNote": { - "description": "Note sur la fonctionnalité d'importation" - }, - - "noTilesToExport": "Aucune tuile à exporter", - "@noTilesToExport": { - "description": "Message quand le cache est vide" - }, - - "archiveContainsStores": "L'archive contient {count} magasins", - "@archiveContainsStores": { - "description": "Information sur le contenu de l'archive", - "placeholders": { - "count": { - "type": "int" - } - } - }, - - "vectorTiles": "Tuiles vectorielles", - "@vectorTiles": { - "description": "Libellé du type de tuile vectorielle" - }, - - "schema": "Schéma", - "@schema": { - "description": "Libellé du schéma de tuile vectorielle" - }, - "unknown": "Inconnu", "@unknown": { "description": "Libellé de valeur inconnue" }, - - "bounds": "Limites", - "@bounds": { - "description": "Libellé des limites géographiques" - }, - "onlineLayers": "Couches en ligne", "@onlineLayers": { "description": "En-tête de section pour les couches de carte en ligne" }, - - "offlineLayers": "Couches hors ligne", - "@offlineLayers": { - "description": "En-tête de section pour les couches de carte hors ligne (MBTiles)" - }, - "locationTrail": "Trace de déplacement", "@locationTrail": { "description": "Titre de la trace de déplacement" }, - "showTrailOnMap": "Afficher la trace sur la carte", "@showTrailOnMap": { "description": "Interrupteur pour afficher/masquer la trace sur la carte" }, - "trailVisible": "La trace est visible sur la carte", "@trailVisible": { "description": "État de visibilité de la trace - visible" }, - "trailHiddenRecording": "La trace est masquée (enregistrement en cours)", "@trailHiddenRecording": { "description": "État de visibilité de la trace - masqué mais enregistrement en cours" }, - - "distance": "Distance", - "@distance": { - "description": "Libellé de la distance" - }, - "duration": "Durée", "@duration": { "description": "Libellé de la durée" }, - "points": "Points", "@points": { "description": "Libellé du nombre de points de la trace" }, - "clearTrail": "Effacer la trace", "@clearTrail": { "description": "Bouton pour effacer la trace de déplacement" }, - "clearTrailQuestion": "Effacer la trace ?", "@clearTrailQuestion": { "description": "Titre de la boîte de dialogue de confirmation" }, - "clearTrailConfirmation": "Êtes-vous sûr de vouloir effacer la trace de déplacement actuelle ? Cette action ne peut pas être annulée.", "@clearTrailConfirmation": { "description": "Message de la boîte de dialogue de confirmation" }, - "noTrailRecorded": "Aucune trace enregistrée pour le moment", "@noTrailRecorded": { "description": "Message lorsqu'aucune trace n'existe" }, - "startTrackingToRecord": "Démarrez le suivi de position pour enregistrer votre trace", "@startTrackingToRecord": { "description": "Instructions pour démarrer l'enregistrement de la trace" }, - "trailControls": "Contrôles de la trace", "@trailControls": { "description": "Info-bulle des contrôles de la trace" }, - - "exportTrailToGpx": "Exporter la trace vers GPX", - "@exportTrailToGpx": { - "description": "Étiquette du bouton pour exporter la trace vers un fichier GPX" - }, - - "importTrailFromGpx": "Importer la trace depuis GPX", - "@importTrailFromGpx": { - "description": "Étiquette du bouton pour importer la trace depuis un fichier GPX" - }, - - "trailExportedSuccessfully": "Trace exportée avec succès!", - "@trailExportedSuccessfully": { - "description": "Message de réussite lors de l'exportation de la trace" - }, - - "failedToExportTrail": "Échec de l'exportation de la trace", - "@failedToExportTrail": { - "description": "Message d'erreur lors de l'échec de l'exportation de la trace" - }, - - "failedToImportTrail": "Échec de l'importation de la trace: {error}", - "@failedToImportTrail": { - "description": "Message d'erreur lors de l'échec de l'importation de la trace", - "placeholders": { - "error": { - "type": "String" - } - } - }, - - "importTrail": "Importer la trace", - "@importTrail": { - "description": "Titre du dialogue d'importation de trace" - }, - - "importTrailQuestion": "Importer la trace avec {pointCount} points?\n\nVous pouvez remplacer votre trace actuelle ou l'afficher à côté.", - "@importTrailQuestion": { - "description": "Contenu du dialogue de confirmation d'importation de trace", - "placeholders": { - "pointCount": { - "type": "int" - } - } - }, - - "viewAlongside": "Afficher à côté", - "@viewAlongside": { - "description": "Bouton pour importer la trace à côté de la trace actuelle" - }, - - "replaceCurrent": "Remplacer l'actuel", - "@replaceCurrent": { - "description": "Bouton pour remplacer la trace actuelle par la trace importée" - }, - - "trailImported": "Trace importée! ({pointCount} points)", - "@trailImported": { - "description": "Message de réussite lors de l'importation de la trace", - "placeholders": { - "pointCount": { - "type": "int" - } - } - }, - - "trailReplaced": "Trace remplacée! ({pointCount} points)", - "@trailReplaced": { - "description": "Message de réussite lors du remplacement de la trace", - "placeholders": { - "pointCount": { - "type": "int" - } - } - }, - "contactTrails": "Traces des contacts", "@contactTrails": { "description": "En-tête de section des traces des contacts" }, - "showAllContactTrails": "Afficher toutes les traces des contacts", "@showAllContactTrails": { "description": "Étiquette du commutateur pour afficher toutes les traces des contacts" }, - "noContactsWithLocationHistory": "Aucun contact avec historique de localisation", "@noContactsWithLocationHistory": { "description": "Sous-titre lorsqu'il n'y a pas de contacts avec des traces" }, - "showingTrailsForContacts": "Affichage des traces pour {count} contacts", "@showingTrailsForContacts": { "description": "Sous-titre montrant le nombre de contacts avec des traces", @@ -2452,117 +1242,94 @@ } } }, - "individualContactTrails": "Traces individuelles des contacts", "@individualContactTrails": { "description": "Titre de l'élément extensible pour les traces individuelles des contacts" }, - "deviceInformation": "Informations sur l'appareil", "@deviceInformation": { "description": "En-tête de section des informations sur l'appareil" }, - "bleName": "Nom BLE", "@bleName": { "description": "Libellé du nom de l'appareil Bluetooth Low Energy" }, - "meshName": "Nom du maillage", "@meshName": { "description": "Libellé du nom du réseau maillé" }, - "notSet": "Non défini", "@notSet": { "description": "Libellé lorsqu'une valeur n'est pas définie" }, - "model": "Modèle", "@model": { "description": "Libellé du modèle d'appareil" }, - "version": "Version", "@version": { "description": "Libellé de la version" }, - "buildDate": "Date de compilation", "@buildDate": { "description": "Libellé de la date de compilation du micrologiciel" }, - "firmware": "Micrologiciel", "@firmware": { "description": "Libellé du micrologiciel" }, - "maxContacts": "Contacts max", "@maxContacts": { "description": "Libellé de la capacité maximale de contacts" }, - "maxChannels": "Canaux max", "@maxChannels": { "description": "Libellé de la capacité maximale de canaux" }, - "publicInfo": "Informations publiques", "@publicInfo": { "description": "En-tête de section des informations publiques" }, - "meshNetworkName": "Nom du réseau maillé", "@meshNetworkName": { "description": "Libellé du champ du nom du réseau maillé" }, - "nameBroadcastInMesh": "Nom diffusé dans les annonces du maillage", "@nameBroadcastInMesh": { "description": "Texte d'aide pour le champ du nom du réseau maillé" }, - "telemetryAndLocationSharing": "Télémétrie et partage de position", "@telemetryAndLocationSharing": { "description": "Libellé de l'interrupteur de télémétrie et de partage de position" }, - "lat": "Lat", "@lat": { "description": "Libellé du champ de latitude (forme courte)" }, - "lon": "Lon", "@lon": { "description": "Libellé du champ de longitude (forme courte)" }, - "useCurrentLocation": "Utiliser la position actuelle", "@useCurrentLocation": { "description": "Info-bulle du bouton d'utilisation de la position actuelle" }, - "noneUnknown": "Aucun/Inconnu", "@noneUnknown": { "description": "Type d'appareil : aucun ou inconnu" }, - "chatNode": "Nœud de discussion", "@chatNode": { "description": "Type d'appareil : nœud de discussion" }, - "repeater": "Répéteur", "@repeater": { "description": "Type d'appareil : répéteur" }, - "roomChannel": "Salon/Canal", "@roomChannel": { "description": "Type d'appareil : salon ou canal" }, - "typeNumber": "Type {number}", "@typeNumber": { "description": "Type d'appareil générique avec numéro", @@ -2572,7 +1339,6 @@ } } }, - "copiedToClipboardShort": "{label} copié dans le presse-papiers", "@copiedToClipboardShort": { "description": "Message de succès court lors de la copie dans le presse-papiers", @@ -2582,7 +1348,6 @@ } } }, - "failedToSave": "Échec de l'enregistrement : {error}", "@failedToSave": { "description": "Message d'erreur générique pour les échecs d'enregistrement", @@ -2592,7 +1357,6 @@ } } }, - "failedToGetLocation": "Échec de l'obtention de la position : {error}", "@failedToGetLocation": { "description": "Message d'erreur lorsque l'obtention de la position échoue", @@ -2602,7 +1366,6 @@ } } }, - "sarTemplates": "Modèles SAR", "manageSarTemplates": "Gérer les modèles SAR", "addTemplate": "Ajouter un modèle", @@ -2625,8 +1388,6 @@ "templateDeleted": "Template deleted", "templatesImported": "{count, plural, =0{No templates imported} =1{Imported 1 template} other{Imported {count} templates}}", "templatesExported": "{count, plural, =1{Exported 1 template to clipboard} other{Exported {count} templates to clipboard}}", - "importFailed": "Import failed: {error}", - "exportFailed": "Export failed: {error}", "resetToDefaults": "Réinitialiser aux valeurs par défaut", "resetToDefaultsConfirmation": "Cela supprimera tous les modèles personnalisés et restaurera les 4 modèles par défaut. Continuer?", "reset": "Réinitialiser", @@ -2634,8 +1395,6 @@ "noTemplates": "No templates available", "tapAddToCreate": "Tap + to create your first template", "ok": "OK", - "delete": "Supprimer", - "permissionsSection": "Autorisations", "locationPermission": "Autorisation de localisation", "checking": "Vérification...", @@ -2650,19 +1409,15 @@ "locationPermissionAlreadyGranted": "L'autorisation de localisation est déjà accordée.", "sarNavyBlue": "SAR Bleu Marine", "sarNavyBlueDescription": "Mode Professionnel/Opérations", - "selectRecipient": "Sélectionner le destinataire", "broadcastToAllNearby": "Diffuser à tous à proximité", "searchRecipients": "Rechercher des destinataires...", "noContactsFound": "Aucun contact trouvé", "noRoomsFound": "Aucune salle trouvée", - "noContactsOrRoomsAvailable": "Aucun contact ou salle disponible", "noRecipientsAvailable": "Aucun destinataire disponible", "noChannelsFound": "Aucun canal trouvé", - "messagesWillBeSentToPublicChannel": "Les messages seront envoyés au canal public", "newMessage": "Nouveau message", "channel": "Canal", - "samplePoliceLead": "Chef de Police", "sampleDroneOperator": "Opérateur de Drone", "sampleFirefighterAlpha": "Pompier", @@ -2712,28 +1467,17 @@ "sampleBaseCommand": "Commandement de Base", "sampleFieldCoordinator": "Coordinateur de Terrain", "sampleMedicalTeam": "Équipe Médicale", - "mapDrawing": "Dessin de Carte", - "drawingShared": "Dessin de Carte", "lineDrawing": "Ligne", "rectangleDrawing": "Rectangle", "navigateToDrawing": "Naviguer vers le Dessin", "hideFromMap": "Masquer de la Carte", "copyCoordinates": "Copier les Coordonnées", - "coordinatesCopiedToClipboard": "Coordonnées copiées dans le presse-papiers", - "manualCoordinates": "Coordonnées Manuelles", "enterCoordinatesManually": "Entrer les coordonnées manuellement", "latitudeLabel": "Latitude", "longitudeLabel": "Longitude", - "invalidLatitude": "Latitude invalide (-90 à 90)", - "invalidLongitude": "Longitude invalide (-180 à 180)", "exampleCoordinates": "Exemple: 46.0569, 14.5058", - - "drawingHidden": "Dessin masqué de la carte", - "alreadyShared": "{count} déjà partagé", - "newDrawingsShared": "{count} nouveau(x) dessin(s) partagé(s)", - "drawingTools": "Outils de Dessin", "shareDrawing": "Partager le Dessin", "shareWithAllNearbyDevices": "Partager avec tous les appareils à proximité", "shareToRoom": "Partager dans la Salle", @@ -2744,23 +1488,17 @@ "shared": "Partagé", "line": "Ligne", "rectangle": "Rectangle", - "saveAsTemplate": "Enregistrer comme Modèle", "templateSaved": "Modèle enregistré avec succès", "templateAlreadyExists": "Un modèle avec cet emoji existe déjà", - "updateAvailable": "Mise à Jour Disponible", "currentVersion": "Actuelle", "latestVersion": "Dernière", "downloadUpdate": "Télécharger", "updateLater": "Plus Tard", - "cadastralParcels": "Parcelles Cadastrales", "forestRoads": "Chemins Forestiers", - "showCadastralParcels": "Afficher les parcelles cadastrales", - "showForestRoads": "Afficher les chemins forestiers", "wmsOverlays": "Superpositions WMS", - "hikingTrails": "Sentiers de Randonnée", "mainRoads": "Routes Principales", "houseNumbers": "Numéros de Maison", @@ -2771,12 +1509,10 @@ "placeNames": "Noms de Lieux", "municipalityBorders": "Limites Municipales", "topographicMap": "Carte Topographique 1:25000", - "recentMessages": "Messages Récents", "@recentMessages": { "description": "Header for recent messages overlay on map in fullscreen mode" }, - "addChannel": "Ajouter un Canal", "channelName": "Nom du Canal", "channelNameHint": "par ex. Équipe de Sauvetage Alpha", @@ -2796,9 +1532,7 @@ "deleteChannelConfirmation": "Êtes-vous sûr de vouloir supprimer le canal \"{channelName}\" ? Cette action ne peut pas être annulée.", "channelDeletedSuccessfully": "Canal supprimé avec succès", "channelDeletionFailed": "Échec de la suppression du canal : {error}", - "allChannelSlotsInUse": "Tous les emplacements de canaux sont utilisés (maximum 39 canaux personnalisés)", "createChannel": "Créer un Canal", - "wizardBack": "Retour", "wizardSkip": "Passer", "wizardNext": "Suivant", @@ -2810,10 +1544,6 @@ "wizardConnectingFeature1": "Rechercher les appareils MeshCore à proximité", "wizardConnectingFeature2": "Coupler avec votre radio via Bluetooth", "wizardConnectingFeature3": "Fonctionne entièrement hors ligne - aucun internet requis", - "wizardSimpleModeTitle": "Mode Simple", - "wizardSimpleModeDescription": "Nouveau dans les réseaux maillés ? Activez le mode simple pour une interface simplifiée avec seulement les fonctions essentielles.", - "wizardSimpleModeFeature1": "Interface conviviale pour débutants avec les fonctions principales", - "wizardSimpleModeFeature2": "Passer en mode avancé à tout moment dans les paramètres", "wizardChannelTitle": "Canaux", "wizardChannelDescription": "Diffusez des messages à tous sur un canal, parfait pour les annonces et la coordination de toute l'équipe.", "wizardChannelFeature1": "Canal public pour la communication générale de l'équipe", @@ -2834,56 +1564,30 @@ "allTeamContacts": "Tous les contacts de l'équipe", "directMessagesInfo": "Messages directs avec confirmations. Envoyé à {count} membres de l'équipe.", "sarMarkerSentToContacts": "Marqueur SAR envoyé à {count} contacts", - "noContactsAvailable": "Aucun contact d'équipe disponible" -, - + "noContactsAvailable": "Aucun contact d'équipe disponible", "reply": "Répondre", - "technicalDetails": "Détails techniques", - "messageTechnicalDetails": "Détails techniques du message", - "linkQuality": "Qualité du lien", - "delivery": "Livraison", - "status": "Statut", - "expectedAckTag": "Balise ACK attendue", - "roundTrip": "Aller-retour", - "retryAttempt": "Tentative de renvoi", - "floodFallback": "Repli inondation", - "identity": "Identité", - "messageId": "ID du message", - "sender": "Expéditeur", - "senderKey": "Clé de l'expéditeur", - "recipient": "Destinataire", - "recipientKey": "Clé du destinataire", - "voice": "Voix", - "voiceId": "ID vocal", - "envelope": "Enveloppe", - "sessionProgress": "Progression de session", - "complete": "Complet", - "rawDump": "Vidage brut", - "cannotRetryMissingRecipient": "Impossible de réessayer : informations du destinataire manquantes", - "voiceUnavailable": "Voix indisponible pour le moment", - "requestingVoice": "Demande de voix" -} \ No newline at end of file +} diff --git a/lib/l10n/app_hr.arb b/lib/l10n/app_hr.arb index 3bd66a0..0ca8660 100644 --- a/lib/l10n/app_hr.arb +++ b/lib/l10n/app_hr.arb @@ -1,675 +1,228 @@ { "@@locale": "hr", - "appTitle": "MeshCore SAR", - "messages": "Poruke", - "contacts": "Kontakti", - "map": "Karta", - "settings": "Postavke", - "connect": "Poveži", - "disconnect": "Prekini", - - "scanningForDevices": "Skeniranje uređaja...", - "noDevicesFound": "Nisu pronađeni uređaji", - "scanAgain": "Skeniraj ponovno", - "tapToConnect": "Dodirnite za povezivanje", - "deviceNotConnected": "Uređaj nije povezan", - "locationPermissionDenied": "Dopuštenje za lokaciju odbijeno", - "locationPermissionPermanentlyDenied": "Dopuštenje za lokaciju trajno odbijeno. Molimo omogućite u Postavkama.", - "locationPermissionRequired": "Dopuštenje za lokaciju potrebno je za GPS praćenje i koordinaciju tima. Možete ga omogućiti kasnije u Postavkama.", - "locationServicesDisabled": "Usluge lokacije su onemogućene. Molimo omogućite ih u Postavkama.", - "failedToGetGpsLocation": "Neuspjelo dobivanje GPS lokacije", - - "advertisedAtLocation": "Objavljeno na {latitude}, {longitude}", - "failedToAdvertise": "Neuspjela objava: {error}", - - "reconnecting": "Ponovno povezivanje... ({attempt}/{max})", - "cancelReconnection": "Otkaži ponovno povezivanje", - - "mapManagement": "Upravljanje kartom", - "general": "Općenito", - "theme": "Tema", - "chooseTheme": "Odaberite temu", - "light": "Svijetla", - "dark": "Tamna", - "blueLightTheme": "Plava svijetla tema", - "blueDarkTheme": "Plava tamna tema", - "sarRed": "SAR crvena", - "alertEmergencyMode": "Način upozorenja/hitna situacija", - "sarGreen": "SAR zelena", - "safeAllClearMode": "Način sigurno/sve jasno", - "autoSystem": "Automatski (Sustav)", - "followSystemTheme": "Slijedi temu sustava", - "showRxTxIndicators": "Prikaži RX/TX indikatore", - "displayPacketActivity": "Prikaži indikatore aktivnosti paketa u gornjoj traci", - - "simpleMode": "Jednostavni način", - - "simpleModeDescription": "Sakrij nevažne informacije u porukama i kontaktima", - "disableMap": "Onemogući kartu", - "disableMapDescription": "Sakrij karticu karte za uštedu baterije", - "language": "Jezik", - "chooseLanguage": "Odaberite jezik", - - "english": "Engleski", - - "slovenian": "Slovenski", - - "croatian": "Hrvatski", - - "german": "Njemački", - - "spanish": "Španjolski", - - "french": "Francuski", - - "italian": "Talijanski", - - "locationBroadcasting": "Emitiranje lokacije", - - "autoLocationTracking": "Automatsko praćenje lokacije", - - "automaticallyBroadcastPosition": "Automatski emitiraj ažuriranja pozicije", - - "configureTracking": "Konfiguriraj praćenje", - - "distanceAndTimeThresholds": "Pragovi udaljenosti i vremena", - - "locationTrackingConfiguration": "Konfiguracija praćenja lokacije", - - "configureWhenLocationBroadcasts": "Konfigurirajte kada se emitiranja lokacije šalju u mesh mrežu", - - "minimumDistance": "Minimalna udaljenost", - - "broadcastAfterMoving": "Emitiraj tek nakon pomicanja {distance} metara", - - "maximumDistance": "Maksimalna udaljenost", - - "alwaysBroadcastAfterMoving": "Uvijek emitiraj nakon pomicanja {distance} metara", - - "minimumTimeInterval": "Minimalni vremenski interval", - - "alwaysBroadcastEvery": "Uvijek emitiraj svakih {duration}", - "save": "Spremi", - "cancel": "Otkaži", - "close": "Zatvori", - "about": "O aplikaciji", - "appVersion": "Verzija aplikacije", - "appName": "Ime aplikacije", - "aboutMeshCoreSar": "O MeshCore SAR", - "aboutDescription": "Aplikacija za potragu i spašavanje dizajnirana za timove za hitne slučajeve. Značajke uključuju:\n\n• BLE mesh mrežu za komunikaciju uređaj-uređaj\n• Offline karte s više slojeva\n• Praćenje članova tima u stvarnom vremenu\n• SAR taktički markeri (pronađena osoba, požar, zbirno mjesto)\n• Upravljanje kontaktima i razmjena poruka\n• GPS praćenje s kompasnim smjerom\n• Predmemoriranje karata za offline upotrebu", - "technologiesUsed": "Korištene tehnologije:", - "technologiesList": "• Flutter za višeplatformski razvoj\n• BLE (Bluetooth Low Energy) za mesh mrežu\n• OpenStreetMap za kartografiju\n• Provider za upravljanje stanjem\n• SharedPreferences za lokalnu pohranu", - "moreInfo": "Više informacija", - - "learnMoreAbout": "Saznajte više o MeshCore SAR-u", - - "developer": "Programer", - "packageName": "Ime paketa", - "sampleData": "Primjer podataka", - "sampleDataDescription": "Učitajte ili očistite primjere kontakata, poruka kanala i SAR markera za testiranje", - "loadSampleData": "Učitaj primjer", - "clearAllData": "Očisti sve podatke", - "clearAllDataConfirmTitle": "Očisti sve podatke", - "clearAllDataConfirmMessage": "Ovo će očistiti sve kontakte i SAR markere. Jeste li sigurni?", - "clear": "Očisti", - "loadedSampleData": "Učitano {teamCount} članova tima, {channelCount} kanala, {sarCount} SAR markera, {messageCount} poruka", - "failedToLoadSampleData": "Neuspjelo učitavanje primjera podataka: {error}", - "allDataCleared": "Svi podaci očišćeni", - "failedToStartBackgroundTracking": "Neuspjelo pokretanje praćenja u pozadini. Provjerite dopuštenja i BLE vezu.", - "locationBroadcast": "Emitiranje lokacije: {latitude}, {longitude}", - "defaultPinInfo": "Zadani PIN za uređaje bez zaslona je 123456. Problemi s uparivanjem? Zaboravite Bluetooth uređaj u postavkama sustava.", - "noMessagesYet": "Još nema poruka", - "pullDownToSync": "Povucite prema dolje za sinkronizaciju", - "deleteContact": "Izbriši kontakt", - "delete": "Izbriši", - "viewOnMap": "Prikaži na karti", - "refresh": "Osvježi", - - "sendDirectMessage": "Pošalji", - "resetPath": "Resetiraj put (preusmjeri)", - "publicKeyCopied": "Javni ključ kopiran u međuspremnik", - "copiedToClipboard": "{label} kopirano u međuspremnik", - "pleaseEnterPassword": "Molimo unesite lozinku", - "failedToSyncContacts": "Neuspjela sinkronizacija kontakata: {error}", - "loggedInSuccessfully": "Uspješno prijavljen! Čekanje na poruke sobe...", - "loginFailed": "Prijava neuspjela - netočna lozinka", - "loggingIn": "Prijavljivanje u {roomName}...", - "failedToSendLogin": "Neuspjelo slanje prijave: {error}", - "lowLocationAccuracy": "Niska točnost lokacije", - "continue_": "Nastavi", - "sendSarMarker": "Pošalji SAR marker", - "deleteDrawing": "Izbriši crtež", - - - "drawLine": "Nacrtaj liniju", - "drawLineDesc": "Nacrtaj slobodnu liniju na karti", - "drawRectangle": "Nacrtaj pravokutnik", - "drawRectangleDesc": "Nacrtaj pravokutno područje na karti", - "measureDistance": "Izmjeri udaljenost", - "measureDistanceDesc": "Dugi pritisak na dvije točke za mjerenje", - "clearMeasurement": "Očisti mjerenje", - "distanceLabel": "Udaljenost: {distance}", - "longPressForSecondPoint": "Dugi pritisak za drugu točku", - "longPressToStartMeasurement": "Dugi pritisak za prvu točku", - "longPressToStartNewMeasurement": "Dugi pritisak za novo mjerenje", - "shareDrawings": "Podijeli crteže", - "clearAllDrawings": "Očisti sve crteže", - "completeLine": "Završi liniju", - "broadcastDrawingsToTeam": "Objavi {count} crtež{plural} timu", - "removeAllDrawings": "Ukloni svih {count} crtež{plural}", - "deleteAllDrawingsConfirm": "Izbrisati sve {count} crtež{plural} s karte?", - "drawing": "Crtanje", - "shareDrawingsCount": "Podijeli {count} crtež{plural}", - - "sentDrawingsToRoom": "Poslano {count} crtež{plural} karte u {roomName}", - - "sharedDrawingsToRoom": "Podijeljeno {success}/{total} crtež{plural} u {roomName}", - "showReceivedDrawings": "Prikaži primljene crteže", - "showingAllDrawings": "Prikazujem sve crteže", - "showingOnlyYourDrawings": "Prikazujem samo vaše crteže", - "showSarMarkers": "Prikaži SAR oznake", - "showingSarMarkers": "Prikazujem SAR oznake", - "hidingSarMarkers": "Skrivam SAR oznake", - "clearAll": "Očisti sve", - - "noLocalDrawings": "Nema lokalnih crteža za dijeljenje", - "publicChannel": "Javni kanal", - "broadcastToAll": "Emitiraj svim obližnjim čvorovima (privremeno)", - "storedPermanently": "Trajno pohranjeno u sobi", - - "drawingsSentToPublicChannel": "Poslano {count} crtež{plural} na javni kanal", - - "drawingsSharedToPublicChannel": "Podijeljeno {success}/{total} crteža na javni kanal", - "notConnectedToDevice": "Nije povezano s uređajem", - - "directMessage": "Izravna poruka", - - "directMessageSentTo": "Izravna poruka poslana {contactName}", - - "failedToSend": "Neuspjelo slanje: {error}", - - "directMessageInfo": "Ova poruka će biti poslana izravno {contactName}. Također će se prikazati u glavnom feedu poruka.", - "typeYourMessage": "Upišite svoju poruku...", - "quickLocationMarker": "Brzi označitelj lokacije", - "markerType": "Vrsta markera", - "sendTo": "Pošalji na", - "noDestinationsAvailable": "Nema dostupnih odredišta.", - "selectDestination": "Odaberite odredište...", - "ephemeralBroadcastInfo": "Privremeno: Samo emitiranje. Nije pohranjeno - čvorovi moraju biti online.", - "persistentRoomInfo": "Trajno: Nepromjenjivo pohranjeno u sobi. Automatski sinkronizirano i očuvano offline.", - "location": "Lokacija", - - "myLocation": "Moja lokacija", - "fromMap": "S karte", - "gettingLocation": "Dohvaćanje lokacije...", - "locationError": "Greška lokacije", - "retry": "Pokušaj ponovno", - "refreshLocation": "Osvježi lokaciju", - "accuracyMeters": "Točnost: ±{accuracy}m", - "notesOptional": "Napomene (opcionalno)", - "addAdditionalInformation": "Dodajte dodatne informacije...", - "lowAccuracyWarning": "Točnost lokacije je ±{accuracy}m. Ovo možda nije dovoljno precizno za SAR operacije.\n\nNastaviti svejedno?", - "loginToRoom": "Prijava u sobu", - "enterPasswordInfo": "Unesite lozinku za pristup ovoj sobi. Lozinka će biti spremljena za buduću upotrebu.", - "password": "Lozinka", - "enterRoomPassword": "Unesite lozinku sobe", - "loggingInDots": "Prijavljivanje...", - "login": "Prijava", - "failedToAddRoom": "Neuspjelo dodavanje sobe na uređaj: {error}\n\nSoba možda još nije oglašena.\nPokušajte pričekati da soba emitira.", - "direct": "Izravno", - "flood": "Preplavljanje", - - "admin": "Administrator", - "loggedIn": "Prijavljen", - "noGpsData": "Nema GPS podataka", - "distance": "Udaljenost", - - "pingingDirect": "Pingiranje {name} (izravno putem puta)...", - - "pingingFlood": "Pingiranje {name} (preplavljanje - nema puta)...", - "directPingTimeout": "Istek izravnog pinga - ponovni pokušaj {name} s preplavljanjem...", - - "pingSuccessful": "Ping uspješan prema {name}{fallback}", - - "viaFloodingFallback": " (putem rezervnog preplavljanja)", - "pingFailed": "Ping neuspješan prema {name} - nije primljen odgovor", - "deleteContactConfirmation": "Jeste li sigurni da želite izbrisati \"{name}\"?\n\nOvo će ukloniti kontakt iz aplikacije i pratećeg radio uređaja.", - - "removingContact": "Uklanjanje {name}...", - - "contactRemoved": "Kontakt \"{name}\" uklonjen", - "failedToRemoveContact": "Neuspjelo uklanjanje kontakta: {error}", - "type": "Vrsta", - "publicKey": "Javni ključ", - "lastSeen": "Zadnje viđen", - "roomStatus": "Status sobe", - "loginStatus": "Status prijave", - "notLoggedIn": "Nije prijavljen", - "adminAccess": "Administratorski pristup", - "yes": "Da", - "no": "Ne", - "permissions": "Dopuštenja", - "passwordSaved": "Lozinka spremljena", - "locationColon": "Lokacija:", - "telemetry": "Telemetrija", - - "requestingTelemetry": "Zahtijevanje telemetrije od {name}...", - "voltage": "Napon", - "battery": "Baterija", - "temperature": "Temperatura", - "humidity": "Vlažnost", - "pressure": "Tlak", - "gpsTelemetry": "GPS (Telemetrija)", - "updated": "Ažurirano", - "pathResetInfo": "Put resetiran za {name}. Sljedeća poruka će pronaći novu rutu.", - "reLoginToRoom": "Ponovna prijava u sobu", - "heading": "Smjer", - "elevation": "Nadmorska visina", - "accuracy": "Točnost", - - - "bearing": "Azimut", - "direction": "Smjer", - "filterMarkers": "Filtriraj markere", - "filterMarkersTooltip": "Filtriraj markere", - "contactsFilter": "Kontakti", - "repeatersFilter": "Repetitori", - "sarMarkers": "SAR markeri", - "foundPerson": "Pronađena osoba", - "fire": "Požar", - "stagingArea": "Zbirno mjesto", - "showAll": "Prikaži sve", - - "nearbyContacts": "Obližnji kontakti", - "locationUnavailable": "Lokacija nije dostupna", - "ahead": "naprijed", - "degreesRight": "{degrees}° desno", - "degreesLeft": "{degrees}° lijevo", - "latLonFormat": "Šir: {latitude} Duž: {longitude}", - "noContactsYet": "Još nema kontakata", - "connectToDeviceToLoadContacts": "Povežite se s uređajem da učitate kontakte", - "teamMembers": "Članovi tima", - "repeaters": "Repetitori", - "rooms": "Sobe", - "channels": "Kanali", - - "cacheStatistics": "Statistika predmemorije", - - "totalTiles": "Ukupno pločica", - - "cacheSize": "Veličina predmemorije", - - "storeName": "Naziv spremišta", - - "noCacheStatistics": "Statistika predmemorije nije dostupna", - - "downloadRegion": "Preuzmi regiju", - - "mapLayer": "Sloj karte", - - "regionBounds": "Granice regije", - - "north": "Sjever", - - "south": "Jug", - - "east": "Istok", - - "west": "Zapad", - - "zoomLevels": "Razine zumiranja", - - "minZoom": "Min: {zoom}", - - "maxZoom": "Maks: {zoom}", - - "downloadingDots": "Preuzimanje...", - - "cancelDownload": "Otkaži preuzimanje", - - "downloadRegionButton": "Preuzmi regiju", - - "downloadNote": "Napomena: Velike regije ili visoke razine zumiranja mogu zahtijevati značajno vrijeme i prostor za pohranu.", - - "cacheManagement": "Upravljanje predmemorijom", - - "clearAllMaps": "Očisti sve karte", - - "clearMapsConfirmTitle": "Očisti sve karte", - - "clearMapsConfirmMessage": "Jeste li sigurni da želite izbrisati sve preuzete karte? Ova radnja se ne može poništiti.", - - "mapDownloadCompleted": "Preuzimanje karte završeno!", - - "cacheClearedSuccessfully": "Predmemorija uspješno očišćena!", - - "downloadCancelled": "Preuzimanje otkazano", - - "startingDownload": "Pokretanje preuzimanja...", - - "downloadingMapTiles": "Preuzimanje pločica karte...", - - "downloadCompletedSuccessfully": "Preuzimanje uspješno završeno!", - - "cancellingDownload": "Otkazivanje preuzimanja...", - - "errorLoadingStats": "Greška pri učitavanju statistike: {error}", - - "downloadFailed": "Preuzimanje nije uspjelo: {error}", - - "cancelFailed": "Otkazivanje nije uspjelo: {error}", - - "clearCacheFailed": "Čišćenje predmemorije nije uspjelo: {error}", - - "minZoomError": "Min zumiranje: {error}", - - "maxZoomError": "Maks zumiranje: {error}", - - "minZoomGreaterThanMax": "Minimalno zumiranje mora biti manje ili jednako maksimalnom zumiranju", - "selectMapLayer": "Odaberite sloj karte", - - "mapOptions": "Opcije karte", - - "showLegend": "Prikaži legendu", - - "displayMarkerTypeCounts": "Prikaži broj vrsta markera", - - "rotateMapWithHeading": "Rotiraj kartu sa smjerom", - - "mapFollowsDirection": "Karta slijedi vaš smjer pri kretanju", - - "resetMapRotation": "Resetiraj rotaciju", - - "resetMapRotationTooltip": "Vrati kartu na sjever", - - "showMapDebugInfo": "Prikaži informacije za otklanjanje pogrešaka karte", - - "displayZoomLevelBounds": "Prikaži razinu zumiranja i granice", - - "fullscreenMode": "Način cijelog zaslona", - - "hideUiFullMapView": "Sakrij sve UI kontrole za prikaz cijele karte", - "openStreetMap": "OpenStreetMap", - "openTopoMap": "OpenTopoMap", - "esriSatellite": "ESRI satelit", - "googleHybrid": "Google hibridna karta", - "googleRoadmap": "Google cestovna karta", - "googleTerrain": "Google teren", - - "downloadVisibleArea": "Preuzmi vidljivo područje", - - "initializingMap": "Inicijalizacija karte...", - "dragToPosition": "Povuci na poziciju", - "createSarMarker": "Kreiraj SAR marker", - "compass": "Kompas", - "navigationAndContacts": "Navigacija i kontakti", - "sarAlert": "SAR UZBUNA", - "justNow": "Upravo sada", - "minutesAgo": "prije {minutes}m", - "hoursAgo": "prije {hours}h", - "daysAgo": "prije {days}d", - "secondsAgo": "prije {seconds}s", - "sending": "Slanje...", - "sent": "Poslano", - "delivered": "Dostavljeno", - "deliveredWithTime": "Dostavljeno ({time}ms)", - "failed": "Neuspjelo", - "broadcast": "Emitirano", - "deliveredToContacts": "Dostavljeno na {delivered}/{total} kontakata", - "allDelivered": "Sve dostavljeno", - "recipientDetails": "Detalji primatelja", - "pending": "Na čekanju", - - "messageSentToPublicChannel": "Poruka poslana na javni kanal", - - "pleaseSelectRoomToSendSar": "Molimo odaberite sobu za slanje SAR markera", - - "failedToSendSarMarker": "Neuspjelo slanje SAR markera: {error}", - - "sarMarkerSentTo": "SAR marker poslan u {roomName}", - - "notConnectedCannotSync": "Nije povezano - ne može se sinkronizirati poruke", - - "syncedMessageCount": "Sinkronizirano {count} poruka", - - "noNewMessages": "Nema novih poruka", - - "syncFailed": "Sinkronizacija nije uspjela: {error}", - - "failedToResendMessage": "Neuspjelo ponovno slanje poruke", - - "retryingMessage": "Ponovni pokušaj slanja poruke...", - - "retryFailed": "Ponovni pokušaj nije uspio: {error}", - "textCopiedToClipboard": "Tekst kopiran u međuspremnik", - "cannotReplySenderMissing": "Ne mogu odgovoriti: informacije o pošiljatelju nedostaju", - "cannotReplyContactNotFound": "Ne mogu odgovoriti: kontakt nije pronađen", - - "messageDeleted": "Poruka izbrisana", "copyText": "Kopiraj tekst", - "textCopiedToClipboard": "Tekst kopiran u međuspremnik", "saveAsTemplate": "Spremi kao predložak", "templateSaved": "Predložak uspješno spremljen", "templateAlreadyExists": "Predložak s ovim emojijem već postoji", @@ -678,24 +231,13 @@ "shareLocation": "Podijeli lokaciju", "shareLocationText": "{markerInfo}\n\nKoordinate: {lat}, {lon}\n\nGoogle Maps: {url}", "sarLocationShare": "SAR Lokacija", - "locationShared": "Lokacija podijeljena", - - "refreshedContacts": "Kontakti osvježeni", - "sarMarkerFoundPerson": "Pronađena osoba", - "sarMarkerFire": "Lokacija požara", - "sarMarkerStagingArea": "Zbirno mjesto", - "sarMarkerObject": "Pronađen objekt", - "from": "Od", - "coordinates": "Koordinate", - "tapToViewOnMap": "Dodirnite za prikaz na karti", - "radioSettings": "Postavke radija", "frequencyMHz": "Frekvencija (MHz)", "frequencyExample": "npr. 869.618", @@ -704,181 +246,53 @@ "codingRate": "Omjer kodiranja", "txPowerDbm": "TX snaga (dBm)", "maxPowerDbm": "Maks: {power} dBm", - "you": "Ti", - - "offlineVectorMaps": "Offline vektorske karte", - - "offlineVectorMapsDescription": "Uvezite i upravljajte offline vektorskim pločicama karata (MBTiles format) za upotrebu bez internetske veze", - - "importMbtiles": "Uvezi MBTiles datoteku", - - "importMbtilesNote": "Podržava MBTiles datoteke s vektorskim pločicama (PBF/MVT format). Geofabrik izvodi odlično rade!", - - "noMbtilesFiles": "Nisu pronađene offline vektorske karte", - - "mbtilesImportedSuccessfully": "MBTiles datoteka uspješno uvezena", - - "failedToImportMbtiles": "Neuspjeli uvoz MBTiles datoteke", - - "deleteMbtilesConfirmTitle": "Izbriši offline kartu", - - "deleteMbtilesConfirmMessage": "Jeste li sigurni da želite izbrisati \"{name}\"? Ovo će trajno ukloniti offline kartu.", - - "mbtilesDeletedSuccessfully": "Offline karta uspješno izbrisana", - - "failedToDeleteMbtiles": "Neuspjelo brisanje offline karte", - - "importExportCachedTiles": "Uvoz/Izvoz predmemoriranih pločica", - - "importExportDescription": "Sigurnosno kopirajte, dijelite i vraćajte preuzete pločice karte između uređaja", - - "exportTilesToFile": "Izvezi pločice u datoteku", - - "importTilesFromFile": "Uvezi pločice iz datoteke", - - "selectExportLocation": "Odaberite lokaciju izvoza", - - "selectImportFile": "Odaberite arhivu pločica", - - "exportingTiles": "Izvažanje pločica...", - - "importingTiles": "Uvažanje pločica...", - - "exportSuccess": "Uspješno izvezeno {count} pločica", - - "importSuccess": "Uspješno uvezeno {count} skladišta", - "exportFailed": "Izvoz nije uspio: {error}", - "importFailed": "Uvoz nije uspio: {error}", - - "exportNote": "Stvara komprimiranu arhivsku datoteku (.fmtc) koju možete dijeliti i uvesti na drugim uređajima.", - - "importNote": "Uvozi pločice karte iz prethodno izvezene arhivske datoteke. Pločice će biti spojene s postojećom predmemorijom.", - - "noTilesToExport": "Nema pločica za izvoz", - - "archiveContainsStores": "Arhiva sadrži {count} skladišta", - - "vectorTiles": "Vektorske pločice", - - "schema": "Shema", - "unknown": "Nepoznato", - - "bounds": "Granice", - "onlineLayers": "Mrežni slojevi", - - "offlineLayers": "Offline slojevi", - "locationTrail": "Putanja lokacije", - "showTrailOnMap": "Prikaži putanju na karti", - "trailVisible": "Putanja je vidljiva na karti", - "trailHiddenRecording": "Putanja je skrivena (još se snima)", - "duration": "Trajanje", - "points": "Točke", - "clearTrail": "Obriši putanju", - "clearTrailQuestion": "Obrisati putanju?", - "clearTrailConfirmation": "Jeste li sigurni da želite obrisati trenutnu putanju lokacije? Ova radnja se ne može poništiti.", - "noTrailRecorded": "Još nije snimljena putanja", - "startTrackingToRecord": "Pokrenite praćenje lokacije za snimanje putanje", - "trailControls": "Upravljanje putanjom", - - "exportTrailToGpx": "Izvezi putanju u GPX", - - "importTrailFromGpx": "Uvezi putanju iz GPX", - - "trailExportedSuccessfully": "Putanja uspješno izvezena!", - - "failedToExportTrail": "Izvoz putanje nije uspio", - - "failedToImportTrail": "Uvoz putanje nije uspio: {error}", - - "importTrail": "Uvezi putanju", - - "importTrailQuestion": "Uvezi putanju s {pointCount} točaka?\n\nMožete zamijeniti trenutnu putanju ili je prikazati zajedno.", - - "viewAlongside": "Prikaži zajedno", - - "replaceCurrent": "Zamijeni trenutnu", - - "trailImported": "Putanja uvezena! ({pointCount} točaka)", - - "trailReplaced": "Putanja zamijenjena! ({pointCount} točaka)", - "contactTrails": "Putanje kontakata", - "showAllContactTrails": "Prikaži sve putanje kontakata", - "noContactsWithLocationHistory": "Nema kontakata s poviješću lokacije", - "showingTrailsForContacts": "Prikazujem putanje za {count} kontakata", - "individualContactTrails": "Pojedinačne putanje kontakata", - "deviceInformation": "Informacije o uređaju", - "bleName": "BLE naziv", - "meshName": "Mesh naziv", - "notSet": "Nije postavljeno", - "model": "Model", - "version": "Verzija", - "buildDate": "Datum izgradnje", - "firmware": "Firmware", - "maxContacts": "Maks. kontakata", - "maxChannels": "Maks. kanala", - "publicInfo": "Javne informacije", - "meshNetworkName": "Naziv mesh mreže", - "nameBroadcastInMesh": "Naziv koji se emitira u mesh oglasima", - "telemetryAndLocationSharing": "Telemetrija i dijeljenje lokacije", - "lat": "Šir", - "lon": "Duž", - "useCurrentLocation": "Koristi trenutnu lokaciju", - "noneUnknown": "Nema/Nepoznato", - "chatNode": "Čvorište za razgovor", - "repeater": "Repetitor", - "roomChannel": "Soba/Kanal", - "typeNumber": "Tip {number}", - "copiedToClipboardShort": "Kopirano {label} u međuspremnik", - "failedToSave": "Neuspjelo spremanje: {error}", - "failedToGetLocation": "Neuspjelo dohvaćanje lokacije: {error}", - "sarTemplates": "SAR predlošci", "manageSarTemplates": "Upravljanje SAR predlošcima", "addTemplate": "Dodaj predložak", @@ -901,8 +315,6 @@ "templateDeleted": "Predložak izbrisan", "templatesImported": "{count, plural, =0{Nema uvezenih predložaka} =1{Uvezen 1 predložak} other{Uvezeno {count} predložaka}}", "templatesExported": "{count, plural, =1{Izvezen 1 predložak u međuspremnik} other{Izvezeno {count} predložaka u međuspremnik}}", - "importFailed": "Uvoz nije uspio: {error}", - "exportFailed": "Izvoz nije uspio: {error}", "resetToDefaults": "Vrati na zadane", "resetToDefaultsConfirmation": "Ovo će izbrisati sve prilagođene predloške i vratiti 4 zadana predloška. Nastaviti?", "reset": "Vrati", @@ -910,7 +322,6 @@ "noTemplates": "Nema dostupnih predložaka", "tapAddToCreate": "Dodirnite + za izradu prvog predloška", "ok": "OK", - "permissionsSection": "Dozvole", "locationPermission": "Dozvola za lokaciju", "checking": "Provjera...", @@ -925,19 +336,15 @@ "locationPermissionAlreadyGranted": "Dozvola za lokaciju je već odobrena.", "sarNavyBlue": "SAR Mornarsko Plava", "sarNavyBlueDescription": "Profesionalni/Operativni Način", - "selectRecipient": "Odaberi primatelja", "broadcastToAllNearby": "Emitiraj svima u blizini", "searchRecipients": "Pretraži primatelje...", "noContactsFound": "Nema kontakata", "noRoomsFound": "Nema soba", - "noContactsOrRoomsAvailable": "Nema dostupnih kontakata ili soba", "noRecipientsAvailable": "Nema dostupnih primatelja", "noChannelsFound": "Nije pronađen nijedan kanal", - "messagesWillBeSentToPublicChannel": "Poruke će biti poslane na javni kanal", "newMessage": "Nova poruka", "channel": "Kanal", - "samplePoliceLead": "Voditelj Policije", "sampleDroneOperator": "Operater Drona", "sampleFirefighterAlpha": "Vatrogasac", @@ -987,27 +394,17 @@ "sampleBaseCommand": "Zapovjedništvo Baze", "sampleFieldCoordinator": "Terenski Koordinator", "sampleMedicalTeam": "Medicinski Tim", - "mapDrawing": "Crtež karte", "navigateToDrawing": "Navigiraj do crteža", "copyCoordinates": "Kopiraj koordinate", "hideFromMap": "Sakrij s karte", "lineDrawing": "Linijski crtež", "rectangleDrawing": "Pravokutni crtež", - "coordinatesCopiedToClipboard": "Koordinate kopirane u međuspremnik", - "manualCoordinates": "Ručne koordinate", "enterCoordinatesManually": "Ručno unesite koordinate", "latitudeLabel": "Geografska širina", "longitudeLabel": "Geografska dužina", - "invalidLatitude": "Nevažeća geografska širina (-90 do 90)", - "invalidLongitude": "Nevažeća geografska dužina (-180 do 180)", "exampleCoordinates": "Primjer: 46.0569, 14.5058", - - "drawingShared": "Crtež podijeljen", - "drawingHidden": "Crtež sakriven s karte", - "alreadyShared": "{count, plural, =1{1 već podijeljeno} other{{count} već podijeljeno}}", - "newDrawingsShared": "Podijeljeno {count} novi{plural} crtež{plural}", "drawingTools": "Alati za crtanje", "shareDrawing": "Podijeli crtež", "shareWithAllNearbyDevices": "Podijeli sa svim obližnjim uređajima", @@ -1019,19 +416,14 @@ "shared": "Podijeljeno", "line": "Linija", "rectangle": "Pravokutnik", - "updateAvailable": "Dostupno ažuriranje", "currentVersion": "Trenutna verzija", "latestVersion": "Najnovija verzija", "downloadUpdate": "Preuzmi ažuriranje", "updateLater": "Kasnije", - "cadastralParcels": "Katastarske čestice", "forestRoads": "Šumske ceste", - "showCadastralParcels": "Prikaži katastarske čestice", - "showForestRoads": "Prikaži šumske ceste", "wmsOverlays": "WMS prekrivanja", - "hikingTrails": "Planinske staze", "mainRoads": "Glavne ceste", "houseNumbers": "Kućni brojevi", @@ -1042,9 +434,7 @@ "placeNames": "Zemljopisna imena", "municipalityBorders": "Općinske granice", "topographicMap": "Topografska karta 1:25000", - "recentMessages": "Nedavne poruke", - "addChannel": "Dodaj kanal", "channelName": "Ime kanala", "channelNameHint": "npr. Spasilačka ekipa Alfa", @@ -1064,9 +454,7 @@ "deleteChannelConfirmation": "Jeste li sigurni da želite izbrisati kanal \"{channelName}\"? Ova radnja se ne može poništiti.", "channelDeletedSuccessfully": "Kanal uspješno izbrisan", "channelDeletionFailed": "Neuspješno brisanje kanala: {error}", - "allChannelSlotsInUse": "Svi slotovi kanala su zauzeti (maksimalno 39 prilagođenih kanala)", "createChannel": "Kreiraj kanal", - "wizardBack": "Natrag", "wizardSkip": "Preskoči", "wizardNext": "Dalje", @@ -1078,10 +466,6 @@ "wizardConnectingFeature1": "Skenira obližnje MeshCore uređaje", "wizardConnectingFeature2": "Uparivanje s radijem putem Bluetootha", "wizardConnectingFeature3": "Radi potpuno izvan mreže — internet nije potreban", - "wizardSimpleModeTitle": "Jednostavan način", - "wizardSimpleModeDescription": "Prvi put koristite mesh mrežu? Uključite jednostavan način za pojednostavljeno sučelje s osnovnim funkcijama.", - "wizardSimpleModeFeature1": "Sučelje prilagođeno početnicima s osnovnim funkcijama", - "wizardSimpleModeFeature2": "U svakom trenutku prebacite na napredni način u Postavkama", "wizardChannelTitle": "Kanali", "wizardChannelDescription": "Šaljite poruke svima na kanalu — idealno za obavijesti i koordinaciju tima.", "wizardChannelFeature1": "Javni kanal za opću komunikaciju ekipe", @@ -1102,56 +486,30 @@ "allTeamContacts": "Svi kontakti tima", "directMessagesInfo": "Izravne poruke s potvrdom. Poslano {count} članovima tima.", "sarMarkerSentToContacts": "SAR oznaka poslana {count} kontaktima", - "noContactsAvailable": "Nema dostupnih kontakata tima" -, - + "noContactsAvailable": "Nema dostupnih kontakata tima", "reply": "Odgovori", - "technicalDetails": "Tehnički detalji", - "messageTechnicalDetails": "Tehnički detalji poruke", - "linkQuality": "Kvaliteta veze", - "delivery": "Dostava", - "status": "Status", - "expectedAckTag": "Očekivana ACK oznaka", - "roundTrip": "Povratno putovanje", - "retryAttempt": "Pokušaj ponovnog slanja", - "floodFallback": "Flood rezerva", - "identity": "Identitet", - "messageId": "ID poruke", - "sender": "Pošiljatelj", - "senderKey": "Ključ pošiljatelja", - "recipient": "Primatelj", - "recipientKey": "Ključ primatelja", - "voice": "Glas", - "voiceId": "ID glasa", - "envelope": "Omotnica", - "sessionProgress": "Napredak sesije", - "complete": "Dovršeno", - "rawDump": "Sirovi ispis", - "cannotRetryMissingRecipient": "Nije moguće ponoviti: nedostaju informacije o primatelju", - "voiceUnavailable": "Glas trenutno nije dostupan", - "requestingVoice": "Zahtjev za glasom" -} \ No newline at end of file +} diff --git a/lib/l10n/app_it.arb b/lib/l10n/app_it.arb index 7e61c4d..ce5e167 100644 --- a/lib/l10n/app_it.arb +++ b/lib/l10n/app_it.arb @@ -1,104 +1,69 @@ { "@@locale": "it", - "appTitle": "MeshCore SAR", "@appTitle": { "description": "Il titolo dell'applicazione" }, - "messages": "Messaggi", "@messages": { "description": "Etichetta della scheda Messaggi" }, - "contacts": "Contatti", "@contacts": { "description": "Etichetta della scheda Contatti" }, - "map": "Mappa", "@map": { "description": "Etichetta della scheda Mappa" }, - "settings": "Impostazioni", "@settings": { "description": "Titolo della schermata Impostazioni" }, - "connect": "Connetti", "@connect": { "description": "Etichetta del pulsante Connetti" }, - "disconnect": "Disconnetti", "@disconnect": { "description": "Etichetta del pulsante Disconnetti" }, - - "scanningForDevices": "Ricerca dispositivi in corso...", - "@scanningForDevices": { - "description": "Testo mostrato durante la ricerca di dispositivi BLE" - }, - "noDevicesFound": "Nessun dispositivo trovato", "@noDevicesFound": { "description": "Testo mostrato quando non vengono trovati dispositivi BLE" }, - "scanAgain": "Cerca Nuovamente", "@scanAgain": { "description": "Pulsante per riavviare la ricerca BLE" }, - "tapToConnect": "Tocca per connettere", "@tapToConnect": { "description": "Testo sottotitolo per dispositivo nell'elenco di ricerca" }, - "deviceNotConnected": "Dispositivo non connesso", "@deviceNotConnected": { "description": "Messaggio di errore quando il dispositivo non è connesso" }, - "locationPermissionDenied": "Autorizzazione posizione negata", "@locationPermissionDenied": { "description": "Errore quando l'autorizzazione alla posizione viene negata" }, - "locationPermissionPermanentlyDenied": "Autorizzazione posizione negata permanentemente. Abilitarla nelle Impostazioni.", "@locationPermissionPermanentlyDenied": { "description": "Errore quando l'autorizzazione alla posizione è negata permanentemente" }, - "locationPermissionRequired": "L'autorizzazione alla posizione è necessaria per il tracciamento GPS e il coordinamento del team. Puoi abilitarla successivamente nelle Impostazioni.", "@locationPermissionRequired": { "description": "Messaggio quando è necessaria l'autorizzazione alla posizione" }, - "locationServicesDisabled": "I servizi di localizzazione sono disabilitati. Abilitarli nelle Impostazioni.", "@locationServicesDisabled": { "description": "Errore quando i servizi di localizzazione sono disabilitati" }, - "failedToGetGpsLocation": "Impossibile ottenere la posizione GPS", "@failedToGetGpsLocation": { "description": "Errore quando non è possibile ottenere la posizione GPS" }, - - "advertisedAtLocation": "Annunciato a {latitude}, {longitude}", - "@advertisedAtLocation": { - "description": "Messaggio di successo che mostra la posizione annunciata", - "placeholders": { - "latitude": { - "type": "String" - }, - "longitude": { - "type": "String" - } - } - }, - "failedToAdvertise": "Annuncio fallito: {error}", "@failedToAdvertise": { "description": "Messaggio di errore per annuncio fallito", @@ -108,355 +73,162 @@ } } }, - - "reconnecting": "Riconnessione in corso... ({attempt}/{max})", - "@reconnecting": { - "description": "Testo mostrato durante i tentativi di riconnessione", - "placeholders": { - "attempt": { - "type": "int" - }, - "max": { - "type": "int" - } - } - }, - "cancelReconnection": "Annulla riconnessione", "@cancelReconnection": { "description": "Tooltip per il pulsante annulla riconnessione" }, - - "mapManagement": "Gestione Mappa", - "@mapManagement": { - "description": "Voce di menu per la gestione della mappa" - }, - "general": "Generale", "@general": { "description": "Intestazione sezione impostazioni generali" }, - "theme": "Tema", "@theme": { "description": "Etichetta impostazione tema" }, - "chooseTheme": "Scegli Tema", "@chooseTheme": { "description": "Titolo della finestra di selezione tema" }, - "light": "Chiaro", "@light": { "description": "Opzione tema chiaro" }, - "dark": "Scuro", "@dark": { "description": "Opzione tema scuro" }, - "blueLightTheme": "Tema blu chiaro", "@blueLightTheme": { "description": "Descrizione per il tema blu chiaro" }, - "blueDarkTheme": "Tema blu scuro", "@blueDarkTheme": { "description": "Descrizione per il tema blu scuro" }, - "sarRed": "SAR Rosso", "@sarRed": { "description": "Opzione tema SAR Rosso" }, - "alertEmergencyMode": "Modalità Allerta/Emergenza", "@alertEmergencyMode": { "description": "Descrizione per il tema SAR Rosso" }, - "sarGreen": "SAR Verde", "@sarGreen": { "description": "Opzione tema SAR Verde" }, - "safeAllClearMode": "Modalità Sicuro/Tutto Libero", "@safeAllClearMode": { "description": "Descrizione per il tema SAR Verde" }, - "autoSystem": "Auto (Sistema)", "@autoSystem": { "description": "Opzione tema Auto/Sistema" }, - "followSystemTheme": "Segui tema di sistema", "@followSystemTheme": { "description": "Descrizione per il tema di sistema" }, - "showRxTxIndicators": "Mostra Indicatori RX/TX", "@showRxTxIndicators": { "description": "Impostazione per mostrare gli indicatori RX/TX" }, - "displayPacketActivity": "Mostra indicatori di attività pacchetti nella barra superiore", "@displayPacketActivity": { "description": "Descrizione per l'impostazione degli indicatori RX/TX" }, - - "simpleMode": "Modalità Semplice", - "@simpleMode": { - "description": "Impostazione per abilitare la modalità semplice" - }, - - "simpleModeDescription": "Nascondi informazioni non essenziali nei messaggi e contatti", - "@simpleModeDescription": { - "description": "Descrizione per l'impostazione della modalità semplice" - }, - "disableMap": "Disabilita mappa", "@disableMap": { "description": "Impostazione per disabilitare la scheda mappa" }, - "disableMapDescription": "Nascondi la scheda mappa per ridurre il consumo della batteria", "@disableMapDescription": { "description": "Descrizione per l'impostazione di disabilitazione mappa" }, - "language": "Lingua", "@language": { "description": "Etichetta impostazione lingua" }, - "chooseLanguage": "Scegli Lingua", "@chooseLanguage": { "description": "Titolo della finestra di selezione lingua" }, - - "english": "Inglese", - "@english": { - "description": "Opzione lingua inglese" - }, - - "slovenian": "Sloveno", - "@slovenian": { - "description": "Opzione lingua slovena" - }, - - "croatian": "Croato", - "@croatian": { - "description": "Opzione lingua croata" - }, - - "german": "Tedesco", - "@german": { - "description": "Opzione lingua tedesca" - }, - - "spanish": "Spagnolo", - "@spanish": { - "description": "Opzione lingua spagnola" - }, - - "french": "Francese", - "@french": { - "description": "Opzione lingua francese" - }, - - "italian": "Italiano", - "@italian": { - "description": "Opzione lingua italiana" - }, - - "locationBroadcasting": "Trasmissione Posizione", - "@locationBroadcasting": { - "description": "Intestazione sezione impostazioni posizione" - }, - - "autoLocationTracking": "Tracciamento Posizione Automatico", - "@autoLocationTracking": { - "description": "Impostazione tracciamento posizione automatico" - }, - - "automaticallyBroadcastPosition": "Trasmetti automaticamente aggiornamenti di posizione", - "@automaticallyBroadcastPosition": { - "description": "Descrizione per il tracciamento posizione automatico" - }, - - "configureTracking": "Configura Tracciamento", - "@configureTracking": { - "description": "Etichetta pulsante configura tracciamento" - }, - - "distanceAndTimeThresholds": "Soglie di distanza e tempo", - "@distanceAndTimeThresholds": { - "description": "Descrizione per la configurazione del tracciamento" - }, - - "locationTrackingConfiguration": "Configurazione Tracciamento Posizione", - "@locationTrackingConfiguration": { - "description": "Titolo della finestra di configurazione tracciamento" - }, - - "configureWhenLocationBroadcasts": "Configura quando le trasmissioni di posizione vengono inviate alla rete mesh", - "@configureWhenLocationBroadcasts": { - "description": "Descrizione per la finestra di configurazione tracciamento" - }, - - "minimumDistance": "Distanza Minima", - "@minimumDistance": { - "description": "Etichetta impostazione distanza minima" - }, - - "broadcastAfterMoving": "Trasmetti solo dopo essersi spostati di {distance} metri", - "@broadcastAfterMoving": { - "description": "Descrizione per la distanza minima", - "placeholders": { - "distance": { - "type": "String" - } - } - }, - - "maximumDistance": "Distanza Massima", - "@maximumDistance": { - "description": "Etichetta impostazione distanza massima" - }, - - "alwaysBroadcastAfterMoving": "Trasmetti sempre dopo essersi spostati di {distance} metri", - "@alwaysBroadcastAfterMoving": { - "description": "Descrizione per la distanza massima", - "placeholders": { - "distance": { - "type": "String" - } - } - }, - - "minimumTimeInterval": "Intervallo Minimo di Tempo", - "@minimumTimeInterval": { - "description": "Etichetta impostazione intervallo minimo di tempo" - }, - - "alwaysBroadcastEvery": "Trasmetti sempre ogni {duration}", - "@alwaysBroadcastEvery": { - "description": "Descrizione per l'intervallo di tempo", - "placeholders": { - "duration": { - "type": "String" - } - } - }, - "save": "Salva", "@save": { "description": "Etichetta pulsante Salva" }, - "cancel": "Annulla", "@cancel": { "description": "Etichetta pulsante Annulla" }, - "close": "Chiudi", "@close": { "description": "Etichetta pulsante Chiudi" }, - "about": "Informazioni", "@about": { "description": "Intestazione sezione Informazioni" }, - "appVersion": "Versione App", "@appVersion": { "description": "Etichetta versione app" }, - "appName": "Nome App", "@appName": { "description": "Etichetta nome app" }, - "aboutMeshCoreSar": "Informazioni su MeshCore SAR", "@aboutMeshCoreSar": { "description": "Titolo della finestra Informazioni" }, - "aboutDescription": "Un'applicazione di Ricerca e Soccorso progettata per i team di emergenza. Le caratteristiche includono:\n\n• Rete mesh BLE per comunicazione dispositivo-a-dispositivo\n• Mappe offline con opzioni di livelli multipli\n• Tracciamento in tempo reale dei membri del team\n• Marcatori tattici SAR (persona trovata, incendio, area di appoggio)\n• Gestione contatti e messaggistica\n• Tracciamento GPS con direzione bussola\n• Caching dei tile della mappa per uso offline", "@aboutDescription": { "description": "Descrizione nella finestra Informazioni" }, - "technologiesUsed": "Tecnologie Utilizzate:", "@technologiesUsed": { "description": "Titolo sezione tecnologie utilizzate" }, - "technologiesList": "• Flutter per lo sviluppo multipiattaforma\n• BLE (Bluetooth Low Energy) per la rete mesh\n• OpenStreetMap per la mappatura\n• Provider per la gestione dello stato\n• SharedPreferences per l'archiviazione locale", "@technologiesList": { "description": "Elenco delle tecnologie utilizzate" }, - "moreInfo": "Maggiori informazioni", "@moreInfo": { "description": "Etichetta del pulsante Maggiori informazioni" }, - - "learnMoreAbout": "Ulteriori informazioni su MeshCore SAR", - "@learnMoreAbout": { - "description": "Descrizione del link Ulteriori informazioni" - }, - - "developer": "Sviluppatore", - "@developer": { - "description": "Intestazione sezione sviluppatore" - }, - "packageName": "Nome Pacchetto", "@packageName": { "description": "Etichetta nome pacchetto" }, - "sampleData": "Dati di Esempio", "@sampleData": { "description": "Intestazione sezione dati di esempio" }, - "sampleDataDescription": "Carica o cancella contatti di esempio, messaggi di canale e marcatori SAR per test", "@sampleDataDescription": { "description": "Descrizione sezione dati di esempio" }, - "loadSampleData": "Carica Dati di Esempio", "@loadSampleData": { "description": "Pulsante carica dati di esempio" }, - "clearAllData": "Cancella Tutti i Dati", "@clearAllData": { "description": "Pulsante cancella tutti i dati" }, - "clearAllDataConfirmTitle": "Cancella Tutti i Dati", "@clearAllDataConfirmTitle": { "description": "Titolo della finestra di conferma cancellazione dati" }, - "clearAllDataConfirmMessage": "Questo cancellerà tutti i contatti e i marcatori SAR. Sei sicuro?", "@clearAllDataConfirmMessage": { "description": "Messaggio di conferma cancellazione dati" }, - "clear": "Cancella", "@clear": { "description": "Etichetta pulsante Cancella" }, - "loadedSampleData": "Caricati {teamCount} membri del team, {channelCount} canali, {sarCount} marcatori SAR, {messageCount} messaggi", "@loadedSampleData": { "description": "Messaggio di successo dopo il caricamento dei dati di esempio", @@ -475,7 +247,6 @@ } } }, - "failedToLoadSampleData": "Impossibile caricare dati di esempio: {error}", "@failedToLoadSampleData": { "description": "Messaggio di errore quando il caricamento dei dati di esempio fallisce", @@ -485,17 +256,14 @@ } } }, - "allDataCleared": "Tutti i dati cancellati", "@allDataCleared": { "description": "Messaggio di successo dopo la cancellazione di tutti i dati" }, - "failedToStartBackgroundTracking": "Impossibile avviare il tracciamento in background. Verifica le autorizzazioni e la connessione BLE.", "@failedToStartBackgroundTracking": { "description": "Messaggio di errore quando il tracciamento in background fallisce" }, - "locationBroadcast": "Trasmissione posizione: {latitude}, {longitude}", "@locationBroadcast": { "description": "Messaggio di successo per la trasmissione della posizione", @@ -508,57 +276,42 @@ } } }, - "defaultPinInfo": "Il PIN predefinito per i dispositivi senza schermo è 123456. Problemi di accoppiamento? Dimentica il dispositivo bluetooth nelle impostazioni di sistema.", "@defaultPinInfo": { "description": "Informazioni sul PIN predefinito per l'accoppiamento" }, - "noMessagesYet": "Nessun messaggio ancora", "@noMessagesYet": { "description": "Messaggio di stato vuoto quando non ci sono messaggi" }, - "pullDownToSync": "Trascina verso il basso per sincronizzare i messaggi", "@pullDownToSync": { "description": "Istruzione per trascinare verso il basso per aggiornare i messaggi" }, - "deleteContact": "Elimina Contatto", "@deleteContact": { "description": "Etichetta azione elimina contatto" }, - "delete": "Elimina", "@delete": { "description": "Etichetta pulsante Elimina" }, - "viewOnMap": "Visualizza su Mappa", "@viewOnMap": { "description": "Azione per visualizzare la posizione del contatto sulla mappa" }, - "refresh": "Aggiorna", "@refresh": { "description": "Etichetta pulsante Aggiorna" }, - - "sendDirectMessage": "Invia", - "@sendDirectMessage": { - "description": "Azione per inviare messaggio diretto al contatto" - }, - "resetPath": "Resetta Percorso (Ri-instrada)", "@resetPath": { "description": "Azione per resettare il percorso del contatto per il re-instradamento" }, - "publicKeyCopied": "Chiave pubblica copiata negli appunti", "@publicKeyCopied": { "description": "Messaggio di successo quando la chiave pubblica viene copiata" }, - "copiedToClipboard": "{label} copiato negli appunti", "@copiedToClipboard": { "description": "Messaggio di successo quando un valore viene copiato negli appunti", @@ -568,12 +321,10 @@ } } }, - "pleaseEnterPassword": "Inserisci una password", "@pleaseEnterPassword": { "description": "Messaggio di validazione per campo password vuoto" }, - "failedToSyncContacts": "Impossibile sincronizzare i contatti: {error}", "@failedToSyncContacts": { "description": "Messaggio di errore quando la sincronizzazione dei contatti fallisce", @@ -583,17 +334,14 @@ } } }, - "loggedInSuccessfully": "Accesso effettuato con successo! In attesa dei messaggi della stanza...", "@loggedInSuccessfully": { "description": "Messaggio di successo dopo l'accesso alla stanza" }, - "loginFailed": "Accesso fallito - password errata", "@loginFailed": { "description": "Messaggio di errore quando l'accesso alla stanza fallisce" }, - "loggingIn": "Accesso a {roomName} in corso...", "@loggingIn": { "description": "Messaggio di stato durante il processo di accesso alla stanza", @@ -603,7 +351,6 @@ } } }, - "failedToSendLogin": "Impossibile inviare l'accesso: {error}", "@failedToSendLogin": { "description": "Messaggio di errore quando il comando di accesso fallisce", @@ -613,355 +360,239 @@ } } }, - "lowLocationAccuracy": "Precisione Posizione Bassa", "@lowLocationAccuracy": { "description": "Titolo avviso per precisione GPS bassa" }, - "continue_": "Continua", "@continue_": { "description": "Etichetta pulsante Continua" }, - "sendSarMarker": "Invia marcatore SAR", "@sendSarMarker": { "description": "Azione per inviare marcatore SAR" }, - "deleteDrawing": "Elimina Disegno", "@deleteDrawing": { "description": "Azione per eliminare un disegno sulla mappa" }, - - "drawingTools": "Strumenti di disegno", + "drawingTools": "Strumenti di Disegno", "@drawingTools": { "description": "Sezione strumenti di disegno o titolo del menu" }, - "drawLine": "Disegna Linea", "@drawLine": { "description": "Modalità disegno mappa: linea" }, - "drawLineDesc": "Disegna una linea a mano libera sulla mappa", "@drawLineDesc": { "description": "Descrizione per la modalità disegno linea" }, - "drawRectangle": "Disegna Rettangolo", "@drawRectangle": { "description": "Modalità disegno mappa: rettangolo" }, - "drawRectangleDesc": "Disegna un'area rettangolare sulla mappa", "@drawRectangleDesc": { "description": "Descrizione per la modalità disegno rettangolo" }, - "measureDistance": "Misura Distanza", "@measureDistance": { "description": "Modalità disegno mappa: misura distanza" }, - "measureDistanceDesc": "Premi a lungo su due punti per misurare", "@measureDistanceDesc": { "description": "Descrizione per la modalità misurazione distanza" }, - "clearMeasurement": "Cancella Misurazione", "@clearMeasurement": { "description": "Tooltip per cancellare la misurazione" }, - "distanceLabel": "Distanza: {distance}", "@distanceLabel": { "description": "Etichetta che mostra la distanza misurata", "placeholders": { - "distance": {"type": "String"} + "distance": { + "type": "String" + } } }, - "longPressForSecondPoint": "Premi a lungo per il secondo punto", "@longPressForSecondPoint": { "description": "Istruzione quando è impostato il primo punto di misurazione" }, - "longPressToStartMeasurement": "Premi a lungo per impostare il primo punto", "@longPressToStartMeasurement": { "description": "Istruzione per avviare la misurazione" }, - "longPressToStartNewMeasurement": "Premi a lungo per nuova misurazione", "@longPressToStartNewMeasurement": { "description": "Istruzione per riavviare la misurazione dopo il completamento" }, - "shareDrawings": "Condividi Disegni", "@shareDrawings": { "description": "Azione per condividere disegni sulla rete" }, - "clearAllDrawings": "Cancella Tutti i Disegni", "@clearAllDrawings": { "description": "Azione per cancellare tutti i disegni locali" }, - "completeLine": "Completa Linea", "@completeLine": { "description": "Tooltip per completare il disegno di una linea" }, - "broadcastDrawingsToTeam": "Trasmetti {count} disegno{plural} alla squadra", "@broadcastDrawingsToTeam": { "description": "Sottotitolo che mostra quanti disegni verranno trasmessi", "placeholders": { - "count": {"type": "int"}, - "plural": {"type": "String"} + "count": { + "type": "int" + }, + "plural": { + "type": "String" + } } }, - "removeAllDrawings": "Rimuovi tutti i {count} disegno{plural}", "@removeAllDrawings": { "description": "Sottotitolo per l'azione di rimozione di tutti i disegni", "placeholders": { - "count": {"type": "int"}, - "plural": {"type": "String"} + "count": { + "type": "int" + }, + "plural": { + "type": "String" + } } }, - "deleteAllDrawingsConfirm": "Eliminare tutti i {count} disegno{plural} dalla mappa?", "@deleteAllDrawingsConfirm": { "description": "Messaggio di conferma per eliminare tutti i disegni", "placeholders": { - "count": {"type": "int"}, - "plural": {"type": "String"} + "count": { + "type": "int" + }, + "plural": { + "type": "String" + } } }, - "drawing": "Disegno", "@drawing": { "description": "Etichetta generica per disegno" }, - "shareDrawingsCount": "Condividi {count} disegno{plural}", "@shareDrawingsCount": { "description": "Titolo per il dialogo di condivisione disegni", "placeholders": { - "count": {"type": "int"}, - "plural": {"type": "String"} + "count": { + "type": "int" + }, + "plural": { + "type": "String" + } } }, - - "sentDrawingsToRoom": "Inviati {count} disegno{plural} mappa a {roomName}", - "@sentDrawingsToRoom": { - "description": "Messaggio di sistema quando i disegni vengono inviati a una stanza", - "placeholders": { - "count": {"type": "int"}, - "plural": {"type": "String"}, - "roomName": {"type": "String"} - } - }, - - "sharedDrawingsToRoom": "Condivisi {success}/{total} disegno{plural} con {roomName}", - "@sharedDrawingsToRoom": { - "description": "Messaggio snackbar che mostra i disegni condivisi con la stanza", - "placeholders": { - "success": {"type": "int"}, - "total": {"type": "int"}, - "plural": {"type": "String"}, - "roomName": {"type": "String"} - } - }, - "showReceivedDrawings": "Mostra Disegni Ricevuti", "@showReceivedDrawings": { "description": "Interruttore per mostrare/nascondere i disegni ricevuti da altri membri del team" }, - "showingAllDrawings": "Visualizzazione di tutti i disegni", "@showingAllDrawings": { "description": "Sottotitolo quando i disegni ricevuti sono visibili" }, - "showingOnlyYourDrawings": "Visualizzazione solo dei tuoi disegni", "@showingOnlyYourDrawings": { "description": "Sottotitolo quando i disegni ricevuti sono nascosti" }, - "showSarMarkers": "Mostra marcatori SAR", "@showSarMarkers": { "description": "Interruttore per mostrare/nascondere i marcatori SAR sulla mappa" }, - "showingSarMarkers": "Visualizzazione marcatori SAR", "@showingSarMarkers": { "description": "Sottotitolo quando i marcatori SAR sono visibili" }, - "hidingSarMarkers": "Nascondere marcatori SAR", "@hidingSarMarkers": { "description": "Sottotitolo quando i marcatori SAR sono nascosti" }, - "clearAll": "Cancella Tutto", "@clearAll": { "description": "Etichetta pulsante Cancella Tutto" }, - - "noLocalDrawings": "Nessun disegno locale da condividere", - "@noLocalDrawings": { - "description": "Messaggio quando non ci sono disegni da condividere" - }, - "publicChannel": "Canale Pubblico", "@publicChannel": { "description": "Opzione canale pubblico per la condivisione" }, - "broadcastToAll": "Trasmetti a tutti i nodi vicini (effimero)", "@broadcastToAll": { "description": "Descrizione per la trasmissione sul canale pubblico" }, - "storedPermanently": "Archiviato permanentemente nella stanza", "@storedPermanently": { "description": "Descrizione per la permanenza dell'archiviazione nella stanza" }, - - "drawingsSentToPublicChannel": "{count} disegno{plural} mappa inviato al Canale Pubblico", - "@drawingsSentToPublicChannel": { - "description": "Messaggio di sistema quando i disegni vengono inviati al canale pubblico", - "placeholders": { - "count": {"type": "int"}, - "plural": {"type": "String"} - } - }, - - "drawingsSharedToPublicChannel": "{success}/{total} disegni condivisi sul Canale Pubblico", - "@drawingsSharedToPublicChannel": { - "description": "Messaggio snackbar che mostra il conteggio dei successi per i disegni condivisi sul canale pubblico", - "placeholders": { - "success": {"type": "int"}, - "total": {"type": "int"} - } - }, - "notConnectedToDevice": "Non connesso al dispositivo", "@notConnectedToDevice": { "description": "Messaggio di errore quando il dispositivo non è connesso per la messaggistica diretta" }, - - "directMessage": "Messaggio Diretto", - "@directMessage": { - "description": "Titolo per il pannello messaggio diretto" - }, - - "directMessageSentTo": "Messaggio diretto inviato a {contactName}", - "@directMessageSentTo": { - "description": "Messaggio di successo dopo l'invio del messaggio diretto", - "placeholders": { - "contactName": { - "type": "String" - } - } - }, - - "failedToSend": "Invio fallito: {error}", - "@failedToSend": { - "description": "Messaggio di errore quando l'invio del messaggio diretto fallisce", - "placeholders": { - "error": { - "type": "String" - } - } - }, - - "directMessageInfo": "Questo messaggio verrà inviato direttamente a {contactName}. Apparirà anche nel feed dei messaggi principali.", - "@directMessageInfo": { - "description": "Informazioni sul comportamento della messaggistica diretta", - "placeholders": { - "contactName": { - "type": "String" - } - } - }, - "typeYourMessage": "Scrivi il tuo messaggio...", "@typeYourMessage": { "description": "Testo segnaposto per il campo di input del messaggio" }, - "quickLocationMarker": "Marcatore posizione rapido", "@quickLocationMarker": { "description": "Sottotitolo per l'intestazione del pannello marcatore SAR" }, - "markerType": "Tipo Marcatore", "@markerType": { "description": "Etichetta per la sezione di selezione tipo marcatore" }, - "sendTo": "Invia A", "@sendTo": { "description": "Etichetta per la sezione di selezione destinazione" }, - "noDestinationsAvailable": "Nessuna destinazione disponibile.", "@noDestinationsAvailable": { "description": "Avviso quando non esistono stanze o canali" }, - "selectDestination": "Seleziona destinazione...", "@selectDestination": { "description": "Segnaposto per il menu a discesa della destinazione" }, - "ephemeralBroadcastInfo": "Effimero: Trasmissione via etere solamente. Non archiviato - i nodi devono essere online.", "@ephemeralBroadcastInfo": { "description": "Informazioni sulle trasmissioni di canale effimere" }, - "persistentRoomInfo": "Persistente: Archiviato in modo immutabile nella stanza. Sincronizzato automaticamente e conservato offline.", "@persistentRoomInfo": { "description": "Informazioni sull'archiviazione persistente della stanza" }, - "location": "Posizione", "@location": { "description": "Etichetta per la sezione posizione" }, - - "myLocation": "La mia posizione", - "@myLocation": { - "description": "Etichetta del pulsante per inserire la posizione GPS attuale" - }, - "fromMap": "Dalla Mappa", "@fromMap": { "description": "Badge che mostra che la posizione proviene dal tocco sulla mappa" }, - "gettingLocation": "Ottenimento posizione...", "@gettingLocation": { "description": "Messaggio di caricamento durante il recupero della posizione GPS" }, - "locationError": "Errore Posizione", "@locationError": { "description": "Titolo per i messaggi di errore della posizione" }, - "retry": "Riprova", "@retry": { "description": "Etichetta pulsante Riprova" }, - "refreshLocation": "Aggiorna posizione", "@refreshLocation": { "description": "Tooltip per il pulsante aggiorna posizione" }, - "accuracyMeters": "Precisione: ±{accuracy}m", "@accuracyMeters": { "description": "Visualizzazione della precisione GPS in metri", @@ -971,17 +602,14 @@ } } }, - "notesOptional": "Note (facoltativo)", "@notesOptional": { "description": "Etichetta per il campo note facoltativo" }, - "addAdditionalInformation": "Aggiungi informazioni aggiuntive...", "@addAdditionalInformation": { "description": "Segnaposto per il campo note" }, - "lowAccuracyWarning": "La precisione della posizione è ±{accuracy}m. Potrebbe non essere abbastanza accurata per le operazioni SAR.\n\nContinuare comunque?", "@lowAccuracyWarning": { "description": "Contenuto della finestra di avviso per precisione GPS bassa", @@ -991,37 +619,30 @@ } } }, - "loginToRoom": "Accedi alla Stanza", "@loginToRoom": { "description": "Titolo per la finestra di accesso alla stanza" }, - "enterPasswordInfo": "Inserisci la password per accedere a questa stanza. La password verrà salvata per usi futuri.", "@enterPasswordInfo": { "description": "Informazioni sulla password della stanza" }, - "password": "Password", "@password": { "description": "Etichetta campo password" }, - "enterRoomPassword": "Inserisci password stanza", "@enterRoomPassword": { "description": "Suggerimento campo password" }, - "loggingInDots": "Accesso in corso...", "@loggingInDots": { "description": "Testo pulsante durante l'accesso" }, - "login": "Accedi", "@login": { "description": "Etichetta pulsante Accedi" }, - "failedToAddRoom": "Impossibile aggiungere la stanza al dispositivo: {error}\n\nLa stanza potrebbe non aver ancora trasmesso.\nProva ad attendere che la stanza trasmetta.", "@failedToAddRoom": { "description": "Messaggio di errore quando l'aggiunta della stanza fallisce", @@ -1031,57 +652,26 @@ } } }, - "direct": "Diretto", "@direct": { "description": "Indicatore instradamento diretto" }, - "flood": "Flood", "@flood": { "description": "Indicatore instradamento flood" }, - - "admin": "Admin", - "@admin": { - "description": "Etichetta badge amministratore" - }, - "loggedIn": "Connesso", "@loggedIn": { "description": "Badge stato connesso" }, - "noGpsData": "Nessun dato GPS", "@noGpsData": { "description": "Messaggio quando i dati GPS non sono disponibili" }, - "distance": "Distanza", "@distance": { "description": "Etichetta distanza" }, - - "pingingDirect": "Ping {name} (diretto via percorso)...", - "@pingingDirect": { - "description": "Messaggio di stato per ping diretto", - "placeholders": { - "name": { - "type": "String" - } - } - }, - - "pingingFlood": "Ping {name} (flooding - nessun percorso)...", - "@pingingFlood": { - "description": "Messaggio di stato per ping flood", - "placeholders": { - "name": { - "type": "String" - } - } - }, - "directPingTimeout": "Timeout ping diretto - nuovo tentativo {name} con flooding...", "@directPingTimeout": { "description": "Avviso quando il ping diretto va in timeout", @@ -1091,25 +681,6 @@ } } }, - - "pingSuccessful": "Ping riuscito a {name}{fallback}", - "@pingSuccessful": { - "description": "Messaggio di successo per ping", - "placeholders": { - "name": { - "type": "String" - }, - "fallback": { - "type": "String" - } - } - }, - - "viaFloodingFallback": " (via fallback flooding)", - "@viaFloodingFallback": { - "description": "Suffisso per successo ping con fallback" - }, - "pingFailed": "Ping fallito a {name} - nessuna risposta ricevuta", "@pingFailed": { "description": "Messaggio di errore quando il ping fallisce", @@ -1119,7 +690,6 @@ } } }, - "deleteContactConfirmation": "Sei sicuro di voler eliminare \"{name}\"?\n\nQuesto rimuoverà il contatto sia dall'app che dal dispositivo radio companion.", "@deleteContactConfirmation": { "description": "Messaggio di conferma per l'eliminazione del contatto", @@ -1129,27 +699,6 @@ } } }, - - "removingContact": "Rimozione di {name}...", - "@removingContact": { - "description": "Messaggio di stato durante la rimozione del contatto", - "placeholders": { - "name": { - "type": "String" - } - } - }, - - "contactRemoved": "Contatto \"{name}\" rimosso", - "@contactRemoved": { - "description": "Messaggio di successo dopo la rimozione del contatto", - "placeholders": { - "name": { - "type": "String" - } - } - }, - "failedToRemoveContact": "Impossibile rimuovere il contatto: {error}", "@failedToRemoveContact": { "description": "Messaggio di errore quando la rimozione del contatto fallisce", @@ -1159,117 +708,86 @@ } } }, - "type": "Tipo", "@type": { "description": "Etichetta tipo contatto" }, - "publicKey": "Chiave Pubblica", "@publicKey": { "description": "Etichetta chiave pubblica" }, - "lastSeen": "Ultima Visita", "@lastSeen": { "description": "Etichetta ultima visita" }, - "roomStatus": "Stato Stanza", "@roomStatus": { "description": "Intestazione sezione stato stanza" }, - "loginStatus": "Stato Accesso", "@loginStatus": { "description": "Etichetta stato accesso" }, - "notLoggedIn": "Non Connesso", "@notLoggedIn": { "description": "Stato non connesso" }, - "adminAccess": "Accesso Admin", "@adminAccess": { "description": "Etichetta accesso amministratore" }, - "yes": "Sì", "@yes": { "description": "Risposta Sì" }, - "no": "No", "@no": { "description": "Risposta No" }, - "permissions": "Permessi", "@permissions": { "description": "Etichetta permessi" }, - "passwordSaved": "Password Salvata", "@passwordSaved": { "description": "Etichetta password salvata" }, - "locationColon": "Posizione:", "@locationColon": { "description": "Intestazione sezione posizione" }, - "telemetry": "Telemetria", "@telemetry": { "description": "Intestazione sezione telemetria" }, - - "requestingTelemetry": "Richiesta telemetria da {name}...", - "@requestingTelemetry": { - "description": "Messaggio di stato durante la richiesta telemetria", - "placeholders": { - "name": { - "type": "String" - } - } - }, - "voltage": "Tensione", "@voltage": { "description": "Etichetta tensione" }, - "battery": "Batteria", "@battery": { "description": "Etichetta batteria" }, - "temperature": "Temperatura", "@temperature": { "description": "Etichetta temperatura" }, - "humidity": "Umidità", "@humidity": { "description": "Etichetta umidità" }, - "pressure": "Pressione", "@pressure": { "description": "Etichetta pressione" }, - "gpsTelemetry": "GPS (Telemetria)", "@gpsTelemetry": { "description": "Etichetta GPS da telemetria" }, - "updated": "Aggiornato", "@updated": { "description": "Etichetta timestamp aggiornato" }, - "pathResetInfo": "Percorso resettato per {name}. Il prossimo messaggio troverà un nuovo instradamento.", "@pathResetInfo": { "description": "Messaggio informativo dopo il reset del percorso", @@ -1279,102 +797,74 @@ } } }, - "reLoginToRoom": "Riaccedi alla Stanza", "@reLoginToRoom": { "description": "Pulsante per riaccedere alla stanza" }, - "heading": "Direzione", "@heading": { "description": "Etichetta direzione bussola" }, - "elevation": "Elevazione", "@elevation": { "description": "Etichetta elevazione/altitudine" }, - "accuracy": "Precisione", "@accuracy": { "description": "Etichetta precisione GPS" }, - - "distance": "Distanza", - "@distance": { - "description": "Etichetta distanza nella bussola" - }, - "bearing": "Rilevamento", "@bearing": { "description": "Etichetta rilevamento nella bussola" }, - "direction": "Direzione", "@direction": { "description": "Etichetta direzione nella bussola" }, - "filterMarkers": "Filtra Marcatori", "@filterMarkers": { "description": "Titolo per la finestra filtra marcatori" }, - "filterMarkersTooltip": "Filtra marcatori", "@filterMarkersTooltip": { "description": "Tooltip per il pulsante filtro" }, - "contactsFilter": "Contatti", "@contactsFilter": { "description": "Opzione filtro per contatti" }, - "repeatersFilter": "Ripetitori", "@repeatersFilter": { "description": "Opzione filtro per ripetitori" }, - "sarMarkers": "Marcatori SAR", "@sarMarkers": { "description": "Intestazione sezione marcatori SAR" }, - "foundPerson": "Persona Trovata", "@foundPerson": { "description": "Tipo marcatore SAR persona trovata" }, - "fire": "Incendio", "@fire": { "description": "Tipo marcatore SAR incendio" }, - "stagingArea": "Area di Appoggio", "@stagingArea": { "description": "Tipo marcatore SAR area di appoggio" }, - "showAll": "Mostra Tutto", "@showAll": { "description": "Pulsante per mostrare tutti i filtri" }, - - "nearbyContacts": "Contatti Vicini", - "@nearbyContacts": { - "description": "Titolo per l'elenco contatti vicini nella bussola" - }, - "locationUnavailable": "Posizione non disponibile", "@locationUnavailable": { "description": "Messaggio quando la posizione GPS non è disponibile" }, - "ahead": "avanti", "@ahead": { "description": "Direzione rilevamento relativo - avanti" }, - "degreesRight": "{degrees}° destra", "@degreesRight": { "description": "Direzione rilevamento relativo - destra", @@ -1384,7 +874,6 @@ } } }, - "degreesLeft": "{degrees}° sinistra", "@degreesLeft": { "description": "Direzione rilevamento relativo - sinistra", @@ -1394,7 +883,6 @@ } } }, - "latLonFormat": "Lat: {latitude} Lon: {longitude}", "@latLonFormat": { "description": "Formato visualizzazione latitudine e longitudine", @@ -1407,506 +895,100 @@ } } }, - "noContactsYet": "Nessun contatto ancora", "@noContactsYet": { "description": "Messaggio di stato vuoto quando non ci sono contatti" }, - "connectToDeviceToLoadContacts": "Connetti a un dispositivo per caricare i contatti", "@connectToDeviceToLoadContacts": { "description": "Istruzione per connettere dispositivo per caricare contatti" }, - "teamMembers": "Membri del Team", "@teamMembers": { "description": "Intestazione sezione per i membri del team (contatti chat)" }, - "repeaters": "Ripetitori", "@repeaters": { "description": "Intestazione sezione per i nodi ripetitori" }, - "rooms": "Stanze", "@rooms": { "description": "Intestazione sezione per le stanze" }, - "channels": "Canali", "@channels": { "description": "Intestazione sezione per i canali di trasmissione" }, - - "cacheStatistics": "Statistiche Cache", - "@cacheStatistics": { - "description": "Titolo per la sezione statistiche cache" - }, - - "totalTiles": "Tile Totali", - "@totalTiles": { - "description": "Etichetta per il numero totale di tile in cache" - }, - - "cacheSize": "Dimensione Cache", - "@cacheSize": { - "description": "Etichetta per la dimensione della cache in MB" - }, - - "storeName": "Nome Archivio", - "@storeName": { - "description": "Etichetta per il nome dell'archivio cache" - }, - - "noCacheStatistics": "Nessuna statistica cache disponibile", - "@noCacheStatistics": { - "description": "Messaggio quando le statistiche cache non sono disponibili" - }, - - "downloadRegion": "Scarica Regione", - "@downloadRegion": { - "description": "Titolo per la sezione scarica regione" - }, - - "mapLayer": "Livello Mappa", - "@mapLayer": { - "description": "Etichetta per la selezione del livello mappa" - }, - - "regionBounds": "Limiti Regione", - "@regionBounds": { - "description": "Titolo per la sezione input limiti regione" - }, - - "north": "Nord", - "@north": { - "description": "Etichetta per coordinata nord" - }, - - "south": "Sud", - "@south": { - "description": "Etichetta per coordinata sud" - }, - - "east": "Est", - "@east": { - "description": "Etichetta per coordinata est" - }, - - "west": "Ovest", - "@west": { - "description": "Etichetta per coordinata ovest" - }, - - "zoomLevels": "Livelli di Zoom", - "@zoomLevels": { - "description": "Titolo per la sezione livelli di zoom" - }, - - "minZoom": "Min: {zoom}", - "@minZoom": { - "description": "Etichetta per il livello di zoom minimo", - "placeholders": { - "zoom": { - "type": "int" - } - } - }, - - "maxZoom": "Max: {zoom}", - "@maxZoom": { - "description": "Etichetta per il livello di zoom massimo", - "placeholders": { - "zoom": { - "type": "int" - } - } - }, - - "downloadingDots": "Scaricamento in corso...", - "@downloadingDots": { - "description": "Messaggio di stato durante il download" - }, - - "cancelDownload": "Annulla Download", - "@cancelDownload": { - "description": "Pulsante per annullare il download" - }, - - "downloadRegionButton": "Scarica Regione", - "@downloadRegionButton": { - "description": "Pulsante per avviare il download della regione" - }, - - "downloadNote": "Nota: Regioni grandi o livelli di zoom elevati possono richiedere tempo e spazio di archiviazione significativi.", - "@downloadNote": { - "description": "Avviso sulla dimensione e durata del download" - }, - - "cacheManagement": "Gestione Cache", - "@cacheManagement": { - "description": "Titolo per la sezione gestione cache" - }, - - "clearAllMaps": "Cancella Tutte le Mappe", - "@clearAllMaps": { - "description": "Pulsante per cancellare tutte le mappe in cache" - }, - - "clearMapsConfirmTitle": "Cancella Tutte le Mappe", - "@clearMapsConfirmTitle": { - "description": "Titolo per la finestra di conferma cancellazione mappe" - }, - - "clearMapsConfirmMessage": "Sei sicuro di voler eliminare tutte le mappe scaricate? Questa azione non può essere annullata.", - "@clearMapsConfirmMessage": { - "description": "Messaggio di conferma per la cancellazione delle mappe" - }, - - "mapDownloadCompleted": "Download mappa completato!", - "@mapDownloadCompleted": { - "description": "Messaggio di successo dopo il download della mappa" - }, - - "cacheClearedSuccessfully": "Cache cancellata con successo!", - "@cacheClearedSuccessfully": { - "description": "Messaggio di successo dopo la cancellazione della cache" - }, - - "downloadCancelled": "Download annullato", - "@downloadCancelled": { - "description": "Messaggio quando il download viene annullato" - }, - - "startingDownload": "Avvio download...", - "@startingDownload": { - "description": "Stato iniziale quando inizia il download" - }, - - "downloadingMapTiles": "Scaricamento tile mappa...", - "@downloadingMapTiles": { - "description": "Stato durante il download dei tile" - }, - - "downloadCompletedSuccessfully": "Download completato con successo!", - "@downloadCompletedSuccessfully": { - "description": "Stato dopo il download riuscito" - }, - - "cancellingDownload": "Annullamento download...", - "@cancellingDownload": { - "description": "Stato durante l'annullamento del download" - }, - - "errorLoadingStats": "Errore nel caricamento delle statistiche: {error}", - "@errorLoadingStats": { - "description": "Messaggio di errore quando il caricamento delle statistiche cache fallisce", - "placeholders": { - "error": { - "type": "String" - } - } - }, - - "downloadFailed": "Download fallito: {error}", - "@downloadFailed": { - "description": "Messaggio di errore quando il download fallisce", - "placeholders": { - "error": { - "type": "String" - } - } - }, - - "cancelFailed": "Annullamento fallito: {error}", - "@cancelFailed": { - "description": "Messaggio di errore quando l'annullamento fallisce", - "placeholders": { - "error": { - "type": "String" - } - } - }, - - "clearCacheFailed": "Cancellazione cache fallita: {error}", - "@clearCacheFailed": { - "description": "Messaggio di errore quando la cancellazione della cache fallisce", - "placeholders": { - "error": { - "type": "String" - } - } - }, - - "minZoomError": "Zoom minimo: {error}", - "@minZoomError": { - "description": "Errore di validazione per lo zoom minimo", - "placeholders": { - "error": { - "type": "String" - } - } - }, - - "maxZoomError": "Zoom massimo: {error}", - "@maxZoomError": { - "description": "Errore di validazione per lo zoom massimo", - "placeholders": { - "error": { - "type": "String" - } - } - }, - - "minZoomGreaterThanMax": "Lo zoom minimo deve essere minore o uguale allo zoom massimo", - "@minZoomGreaterThanMax": { - "description": "Errore di validazione quando zoom minimo > zoom massimo" - }, - "selectMapLayer": "Seleziona Livello Mappa", "@selectMapLayer": { "description": "Titolo per la finestra di selezione livello mappa" }, - - "mapOptions": "Opzioni Mappa", - "@mapOptions": { - "description": "Titolo per la finestra opzioni mappa" - }, - - "showLegend": "Mostra Legenda", - "@showLegend": { - "description": "Interruttore per mostrare la legenda della mappa" - }, - - "displayMarkerTypeCounts": "Visualizza conteggio tipi di marcatori", - "@displayMarkerTypeCounts": { - "description": "Descrizione per l'interruttore mostra legenda" - }, - - "rotateMapWithHeading": "Ruota Mappa con Direzione", - "@rotateMapWithHeading": { - "description": "Interruttore per ruotare la mappa con la direzione della bussola" - }, - - "mapFollowsDirection": "La mappa segue la tua direzione quando ti muovi", - "@mapFollowsDirection": { - "description": "Descrizione per l'interruttore ruota mappa" - }, - - "resetMapRotation": "Ripristina Rotazione", - "@resetMapRotation": { - "description": "Pulsante per ripristinare la rotazione della mappa verso nord" - }, - - "resetMapRotationTooltip": "Ripristina mappa verso nord", - "@resetMapRotationTooltip": { - "description": "Tooltip per il pulsante di ripristino rotazione" - }, - - "showMapDebugInfo": "Mostra Info Debug Mappa", - "@showMapDebugInfo": { - "description": "Interruttore per mostrare informazioni di debug della mappa" - }, - - "displayZoomLevelBounds": "Visualizza livello di zoom e limiti", - "@displayZoomLevelBounds": { - "description": "Descrizione per l'interruttore info debug" - }, - - "fullscreenMode": "Modalità Schermo Intero", - "@fullscreenMode": { - "description": "Interruttore per la modalità mappa a schermo intero" - }, - - "hideUiFullMapView": "Nascondi tutti i controlli UI per la visualizzazione completa della mappa", - "@hideUiFullMapView": { - "description": "Descrizione per l'interruttore modalità schermo intero" - }, - "openStreetMap": "OpenStreetMap", "@openStreetMap": { "description": "Nome livello OpenStreetMap" }, - "openTopoMap": "OpenTopoMap", "@openTopoMap": { "description": "Nome livello OpenTopoMap" }, - "esriSatellite": "ESRI Satellite", "@esriSatellite": { "description": "Nome livello immagini satellitari ESRI" }, - "googleHybrid": "Google Ibrido", "@googleHybrid": { "description": "Nome livello Google Ibrido (satellite + etichette)" }, - "googleRoadmap": "Google Mappa Stradale", "@googleRoadmap": { "description": "Nome livello Google Mappa Stradale" }, - "googleTerrain": "Google Terreno", "@googleTerrain": { "description": "Nome livello Google Terreno (topografico)" }, - - "downloadVisibleArea": "Scarica area visibile", - "@downloadVisibleArea": { - "description": "Tooltip per il pulsante scarica area visibile" - }, - - "initializingMap": "Inizializzazione mappa...", - "@initializingMap": { - "description": "Messaggio di caricamento per l'inizializzazione della mappa" - }, - "dragToPosition": "Trascina per Posizionare", "@dragToPosition": { "description": "Etichetta quando si trascina un segnaposto sulla mappa" }, - "createSarMarker": "Crea Marcatore SAR", "@createSarMarker": { "description": "Etichetta per creare marcatore SAR dal segnaposto" }, - "compass": "Bussola", "@compass": { "description": "Titolo della bussola nella finestra bussola dettagliata" }, - "navigationAndContacts": "Navigazione e Contatti", "@navigationAndContacts": { "description": "Sottotitolo per la finestra bussola" }, - "sarAlert": "ALLERTA SAR", "@sarAlert": { "description": "Etichetta per il badge allerta SAR sui messaggi" }, - - "messageSentToPublicChannel": "Messaggio inviato al canale pubblico", - "@messageSentToPublicChannel": { - "description": "Messaggio di successo quando il messaggio viene inviato al canale pubblico" - }, - - "pleaseSelectRoomToSendSar": "Seleziona una stanza per inviare il marcatore SAR", - "@pleaseSelectRoomToSendSar": { - "description": "Errore quando non è selezionata alcuna stanza per il marcatore SAR" - }, - - "failedToSendSarMarker": "Impossibile inviare il marcatore SAR: {error}", - "@failedToSendSarMarker": { - "description": "Messaggio di errore quando l'invio del marcatore SAR fallisce", - "placeholders": { - "error": { - "type": "String" - } - } - }, - - "sarMarkerSentTo": "Marcatore SAR inviato a {roomName}", - "@sarMarkerSentTo": { - "description": "Messaggio di successo quando il marcatore SAR viene inviato alla stanza", - "placeholders": { - "roomName": { - "type": "String" - } - } - }, - - "notConnectedCannotSync": "Non connesso - impossibile sincronizzare i messaggi", - "@notConnectedCannotSync": { - "description": "Avviso quando si tenta di sincronizzare i messaggi senza essere connessi" - }, - - "syncedMessageCount": "Sincronizzati {count} messaggio(i)", - "@syncedMessageCount": { - "description": "Messaggio di successo che mostra il numero di messaggi sincronizzati", - "placeholders": { - "count": { - "type": "int" - } - } - }, - - "noNewMessages": "Nessun nuovo messaggio", - "@noNewMessages": { - "description": "Messaggio informativo quando non ci sono nuovi messaggi da sincronizzare" - }, - - "syncFailed": "Sincronizzazione fallita: {error}", - "@syncFailed": { - "description": "Messaggio di errore quando la sincronizzazione fallisce", - "placeholders": { - "error": { - "type": "String" - } - } - }, - - "failedToResendMessage": "Impossibile reinviare il messaggio", - "@failedToResendMessage": { - "description": "Errore quando il nuovo tentativo di invio del messaggio fallisce" - }, - - "retryingMessage": "Nuovo tentativo messaggio...", - "@retryingMessage": { - "description": "Messaggio informativo quando si riprova un messaggio fallito" - }, - - "retryFailed": "Nuovo tentativo fallito: {error}", - "@retryFailed": { - "description": "Messaggio di errore quando il nuovo tentativo fallisce", - "placeholders": { - "error": { - "type": "String" - } - } - }, - "textCopiedToClipboard": "Testo copiato negli appunti", "@textCopiedToClipboard": { "description": "Messaggio di successo quando il testo viene copiato" }, - "cannotReplySenderMissing": "Impossibile rispondere: informazioni mittente mancanti", "@cannotReplySenderMissing": { "description": "Errore quando le informazioni del mittente mancano per la risposta" }, - "cannotReplyContactNotFound": "Impossibile rispondere: contatto non trovato", "@cannotReplyContactNotFound": { "description": "Errore quando il contatto non viene trovato per la risposta" }, - - "messageDeleted": "Messaggio eliminato", - "@messageDeleted": { - "description": "Messaggio informativo quando un messaggio viene eliminato" - }, - "copyText": "Copia testo", - "textCopiedToClipboard": "Testo copiato negli appunti", "deleteMessage": "Elimina messaggio", "deleteMessageConfirmation": "Sei sicuro di voler eliminare questo messaggio?", "shareLocation": "Condividi posizione", "shareLocationText": "{markerInfo}\n\nCoordinate: {lat}, {lon}\n\nGoogle Maps: {url}", "sarLocationShare": "Posizione SAR", - "locationShared": "Posizione condivisa", - - "refreshedContacts": "Contatti aggiornati", - "@refreshedContacts": { - "description": "Messaggio di successo quando i contatti vengono aggiornati" - }, - "justNow": "Proprio ora", "@justNow": { "description": "Indicatore tempo per attività molto recente" }, - "minutesAgo": "{minutes}m fa", "@minutesAgo": { "description": "Indicatore tempo per minuti fa", @@ -1916,7 +998,6 @@ } } }, - "hoursAgo": "{hours}h fa", "@hoursAgo": { "description": "Indicatore tempo per ore fa", @@ -1926,7 +1007,6 @@ } } }, - "daysAgo": "{days}g fa", "@daysAgo": { "description": "Indicatore tempo per giorni fa", @@ -1936,7 +1016,6 @@ } } }, - "secondsAgo": "{seconds}s fa", "@secondsAgo": { "description": "Indicatore tempo per secondi fa", @@ -1946,22 +1025,18 @@ } } }, - "sending": "Invio...", "@sending": { "description": "Stato consegna: invio" }, - "sent": "Inviato", "@sent": { "description": "Stato consegna: inviato" }, - "delivered": "Consegnato", "@delivered": { "description": "Stato consegna: consegnato" }, - "deliveredWithTime": "Consegnato ({time}ms)", "@deliveredWithTime": { "description": "Stato consegna con tempo di andata e ritorno", @@ -1971,17 +1046,14 @@ } } }, - "failed": "Fallito", "@failed": { "description": "Stato consegna: fallito" }, - "broadcast": "Trasmissione", "@broadcast": { "description": "Stato di consegna per messaggi di canale (nessun eco ancora)" }, - "deliveredToContacts": "Consegnato a {delivered}/{total} contatti", "@deliveredToContacts": { "description": "Conteggio consegna messaggi raggruppati", @@ -1994,226 +1066,88 @@ } } }, - "allDelivered": "Tutto consegnato", "@allDelivered": { "description": "Stato quando tutti i destinatari hanno ricevuto il messaggio" }, - "recipientDetails": "Dettagli destinatari", "@recipientDetails": { "description": "Intestazione per elenco destinatari espandibile" }, - "pending": "In attesa", "@pending": { "description": "Stato consegna: in attesa" }, - "sarMarkerFoundPerson": "Persona Trovata", "@sarMarkerFoundPerson": { "description": "Tipo marcatore SAR: persona trovata" }, - "sarMarkerFire": "Posizione Incendio", "@sarMarkerFire": { "description": "Tipo marcatore SAR: incendio" }, - "sarMarkerStagingArea": "Area di Appoggio", "@sarMarkerStagingArea": { "description": "Tipo marcatore SAR: area di appoggio" }, - "sarMarkerObject": "Oggetto Trovato", "@sarMarkerObject": { "description": "Tipo marcatore SAR: oggetto" }, - "from": "Da", "@from": { "description": "Etichetta mittente nelle notifiche" }, - "coordinates": "Coordinate", "@coordinates": { "description": "Etichetta coordinate" }, - "tapToViewOnMap": "Tocca per visualizzare sulla mappa", "@tapToViewOnMap": { "description": "Testo azione notifica" }, - "radioSettings": "Impostazioni Radio", "@radioSettings": { "description": "Titolo sezione per le impostazioni radio" }, - "frequencyMHz": "Frequenza (MHz)", "@frequencyMHz": { "description": "Etichetta per il campo frequenza radio" }, - "frequencyExample": "es., 869.618", "@frequencyExample": { "description": "Testo di aiuto esempio per la frequenza" }, - "bandwidth": "Larghezza di Banda", "@bandwidth": { "description": "Etichetta per il menu a discesa larghezza di banda" }, - "spreadingFactor": "Fattore di Spreading", "@spreadingFactor": { "description": "Etichetta per il menu a discesa fattore di spreading" }, - "codingRate": "Tasso di Codifica", "@codingRate": { "description": "Etichetta per il menu a discesa tasso di codifica" }, - "txPowerDbm": "Potenza TX (dBm)", "@txPowerDbm": { "description": "Etichetta per il campo potenza TX" }, - "maxPowerDbm": "Max: {power} dBm", "@maxPowerDbm": { "description": "Testo di aiuto che mostra la potenza TX massima", "placeholders": { - "power": { "type": "int" } + "power": { + "type": "int" + } } }, - "you": "Tu", "@you": { "description": "Etichetta per l'utente corrente nelle bolle dei messaggi" }, - - "offlineVectorMaps": "Mappe Vettoriali Offline", - "@offlineVectorMaps": { - "description": "Titolo per la sezione mappe vettoriali offline" - }, - - "offlineVectorMapsDescription": "Importa e gestisci tile di mappe vettoriali offline (formato MBTiles) per l'uso senza connessione internet", - "@offlineVectorMapsDescription": { - "description": "Descrizione per la sezione mappe vettoriali offline" - }, - - "importMbtiles": "Importa File MBTiles", - "@importMbtiles": { - "description": "Pulsante per importare file MBTiles" - }, - - "importMbtilesNote": "Supporta file MBTiles con tile vettoriali (formato PBF/MVT). Gli estratti Geofabrik funzionano benissimo!", - "@importMbtilesNote": { - "description": "Nota sui tipi di file MBTiles supportati" - }, - - "noMbtilesFiles": "Nessuna mappa vettoriale offline trovata", - "@noMbtilesFiles": { - "description": "Messaggio quando non sono disponibili file MBTiles" - }, - - "mbtilesImportedSuccessfully": "File MBTiles importato con successo", - "@mbtilesImportedSuccessfully": { - "description": "Messaggio di successo dopo l'importazione del file MBTiles" - }, - - "failedToImportMbtiles": "Impossibile importare il file MBTiles", - "@failedToImportMbtiles": { - "description": "Messaggio di errore quando l'importazione MBTiles fallisce" - }, - - "deleteMbtilesConfirmTitle": "Elimina Mappa Offline", - "@deleteMbtilesConfirmTitle": { - "description": "Titolo per la finestra di conferma eliminazione MBTiles" - }, - - "deleteMbtilesConfirmMessage": "Sei sicuro di voler eliminare \"{name}\"? Questo rimuoverà permanentemente la mappa offline.", - "@deleteMbtilesConfirmMessage": { - "description": "Messaggio di conferma per l'eliminazione del file MBTiles", - "placeholders": { - "name": { - "type": "String" - } - } - }, - - "mbtilesDeletedSuccessfully": "Mappa offline eliminata con successo", - "@mbtilesDeletedSuccessfully": { - "description": "Messaggio di successo dopo l'eliminazione del file MBTiles" - }, - - "failedToDeleteMbtiles": "Impossibile eliminare la mappa offline", - "@failedToDeleteMbtiles": { - "description": "Messaggio di errore quando l'eliminazione MBTiles fallisce" - }, - - "importExportCachedTiles": "Importa/Esporta tile in cache", - "@importExportCachedTiles": { - "description": "Titolo per sezione di importazione/esportazione" - }, - - "importExportDescription": "Esegui backup, condividi e ripristina tile mappa scaricati tra dispositivi", - "@importExportDescription": { - "description": "Descrizione della funzionalità di importazione/esportazione" - }, - - "exportTilesToFile": "Esporta tile su file", - "@exportTilesToFile": { - "description": "Pulsante per esportare tile" - }, - - "importTilesFromFile": "Importa tile da file", - "@importTilesFromFile": { - "description": "Pulsante per importare tile" - }, - - "selectExportLocation": "Seleziona posizione esportazione", - "@selectExportLocation": { - "description": "Titolo per selettore file di esportazione" - }, - - "selectImportFile": "Seleziona archivio tile", - "@selectImportFile": { - "description": "Titolo per selettore file di importazione" - }, - - "exportingTiles": "Esportazione tile...", - "@exportingTiles": { - "description": "Messaggio di stato durante esportazione" - }, - - "importingTiles": "Importazione tile...", - "@importingTiles": { - "description": "Messaggio di stato durante importazione" - }, - - "exportSuccess": "{count} tile esportati con successo", - "@exportSuccess": { - "description": "Messaggio di successo dopo esportazione", - "placeholders": { - "count": { - "type": "int" - } - } - }, - - "importSuccess": "{count} archivi importati con successo", - "@importSuccess": { - "description": "Messaggio di successo dopo importazione", - "placeholders": { - "count": { - "type": "int" - } - } - }, - - "exportFailed": "Esportazione fallita: {error}", + "exportFailed": "Export failed: {error}", "@exportFailed": { "description": "Messaggio di errore quando esportazione fallisce", "placeholders": { @@ -2222,8 +1156,7 @@ } } }, - - "importFailed": "Importazione fallita: {error}", + "importFailed": "Import failed: {error}", "@importFailed": { "description": "Messaggio di errore quando importazione fallisce", "placeholders": { @@ -2232,217 +1165,74 @@ } } }, - - "exportNote": "Crea un file archivio compresso (.fmtc) che può essere condiviso e importato su altri dispositivi.", - "@exportNote": { - "description": "Nota sulla funzionalità di esportazione" - }, - - "importNote": "Importa tile mappa da un file archivio precedentemente esportato. I tile verranno uniti con la cache esistente.", - "@importNote": { - "description": "Nota sulla funzionalità di importazione" - }, - - "noTilesToExport": "Nessun tile da esportare", - "@noTilesToExport": { - "description": "Messaggio quando cache è vuota" - }, - - "archiveContainsStores": "L'archivio contiene {count} archivi", - "@archiveContainsStores": { - "description": "Informazioni sul contenuto dell'archivio", - "placeholders": { - "count": { - "type": "int" - } - } - }, - - "vectorTiles": "Tile Vettoriali", - "@vectorTiles": { - "description": "Etichetta per il tipo tile vettoriale" - }, - - "schema": "Schema", - "@schema": { - "description": "Etichetta per lo schema tile vettoriale" - }, - "unknown": "Sconosciuto", "@unknown": { "description": "Etichetta valore sconosciuto" }, - - "bounds": "Limiti", - "@bounds": { - "description": "Etichetta per i limiti geografici" - }, - "onlineLayers": "Livelli Online", "@onlineLayers": { "description": "Intestazione sezione per i livelli mappa online" }, - - "offlineLayers": "Livelli Offline", - "@offlineLayers": { - "description": "Intestazione sezione per i livelli mappa offline (MBTiles)" - }, - "locationTrail": "Traccia Posizione", "@locationTrail": { "description": "Titolo traccia posizione" }, - "showTrailOnMap": "Mostra Traccia sulla Mappa", "@showTrailOnMap": { "description": "Interruttore per mostrare/nascondere la traccia sulla mappa" }, - "trailVisible": "La traccia è visibile sulla mappa", "@trailVisible": { "description": "Stato visibilità traccia - visibile" }, - "trailHiddenRecording": "La traccia è nascosta (ancora in registrazione)", "@trailHiddenRecording": { "description": "Stato visibilità traccia - nascosta ma in registrazione" }, - - "distance": "Distanza", - "@distance": { - "description": "Etichetta distanza" - }, - "duration": "Durata", "@duration": { "description": "Etichetta durata" }, - "points": "Punti", "@points": { "description": "Etichetta conteggio punti traccia" }, - "clearTrail": "Cancella Traccia", "@clearTrail": { "description": "Pulsante per cancellare la traccia posizione" }, - "clearTrailQuestion": "Cancellare Traccia?", "@clearTrailQuestion": { "description": "Titolo finestra di conferma" }, - "clearTrailConfirmation": "Sei sicuro di voler cancellare la traccia posizione attuale? Questa azione non può essere annullata.", "@clearTrailConfirmation": { "description": "Messaggio finestra di conferma" }, - "noTrailRecorded": "Nessuna traccia registrata ancora", "@noTrailRecorded": { "description": "Messaggio quando non esiste traccia" }, - "startTrackingToRecord": "Avvia il tracciamento posizione per registrare la tua traccia", "@startTrackingToRecord": { "description": "Istruzioni per avviare la registrazione della traccia" }, - "trailControls": "Controlli Traccia", "@trailControls": { "description": "Tooltip controlli traccia" }, - - "exportTrailToGpx": "Esporta traccia in GPX", - "@exportTrailToGpx": { - "description": "Etichetta del pulsante per esportare la traccia in file GPX" - }, - - "importTrailFromGpx": "Importa traccia da GPX", - "@importTrailFromGpx": { - "description": "Etichetta del pulsante per importare la traccia da file GPX" - }, - - "trailExportedSuccessfully": "Traccia esportata con successo!", - "@trailExportedSuccessfully": { - "description": "Messaggio di successo quando la traccia viene esportata" - }, - - "failedToExportTrail": "Esportazione traccia fallita", - "@failedToExportTrail": { - "description": "Messaggio di errore quando l'esportazione della traccia fallisce" - }, - - "failedToImportTrail": "Importazione traccia fallita: {error}", - "@failedToImportTrail": { - "description": "Messaggio di errore quando l'importazione della traccia fallisce", - "placeholders": { - "error": { - "type": "String" - } - } - }, - - "importTrail": "Importa traccia", - "@importTrail": { - "description": "Titolo del dialogo di importazione traccia" - }, - - "importTrailQuestion": "Importare traccia con {pointCount} punti?\n\nPuoi sostituire la tua traccia attuale o visualizzarla affiancata.", - "@importTrailQuestion": { - "description": "Contenuto del dialogo di conferma importazione traccia", - "placeholders": { - "pointCount": { - "type": "int" - } - } - }, - - "viewAlongside": "Visualizza affiancata", - "@viewAlongside": { - "description": "Pulsante per importare la traccia affiancata alla traccia attuale" - }, - - "replaceCurrent": "Sostituisci attuale", - "@replaceCurrent": { - "description": "Pulsante per sostituire la traccia attuale con la traccia importata" - }, - - "trailImported": "Traccia importata! ({pointCount} punti)", - "@trailImported": { - "description": "Messaggio di successo quando la traccia viene importata", - "placeholders": { - "pointCount": { - "type": "int" - } - } - }, - - "trailReplaced": "Traccia sostituita! ({pointCount} punti)", - "@trailReplaced": { - "description": "Messaggio di successo quando la traccia viene sostituita", - "placeholders": { - "pointCount": { - "type": "int" - } - } - }, - "contactTrails": "Tracce contatti", "@contactTrails": { "description": "Intestazione sezione tracce contatti" }, - "showAllContactTrails": "Mostra tutte le tracce dei contatti", "@showAllContactTrails": { "description": "Etichetta dell'interruttore per mostrare tutte le tracce dei contatti" }, - "noContactsWithLocationHistory": "Nessun contatto con cronologia posizione", "@noContactsWithLocationHistory": { "description": "Sottotitolo quando non ci sono contatti con tracce" }, - "showingTrailsForContacts": "Visualizzazione tracce per {count} contatti", "@showingTrailsForContacts": { "description": "Sottotitolo che mostra il numero di contatti con tracce", @@ -2452,117 +1242,94 @@ } } }, - "individualContactTrails": "Tracce individuali dei contatti", "@individualContactTrails": { "description": "Titolo dell'elemento espandibile per le tracce individuali dei contatti" }, - "deviceInformation": "Informazioni Dispositivo", "@deviceInformation": { "description": "Intestazione sezione informazioni dispositivo" }, - "bleName": "Nome BLE", "@bleName": { "description": "Etichetta nome dispositivo Bluetooth Low Energy" }, - "meshName": "Nome Mesh", "@meshName": { "description": "Etichetta nome rete mesh" }, - "notSet": "Non impostato", "@notSet": { "description": "Etichetta quando un valore non è impostato" }, - "model": "Modello", "@model": { "description": "Etichetta modello dispositivo" }, - "version": "Versione", "@version": { "description": "Etichetta versione" }, - "buildDate": "Data Build", "@buildDate": { "description": "Etichetta data build firmware" }, - "firmware": "Firmware", "@firmware": { "description": "Etichetta firmware" }, - "maxContacts": "Contatti Max", "@maxContacts": { "description": "Etichetta capacità massima contatti" }, - "maxChannels": "Canali Max", "@maxChannels": { "description": "Etichetta capacità massima canali" }, - "publicInfo": "Informazioni Pubbliche", "@publicInfo": { "description": "Intestazione sezione informazioni pubbliche" }, - "meshNetworkName": "Nome Rete Mesh", "@meshNetworkName": { "description": "Etichetta campo nome rete mesh" }, - "nameBroadcastInMesh": "Nome trasmesso negli annunci mesh", "@nameBroadcastInMesh": { "description": "Testo di aiuto per il campo nome rete mesh" }, - "telemetryAndLocationSharing": "Telemetria e Condivisione Posizione", "@telemetryAndLocationSharing": { "description": "Etichetta interruttore telemetria e condivisione posizione" }, - "lat": "Lat", "@lat": { "description": "Etichetta campo latitudine (forma breve)" }, - "lon": "Lon", "@lon": { "description": "Etichetta campo longitudine (forma breve)" }, - "useCurrentLocation": "Usa posizione attuale", "@useCurrentLocation": { "description": "Tooltip per il pulsante usa posizione attuale" }, - "noneUnknown": "Nessuno/Sconosciuto", "@noneUnknown": { "description": "Tipo dispositivo: nessuno o sconosciuto" }, - "chatNode": "Nodo Chat", "@chatNode": { "description": "Tipo dispositivo: nodo chat" }, - "repeater": "Ripetitore", "@repeater": { "description": "Tipo dispositivo: ripetitore" }, - "roomChannel": "Stanza/Canale", "@roomChannel": { "description": "Tipo dispositivo: stanza o canale" }, - "typeNumber": "Tipo {number}", "@typeNumber": { "description": "Tipo dispositivo generico con numero", @@ -2572,7 +1339,6 @@ } } }, - "copiedToClipboardShort": "Copiato {label} negli appunti", "@copiedToClipboardShort": { "description": "Messaggio di successo breve quando si copia negli appunti", @@ -2582,7 +1348,6 @@ } } }, - "failedToSave": "Impossibile salvare: {error}", "@failedToSave": { "description": "Messaggio di errore generico per fallimenti di salvataggio", @@ -2592,7 +1357,6 @@ } } }, - "failedToGetLocation": "Impossibile ottenere la posizione: {error}", "@failedToGetLocation": { "description": "Messaggio di errore quando l'ottenimento della posizione fallisce", @@ -2602,7 +1366,6 @@ } } }, - "sarTemplates": "Modelli SAR", "manageSarTemplates": "Gestisci modelli SAR", "addTemplate": "Aggiungi modello", @@ -2625,8 +1388,6 @@ "templateDeleted": "Template deleted", "templatesImported": "{count, plural, =0{No templates imported} =1{Imported 1 template} other{Imported {count} templates}}", "templatesExported": "{count, plural, =1{Exported 1 template to clipboard} other{Exported {count} templates to clipboard}}", - "importFailed": "Import failed: {error}", - "exportFailed": "Export failed: {error}", "resetToDefaults": "Ripristina predefiniti", "resetToDefaultsConfirmation": "Questo eliminerà tutti i modelli personalizzati e ripristinerà i 4 modelli predefiniti. Continuare?", "reset": "Ripristina", @@ -2634,8 +1395,6 @@ "noTemplates": "No templates available", "tapAddToCreate": "Tap + to create your first template", "ok": "OK", - "delete": "Elimina", - "permissionsSection": "Permessi", "locationPermission": "Permesso di posizione", "checking": "Verifica in corso...", @@ -2650,19 +1409,15 @@ "locationPermissionAlreadyGranted": "Il permesso di posizione è già concesso.", "sarNavyBlue": "SAR Blu Navy", "sarNavyBlueDescription": "Modalità Professionale/Operativa", - "selectRecipient": "Seleziona destinatario", "broadcastToAllNearby": "Trasmetti a tutti nelle vicinanze", "searchRecipients": "Cerca destinatari...", "noContactsFound": "Nessun contatto trovato", "noRoomsFound": "Nessuna stanza trovata", - "noContactsOrRoomsAvailable": "Nessun contatto o stanza disponibile", "noRecipientsAvailable": "Nessun destinatario disponibile", "noChannelsFound": "Nessun canale trovato", - "messagesWillBeSentToPublicChannel": "I messaggi saranno inviati al canale pubblico", "newMessage": "Nuovo messaggio", "channel": "Canale", - "samplePoliceLead": "Capo della Polizia", "sampleDroneOperator": "Operatore Drone", "sampleFirefighterAlpha": "Vigile del Fuoco", @@ -2712,28 +1467,17 @@ "sampleBaseCommand": "Comando di Base", "sampleFieldCoordinator": "Coordinatore sul Campo", "sampleMedicalTeam": "Team Medico", - "mapDrawing": "Disegno della Mappa", - "drawingShared": "Disegno della Mappa", "lineDrawing": "Linea", "rectangleDrawing": "Rettangolo", "navigateToDrawing": "Naviga al Disegno", "hideFromMap": "Nascondi dalla Mappa", "copyCoordinates": "Copia Coordinate", - "coordinatesCopiedToClipboard": "Coordinate copiate negli appunti", - "manualCoordinates": "Coordinate Manuali", "enterCoordinatesManually": "Inserire le coordinate manualmente", "latitudeLabel": "Latitudine", "longitudeLabel": "Longitudine", - "invalidLatitude": "Latitudine non valida (-90 a 90)", - "invalidLongitude": "Longitudine non valida (-180 a 180)", "exampleCoordinates": "Esempio: 46.0569, 14.5058", - - "drawingHidden": "Disegno nascosto dalla mappa", - "alreadyShared": "{count} già condiviso", - "newDrawingsShared": "{count} nuovo(i) disegno(i) condiviso(i)", - "drawingTools": "Strumenti di Disegno", "shareDrawing": "Condividi Disegno", "shareWithAllNearbyDevices": "Condividi con tutti i dispositivi vicini", "shareToRoom": "Condividi nella Stanza", @@ -2744,23 +1488,17 @@ "shared": "Condiviso", "line": "Linea", "rectangle": "Rettangolo", - "saveAsTemplate": "Salva come Modello", "templateSaved": "Modello salvato con successo", "templateAlreadyExists": "Esiste già un modello con questa emoji", - "updateAvailable": "Aggiornamento Disponibile", "currentVersion": "Attuale", "latestVersion": "Ultima", "downloadUpdate": "Scarica", "updateLater": "Più Tardi", - "cadastralParcels": "Particelle Catastali", "forestRoads": "Strade Forestali", - "showCadastralParcels": "Mostra particelle catastali", - "showForestRoads": "Mostra strade forestali", "wmsOverlays": "Sovrapposizioni WMS", - "hikingTrails": "Sentieri Escursionistici", "mainRoads": "Strade Principali", "houseNumbers": "Numeri Civici", @@ -2771,12 +1509,10 @@ "placeNames": "Nomi di Luoghi", "municipalityBorders": "Confini Comunali", "topographicMap": "Carta Topografica 1:25000", - "recentMessages": "Messaggi Recenti", "@recentMessages": { "description": "Header for recent messages overlay on map in fullscreen mode" }, - "addChannel": "Aggiungi Canale", "channelName": "Nome del Canale", "channelNameHint": "es. Squadra di Soccorso Alfa", @@ -2796,9 +1532,7 @@ "deleteChannelConfirmation": "Sei sicuro di voler eliminare il canale \"{channelName}\"? Questa azione non può essere annullata.", "channelDeletedSuccessfully": "Canale eliminato con successo", "channelDeletionFailed": "Eliminazione del canale fallita: {error}", - "allChannelSlotsInUse": "Tutti gli slot dei canali sono in uso (massimo 39 canali personalizzati)", "createChannel": "Crea Canale", - "wizardBack": "Indietro", "wizardSkip": "Salta", "wizardNext": "Avanti", @@ -2810,10 +1544,6 @@ "wizardConnectingFeature1": "Cerca dispositivi MeshCore nelle vicinanze", "wizardConnectingFeature2": "Accoppia con la tua radio tramite Bluetooth", "wizardConnectingFeature3": "Funziona completamente offline - non è richiesta connessione internet", - "wizardSimpleModeTitle": "Modalità Semplice", - "wizardSimpleModeDescription": "Nuovo alle reti mesh? Abilita la modalità semplice per un'interfaccia semplificata con solo le funzioni essenziali.", - "wizardSimpleModeFeature1": "Interfaccia intuitiva per principianti con funzioni principali", - "wizardSimpleModeFeature2": "Passa alla modalità avanzata in qualsiasi momento dalle Impostazioni", "wizardChannelTitle": "Canali", "wizardChannelDescription": "Trasmetti messaggi a tutti su un canale, perfetto per annunci e coordinamento di tutto il team.", "wizardChannelFeature1": "Canale pubblico per comunicazione generale del team", @@ -2834,56 +1564,30 @@ "allTeamContacts": "Tutti i contatti del team", "directMessagesInfo": "Messaggi diretti con conferme. Inviato a {count} membri del team.", "sarMarkerSentToContacts": "Marcatore SAR inviato a {count} contatti", - "noContactsAvailable": "Nessun contatto del team disponibile" -, - + "noContactsAvailable": "Nessun contatto del team disponibile", "reply": "Rispondi", - "technicalDetails": "Dettagli tecnici", - "messageTechnicalDetails": "Dettagli tecnici del messaggio", - "linkQuality": "Qualità del collegamento", - "delivery": "Consegna", - "status": "Stato", - "expectedAckTag": "Tag ACK atteso", - "roundTrip": "Andata e ritorno", - "retryAttempt": "Tentativo di nuovo invio", - "floodFallback": "Fallback inondazione", - "identity": "Identità", - "messageId": "ID messaggio", - "sender": "Mittente", - "senderKey": "Chiave mittente", - "recipient": "Destinatario", - "recipientKey": "Chiave destinatario", - "voice": "Voce", - "voiceId": "ID vocale", - "envelope": "Busta", - "sessionProgress": "Avanzamento sessione", - "complete": "Completato", - "rawDump": "Dump grezzo", - "cannotRetryMissingRecipient": "Impossibile riprovare: informazioni destinatario mancanti", - "voiceUnavailable": "Voce non disponibile al momento", - "requestingVoice": "Richiesta voce" -} \ No newline at end of file +} diff --git a/lib/l10n/app_localizations.dart b/lib/l10n/app_localizations.dart index 9293777..751c641 100644 --- a/lib/l10n/app_localizations.dart +++ b/lib/l10n/app_localizations.dart @@ -156,12 +156,6 @@ abstract class AppLocalizations { /// **'Disconnect'** String get disconnect; - /// Text shown when scanning for BLE devices - /// - /// In en, this message translates to: - /// **'Scanning for devices...'** - String get scanningForDevices; - /// Text shown when no BLE devices are found /// /// In en, this message translates to: @@ -216,36 +210,18 @@ abstract class AppLocalizations { /// **'Failed to get GPS location'** String get failedToGetGpsLocation; - /// Success message showing advertised location - /// - /// In en, this message translates to: - /// **'Advertised at {latitude}, {longitude}'** - String advertisedAtLocation(String latitude, String longitude); - /// Error message for failed advertisement /// /// In en, this message translates to: /// **'Failed to advertise: {error}'** String failedToAdvertise(String error); - /// Text shown during reconnection attempts - /// - /// In en, this message translates to: - /// **'Reconnecting... ({attempt}/{max})'** - String reconnecting(int attempt, int max); - /// Tooltip for cancel reconnection button /// /// In en, this message translates to: /// **'Cancel reconnection'** String get cancelReconnection; - /// Menu item for map management - /// - /// In en, this message translates to: - /// **'Map Management'** - String get mapManagement; - /// General settings section header /// /// In en, this message translates to: @@ -336,18 +312,6 @@ abstract class AppLocalizations { /// **'Display packet activity indicators in top bar'** String get displayPacketActivity; - /// Setting to enable simple mode - /// - /// In en, this message translates to: - /// **'Simple Mode'** - String get simpleMode; - - /// Description for simple mode setting - /// - /// In en, this message translates to: - /// **'Hide non-essential information in messages and contacts'** - String get simpleModeDescription; - /// Setting to disable the map tab /// /// In en, this message translates to: @@ -372,126 +336,6 @@ abstract class AppLocalizations { /// **'Choose Language'** String get chooseLanguage; - /// English language option - /// - /// In en, this message translates to: - /// **'English'** - String get english; - - /// Slovenian language option - /// - /// In en, this message translates to: - /// **'Slovenian'** - String get slovenian; - - /// Croatian language option - /// - /// In en, this message translates to: - /// **'Croatian'** - String get croatian; - - /// German language option - /// - /// In en, this message translates to: - /// **'German'** - String get german; - - /// Spanish language option - /// - /// In en, this message translates to: - /// **'Spanish'** - String get spanish; - - /// French language option - /// - /// In en, this message translates to: - /// **'French'** - String get french; - - /// Italian language option - /// - /// In en, this message translates to: - /// **'Italian'** - String get italian; - - /// Location settings section header - /// - /// In en, this message translates to: - /// **'Location Broadcasting'** - String get locationBroadcasting; - - /// Auto location tracking setting - /// - /// In en, this message translates to: - /// **'Auto Location Tracking'** - String get autoLocationTracking; - - /// Description for auto location tracking - /// - /// In en, this message translates to: - /// **'Automatically broadcast position updates'** - String get automaticallyBroadcastPosition; - - /// Configure tracking button label - /// - /// In en, this message translates to: - /// **'Configure Tracking'** - String get configureTracking; - - /// Description for tracking configuration - /// - /// In en, this message translates to: - /// **'Distance and time thresholds'** - String get distanceAndTimeThresholds; - - /// Tracking configuration dialog title - /// - /// In en, this message translates to: - /// **'Location Tracking Configuration'** - String get locationTrackingConfiguration; - - /// Description for tracking configuration dialog - /// - /// In en, this message translates to: - /// **'Configure when location broadcasts are sent to the mesh network'** - String get configureWhenLocationBroadcasts; - - /// Minimum distance setting label - /// - /// In en, this message translates to: - /// **'Minimum Distance'** - String get minimumDistance; - - /// Description for minimum distance - /// - /// In en, this message translates to: - /// **'Broadcast only after moving {distance} meters'** - String broadcastAfterMoving(String distance); - - /// Maximum distance setting label - /// - /// In en, this message translates to: - /// **'Maximum Distance'** - String get maximumDistance; - - /// Description for maximum distance - /// - /// In en, this message translates to: - /// **'Always broadcast after moving {distance} meters'** - String alwaysBroadcastAfterMoving(String distance); - - /// Minimum time interval setting label - /// - /// In en, this message translates to: - /// **'Minimum Time Interval'** - String get minimumTimeInterval; - - /// Description for time interval - /// - /// In en, this message translates to: - /// **'Always broadcast every {duration}'** - String alwaysBroadcastEvery(String duration); - /// Save button label /// /// In en, this message translates to: @@ -558,18 +402,6 @@ abstract class AppLocalizations { /// **'More Info'** String get moreInfo; - /// Learn more link description - /// - /// In en, this message translates to: - /// **'Learn more about MeshCore SAR'** - String get learnMoreAbout; - - /// Developer section header - /// - /// In en, this message translates to: - /// **'Developer'** - String get developer; - /// Package name label /// /// In en, this message translates to: @@ -695,12 +527,6 @@ abstract class AppLocalizations { /// **'Refresh'** String get refresh; - /// Action to send direct message to contact - /// - /// In en, this message translates to: - /// **'Send'** - String get sendDirectMessage; - /// Action to reset contact path for re-routing /// /// In en, this message translates to: @@ -899,23 +725,6 @@ abstract class AppLocalizations { /// **'Share {count} Drawing{plural}'** String shareDrawingsCount(int count, String plural); - /// System message when drawings are sent to room - /// - /// In en, this message translates to: - /// **'Sent {count} map drawing{plural} to {roomName}'** - String sentDrawingsToRoom(int count, String plural, String roomName); - - /// Snackbar message showing drawings shared to room - /// - /// In en, this message translates to: - /// **'Shared {success}/{total} drawing{plural} to {roomName}'** - String sharedDrawingsToRoom( - int success, - int total, - String plural, - String roomName, - ); - /// Toggle to show/hide received drawings from other team members /// /// In en, this message translates to: @@ -958,12 +767,6 @@ abstract class AppLocalizations { /// **'Clear All'** String get clearAll; - /// Message when there are no drawings to share - /// - /// In en, this message translates to: - /// **'No local drawings to share'** - String get noLocalDrawings; - /// Public channel option for sharing /// /// In en, this message translates to: @@ -982,48 +785,12 @@ abstract class AppLocalizations { /// **'Stored permanently in room'** String get storedPermanently; - /// System message when drawings are sent to public channel - /// - /// In en, this message translates to: - /// **'Sent {count} map drawing{plural} to Public Channel'** - String drawingsSentToPublicChannel(int count, String plural); - - /// Snackbar message showing success count for drawings shared to public channel - /// - /// In en, this message translates to: - /// **'Shared {success}/{total} drawings to Public Channel'** - String drawingsSharedToPublicChannel(int success, int total); - /// Error message when device is not connected for direct messaging /// /// In en, this message translates to: /// **'Not connected to device'** String get notConnectedToDevice; - /// Title for direct message sheet - /// - /// In en, this message translates to: - /// **'Direct Message'** - String get directMessage; - - /// Success message after sending direct message - /// - /// In en, this message translates to: - /// **'Direct message sent to {contactName}'** - String directMessageSentTo(String contactName); - - /// Error message when sending direct message fails - /// - /// In en, this message translates to: - /// **'Failed to send: {error}'** - String failedToSend(String error); - - /// Information about direct messaging behavior - /// - /// In en, this message translates to: - /// **'This message will be sent directly to {contactName}. It will also appear in the main messages feed.'** - String directMessageInfo(String contactName); - /// Placeholder text for message input field /// /// In en, this message translates to: @@ -1078,12 +845,6 @@ abstract class AppLocalizations { /// **'Location'** String get location; - /// Button label to insert current GPS location - /// - /// In en, this message translates to: - /// **'My Location'** - String get myLocation; - /// Badge showing location is from map tap /// /// In en, this message translates to: @@ -1192,12 +953,6 @@ abstract class AppLocalizations { /// **'Flood'** String get flood; - /// Admin badge label - /// - /// In en, this message translates to: - /// **'Admin'** - String get admin; - /// Logged in status badge /// /// In en, this message translates to: @@ -1216,36 +971,12 @@ abstract class AppLocalizations { /// **'Distance'** String get distance; - /// Status message for direct ping - /// - /// In en, this message translates to: - /// **'Pinging {name} (direct via path)...'** - String pingingDirect(String name); - - /// Status message for flood ping - /// - /// In en, this message translates to: - /// **'Pinging {name} (flooding - no path)...'** - String pingingFlood(String name); - /// Warning when direct ping times out /// /// In en, this message translates to: /// **'Direct ping timeout - retrying {name} with flooding...'** String directPingTimeout(String name); - /// Success message for ping - /// - /// In en, this message translates to: - /// **'Ping successful to {name}{fallback}'** - String pingSuccessful(String name, String fallback); - - /// Suffix for ping success with fallback - /// - /// In en, this message translates to: - /// **' (via flooding fallback)'** - String get viaFloodingFallback; - /// Error message when ping fails /// /// In en, this message translates to: @@ -1258,18 +989,6 @@ abstract class AppLocalizations { /// **'Are you sure you want to delete \"{name}\"?\n\nThis will remove the contact from both the app and the companion radio device.'** String deleteContactConfirmation(String name); - /// Status message while removing contact - /// - /// In en, this message translates to: - /// **'Removing {name}...'** - String removingContact(String name); - - /// Success message after removing contact - /// - /// In en, this message translates to: - /// **'Contact \"{name}\" removed'** - String contactRemoved(String name); - /// Error message when contact removal fails /// /// In en, this message translates to: @@ -1354,12 +1073,6 @@ abstract class AppLocalizations { /// **'Telemetry'** String get telemetry; - /// Status message while requesting telemetry - /// - /// In en, this message translates to: - /// **'Requesting telemetry from {name}...'** - String requestingTelemetry(String name); - /// Voltage label /// /// In en, this message translates to: @@ -1498,12 +1211,6 @@ abstract class AppLocalizations { /// **'Show All'** String get showAll; - /// Title for nearby contacts list in compass - /// - /// In en, this message translates to: - /// **'Nearby Contacts'** - String get nearbyContacts; - /// Message when GPS location is unavailable /// /// In en, this message translates to: @@ -1570,300 +1277,12 @@ abstract class AppLocalizations { /// **'Channels'** String get channels; - /// Title for cache statistics section - /// - /// In en, this message translates to: - /// **'Cache Statistics'** - String get cacheStatistics; - - /// Label for total number of cached tiles - /// - /// In en, this message translates to: - /// **'Total Tiles'** - String get totalTiles; - - /// Label for cache size in MB - /// - /// In en, this message translates to: - /// **'Cache Size'** - String get cacheSize; - - /// Label for cache store name - /// - /// In en, this message translates to: - /// **'Store Name'** - String get storeName; - - /// Message when cache statistics are unavailable - /// - /// In en, this message translates to: - /// **'No cache statistics available'** - String get noCacheStatistics; - - /// Title for download region section - /// - /// In en, this message translates to: - /// **'Download Region'** - String get downloadRegion; - - /// Label for map layer selection - /// - /// In en, this message translates to: - /// **'Map Layer'** - String get mapLayer; - - /// Title for region bounds input section - /// - /// In en, this message translates to: - /// **'Region Bounds'** - String get regionBounds; - - /// Label for north coordinate - /// - /// In en, this message translates to: - /// **'North'** - String get north; - - /// Label for south coordinate - /// - /// In en, this message translates to: - /// **'South'** - String get south; - - /// Label for east coordinate - /// - /// In en, this message translates to: - /// **'East'** - String get east; - - /// Label for west coordinate - /// - /// In en, this message translates to: - /// **'West'** - String get west; - - /// Title for zoom levels section - /// - /// In en, this message translates to: - /// **'Zoom Levels'** - String get zoomLevels; - - /// Label for minimum zoom level - /// - /// In en, this message translates to: - /// **'Min: {zoom}'** - String minZoom(int zoom); - - /// Label for maximum zoom level - /// - /// In en, this message translates to: - /// **'Max: {zoom}'** - String maxZoom(int zoom); - - /// Status message during download - /// - /// In en, this message translates to: - /// **'Downloading...'** - String get downloadingDots; - - /// Button to cancel download - /// - /// In en, this message translates to: - /// **'Cancel Download'** - String get cancelDownload; - - /// Button to start region download - /// - /// In en, this message translates to: - /// **'Download Region'** - String get downloadRegionButton; - - /// Warning about download size and time - /// - /// In en, this message translates to: - /// **'Note: Large regions or high zoom levels may take significant time and storage.'** - String get downloadNote; - - /// Title for cache management section - /// - /// In en, this message translates to: - /// **'Cache Management'** - String get cacheManagement; - - /// Button to clear all cached maps - /// - /// In en, this message translates to: - /// **'Clear All Maps'** - String get clearAllMaps; - - /// Title for clear maps confirmation dialog - /// - /// In en, this message translates to: - /// **'Clear All Maps'** - String get clearMapsConfirmTitle; - - /// Confirmation message for clearing maps - /// - /// In en, this message translates to: - /// **'Are you sure you want to delete all downloaded maps? This action cannot be undone.'** - String get clearMapsConfirmMessage; - - /// Success message after map download - /// - /// In en, this message translates to: - /// **'Map download completed!'** - String get mapDownloadCompleted; - - /// Success message after clearing cache - /// - /// In en, this message translates to: - /// **'Cache cleared successfully!'** - String get cacheClearedSuccessfully; - - /// Message when download is cancelled - /// - /// In en, this message translates to: - /// **'Download cancelled'** - String get downloadCancelled; - - /// Initial status when download begins - /// - /// In en, this message translates to: - /// **'Starting download...'** - String get startingDownload; - - /// Status during tile download - /// - /// In en, this message translates to: - /// **'Downloading map tiles...'** - String get downloadingMapTiles; - - /// Status after successful download - /// - /// In en, this message translates to: - /// **'Download completed successfully!'** - String get downloadCompletedSuccessfully; - - /// Status while cancelling download - /// - /// In en, this message translates to: - /// **'Cancelling download...'** - String get cancellingDownload; - - /// Error message when loading cache stats fails - /// - /// In en, this message translates to: - /// **'Error loading stats: {error}'** - String errorLoadingStats(String error); - - /// Error message when download fails - /// - /// In en, this message translates to: - /// **'Download failed: {error}'** - String downloadFailed(String error); - - /// Error message when cancel fails - /// - /// In en, this message translates to: - /// **'Cancel failed: {error}'** - String cancelFailed(String error); - - /// Error message when clearing cache fails - /// - /// In en, this message translates to: - /// **'Clear cache failed: {error}'** - String clearCacheFailed(String error); - - /// Validation error for minimum zoom - /// - /// In en, this message translates to: - /// **'Min zoom: {error}'** - String minZoomError(String error); - - /// Validation error for maximum zoom - /// - /// In en, this message translates to: - /// **'Max zoom: {error}'** - String maxZoomError(String error); - - /// Validation error when min zoom > max zoom - /// - /// In en, this message translates to: - /// **'Minimum zoom must be less than or equal to maximum zoom'** - String get minZoomGreaterThanMax; - /// Title for map layer selection dialog /// /// In en, this message translates to: /// **'Select Map Layer'** String get selectMapLayer; - /// Title for map options dialog - /// - /// In en, this message translates to: - /// **'Map Options'** - String get mapOptions; - - /// Toggle for showing map legend - /// - /// In en, this message translates to: - /// **'Show Legend'** - String get showLegend; - - /// Description for show legend toggle - /// - /// In en, this message translates to: - /// **'Display marker type counts'** - String get displayMarkerTypeCounts; - - /// Toggle for rotating map with compass heading - /// - /// In en, this message translates to: - /// **'Rotate Map with Heading'** - String get rotateMapWithHeading; - - /// Description for rotate map toggle - /// - /// In en, this message translates to: - /// **'Map follows your direction when moving'** - String get mapFollowsDirection; - - /// Button to reset map rotation to north - /// - /// In en, this message translates to: - /// **'Reset Rotation'** - String get resetMapRotation; - - /// Tooltip for reset rotation button - /// - /// In en, this message translates to: - /// **'Reset map to north'** - String get resetMapRotationTooltip; - - /// Toggle for showing map debug information - /// - /// In en, this message translates to: - /// **'Show Map Debug Info'** - String get showMapDebugInfo; - - /// Description for debug info toggle - /// - /// In en, this message translates to: - /// **'Display zoom level and bounds'** - String get displayZoomLevelBounds; - - /// Toggle for fullscreen map mode - /// - /// In en, this message translates to: - /// **'Fullscreen Mode'** - String get fullscreenMode; - - /// Description for fullscreen mode toggle - /// - /// In en, this message translates to: - /// **'Hide all UI controls for full map view'** - String get hideUiFullMapView; - /// OpenStreetMap layer name /// /// In en, this message translates to: @@ -1900,18 +1319,6 @@ abstract class AppLocalizations { /// **'Google Terrain'** String get googleTerrain; - /// Tooltip for download visible area button - /// - /// In en, this message translates to: - /// **'Download visible area'** - String get downloadVisibleArea; - - /// Loading message for map initialization - /// - /// In en, this message translates to: - /// **'Initializing map...'** - String get initializingMap; - /// Label when dragging a pin on map /// /// In en, this message translates to: @@ -1942,72 +1349,6 @@ abstract class AppLocalizations { /// **'SAR ALERT'** String get sarAlert; - /// Success message when message is sent to public channel - /// - /// In en, this message translates to: - /// **'Message sent to public channel'** - String get messageSentToPublicChannel; - - /// Error when no room is selected for SAR marker - /// - /// In en, this message translates to: - /// **'Please select a room to send SAR marker'** - String get pleaseSelectRoomToSendSar; - - /// Error message when SAR marker fails to send - /// - /// In en, this message translates to: - /// **'Failed to send SAR marker: {error}'** - String failedToSendSarMarker(String error); - - /// Success message when SAR marker is sent to room - /// - /// In en, this message translates to: - /// **'SAR marker sent to {roomName}'** - String sarMarkerSentTo(String roomName); - - /// Warning when trying to sync messages while not connected - /// - /// In en, this message translates to: - /// **'Not connected - cannot sync messages'** - String get notConnectedCannotSync; - - /// Success message showing number of synced messages - /// - /// In en, this message translates to: - /// **'Synced {count} message(s)'** - String syncedMessageCount(int count); - - /// Info message when no new messages to sync - /// - /// In en, this message translates to: - /// **'No new messages'** - String get noNewMessages; - - /// Error message when sync fails - /// - /// In en, this message translates to: - /// **'Sync failed: {error}'** - String syncFailed(String error); - - /// Error when message retry fails - /// - /// In en, this message translates to: - /// **'Failed to resend message'** - String get failedToResendMessage; - - /// Info message when retrying a failed message - /// - /// In en, this message translates to: - /// **'Retrying message...'** - String get retryingMessage; - - /// Error message when retry fails - /// - /// In en, this message translates to: - /// **'Retry failed: {error}'** - String retryFailed(String error); - /// Success message when text is copied /// /// In en, this message translates to: @@ -2026,12 +1367,6 @@ abstract class AppLocalizations { /// **'Cannot reply: contact not found'** String get cannotReplyContactNotFound; - /// Info message when message is deleted - /// - /// In en, this message translates to: - /// **'Message deleted'** - String get messageDeleted; - /// Option to copy message text to clipboard /// /// In en, this message translates to: @@ -2091,18 +1426,6 @@ abstract class AppLocalizations { /// **'SAR Location'** String get sarLocationShare; - /// Success message when location is shared - /// - /// In en, this message translates to: - /// **'Location shared'** - String get locationShared; - - /// Success message when contacts are refreshed - /// - /// In en, this message translates to: - /// **'Refreshed contacts'** - String get refreshedContacts; - /// Time indicator for very recent activity /// /// In en, this message translates to: @@ -2289,132 +1612,6 @@ abstract class AppLocalizations { /// **'You'** String get you; - /// Title for offline vector maps section - /// - /// In en, this message translates to: - /// **'Offline Vector Maps'** - String get offlineVectorMaps; - - /// Description for offline vector maps section - /// - /// In en, this message translates to: - /// **'Import and manage offline vector map tiles (MBTiles format) for use without internet connection'** - String get offlineVectorMapsDescription; - - /// Button to import MBTiles file - /// - /// In en, this message translates to: - /// **'Import MBTiles File'** - String get importMbtiles; - - /// Note about supported MBTiles file types - /// - /// In en, this message translates to: - /// **'Supports MBTiles files with vector tiles (PBF/MVT format). Geofabrik extracts work great!'** - String get importMbtilesNote; - - /// Message when no MBTiles files are available - /// - /// In en, this message translates to: - /// **'No offline vector maps found'** - String get noMbtilesFiles; - - /// Success message after importing MBTiles file - /// - /// In en, this message translates to: - /// **'MBTiles file imported successfully'** - String get mbtilesImportedSuccessfully; - - /// Error message when MBTiles import fails - /// - /// In en, this message translates to: - /// **'Failed to import MBTiles file'** - String get failedToImportMbtiles; - - /// Title for delete MBTiles confirmation dialog - /// - /// In en, this message translates to: - /// **'Delete Offline Map'** - String get deleteMbtilesConfirmTitle; - - /// Confirmation message for deleting MBTiles file - /// - /// In en, this message translates to: - /// **'Are you sure you want to delete \"{name}\"? This will permanently remove the offline map.'** - String deleteMbtilesConfirmMessage(String name); - - /// Success message after deleting MBTiles file - /// - /// In en, this message translates to: - /// **'Offline map deleted successfully'** - String get mbtilesDeletedSuccessfully; - - /// Error message when MBTiles deletion fails - /// - /// In en, this message translates to: - /// **'Failed to delete offline map'** - String get failedToDeleteMbtiles; - - /// Title for import/export section - /// - /// In en, this message translates to: - /// **'Import/Export Cached Tiles'** - String get importExportCachedTiles; - - /// Description for import/export functionality - /// - /// In en, this message translates to: - /// **'Backup, share, and restore downloaded map tiles between devices'** - String get importExportDescription; - - /// Button to export tiles to archive file - /// - /// In en, this message translates to: - /// **'Export Tiles to File'** - String get exportTilesToFile; - - /// Button to import tiles from archive file - /// - /// In en, this message translates to: - /// **'Import Tiles from File'** - String get importTilesFromFile; - - /// Title for export file picker - /// - /// In en, this message translates to: - /// **'Select Export Location'** - String get selectExportLocation; - - /// Title for import file picker - /// - /// In en, this message translates to: - /// **'Select Tile Archive'** - String get selectImportFile; - - /// Status message during export - /// - /// In en, this message translates to: - /// **'Exporting tiles...'** - String get exportingTiles; - - /// Status message during import - /// - /// In en, this message translates to: - /// **'Importing tiles...'** - String get importingTiles; - - /// Success message after export - /// - /// In en, this message translates to: - /// **'Exported {count} tiles successfully'** - String exportSuccess(int count); - - /// Success message after import - /// - /// In en, this message translates to: - /// **'Imported {count} stores successfully'** - String importSuccess(int count); - /// Error message when export fails /// /// In en, this message translates to: @@ -2427,66 +1624,18 @@ abstract class AppLocalizations { /// **'Import failed: {error}'** String importFailed(String error); - /// Note about export functionality - /// - /// In en, this message translates to: - /// **'Creates a compressed archive (.fmtc) file that can be shared and imported on other devices.'** - String get exportNote; - - /// Note about import functionality - /// - /// In en, this message translates to: - /// **'Imports map tiles from a previously exported archive file. Tiles will be merged with existing cache.'** - String get importNote; - - /// Message when cache is empty - /// - /// In en, this message translates to: - /// **'No tiles available to export'** - String get noTilesToExport; - - /// Information about archive contents - /// - /// In en, this message translates to: - /// **'Archive contains {count} stores'** - String archiveContainsStores(int count); - - /// Label for vector tile type - /// - /// In en, this message translates to: - /// **'Vector Tiles'** - String get vectorTiles; - - /// Label for vector tile schema - /// - /// In en, this message translates to: - /// **'Schema'** - String get schema; - /// Unknown value label /// /// In en, this message translates to: /// **'Unknown'** String get unknown; - /// Label for geographic bounds - /// - /// In en, this message translates to: - /// **'Bounds'** - String get bounds; - /// Section header for online map layers /// /// In en, this message translates to: /// **'Online Layers'** String get onlineLayers; - /// Section header for offline map layers (MBTiles) - /// - /// In en, this message translates to: - /// **'Offline Layers'** - String get offlineLayers; - /// Location trail title /// /// In en, this message translates to: @@ -2559,72 +1708,6 @@ abstract class AppLocalizations { /// **'Trail Controls'** String get trailControls; - /// Button label to export trail to GPX file - /// - /// In en, this message translates to: - /// **'Export Trail to GPX'** - String get exportTrailToGpx; - - /// Button label to import trail from GPX file - /// - /// In en, this message translates to: - /// **'Import Trail from GPX'** - String get importTrailFromGpx; - - /// Success message when trail is exported - /// - /// In en, this message translates to: - /// **'Trail exported successfully!'** - String get trailExportedSuccessfully; - - /// Error message when trail export fails - /// - /// In en, this message translates to: - /// **'Failed to export trail'** - String get failedToExportTrail; - - /// Error message when trail import fails - /// - /// In en, this message translates to: - /// **'Failed to import trail: {error}'** - String failedToImportTrail(String error); - - /// Import trail dialog title - /// - /// In en, this message translates to: - /// **'Import Trail'** - String get importTrail; - - /// Import trail confirmation dialog content - /// - /// In en, this message translates to: - /// **'Import trail with {pointCount} points?\n\nYou can replace your current trail or view it alongside.'** - String importTrailQuestion(int pointCount); - - /// Button to import trail alongside current trail - /// - /// In en, this message translates to: - /// **'View Alongside'** - String get viewAlongside; - - /// Button to replace current trail with imported trail - /// - /// In en, this message translates to: - /// **'Replace Current'** - String get replaceCurrent; - - /// Success message when trail is imported - /// - /// In en, this message translates to: - /// **'Trail imported! ({pointCount} points)'** - String trailImported(int pointCount); - - /// Success message when trail is replaced - /// - /// In en, this message translates to: - /// **'Trail replaced! ({pointCount} points)'** - String trailReplaced(int pointCount); - /// Contact trails section header /// /// In en, this message translates to: @@ -3093,12 +2176,6 @@ abstract class AppLocalizations { /// **'No rooms found'** String get noRoomsFound; - /// Message when no contacts or rooms exist - /// - /// In en, this message translates to: - /// **'No contacts or rooms available'** - String get noContactsOrRoomsAvailable; - /// Message when no recipients exist (contacts, rooms, or channels) /// /// In en, this message translates to: @@ -3111,12 +2188,6 @@ abstract class AppLocalizations { /// **'No channels found'** String get noChannelsFound; - /// Info message when only public channel is available - /// - /// In en, this message translates to: - /// **'Messages will be sent to public channel'** - String get messagesWillBeSentToPublicChannel; - /// Notification title for new message /// /// In en, this message translates to: @@ -3459,12 +2530,6 @@ abstract class AppLocalizations { /// **'Rectangle Drawing'** String get rectangleDrawing; - /// Success message when coordinates are copied - /// - /// In en, this message translates to: - /// **'Coordinates copied to clipboard'** - String get coordinatesCopiedToClipboard; - /// Label for manual coordinate input toggle /// /// In en, this message translates to: @@ -3489,48 +2554,12 @@ abstract class AppLocalizations { /// **'Longitude'** String get longitudeLabel; - /// Error message for invalid latitude value - /// - /// In en, this message translates to: - /// **'Invalid latitude (-90 to 90)'** - String get invalidLatitude; - - /// Error message for invalid longitude value - /// - /// In en, this message translates to: - /// **'Invalid longitude (-180 to 180)'** - String get invalidLongitude; - /// Example coordinate format hint /// /// In en, this message translates to: /// **'Example: 46.0569, 14.5058'** String get exampleCoordinates; - /// Label for shared drawing notifications - /// - /// In en, this message translates to: - /// **'Map Drawing'** - String get drawingShared; - - /// Success message when drawing is hidden - /// - /// In en, this message translates to: - /// **'Drawing hidden from map'** - String get drawingHidden; - - /// Message showing how many drawings were already shared - /// - /// In en, this message translates to: - /// **'{count, plural, =1{1 already shared} other{{count} already shared}}'** - String alreadyShared(int count); - - /// Success message after sharing new drawings - /// - /// In en, this message translates to: - /// **'Shared {count} new drawing{plural}'** - String newDrawingsShared(int count, String plural); - /// Title for share single drawing dialog /// /// In en, this message translates to: @@ -3633,18 +2662,6 @@ abstract class AppLocalizations { /// **'Forest Roads'** String get forestRoads; - /// Tooltip for cadastral parcels overlay toggle button - /// - /// In en, this message translates to: - /// **'Show Cadastral Parcels'** - String get showCadastralParcels; - - /// Tooltip for forest roads overlay toggle button - /// - /// In en, this message translates to: - /// **'Show Forest Roads'** - String get showForestRoads; - /// Section header for WMS overlay layers in layer selector /// /// In en, this message translates to: @@ -3831,12 +2848,6 @@ abstract class AppLocalizations { /// **'Failed to delete channel: {error}'** String channelDeletionFailed(String error); - /// Error when no channel slots available - /// - /// In en, this message translates to: - /// **'All channel slots are in use (maximum 39 custom channels)'** - String get allChannelSlotsInUse; - /// Button text for creating a channel /// /// In en, this message translates to: @@ -3909,30 +2920,6 @@ abstract class AppLocalizations { /// **'Works completely offline - no internet required'** String get wizardConnectingFeature3; - /// Wizard simple mode page title - /// - /// In en, this message translates to: - /// **'Simple Mode'** - String get wizardSimpleModeTitle; - - /// Wizard simple mode page description - /// - /// In en, this message translates to: - /// **'New to mesh networking? Enable Simple Mode for a streamlined interface with essential features only.'** - String get wizardSimpleModeDescription; - - /// Wizard simple mode feature 1 - /// - /// In en, this message translates to: - /// **'Beginner-friendly interface with core functions'** - String get wizardSimpleModeFeature1; - - /// Wizard simple mode feature 2 - /// - /// In en, this message translates to: - /// **'Switch to Advanced Mode anytime in Settings'** - String get wizardSimpleModeFeature2; - /// Wizard channel page title /// /// In en, this message translates to: diff --git a/lib/l10n/app_localizations_de.dart b/lib/l10n/app_localizations_de.dart index e4f6555..82a1710 100644 --- a/lib/l10n/app_localizations_de.dart +++ b/lib/l10n/app_localizations_de.dart @@ -29,9 +29,6 @@ class AppLocalizationsDe extends AppLocalizations { @override String get disconnect => 'Trennen'; - @override - String get scanningForDevices => 'Suche nach Geräten...'; - @override String get noDevicesFound => 'Keine Geräte gefunden'; @@ -63,27 +60,14 @@ class AppLocalizationsDe extends AppLocalizations { 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'; @@ -130,13 +114,6 @@ class AppLocalizationsDe extends AppLocalizations { 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 disableMap => 'Karte deaktivieren'; @@ -150,74 +127,6 @@ class AppLocalizationsDe extends AppLocalizations { @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'; @@ -253,12 +162,6 @@ class AppLocalizationsDe extends AppLocalizations { @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'; @@ -335,9 +238,6 @@ class AppLocalizationsDe extends AppLocalizations { @override String get refresh => 'Aktualisieren'; - @override - String get sendDirectMessage => 'Senden'; - @override String get resetPath => 'Pfad zurücksetzen (Umleitung)'; @@ -457,21 +357,6 @@ class AppLocalizationsDe extends AppLocalizations { 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'; @@ -493,9 +378,6 @@ class AppLocalizationsDe extends AppLocalizations { @override String get clearAll => 'Alle löschen'; - @override - String get noLocalDrawings => 'Keine lokalen Zeichnungen zum Teilen'; - @override String get publicChannel => 'Öffentlicher Kanal'; @@ -505,37 +387,9 @@ class AppLocalizationsDe extends AppLocalizations { @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...'; @@ -565,9 +419,6 @@ class AppLocalizationsDe extends AppLocalizations { @override String get location => 'Standort'; - @override - String get myLocation => 'Mein Standort'; - @override String get fromMap => 'Von Karte'; @@ -630,9 +481,6 @@ class AppLocalizationsDe extends AppLocalizations { @override String get flood => 'Flut'; - @override - String get admin => 'Admin'; - @override String get loggedIn => 'Angemeldet'; @@ -642,29 +490,11 @@ class AppLocalizationsDe extends AppLocalizations { @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'; @@ -675,16 +505,6 @@ class AppLocalizationsDe extends AppLocalizations { 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'; @@ -729,11 +549,6 @@ class AppLocalizationsDe extends AppLocalizations { @override String get telemetry => 'Telemetrie'; - @override - String requestingTelemetry(String name) { - return 'Fordere Telemetrie von $name an...'; - } - @override String get voltage => 'Spannung'; @@ -805,9 +620,6 @@ class AppLocalizationsDe extends AppLocalizations { @override String get showAll => 'Alle anzeigen'; - @override - String get nearbyContacts => 'Kontakte in der Nähe'; - @override String get locationUnavailable => 'Standort nicht verfügbar'; @@ -848,175 +660,9 @@ class AppLocalizationsDe extends AppLocalizations { @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'; @@ -1035,12 +681,6 @@ class AppLocalizationsDe extends AppLocalizations { @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'; @@ -1056,53 +696,6 @@ class AppLocalizationsDe extends AppLocalizations { @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'; @@ -1114,9 +707,6 @@ class AppLocalizationsDe extends AppLocalizations { String get cannotReplyContactNotFound => 'Antwort nicht möglich: Kontakt nicht gefunden'; - @override - String get messageDeleted => 'Nachricht gelöscht'; - @override String get copyText => 'Text kopieren'; @@ -1153,12 +743,6 @@ class AppLocalizationsDe extends AppLocalizations { @override String get sarLocationShare => 'SAR Standort'; - @override - String get locationShared => 'Standort geteilt'; - - @override - String get refreshedContacts => 'Kontakte aktualisiert'; - @override String get justNow => 'Gerade eben'; @@ -1266,80 +850,6 @@ class AppLocalizationsDe extends AppLocalizations { @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'; @@ -1350,40 +860,12 @@ class AppLocalizationsDe extends AppLocalizations { 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'; @@ -1423,47 +905,6 @@ class AppLocalizationsDe extends AppLocalizations { @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'; @@ -1736,20 +1177,12 @@ class AppLocalizationsDe extends AppLocalizations { @override String get noRoomsFound => 'Keine Räume gefunden'; - @override - String get noContactsOrRoomsAvailable => - 'Keine Kontakte oder Räume verfügbar'; - @override String get noRecipientsAvailable => 'Keine Empfänger verfügbar'; @override String get noChannelsFound => 'Keine Kanäle gefunden'; - @override - String get messagesWillBeSentToPublicChannel => - 'Nachrichten werden an öffentlichen Kanal gesendet'; - @override String get newMessage => 'Neue Nachricht'; @@ -1932,10 +1365,6 @@ class AppLocalizationsDe extends AppLocalizations { @override String get rectangleDrawing => 'Rechteck'; - @override - String get coordinatesCopiedToClipboard => - 'Koordinaten in Zwischenablage kopiert'; - @override String get manualCoordinates => 'Manuelle Koordinaten'; @@ -1948,31 +1377,9 @@ class AppLocalizationsDe extends AppLocalizations { @override String get longitudeLabel => 'Längengrad'; - @override - String get invalidLatitude => 'Ungültiger Breitengrad (-90 bis 90)'; - - @override - String get invalidLongitude => 'Ungültiger Längengrad (-180 bis 180)'; - @override String get exampleCoordinates => 'Beispiel: 46.0569, 14.5058'; - @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'; @@ -2028,12 +1435,6 @@ class AppLocalizationsDe extends AppLocalizations { @override String get forestRoads => 'Waldwege'; - @override - String get showCadastralParcels => 'Katasterparzellen anzeigen'; - - @override - String get showForestRoads => 'Waldwege anzeigen'; - @override String get wmsOverlays => 'WMS Überlagerungen'; @@ -2138,10 +1539,6 @@ class AppLocalizationsDe extends AppLocalizations { return 'Kanal konnte nicht gelöscht werden: $error'; } - @override - String get allChannelSlotsInUse => - 'Alle Kanalplätze sind belegt (maximal 39 benutzerdefinierte Kanäle)'; - @override String get createChannel => 'Kanal erstellen'; @@ -2183,21 +1580,6 @@ class AppLocalizationsDe extends AppLocalizations { 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'; diff --git a/lib/l10n/app_localizations_el.dart b/lib/l10n/app_localizations_el.dart index 49e66bd..53abf09 100644 --- a/lib/l10n/app_localizations_el.dart +++ b/lib/l10n/app_localizations_el.dart @@ -29,9 +29,6 @@ class AppLocalizationsEl extends AppLocalizations { @override String get disconnect => 'Disconnect'; - @override - String get scanningForDevices => 'Scanning for devices...'; - @override String get noDevicesFound => 'No devices found'; @@ -62,27 +59,14 @@ class AppLocalizationsEl extends AppLocalizations { @override String get failedToGetGpsLocation => 'Failed to get GPS location'; - @override - String advertisedAtLocation(String latitude, String longitude) { - return 'Advertised at $latitude, $longitude'; - } - @override String failedToAdvertise(String error) { return 'Failed to advertise: $error'; } - @override - String reconnecting(int attempt, int max) { - return 'Reconnecting... ($attempt/$max)'; - } - @override String get cancelReconnection => 'Cancel reconnection'; - @override - String get mapManagement => 'Map Management'; - @override String get general => 'General'; @@ -129,13 +113,6 @@ class AppLocalizationsEl extends AppLocalizations { String get displayPacketActivity => 'Display packet activity indicators in top bar'; - @override - String get simpleMode => 'Simple Mode'; - - @override - String get simpleModeDescription => - 'Hide non-essential information in messages and contacts'; - @override String get disableMap => 'Disable Map'; @@ -149,74 +126,6 @@ class AppLocalizationsEl extends AppLocalizations { @override String get chooseLanguage => 'Choose Language'; - @override - String get english => 'English'; - - @override - String get slovenian => 'Slovenian'; - - @override - String get croatian => 'Croatian'; - - @override - String get german => 'German'; - - @override - String get spanish => 'Spanish'; - - @override - String get french => 'French'; - - @override - String get italian => 'Italian'; - - @override - String get locationBroadcasting => 'Location Broadcasting'; - - @override - String get autoLocationTracking => 'Auto Location Tracking'; - - @override - String get automaticallyBroadcastPosition => - 'Automatically broadcast position updates'; - - @override - String get configureTracking => 'Configure Tracking'; - - @override - String get distanceAndTimeThresholds => 'Distance and time thresholds'; - - @override - String get locationTrackingConfiguration => 'Location Tracking Configuration'; - - @override - String get configureWhenLocationBroadcasts => - 'Configure when location broadcasts are sent to the mesh network'; - - @override - String get minimumDistance => 'Minimum Distance'; - - @override - String broadcastAfterMoving(String distance) { - return 'Broadcast only after moving $distance meters'; - } - - @override - String get maximumDistance => 'Maximum Distance'; - - @override - String alwaysBroadcastAfterMoving(String distance) { - return 'Always broadcast after moving $distance meters'; - } - - @override - String get minimumTimeInterval => 'Minimum Time Interval'; - - @override - String alwaysBroadcastEvery(String duration) { - return 'Always broadcast every $duration'; - } - @override String get save => 'Save'; @@ -252,12 +161,6 @@ class AppLocalizationsEl extends AppLocalizations { @override String get moreInfo => 'More Info'; - @override - String get learnMoreAbout => 'Learn more about MeshCore SAR'; - - @override - String get developer => 'Developer'; - @override String get packageName => 'Package Name'; @@ -333,9 +236,6 @@ class AppLocalizationsEl extends AppLocalizations { @override String get refresh => 'Refresh'; - @override - String get sendDirectMessage => 'Send'; - @override String get resetPath => 'Reset Path (Re-route)'; @@ -455,21 +355,6 @@ class AppLocalizationsEl extends AppLocalizations { return 'Share $count Drawing$plural'; } - @override - String sentDrawingsToRoom(int count, String plural, String roomName) { - return 'Sent $count map drawing$plural to $roomName'; - } - - @override - String sharedDrawingsToRoom( - int success, - int total, - String plural, - String roomName, - ) { - return 'Shared $success/$total drawing$plural to $roomName'; - } - @override String get showReceivedDrawings => 'Show Received Drawings'; @@ -491,9 +376,6 @@ class AppLocalizationsEl extends AppLocalizations { @override String get clearAll => 'Clear All'; - @override - String get noLocalDrawings => 'No local drawings to share'; - @override String get publicChannel => 'Public Channel'; @@ -503,37 +385,9 @@ class AppLocalizationsEl extends AppLocalizations { @override String get storedPermanently => 'Stored permanently in room'; - @override - String drawingsSentToPublicChannel(int count, String plural) { - return 'Sent $count map drawing$plural to Public Channel'; - } - - @override - String drawingsSharedToPublicChannel(int success, int total) { - return 'Shared $success/$total drawings to Public Channel'; - } - @override String get notConnectedToDevice => 'Not connected to device'; - @override - String get directMessage => 'Direct Message'; - - @override - String directMessageSentTo(String contactName) { - return 'Direct message sent to $contactName'; - } - - @override - String failedToSend(String error) { - return 'Failed to send: $error'; - } - - @override - String directMessageInfo(String contactName) { - return 'This message will be sent directly to $contactName. It will also appear in the main messages feed.'; - } - @override String get typeYourMessage => 'Type your message...'; @@ -563,9 +417,6 @@ class AppLocalizationsEl extends AppLocalizations { @override String get location => 'Location'; - @override - String get myLocation => 'My Location'; - @override String get fromMap => 'From Map'; @@ -627,9 +478,6 @@ class AppLocalizationsEl extends AppLocalizations { @override String get flood => 'Flood'; - @override - String get admin => 'Admin'; - @override String get loggedIn => 'Logged In'; @@ -639,29 +487,11 @@ class AppLocalizationsEl extends AppLocalizations { @override String get distance => 'Distance'; - @override - String pingingDirect(String name) { - return 'Pinging $name (direct via path)...'; - } - - @override - String pingingFlood(String name) { - return 'Pinging $name (flooding - no path)...'; - } - @override String directPingTimeout(String name) { return 'Direct ping timeout - retrying $name with flooding...'; } - @override - String pingSuccessful(String name, String fallback) { - return 'Ping successful to $name$fallback'; - } - - @override - String get viaFloodingFallback => ' (via flooding fallback)'; - @override String pingFailed(String name) { return 'Ping failed to $name - no response received'; @@ -672,16 +502,6 @@ class AppLocalizationsEl extends AppLocalizations { return 'Are you sure you want to delete \"$name\"?\n\nThis will remove the contact from both the app and the companion radio device.'; } - @override - String removingContact(String name) { - return 'Removing $name...'; - } - - @override - String contactRemoved(String name) { - return 'Contact \"$name\" removed'; - } - @override String failedToRemoveContact(String error) { return 'Failed to remove contact: $error'; @@ -726,11 +546,6 @@ class AppLocalizationsEl extends AppLocalizations { @override String get telemetry => 'Telemetry'; - @override - String requestingTelemetry(String name) { - return 'Requesting telemetry from $name...'; - } - @override String get voltage => 'Voltage'; @@ -802,9 +617,6 @@ class AppLocalizationsEl extends AppLocalizations { @override String get showAll => 'Show All'; - @override - String get nearbyContacts => 'Nearby Contacts'; - @override String get locationUnavailable => 'Location unavailable'; @@ -845,173 +657,9 @@ class AppLocalizationsEl extends AppLocalizations { @override String get channels => 'Channels'; - @override - String get cacheStatistics => 'Cache Statistics'; - - @override - String get totalTiles => 'Total Tiles'; - - @override - String get cacheSize => 'Cache Size'; - - @override - String get storeName => 'Store Name'; - - @override - String get noCacheStatistics => 'No cache statistics available'; - - @override - String get downloadRegion => 'Download Region'; - - @override - String get mapLayer => 'Map Layer'; - - @override - String get regionBounds => 'Region Bounds'; - - @override - String get north => 'North'; - - @override - String get south => 'South'; - - @override - String get east => 'East'; - - @override - String get west => 'West'; - - @override - String get zoomLevels => 'Zoom Levels'; - - @override - String minZoom(int zoom) { - return 'Min: $zoom'; - } - - @override - String maxZoom(int zoom) { - return 'Max: $zoom'; - } - - @override - String get downloadingDots => 'Downloading...'; - - @override - String get cancelDownload => 'Cancel Download'; - - @override - String get downloadRegionButton => 'Download Region'; - - @override - String get downloadNote => - 'Note: Large regions or high zoom levels may take significant time and storage.'; - - @override - String get cacheManagement => 'Cache Management'; - - @override - String get clearAllMaps => 'Clear All Maps'; - - @override - String get clearMapsConfirmTitle => 'Clear All Maps'; - - @override - String get clearMapsConfirmMessage => - 'Are you sure you want to delete all downloaded maps? This action cannot be undone.'; - - @override - String get mapDownloadCompleted => 'Map download completed!'; - - @override - String get cacheClearedSuccessfully => 'Cache cleared successfully!'; - - @override - String get downloadCancelled => 'Download cancelled'; - - @override - String get startingDownload => 'Starting download...'; - - @override - String get downloadingMapTiles => 'Downloading map tiles...'; - - @override - String get downloadCompletedSuccessfully => - 'Download completed successfully!'; - - @override - String get cancellingDownload => 'Cancelling download...'; - - @override - String errorLoadingStats(String error) { - return 'Error loading stats: $error'; - } - - @override - String downloadFailed(String error) { - return 'Download failed: $error'; - } - - @override - String cancelFailed(String error) { - return 'Cancel failed: $error'; - } - - @override - String clearCacheFailed(String error) { - return 'Clear cache failed: $error'; - } - - @override - String minZoomError(String error) { - return 'Min zoom: $error'; - } - - @override - String maxZoomError(String error) { - return 'Max zoom: $error'; - } - - @override - String get minZoomGreaterThanMax => - 'Minimum zoom must be less than or equal to maximum zoom'; - @override String get selectMapLayer => 'Select Map Layer'; - @override - String get mapOptions => 'Map Options'; - - @override - String get showLegend => 'Show Legend'; - - @override - String get displayMarkerTypeCounts => 'Display marker type counts'; - - @override - String get rotateMapWithHeading => 'Rotate Map with Heading'; - - @override - String get mapFollowsDirection => 'Map follows your direction when moving'; - - @override - String get resetMapRotation => 'Reset Rotation'; - - @override - String get resetMapRotationTooltip => 'Reset map to north'; - - @override - String get showMapDebugInfo => 'Show Map Debug Info'; - - @override - String get displayZoomLevelBounds => 'Display zoom level and bounds'; - - @override - String get fullscreenMode => 'Fullscreen Mode'; - - @override - String get hideUiFullMapView => 'Hide all UI controls for full map view'; - @override String get openStreetMap => 'OpenStreetMap'; @@ -1030,12 +678,6 @@ class AppLocalizationsEl extends AppLocalizations { @override String get googleTerrain => 'Google Terrain'; - @override - String get downloadVisibleArea => 'Download visible area'; - - @override - String get initializingMap => 'Initializing map...'; - @override String get dragToPosition => 'Drag to Position'; @@ -1051,50 +693,6 @@ class AppLocalizationsEl extends AppLocalizations { @override String get sarAlert => 'SAR ALERT'; - @override - String get messageSentToPublicChannel => 'Message sent to public channel'; - - @override - String get pleaseSelectRoomToSendSar => - 'Please select a room to send SAR marker'; - - @override - String failedToSendSarMarker(String error) { - return 'Failed to send SAR marker: $error'; - } - - @override - String sarMarkerSentTo(String roomName) { - return 'SAR marker sent to $roomName'; - } - - @override - String get notConnectedCannotSync => 'Not connected - cannot sync messages'; - - @override - String syncedMessageCount(int count) { - return 'Synced $count message(s)'; - } - - @override - String get noNewMessages => 'No new messages'; - - @override - String syncFailed(String error) { - return 'Sync failed: $error'; - } - - @override - String get failedToResendMessage => 'Failed to resend message'; - - @override - String get retryingMessage => 'Retrying message...'; - - @override - String retryFailed(String error) { - return 'Retry failed: $error'; - } - @override String get textCopiedToClipboard => 'Text copied to clipboard'; @@ -1105,9 +703,6 @@ class AppLocalizationsEl extends AppLocalizations { @override String get cannotReplyContactNotFound => 'Cannot reply: contact not found'; - @override - String get messageDeleted => 'Message deleted'; - @override String get copyText => 'Copy text'; @@ -1143,12 +738,6 @@ class AppLocalizationsEl extends AppLocalizations { @override String get sarLocationShare => 'SAR Location'; - @override - String get locationShared => 'Location shared'; - - @override - String get refreshedContacts => 'Refreshed contacts'; - @override String get justNow => 'Just now'; @@ -1256,79 +845,6 @@ class AppLocalizationsEl extends AppLocalizations { @override String get you => 'You'; - @override - String get offlineVectorMaps => 'Offline Vector Maps'; - - @override - String get offlineVectorMapsDescription => - 'Import and manage offline vector map tiles (MBTiles format) for use without internet connection'; - - @override - String get importMbtiles => 'Import MBTiles File'; - - @override - String get importMbtilesNote => - 'Supports MBTiles files with vector tiles (PBF/MVT format). Geofabrik extracts work great!'; - - @override - String get noMbtilesFiles => 'No offline vector maps found'; - - @override - String get mbtilesImportedSuccessfully => - 'MBTiles file imported successfully'; - - @override - String get failedToImportMbtiles => 'Failed to import MBTiles file'; - - @override - String get deleteMbtilesConfirmTitle => 'Delete Offline Map'; - - @override - String deleteMbtilesConfirmMessage(String name) { - return 'Are you sure you want to delete \"$name\"? This will permanently remove the offline map.'; - } - - @override - String get mbtilesDeletedSuccessfully => 'Offline map deleted successfully'; - - @override - String get failedToDeleteMbtiles => 'Failed to delete offline map'; - - @override - String get importExportCachedTiles => 'Import/Export Cached Tiles'; - - @override - String get importExportDescription => - 'Backup, share, and restore downloaded map tiles between devices'; - - @override - String get exportTilesToFile => 'Export Tiles to File'; - - @override - String get importTilesFromFile => 'Import Tiles from File'; - - @override - String get selectExportLocation => 'Select Export Location'; - - @override - String get selectImportFile => 'Select Tile Archive'; - - @override - String get exportingTiles => 'Exporting tiles...'; - - @override - String get importingTiles => 'Importing tiles...'; - - @override - String exportSuccess(int count) { - return 'Exported $count tiles successfully'; - } - - @override - String importSuccess(int count) { - return 'Imported $count stores successfully'; - } - @override String exportFailed(String error) { return 'Export failed: $error'; @@ -1339,40 +855,12 @@ class AppLocalizationsEl extends AppLocalizations { return 'Import failed: $error'; } - @override - String get exportNote => - 'Creates a compressed archive (.fmtc) file that can be shared and imported on other devices.'; - - @override - String get importNote => - 'Imports map tiles from a previously exported archive file. Tiles will be merged with existing cache.'; - - @override - String get noTilesToExport => 'No tiles available to export'; - - @override - String archiveContainsStores(int count) { - return 'Archive contains $count stores'; - } - - @override - String get vectorTiles => 'Vector Tiles'; - - @override - String get schema => 'Schema'; - @override String get unknown => 'Unknown'; - @override - String get bounds => 'Bounds'; - @override String get onlineLayers => 'Online Layers'; - @override - String get offlineLayers => 'Offline Layers'; - @override String get locationTrail => 'Location Trail'; @@ -1411,47 +899,6 @@ class AppLocalizationsEl extends AppLocalizations { @override String get trailControls => 'Trail Controls'; - @override - String get exportTrailToGpx => 'Export Trail to GPX'; - - @override - String get importTrailFromGpx => 'Import Trail from GPX'; - - @override - String get trailExportedSuccessfully => 'Trail exported successfully!'; - - @override - String get failedToExportTrail => 'Failed to export trail'; - - @override - String failedToImportTrail(String error) { - return 'Failed to import trail: $error'; - } - - @override - String get importTrail => 'Import Trail'; - - @override - String importTrailQuestion(int pointCount) { - return 'Import trail with $pointCount points?\n\nYou can replace your current trail or view it alongside.'; - } - - @override - String get viewAlongside => 'View Alongside'; - - @override - String get replaceCurrent => 'Replace Current'; - - @override - String trailImported(int pointCount) { - return 'Trail imported! ($pointCount points)'; - } - - @override - String trailReplaced(int pointCount) { - return 'Trail replaced! ($pointCount points)'; - } - @override String get contactTrails => 'Contact Trails'; @@ -1721,19 +1168,12 @@ class AppLocalizationsEl extends AppLocalizations { @override String get noRoomsFound => 'No rooms found'; - @override - String get noContactsOrRoomsAvailable => 'No contacts or rooms available'; - @override String get noRecipientsAvailable => 'No recipients available'; @override String get noChannelsFound => 'No channels found'; - @override - String get messagesWillBeSentToPublicChannel => - 'Messages will be sent to public channel'; - @override String get newMessage => 'New message'; @@ -1908,9 +1348,6 @@ class AppLocalizationsEl extends AppLocalizations { @override String get rectangleDrawing => 'Rectangle Drawing'; - @override - String get coordinatesCopiedToClipboard => 'Coordinates copied to clipboard'; - @override String get manualCoordinates => 'Manual Coordinates'; @@ -1923,37 +1360,9 @@ class AppLocalizationsEl extends AppLocalizations { @override String get longitudeLabel => 'Longitude'; - @override - String get invalidLatitude => 'Invalid latitude (-90 to 90)'; - - @override - String get invalidLongitude => 'Invalid longitude (-180 to 180)'; - @override String get exampleCoordinates => 'Example: 46.0569, 14.5058'; - @override - String get drawingShared => 'Map Drawing'; - - @override - String get drawingHidden => 'Drawing hidden from map'; - - @override - String alreadyShared(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count already shared', - one: '1 already shared', - ); - return '$_temp0'; - } - - @override - String newDrawingsShared(int count, String plural) { - return 'Shared $count new drawing$plural'; - } - @override String get shareDrawing => 'Share Drawing'; @@ -2008,12 +1417,6 @@ class AppLocalizationsEl extends AppLocalizations { @override String get forestRoads => 'Forest Roads'; - @override - String get showCadastralParcels => 'Show Cadastral Parcels'; - - @override - String get showForestRoads => 'Show Forest Roads'; - @override String get wmsOverlays => 'WMS Overlays'; @@ -2117,10 +1520,6 @@ class AppLocalizationsEl extends AppLocalizations { return 'Failed to delete channel: $error'; } - @override - String get allChannelSlotsInUse => - 'All channel slots are in use (maximum 39 custom channels)'; - @override String get createChannel => 'Create Channel'; @@ -2160,21 +1559,6 @@ class AppLocalizationsEl extends AppLocalizations { String get wizardConnectingFeature3 => 'Works completely offline - no internet required'; - @override - String get wizardSimpleModeTitle => 'Simple Mode'; - - @override - String get wizardSimpleModeDescription => - 'New to mesh networking? Enable Simple Mode for a streamlined interface with essential features only.'; - - @override - String get wizardSimpleModeFeature1 => - 'Beginner-friendly interface with core functions'; - - @override - String get wizardSimpleModeFeature2 => - 'Switch to Advanced Mode anytime in Settings'; - @override String get wizardChannelTitle => 'Channels'; diff --git a/lib/l10n/app_localizations_en.dart b/lib/l10n/app_localizations_en.dart index 04548db..cfaa9cc 100644 --- a/lib/l10n/app_localizations_en.dart +++ b/lib/l10n/app_localizations_en.dart @@ -29,9 +29,6 @@ class AppLocalizationsEn extends AppLocalizations { @override String get disconnect => 'Disconnect'; - @override - String get scanningForDevices => 'Scanning for devices...'; - @override String get noDevicesFound => 'No devices found'; @@ -62,27 +59,14 @@ class AppLocalizationsEn extends AppLocalizations { @override String get failedToGetGpsLocation => 'Failed to get GPS location'; - @override - String advertisedAtLocation(String latitude, String longitude) { - return 'Advertised at $latitude, $longitude'; - } - @override String failedToAdvertise(String error) { return 'Failed to advertise: $error'; } - @override - String reconnecting(int attempt, int max) { - return 'Reconnecting... ($attempt/$max)'; - } - @override String get cancelReconnection => 'Cancel reconnection'; - @override - String get mapManagement => 'Map Management'; - @override String get general => 'General'; @@ -129,13 +113,6 @@ class AppLocalizationsEn extends AppLocalizations { String get displayPacketActivity => 'Display packet activity indicators in top bar'; - @override - String get simpleMode => 'Simple Mode'; - - @override - String get simpleModeDescription => - 'Hide non-essential information in messages and contacts'; - @override String get disableMap => 'Disable Map'; @@ -149,74 +126,6 @@ class AppLocalizationsEn extends AppLocalizations { @override String get chooseLanguage => 'Choose Language'; - @override - String get english => 'English'; - - @override - String get slovenian => 'Slovenian'; - - @override - String get croatian => 'Croatian'; - - @override - String get german => 'German'; - - @override - String get spanish => 'Spanish'; - - @override - String get french => 'French'; - - @override - String get italian => 'Italian'; - - @override - String get locationBroadcasting => 'Location Broadcasting'; - - @override - String get autoLocationTracking => 'Auto Location Tracking'; - - @override - String get automaticallyBroadcastPosition => - 'Automatically broadcast position updates'; - - @override - String get configureTracking => 'Configure Tracking'; - - @override - String get distanceAndTimeThresholds => 'Distance and time thresholds'; - - @override - String get locationTrackingConfiguration => 'Location Tracking Configuration'; - - @override - String get configureWhenLocationBroadcasts => - 'Configure when location broadcasts are sent to the mesh network'; - - @override - String get minimumDistance => 'Minimum Distance'; - - @override - String broadcastAfterMoving(String distance) { - return 'Broadcast only after moving $distance meters'; - } - - @override - String get maximumDistance => 'Maximum Distance'; - - @override - String alwaysBroadcastAfterMoving(String distance) { - return 'Always broadcast after moving $distance meters'; - } - - @override - String get minimumTimeInterval => 'Minimum Time Interval'; - - @override - String alwaysBroadcastEvery(String duration) { - return 'Always broadcast every $duration'; - } - @override String get save => 'Save'; @@ -252,12 +161,6 @@ class AppLocalizationsEn extends AppLocalizations { @override String get moreInfo => 'More Info'; - @override - String get learnMoreAbout => 'Learn more about MeshCore SAR'; - - @override - String get developer => 'Developer'; - @override String get packageName => 'Package Name'; @@ -333,9 +236,6 @@ class AppLocalizationsEn extends AppLocalizations { @override String get refresh => 'Refresh'; - @override - String get sendDirectMessage => 'Send'; - @override String get resetPath => 'Reset Path (Re-route)'; @@ -455,21 +355,6 @@ class AppLocalizationsEn extends AppLocalizations { return 'Share $count Drawing$plural'; } - @override - String sentDrawingsToRoom(int count, String plural, String roomName) { - return 'Sent $count map drawing$plural to $roomName'; - } - - @override - String sharedDrawingsToRoom( - int success, - int total, - String plural, - String roomName, - ) { - return 'Shared $success/$total drawing$plural to $roomName'; - } - @override String get showReceivedDrawings => 'Show Received Drawings'; @@ -491,9 +376,6 @@ class AppLocalizationsEn extends AppLocalizations { @override String get clearAll => 'Clear All'; - @override - String get noLocalDrawings => 'No local drawings to share'; - @override String get publicChannel => 'Public Channel'; @@ -503,37 +385,9 @@ class AppLocalizationsEn extends AppLocalizations { @override String get storedPermanently => 'Stored permanently in room'; - @override - String drawingsSentToPublicChannel(int count, String plural) { - return 'Sent $count map drawing$plural to Public Channel'; - } - - @override - String drawingsSharedToPublicChannel(int success, int total) { - return 'Shared $success/$total drawings to Public Channel'; - } - @override String get notConnectedToDevice => 'Not connected to device'; - @override - String get directMessage => 'Direct Message'; - - @override - String directMessageSentTo(String contactName) { - return 'Direct message sent to $contactName'; - } - - @override - String failedToSend(String error) { - return 'Failed to send: $error'; - } - - @override - String directMessageInfo(String contactName) { - return 'This message will be sent directly to $contactName. It will also appear in the main messages feed.'; - } - @override String get typeYourMessage => 'Type your message...'; @@ -563,9 +417,6 @@ class AppLocalizationsEn extends AppLocalizations { @override String get location => 'Location'; - @override - String get myLocation => 'My Location'; - @override String get fromMap => 'From Map'; @@ -627,9 +478,6 @@ class AppLocalizationsEn extends AppLocalizations { @override String get flood => 'Flood'; - @override - String get admin => 'Admin'; - @override String get loggedIn => 'Logged In'; @@ -639,29 +487,11 @@ class AppLocalizationsEn extends AppLocalizations { @override String get distance => 'Distance'; - @override - String pingingDirect(String name) { - return 'Pinging $name (direct via path)...'; - } - - @override - String pingingFlood(String name) { - return 'Pinging $name (flooding - no path)...'; - } - @override String directPingTimeout(String name) { return 'Direct ping timeout - retrying $name with flooding...'; } - @override - String pingSuccessful(String name, String fallback) { - return 'Ping successful to $name$fallback'; - } - - @override - String get viaFloodingFallback => ' (via flooding fallback)'; - @override String pingFailed(String name) { return 'Ping failed to $name - no response received'; @@ -672,16 +502,6 @@ class AppLocalizationsEn extends AppLocalizations { return 'Are you sure you want to delete \"$name\"?\n\nThis will remove the contact from both the app and the companion radio device.'; } - @override - String removingContact(String name) { - return 'Removing $name...'; - } - - @override - String contactRemoved(String name) { - return 'Contact \"$name\" removed'; - } - @override String failedToRemoveContact(String error) { return 'Failed to remove contact: $error'; @@ -726,11 +546,6 @@ class AppLocalizationsEn extends AppLocalizations { @override String get telemetry => 'Telemetry'; - @override - String requestingTelemetry(String name) { - return 'Requesting telemetry from $name...'; - } - @override String get voltage => 'Voltage'; @@ -802,9 +617,6 @@ class AppLocalizationsEn extends AppLocalizations { @override String get showAll => 'Show All'; - @override - String get nearbyContacts => 'Nearby Contacts'; - @override String get locationUnavailable => 'Location unavailable'; @@ -845,173 +657,9 @@ class AppLocalizationsEn extends AppLocalizations { @override String get channels => 'Channels'; - @override - String get cacheStatistics => 'Cache Statistics'; - - @override - String get totalTiles => 'Total Tiles'; - - @override - String get cacheSize => 'Cache Size'; - - @override - String get storeName => 'Store Name'; - - @override - String get noCacheStatistics => 'No cache statistics available'; - - @override - String get downloadRegion => 'Download Region'; - - @override - String get mapLayer => 'Map Layer'; - - @override - String get regionBounds => 'Region Bounds'; - - @override - String get north => 'North'; - - @override - String get south => 'South'; - - @override - String get east => 'East'; - - @override - String get west => 'West'; - - @override - String get zoomLevels => 'Zoom Levels'; - - @override - String minZoom(int zoom) { - return 'Min: $zoom'; - } - - @override - String maxZoom(int zoom) { - return 'Max: $zoom'; - } - - @override - String get downloadingDots => 'Downloading...'; - - @override - String get cancelDownload => 'Cancel Download'; - - @override - String get downloadRegionButton => 'Download Region'; - - @override - String get downloadNote => - 'Note: Large regions or high zoom levels may take significant time and storage.'; - - @override - String get cacheManagement => 'Cache Management'; - - @override - String get clearAllMaps => 'Clear All Maps'; - - @override - String get clearMapsConfirmTitle => 'Clear All Maps'; - - @override - String get clearMapsConfirmMessage => - 'Are you sure you want to delete all downloaded maps? This action cannot be undone.'; - - @override - String get mapDownloadCompleted => 'Map download completed!'; - - @override - String get cacheClearedSuccessfully => 'Cache cleared successfully!'; - - @override - String get downloadCancelled => 'Download cancelled'; - - @override - String get startingDownload => 'Starting download...'; - - @override - String get downloadingMapTiles => 'Downloading map tiles...'; - - @override - String get downloadCompletedSuccessfully => - 'Download completed successfully!'; - - @override - String get cancellingDownload => 'Cancelling download...'; - - @override - String errorLoadingStats(String error) { - return 'Error loading stats: $error'; - } - - @override - String downloadFailed(String error) { - return 'Download failed: $error'; - } - - @override - String cancelFailed(String error) { - return 'Cancel failed: $error'; - } - - @override - String clearCacheFailed(String error) { - return 'Clear cache failed: $error'; - } - - @override - String minZoomError(String error) { - return 'Min zoom: $error'; - } - - @override - String maxZoomError(String error) { - return 'Max zoom: $error'; - } - - @override - String get minZoomGreaterThanMax => - 'Minimum zoom must be less than or equal to maximum zoom'; - @override String get selectMapLayer => 'Select Map Layer'; - @override - String get mapOptions => 'Map Options'; - - @override - String get showLegend => 'Show Legend'; - - @override - String get displayMarkerTypeCounts => 'Display marker type counts'; - - @override - String get rotateMapWithHeading => 'Rotate Map with Heading'; - - @override - String get mapFollowsDirection => 'Map follows your direction when moving'; - - @override - String get resetMapRotation => 'Reset Rotation'; - - @override - String get resetMapRotationTooltip => 'Reset map to north'; - - @override - String get showMapDebugInfo => 'Show Map Debug Info'; - - @override - String get displayZoomLevelBounds => 'Display zoom level and bounds'; - - @override - String get fullscreenMode => 'Fullscreen Mode'; - - @override - String get hideUiFullMapView => 'Hide all UI controls for full map view'; - @override String get openStreetMap => 'OpenStreetMap'; @@ -1030,12 +678,6 @@ class AppLocalizationsEn extends AppLocalizations { @override String get googleTerrain => 'Google Terrain'; - @override - String get downloadVisibleArea => 'Download visible area'; - - @override - String get initializingMap => 'Initializing map...'; - @override String get dragToPosition => 'Drag to Position'; @@ -1051,50 +693,6 @@ class AppLocalizationsEn extends AppLocalizations { @override String get sarAlert => 'SAR ALERT'; - @override - String get messageSentToPublicChannel => 'Message sent to public channel'; - - @override - String get pleaseSelectRoomToSendSar => - 'Please select a room to send SAR marker'; - - @override - String failedToSendSarMarker(String error) { - return 'Failed to send SAR marker: $error'; - } - - @override - String sarMarkerSentTo(String roomName) { - return 'SAR marker sent to $roomName'; - } - - @override - String get notConnectedCannotSync => 'Not connected - cannot sync messages'; - - @override - String syncedMessageCount(int count) { - return 'Synced $count message(s)'; - } - - @override - String get noNewMessages => 'No new messages'; - - @override - String syncFailed(String error) { - return 'Sync failed: $error'; - } - - @override - String get failedToResendMessage => 'Failed to resend message'; - - @override - String get retryingMessage => 'Retrying message...'; - - @override - String retryFailed(String error) { - return 'Retry failed: $error'; - } - @override String get textCopiedToClipboard => 'Text copied to clipboard'; @@ -1105,9 +703,6 @@ class AppLocalizationsEn extends AppLocalizations { @override String get cannotReplyContactNotFound => 'Cannot reply: contact not found'; - @override - String get messageDeleted => 'Message deleted'; - @override String get copyText => 'Copy text'; @@ -1143,12 +738,6 @@ class AppLocalizationsEn extends AppLocalizations { @override String get sarLocationShare => 'SAR Location'; - @override - String get locationShared => 'Location shared'; - - @override - String get refreshedContacts => 'Refreshed contacts'; - @override String get justNow => 'Just now'; @@ -1256,79 +845,6 @@ class AppLocalizationsEn extends AppLocalizations { @override String get you => 'You'; - @override - String get offlineVectorMaps => 'Offline Vector Maps'; - - @override - String get offlineVectorMapsDescription => - 'Import and manage offline vector map tiles (MBTiles format) for use without internet connection'; - - @override - String get importMbtiles => 'Import MBTiles File'; - - @override - String get importMbtilesNote => - 'Supports MBTiles files with vector tiles (PBF/MVT format). Geofabrik extracts work great!'; - - @override - String get noMbtilesFiles => 'No offline vector maps found'; - - @override - String get mbtilesImportedSuccessfully => - 'MBTiles file imported successfully'; - - @override - String get failedToImportMbtiles => 'Failed to import MBTiles file'; - - @override - String get deleteMbtilesConfirmTitle => 'Delete Offline Map'; - - @override - String deleteMbtilesConfirmMessage(String name) { - return 'Are you sure you want to delete \"$name\"? This will permanently remove the offline map.'; - } - - @override - String get mbtilesDeletedSuccessfully => 'Offline map deleted successfully'; - - @override - String get failedToDeleteMbtiles => 'Failed to delete offline map'; - - @override - String get importExportCachedTiles => 'Import/Export Cached Tiles'; - - @override - String get importExportDescription => - 'Backup, share, and restore downloaded map tiles between devices'; - - @override - String get exportTilesToFile => 'Export Tiles to File'; - - @override - String get importTilesFromFile => 'Import Tiles from File'; - - @override - String get selectExportLocation => 'Select Export Location'; - - @override - String get selectImportFile => 'Select Tile Archive'; - - @override - String get exportingTiles => 'Exporting tiles...'; - - @override - String get importingTiles => 'Importing tiles...'; - - @override - String exportSuccess(int count) { - return 'Exported $count tiles successfully'; - } - - @override - String importSuccess(int count) { - return 'Imported $count stores successfully'; - } - @override String exportFailed(String error) { return 'Export failed: $error'; @@ -1339,40 +855,12 @@ class AppLocalizationsEn extends AppLocalizations { return 'Import failed: $error'; } - @override - String get exportNote => - 'Creates a compressed archive (.fmtc) file that can be shared and imported on other devices.'; - - @override - String get importNote => - 'Imports map tiles from a previously exported archive file. Tiles will be merged with existing cache.'; - - @override - String get noTilesToExport => 'No tiles available to export'; - - @override - String archiveContainsStores(int count) { - return 'Archive contains $count stores'; - } - - @override - String get vectorTiles => 'Vector Tiles'; - - @override - String get schema => 'Schema'; - @override String get unknown => 'Unknown'; - @override - String get bounds => 'Bounds'; - @override String get onlineLayers => 'Online Layers'; - @override - String get offlineLayers => 'Offline Layers'; - @override String get locationTrail => 'Location Trail'; @@ -1411,47 +899,6 @@ class AppLocalizationsEn extends AppLocalizations { @override String get trailControls => 'Trail Controls'; - @override - String get exportTrailToGpx => 'Export Trail to GPX'; - - @override - String get importTrailFromGpx => 'Import Trail from GPX'; - - @override - String get trailExportedSuccessfully => 'Trail exported successfully!'; - - @override - String get failedToExportTrail => 'Failed to export trail'; - - @override - String failedToImportTrail(String error) { - return 'Failed to import trail: $error'; - } - - @override - String get importTrail => 'Import Trail'; - - @override - String importTrailQuestion(int pointCount) { - return 'Import trail with $pointCount points?\n\nYou can replace your current trail or view it alongside.'; - } - - @override - String get viewAlongside => 'View Alongside'; - - @override - String get replaceCurrent => 'Replace Current'; - - @override - String trailImported(int pointCount) { - return 'Trail imported! ($pointCount points)'; - } - - @override - String trailReplaced(int pointCount) { - return 'Trail replaced! ($pointCount points)'; - } - @override String get contactTrails => 'Contact Trails'; @@ -1721,19 +1168,12 @@ class AppLocalizationsEn extends AppLocalizations { @override String get noRoomsFound => 'No rooms found'; - @override - String get noContactsOrRoomsAvailable => 'No contacts or rooms available'; - @override String get noRecipientsAvailable => 'No recipients available'; @override String get noChannelsFound => 'No channels found'; - @override - String get messagesWillBeSentToPublicChannel => - 'Messages will be sent to public channel'; - @override String get newMessage => 'New message'; @@ -1908,9 +1348,6 @@ class AppLocalizationsEn extends AppLocalizations { @override String get rectangleDrawing => 'Rectangle Drawing'; - @override - String get coordinatesCopiedToClipboard => 'Coordinates copied to clipboard'; - @override String get manualCoordinates => 'Manual Coordinates'; @@ -1923,37 +1360,9 @@ class AppLocalizationsEn extends AppLocalizations { @override String get longitudeLabel => 'Longitude'; - @override - String get invalidLatitude => 'Invalid latitude (-90 to 90)'; - - @override - String get invalidLongitude => 'Invalid longitude (-180 to 180)'; - @override String get exampleCoordinates => 'Example: 46.0569, 14.5058'; - @override - String get drawingShared => 'Map Drawing'; - - @override - String get drawingHidden => 'Drawing hidden from map'; - - @override - String alreadyShared(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count already shared', - one: '1 already shared', - ); - return '$_temp0'; - } - - @override - String newDrawingsShared(int count, String plural) { - return 'Shared $count new drawing$plural'; - } - @override String get shareDrawing => 'Share Drawing'; @@ -2008,12 +1417,6 @@ class AppLocalizationsEn extends AppLocalizations { @override String get forestRoads => 'Forest Roads'; - @override - String get showCadastralParcels => 'Show Cadastral Parcels'; - - @override - String get showForestRoads => 'Show Forest Roads'; - @override String get wmsOverlays => 'WMS Overlays'; @@ -2117,10 +1520,6 @@ class AppLocalizationsEn extends AppLocalizations { return 'Failed to delete channel: $error'; } - @override - String get allChannelSlotsInUse => - 'All channel slots are in use (maximum 39 custom channels)'; - @override String get createChannel => 'Create Channel'; @@ -2160,21 +1559,6 @@ class AppLocalizationsEn extends AppLocalizations { String get wizardConnectingFeature3 => 'Works completely offline - no internet required'; - @override - String get wizardSimpleModeTitle => 'Simple Mode'; - - @override - String get wizardSimpleModeDescription => - 'New to mesh networking? Enable Simple Mode for a streamlined interface with essential features only.'; - - @override - String get wizardSimpleModeFeature1 => - 'Beginner-friendly interface with core functions'; - - @override - String get wizardSimpleModeFeature2 => - 'Switch to Advanced Mode anytime in Settings'; - @override String get wizardChannelTitle => 'Channels'; diff --git a/lib/l10n/app_localizations_es.dart b/lib/l10n/app_localizations_es.dart index acfb394..69efbb6 100644 --- a/lib/l10n/app_localizations_es.dart +++ b/lib/l10n/app_localizations_es.dart @@ -29,9 +29,6 @@ class AppLocalizationsEs extends AppLocalizations { @override String get disconnect => 'Desconectar'; - @override - String get scanningForDevices => 'Buscando dispositivos...'; - @override String get noDevicesFound => 'No se encontraron dispositivos'; @@ -62,27 +59,14 @@ class AppLocalizationsEs extends AppLocalizations { @override String get failedToGetGpsLocation => 'Error al obtener la ubicación GPS'; - @override - String advertisedAtLocation(String latitude, String longitude) { - return 'Anunciado en $latitude, $longitude'; - } - @override String failedToAdvertise(String error) { return 'Error al anunciar: $error'; } - @override - String reconnecting(int attempt, int max) { - return 'Reconectando... ($attempt/$max)'; - } - @override String get cancelReconnection => 'Cancelar reconexión'; - @override - String get mapManagement => 'Gestión de mapas'; - @override String get general => 'General'; @@ -129,13 +113,6 @@ class AppLocalizationsEs extends AppLocalizations { String get displayPacketActivity => 'Mostrar indicadores de actividad de paquetes en la barra superior'; - @override - String get simpleMode => 'Modo Simple'; - - @override - String get simpleModeDescription => - 'Ocultar información no esencial en mensajes y contactos'; - @override String get disableMap => 'Desactivar mapa'; @@ -149,75 +126,6 @@ class AppLocalizationsEs extends AppLocalizations { @override String get chooseLanguage => 'Elegir idioma'; - @override - String get english => 'Inglés'; - - @override - String get slovenian => 'Esloveno'; - - @override - String get croatian => 'Croata'; - - @override - String get german => 'Alemán'; - - @override - String get spanish => 'Español'; - - @override - String get french => 'Francés'; - - @override - String get italian => 'Italiano'; - - @override - String get locationBroadcasting => 'Difusión de ubicación'; - - @override - String get autoLocationTracking => 'Seguimiento automático de ubicación'; - - @override - String get automaticallyBroadcastPosition => - 'Difundir automáticamente actualizaciones de posición'; - - @override - String get configureTracking => 'Configurar seguimiento'; - - @override - String get distanceAndTimeThresholds => 'Umbrales de distancia y tiempo'; - - @override - String get locationTrackingConfiguration => - 'Configuración de seguimiento de ubicación'; - - @override - String get configureWhenLocationBroadcasts => - 'Configurar cuándo se envían difusiones de ubicación a la red mesh'; - - @override - String get minimumDistance => 'Distancia mínima'; - - @override - String broadcastAfterMoving(String distance) { - return 'Difundir solo después de moverse $distance metros'; - } - - @override - String get maximumDistance => 'Distancia máxima'; - - @override - String alwaysBroadcastAfterMoving(String distance) { - return 'Siempre difundir después de moverse $distance metros'; - } - - @override - String get minimumTimeInterval => 'Intervalo de tiempo mínimo'; - - @override - String alwaysBroadcastEvery(String duration) { - return 'Siempre difundir cada $duration'; - } - @override String get save => 'Guardar'; @@ -253,12 +161,6 @@ class AppLocalizationsEs extends AppLocalizations { @override String get moreInfo => 'Más información'; - @override - String get learnMoreAbout => 'Más información sobre MeshCore SAR'; - - @override - String get developer => 'Desarrollador'; - @override String get packageName => 'Nombre del paquete'; @@ -334,9 +236,6 @@ class AppLocalizationsEs extends AppLocalizations { @override String get refresh => 'Actualizar'; - @override - String get sendDirectMessage => 'Enviar'; - @override String get resetPath => 'Restablecer ruta (Re-enrutar)'; @@ -459,21 +358,6 @@ class AppLocalizationsEs extends AppLocalizations { return 'Compartir $count dibujo$plural'; } - @override - String sentDrawingsToRoom(int count, String plural, String roomName) { - return 'Enviados $count dibujo$plural de mapa a $roomName'; - } - - @override - String sharedDrawingsToRoom( - int success, - int total, - String plural, - String roomName, - ) { - return 'Compartidos $success/$total dibujo$plural con $roomName'; - } - @override String get showReceivedDrawings => 'Mostrar dibujos recibidos'; @@ -495,9 +379,6 @@ class AppLocalizationsEs extends AppLocalizations { @override String get clearAll => 'Borrar todo'; - @override - String get noLocalDrawings => 'No hay dibujos locales para compartir'; - @override String get publicChannel => 'Canal público'; @@ -507,37 +388,9 @@ class AppLocalizationsEs extends AppLocalizations { @override String get storedPermanently => 'Almacenado permanentemente en la sala'; - @override - String drawingsSentToPublicChannel(int count, String plural) { - return '$count dibujo$plural de mapa enviado al Canal Público'; - } - - @override - String drawingsSharedToPublicChannel(int success, int total) { - return '$success/$total dibujos compartidos al Canal Público'; - } - @override String get notConnectedToDevice => 'No conectado al dispositivo'; - @override - String get directMessage => 'Mensaje directo'; - - @override - String directMessageSentTo(String contactName) { - return 'Mensaje directo enviado a $contactName'; - } - - @override - String failedToSend(String error) { - return 'Error al enviar: $error'; - } - - @override - String directMessageInfo(String contactName) { - return 'Este mensaje se enviará directamente a $contactName. También aparecerá en el feed de mensajes principal.'; - } - @override String get typeYourMessage => 'Escribe tu mensaje...'; @@ -567,9 +420,6 @@ class AppLocalizationsEs extends AppLocalizations { @override String get location => 'Ubicación'; - @override - String get myLocation => 'Mi ubicación'; - @override String get fromMap => 'Desde el mapa'; @@ -631,9 +481,6 @@ class AppLocalizationsEs extends AppLocalizations { @override String get flood => 'Inundación'; - @override - String get admin => 'Admin'; - @override String get loggedIn => 'Sesión iniciada'; @@ -643,29 +490,11 @@ class AppLocalizationsEs extends AppLocalizations { @override String get distance => 'Distancia'; - @override - String pingingDirect(String name) { - return 'Haciendo ping a $name (directo vía ruta)...'; - } - - @override - String pingingFlood(String name) { - return 'Haciendo ping a $name (inundación - sin ruta)...'; - } - @override String directPingTimeout(String name) { return 'Tiempo de espera de ping directo agotado - reintentando $name con inundación...'; } - @override - String pingSuccessful(String name, String fallback) { - return 'Ping exitoso a $name$fallback'; - } - - @override - String get viaFloodingFallback => ' (vía respaldo de inundación)'; - @override String pingFailed(String name) { return 'Ping fallido a $name - no se recibió respuesta'; @@ -676,16 +505,6 @@ class AppLocalizationsEs extends AppLocalizations { return '¿Estás seguro de que quieres eliminar \"$name\"?\n\nEsto eliminará el contacto tanto de la aplicación como del dispositivo de radio compañero.'; } - @override - String removingContact(String name) { - return 'Eliminando $name...'; - } - - @override - String contactRemoved(String name) { - return 'Contacto \"$name\" eliminado'; - } - @override String failedToRemoveContact(String error) { return 'Error al eliminar contacto: $error'; @@ -730,11 +549,6 @@ class AppLocalizationsEs extends AppLocalizations { @override String get telemetry => 'Telemetría'; - @override - String requestingTelemetry(String name) { - return 'Solicitando telemetría de $name...'; - } - @override String get voltage => 'Voltaje'; @@ -806,9 +620,6 @@ class AppLocalizationsEs extends AppLocalizations { @override String get showAll => 'Mostrar todo'; - @override - String get nearbyContacts => 'Contactos cercanos'; - @override String get locationUnavailable => 'Ubicación no disponible'; @@ -849,176 +660,9 @@ class AppLocalizationsEs extends AppLocalizations { @override String get channels => 'Canales'; - @override - String get cacheStatistics => 'Estadísticas de caché'; - - @override - String get totalTiles => 'Total de teselas'; - - @override - String get cacheSize => 'Tamaño de caché'; - - @override - String get storeName => 'Nombre del almacén'; - - @override - String get noCacheStatistics => 'No hay estadísticas de caché disponibles'; - - @override - String get downloadRegion => 'Descargar región'; - - @override - String get mapLayer => 'Capa de mapa'; - - @override - String get regionBounds => 'Límites de región'; - - @override - String get north => 'Norte'; - - @override - String get south => 'Sur'; - - @override - String get east => 'Este'; - - @override - String get west => 'Oeste'; - - @override - String get zoomLevels => 'Niveles de zoom'; - - @override - String minZoom(int zoom) { - return 'Mín: $zoom'; - } - - @override - String maxZoom(int zoom) { - return 'Máx: $zoom'; - } - - @override - String get downloadingDots => 'Descargando...'; - - @override - String get cancelDownload => 'Cancelar descarga'; - - @override - String get downloadRegionButton => 'Descargar región'; - - @override - String get downloadNote => - 'Nota: Las regiones grandes o niveles de zoom altos pueden tomar un tiempo y espacio de almacenamiento significativos.'; - - @override - String get cacheManagement => 'Gestión de caché'; - - @override - String get clearAllMaps => 'Borrar todos los mapas'; - - @override - String get clearMapsConfirmTitle => 'Borrar todos los mapas'; - - @override - String get clearMapsConfirmMessage => - '¿Estás seguro de que quieres eliminar todos los mapas descargados? Esta acción no se puede deshacer.'; - - @override - String get mapDownloadCompleted => '¡Descarga de mapa completada!'; - - @override - String get cacheClearedSuccessfully => '¡Caché borrada exitosamente!'; - - @override - String get downloadCancelled => 'Descarga cancelada'; - - @override - String get startingDownload => 'Iniciando descarga...'; - - @override - String get downloadingMapTiles => 'Descargando teselas de mapa...'; - - @override - String get downloadCompletedSuccessfully => - '¡Descarga completada exitosamente!'; - - @override - String get cancellingDownload => 'Cancelando descarga...'; - - @override - String errorLoadingStats(String error) { - return 'Error al cargar estadísticas: $error'; - } - - @override - String downloadFailed(String error) { - return 'Error en la descarga: $error'; - } - - @override - String cancelFailed(String error) { - return 'Error al cancelar: $error'; - } - - @override - String clearCacheFailed(String error) { - return 'Error al borrar caché: $error'; - } - - @override - String minZoomError(String error) { - return 'Zoom mín: $error'; - } - - @override - String maxZoomError(String error) { - return 'Zoom máx: $error'; - } - - @override - String get minZoomGreaterThanMax => - 'El zoom mínimo debe ser menor o igual al zoom máximo'; - @override String get selectMapLayer => 'Seleccionar capa de mapa'; - @override - String get mapOptions => 'Opciones de mapa'; - - @override - String get showLegend => 'Mostrar leyenda'; - - @override - String get displayMarkerTypeCounts => - 'Mostrar recuentos de tipos de marcadores'; - - @override - String get rotateMapWithHeading => 'Rotar mapa con rumbo'; - - @override - String get mapFollowsDirection => - 'El mapa sigue tu dirección cuando te mueves'; - - @override - String get resetMapRotation => 'Restablecer rotación'; - - @override - String get resetMapRotationTooltip => 'Restablecer mapa al norte'; - - @override - String get showMapDebugInfo => 'Mostrar información de depuración del mapa'; - - @override - String get displayZoomLevelBounds => 'Mostrar nivel de zoom y límites'; - - @override - String get fullscreenMode => 'Modo de pantalla completa'; - - @override - String get hideUiFullMapView => - 'Ocultar todos los controles de IU para vista de mapa completo'; - @override String get openStreetMap => 'OpenStreetMap'; @@ -1037,12 +681,6 @@ class AppLocalizationsEs extends AppLocalizations { @override String get googleTerrain => 'Google Terreno'; - @override - String get downloadVisibleArea => 'Descargar área visible'; - - @override - String get initializingMap => 'Inicializando mapa...'; - @override String get dragToPosition => 'Arrastrar a posición'; @@ -1058,51 +696,6 @@ class AppLocalizationsEs extends AppLocalizations { @override String get sarAlert => 'ALERTA SAR'; - @override - String get messageSentToPublicChannel => 'Mensaje enviado al canal público'; - - @override - String get pleaseSelectRoomToSendSar => - 'Por favor, selecciona una sala para enviar marcador SAR'; - - @override - String failedToSendSarMarker(String error) { - return 'Error al enviar marcador SAR: $error'; - } - - @override - String sarMarkerSentTo(String roomName) { - return 'Marcador SAR enviado a $roomName'; - } - - @override - String get notConnectedCannotSync => - 'No conectado - no se pueden sincronizar mensajes'; - - @override - String syncedMessageCount(int count) { - return 'Sincronizados $count mensaje(s)'; - } - - @override - String get noNewMessages => 'No hay mensajes nuevos'; - - @override - String syncFailed(String error) { - return 'Error de sincronización: $error'; - } - - @override - String get failedToResendMessage => 'Error al reenviar mensaje'; - - @override - String get retryingMessage => 'Reintentando mensaje...'; - - @override - String retryFailed(String error) { - return 'Error de reintento: $error'; - } - @override String get textCopiedToClipboard => 'Texto copiado al portapapeles'; @@ -1114,9 +707,6 @@ class AppLocalizationsEs extends AppLocalizations { String get cannotReplyContactNotFound => 'No se puede responder: contacto no encontrado'; - @override - String get messageDeleted => 'Mensaje eliminado'; - @override String get copyText => 'Copiar texto'; @@ -1152,12 +742,6 @@ class AppLocalizationsEs extends AppLocalizations { @override String get sarLocationShare => 'Ubicación SAR'; - @override - String get locationShared => 'Ubicación compartida'; - - @override - String get refreshedContacts => 'Contactos actualizados'; - @override String get justNow => 'Justo ahora'; @@ -1265,81 +849,6 @@ class AppLocalizationsEs extends AppLocalizations { @override String get you => 'Tú'; - @override - String get offlineVectorMaps => 'Mapas vectoriales sin conexión'; - - @override - String get offlineVectorMapsDescription => - 'Importar y gestionar teselas de mapas vectoriales sin conexión (formato MBTiles) para usar sin conexión a internet'; - - @override - String get importMbtiles => 'Importar archivo MBTiles'; - - @override - String get importMbtilesNote => - 'Compatible con archivos MBTiles con teselas vectoriales (formato PBF/MVT). ¡Los extractos de Geofabrik funcionan muy bien!'; - - @override - String get noMbtilesFiles => - 'No se encontraron mapas vectoriales sin conexión'; - - @override - String get mbtilesImportedSuccessfully => - 'Archivo MBTiles importado exitosamente'; - - @override - String get failedToImportMbtiles => 'Error al importar archivo MBTiles'; - - @override - String get deleteMbtilesConfirmTitle => 'Eliminar mapa sin conexión'; - - @override - String deleteMbtilesConfirmMessage(String name) { - return '¿Estás seguro de que quieres eliminar \"$name\"? Esto eliminará permanentemente el mapa sin conexión.'; - } - - @override - String get mbtilesDeletedSuccessfully => - 'Mapa sin conexión eliminado exitosamente'; - - @override - String get failedToDeleteMbtiles => 'Error al eliminar mapa sin conexión'; - - @override - String get importExportCachedTiles => 'Importar/Exportar teselas en caché'; - - @override - String get importExportDescription => - 'Realice copias de seguridad, comparta y restaure teselas de mapas descargadas entre dispositivos'; - - @override - String get exportTilesToFile => 'Exportar teselas a archivo'; - - @override - String get importTilesFromFile => 'Importar teselas desde archivo'; - - @override - String get selectExportLocation => 'Seleccionar ubicación de exportación'; - - @override - String get selectImportFile => 'Seleccionar archivo de teselas'; - - @override - String get exportingTiles => 'Exportando teselas...'; - - @override - String get importingTiles => 'Importando teselas...'; - - @override - String exportSuccess(int count) { - return '$count teselas exportadas exitosamente'; - } - - @override - String importSuccess(int count) { - return '$count almacenes importados exitosamente'; - } - @override String exportFailed(String error) { return 'Export failed: $error'; @@ -1350,40 +859,12 @@ class AppLocalizationsEs extends AppLocalizations { return 'Import failed: $error'; } - @override - String get exportNote => - 'Crea un archivo comprimido (.fmtc) que se puede compartir e importar en otros dispositivos.'; - - @override - String get importNote => - 'Importa teselas de mapa desde un archivo previamente exportado. Las teselas se fusionarán con la caché existente.'; - - @override - String get noTilesToExport => 'No hay teselas para exportar'; - - @override - String archiveContainsStores(int count) { - return 'El archivo contiene $count almacenes'; - } - - @override - String get vectorTiles => 'Teselas vectoriales'; - - @override - String get schema => 'Esquema'; - @override String get unknown => 'Desconocido'; - @override - String get bounds => 'Límites'; - @override String get onlineLayers => 'Capas en línea'; - @override - String get offlineLayers => 'Capas sin conexión'; - @override String get locationTrail => 'Rastro de ubicación'; @@ -1422,47 +903,6 @@ class AppLocalizationsEs extends AppLocalizations { @override String get trailControls => 'Controles del rastro'; - @override - String get exportTrailToGpx => 'Exportar rastro a GPX'; - - @override - String get importTrailFromGpx => 'Importar rastro desde GPX'; - - @override - String get trailExportedSuccessfully => '¡Rastro exportado exitosamente!'; - - @override - String get failedToExportTrail => 'Error al exportar el rastro'; - - @override - String failedToImportTrail(String error) { - return 'Error al importar el rastro: $error'; - } - - @override - String get importTrail => 'Importar rastro'; - - @override - String importTrailQuestion(int pointCount) { - return '¿Importar rastro con $pointCount puntos?\n\nPuede reemplazar su rastro actual o verlo junto a él.'; - } - - @override - String get viewAlongside => 'Ver junto'; - - @override - String get replaceCurrent => 'Reemplazar actual'; - - @override - String trailImported(int pointCount) { - return '¡Rastro importado! ($pointCount puntos)'; - } - - @override - String trailReplaced(int pointCount) { - return '¡Rastro reemplazado! ($pointCount puntos)'; - } - @override String get contactTrails => 'Rastros de contactos'; @@ -1735,20 +1175,12 @@ class AppLocalizationsEs extends AppLocalizations { @override String get noRoomsFound => 'No se encontraron salas'; - @override - String get noContactsOrRoomsAvailable => - 'No hay contactos o salas disponibles'; - @override String get noRecipientsAvailable => 'No hay destinatarios disponibles'; @override String get noChannelsFound => 'No se encontraron canales'; - @override - String get messagesWillBeSentToPublicChannel => - 'Los mensajes se enviarán al canal público'; - @override String get newMessage => 'Nuevo mensaje'; @@ -1936,10 +1368,6 @@ class AppLocalizationsEs extends AppLocalizations { @override String get rectangleDrawing => 'Rectángulo'; - @override - String get coordinatesCopiedToClipboard => - 'Coordenadas copiadas al portapapeles'; - @override String get manualCoordinates => 'Coordenadas Manuales'; @@ -1952,31 +1380,9 @@ class AppLocalizationsEs extends AppLocalizations { @override String get longitudeLabel => 'Longitud'; - @override - String get invalidLatitude => 'Latitud inválida (-90 a 90)'; - - @override - String get invalidLongitude => 'Longitud inválida (-180 a 180)'; - @override String get exampleCoordinates => 'Ejemplo: 46.0569, 14.5058'; - @override - String get drawingShared => 'Dibujo del Mapa'; - - @override - String get drawingHidden => 'Dibujo ocultado del mapa'; - - @override - String alreadyShared(int count) { - return '$count ya compartido'; - } - - @override - String newDrawingsShared(int count, String plural) { - return '$count nuevo(s) dibujo(s) compartido(s)'; - } - @override String get shareDrawing => 'Compartir Dibujo'; @@ -2033,12 +1439,6 @@ class AppLocalizationsEs extends AppLocalizations { @override String get forestRoads => 'Caminos Forestales'; - @override - String get showCadastralParcels => 'Mostrar parcelas catastrales'; - - @override - String get showForestRoads => 'Mostrar caminos forestales'; - @override String get wmsOverlays => 'Superposiciones WMS'; @@ -2143,10 +1543,6 @@ class AppLocalizationsEs extends AppLocalizations { return 'Error al eliminar el canal: $error'; } - @override - String get allChannelSlotsInUse => - 'Todos los espacios de canales están en uso (máximo 39 canales personalizados)'; - @override String get createChannel => 'Crear Canal'; @@ -2187,21 +1583,6 @@ class AppLocalizationsEs extends AppLocalizations { String get wizardConnectingFeature3 => 'Funciona completamente sin conexión - no se requiere internet'; - @override - String get wizardSimpleModeTitle => 'Modo Simple'; - - @override - String get wizardSimpleModeDescription => - '¿Nuevo en redes en malla? Habilite el modo simple para una interfaz optimizada con solo funciones esenciales.'; - - @override - String get wizardSimpleModeFeature1 => - 'Interfaz amigable para principiantes con funciones principales'; - - @override - String get wizardSimpleModeFeature2 => - 'Cambie al modo avanzado en cualquier momento en Configuración'; - @override String get wizardChannelTitle => 'Canales'; diff --git a/lib/l10n/app_localizations_fr.dart b/lib/l10n/app_localizations_fr.dart index 1f88c90..577735c 100644 --- a/lib/l10n/app_localizations_fr.dart +++ b/lib/l10n/app_localizations_fr.dart @@ -29,9 +29,6 @@ class AppLocalizationsFr extends AppLocalizations { @override String get disconnect => 'Déconnecter'; - @override - String get scanningForDevices => 'Recherche d\'appareils...'; - @override String get noDevicesFound => 'Aucun appareil trouvé'; @@ -63,27 +60,14 @@ class AppLocalizationsFr extends AppLocalizations { String get failedToGetGpsLocation => 'Échec de l\'obtention de la position GPS'; - @override - String advertisedAtLocation(String latitude, String longitude) { - return 'Annoncé à $latitude, $longitude'; - } - @override String failedToAdvertise(String error) { return 'Échec de l\'annonce : $error'; } - @override - String reconnecting(int attempt, int max) { - return 'Reconnexion... ($attempt/$max)'; - } - @override String get cancelReconnection => 'Annuler la reconnexion'; - @override - String get mapManagement => 'Gestion des cartes'; - @override String get general => 'Général'; @@ -130,13 +114,6 @@ class AppLocalizationsFr extends AppLocalizations { String get displayPacketActivity => 'Afficher les indicateurs d\'activité des paquets dans la barre supérieure'; - @override - String get simpleMode => 'Mode Simple'; - - @override - String get simpleModeDescription => - 'Masquer les informations non essentielles dans les messages et les contacts'; - @override String get disableMap => 'Désactiver la carte'; @@ -150,75 +127,6 @@ class AppLocalizationsFr extends AppLocalizations { @override String get chooseLanguage => 'Choisir la langue'; - @override - String get english => 'Anglais'; - - @override - String get slovenian => 'Slovène'; - - @override - String get croatian => 'Croate'; - - @override - String get german => 'Allemand'; - - @override - String get spanish => 'Espagnol'; - - @override - String get french => 'Français'; - - @override - String get italian => 'Italien'; - - @override - String get locationBroadcasting => 'Diffusion de position'; - - @override - String get autoLocationTracking => 'Suivi automatique de position'; - - @override - String get automaticallyBroadcastPosition => - 'Diffuser automatiquement les mises à jour de position'; - - @override - String get configureTracking => 'Configurer le suivi'; - - @override - String get distanceAndTimeThresholds => 'Seuils de distance et de temps'; - - @override - String get locationTrackingConfiguration => - 'Configuration du suivi de position'; - - @override - String get configureWhenLocationBroadcasts => - 'Configurer quand les diffusions de position sont envoyées au réseau maillé'; - - @override - String get minimumDistance => 'Distance minimale'; - - @override - String broadcastAfterMoving(String distance) { - return 'Diffuser uniquement après un déplacement de $distance mètres'; - } - - @override - String get maximumDistance => 'Distance maximale'; - - @override - String alwaysBroadcastAfterMoving(String distance) { - return 'Toujours diffuser après un déplacement de $distance mètres'; - } - - @override - String get minimumTimeInterval => 'Intervalle de temps minimal'; - - @override - String alwaysBroadcastEvery(String duration) { - return 'Toujours diffuser toutes les $duration'; - } - @override String get save => 'Enregistrer'; @@ -254,12 +162,6 @@ class AppLocalizationsFr extends AppLocalizations { @override String get moreInfo => 'Plus d\'infos'; - @override - String get learnMoreAbout => 'En savoir plus sur MeshCore SAR'; - - @override - String get developer => 'Développeur'; - @override String get packageName => 'Nom du package'; @@ -336,9 +238,6 @@ class AppLocalizationsFr extends AppLocalizations { @override String get refresh => 'Actualiser'; - @override - String get sendDirectMessage => 'Envoyer'; - @override String get resetPath => 'Réinitialiser le chemin (Re-router)'; @@ -459,21 +358,6 @@ class AppLocalizationsFr extends AppLocalizations { return 'Partager $count dessin$plural'; } - @override - String sentDrawingsToRoom(int count, String plural, String roomName) { - return '$count dessin$plural de carte envoyé$plural à $roomName'; - } - - @override - String sharedDrawingsToRoom( - int success, - int total, - String plural, - String roomName, - ) { - return '$success/$total dessin$plural partagé$plural avec $roomName'; - } - @override String get showReceivedDrawings => 'Afficher les dessins reçus'; @@ -495,9 +379,6 @@ class AppLocalizationsFr extends AppLocalizations { @override String get clearAll => 'Tout effacer'; - @override - String get noLocalDrawings => 'Aucun dessin local à partager'; - @override String get publicChannel => 'Canal public'; @@ -508,37 +389,9 @@ class AppLocalizationsFr extends AppLocalizations { @override String get storedPermanently => 'Stocké de manière permanente dans le salon'; - @override - String drawingsSentToPublicChannel(int count, String plural) { - return '$count dessin$plural de carte envoyé au Canal Public'; - } - - @override - String drawingsSharedToPublicChannel(int success, int total) { - return '$success/$total dessins partagés sur le Canal Public'; - } - @override String get notConnectedToDevice => 'Non connecté à l\'appareil'; - @override - String get directMessage => 'Message direct'; - - @override - String directMessageSentTo(String contactName) { - return 'Message direct envoyé à $contactName'; - } - - @override - String failedToSend(String error) { - return 'Échec de l\'envoi : $error'; - } - - @override - String directMessageInfo(String contactName) { - return 'Ce message sera envoyé directement à $contactName. Il apparaîtra également dans le fil de messages principal.'; - } - @override String get typeYourMessage => 'Saisissez votre message...'; @@ -568,9 +421,6 @@ class AppLocalizationsFr extends AppLocalizations { @override String get location => 'Position'; - @override - String get myLocation => 'Ma position'; - @override String get fromMap => 'Depuis la carte'; @@ -633,9 +483,6 @@ class AppLocalizationsFr extends AppLocalizations { @override String get flood => 'Inondation'; - @override - String get admin => 'Admin'; - @override String get loggedIn => 'Connecté'; @@ -645,29 +492,11 @@ class AppLocalizationsFr extends AppLocalizations { @override String get distance => 'Distance'; - @override - String pingingDirect(String name) { - return 'Ping de $name (direct via chemin)...'; - } - - @override - String pingingFlood(String name) { - return 'Ping de $name (inondation - pas de chemin)...'; - } - @override String directPingTimeout(String name) { return 'Délai d\'attente du ping direct - nouvelle tentative de $name avec inondation...'; } - @override - String pingSuccessful(String name, String fallback) { - return 'Ping réussi vers $name$fallback'; - } - - @override - String get viaFloodingFallback => ' (via repli par inondation)'; - @override String pingFailed(String name) { return 'Échec du ping vers $name - aucune réponse reçue'; @@ -678,16 +507,6 @@ class AppLocalizationsFr extends AppLocalizations { return 'Êtes-vous sûr de vouloir supprimer \"$name\" ?\n\nCela supprimera le contact de l\'application et de l\'appareil radio compagnon.'; } - @override - String removingContact(String name) { - return 'Suppression de $name...'; - } - - @override - String contactRemoved(String name) { - return 'Contact \"$name\" supprimé'; - } - @override String failedToRemoveContact(String error) { return 'Échec de la suppression du contact : $error'; @@ -732,11 +551,6 @@ class AppLocalizationsFr extends AppLocalizations { @override String get telemetry => 'Télémétrie'; - @override - String requestingTelemetry(String name) { - return 'Demande de télémétrie à $name...'; - } - @override String get voltage => 'Tension'; @@ -808,9 +622,6 @@ class AppLocalizationsFr extends AppLocalizations { @override String get showAll => 'Tout afficher'; - @override - String get nearbyContacts => 'Contacts à proximité'; - @override String get locationUnavailable => 'Position non disponible'; @@ -851,177 +662,9 @@ class AppLocalizationsFr extends AppLocalizations { @override String get channels => 'Canaux'; - @override - String get cacheStatistics => 'Statistiques du cache'; - - @override - String get totalTiles => 'Total de tuiles'; - - @override - String get cacheSize => 'Taille du cache'; - - @override - String get storeName => 'Nom du magasin'; - - @override - String get noCacheStatistics => 'Aucune statistique de cache disponible'; - - @override - String get downloadRegion => 'Télécharger une région'; - - @override - String get mapLayer => 'Couche de carte'; - - @override - String get regionBounds => 'Limites de la région'; - - @override - String get north => 'Nord'; - - @override - String get south => 'Sud'; - - @override - String get east => 'Est'; - - @override - String get west => 'Ouest'; - - @override - String get zoomLevels => 'Niveaux de zoom'; - - @override - String minZoom(int zoom) { - return 'Min : $zoom'; - } - - @override - String maxZoom(int zoom) { - return 'Max : $zoom'; - } - - @override - String get downloadingDots => 'Téléchargement...'; - - @override - String get cancelDownload => 'Annuler le téléchargement'; - - @override - String get downloadRegionButton => 'Télécharger la région'; - - @override - String get downloadNote => - 'Remarque : Les grandes régions ou les niveaux de zoom élevés peuvent nécessiter beaucoup de temps et d\'espace de stockage.'; - - @override - String get cacheManagement => 'Gestion du cache'; - - @override - String get clearAllMaps => 'Effacer toutes les cartes'; - - @override - String get clearMapsConfirmTitle => 'Effacer toutes les cartes'; - - @override - String get clearMapsConfirmMessage => - 'Êtes-vous sûr de vouloir supprimer toutes les cartes téléchargées ? Cette action ne peut pas être annulée.'; - - @override - String get mapDownloadCompleted => 'Téléchargement de la carte terminé !'; - - @override - String get cacheClearedSuccessfully => 'Cache effacé avec succès !'; - - @override - String get downloadCancelled => 'Téléchargement annulé'; - - @override - String get startingDownload => 'Démarrage du téléchargement...'; - - @override - String get downloadingMapTiles => 'Téléchargement des tuiles de carte...'; - - @override - String get downloadCompletedSuccessfully => - 'Téléchargement terminé avec succès !'; - - @override - String get cancellingDownload => 'Annulation du téléchargement...'; - - @override - String errorLoadingStats(String error) { - return 'Erreur de chargement des statistiques : $error'; - } - - @override - String downloadFailed(String error) { - return 'Échec du téléchargement : $error'; - } - - @override - String cancelFailed(String error) { - return 'Échec de l\'annulation : $error'; - } - - @override - String clearCacheFailed(String error) { - return 'Échec de l\'effacement du cache : $error'; - } - - @override - String minZoomError(String error) { - return 'Zoom min : $error'; - } - - @override - String maxZoomError(String error) { - return 'Zoom max : $error'; - } - - @override - String get minZoomGreaterThanMax => - 'Le zoom minimal doit être inférieur ou égal au zoom maximal'; - @override String get selectMapLayer => 'Sélectionner la couche de carte'; - @override - String get mapOptions => 'Options de carte'; - - @override - String get showLegend => 'Afficher la légende'; - - @override - String get displayMarkerTypeCounts => - 'Afficher les décomptes des types de marqueurs'; - - @override - String get rotateMapWithHeading => 'Faire pivoter la carte avec le cap'; - - @override - String get mapFollowsDirection => - 'La carte suit votre direction lorsque vous vous déplacez'; - - @override - String get resetMapRotation => 'Réinitialiser la rotation'; - - @override - String get resetMapRotationTooltip => 'Réinitialiser la carte vers le nord'; - - @override - String get showMapDebugInfo => 'Afficher les infos de débogage de la carte'; - - @override - String get displayZoomLevelBounds => - 'Afficher le niveau de zoom et les limites'; - - @override - String get fullscreenMode => 'Mode plein écran'; - - @override - String get hideUiFullMapView => - 'Masquer tous les contrôles d\'interface pour une vue de carte complète'; - @override String get openStreetMap => 'OpenStreetMap'; @@ -1040,12 +683,6 @@ class AppLocalizationsFr extends AppLocalizations { @override String get googleTerrain => 'Google Terrain'; - @override - String get downloadVisibleArea => 'Télécharger la zone visible'; - - @override - String get initializingMap => 'Initialisation de la carte...'; - @override String get dragToPosition => 'Faire glisser vers la position'; @@ -1061,51 +698,6 @@ class AppLocalizationsFr extends AppLocalizations { @override String get sarAlert => 'ALERTE SAR'; - @override - String get messageSentToPublicChannel => 'Message envoyé au canal public'; - - @override - String get pleaseSelectRoomToSendSar => - 'Veuillez sélectionner un salon pour envoyer le marqueur SAR'; - - @override - String failedToSendSarMarker(String error) { - return 'Échec de l\'envoi du marqueur SAR : $error'; - } - - @override - String sarMarkerSentTo(String roomName) { - return 'Marqueur SAR envoyé à $roomName'; - } - - @override - String get notConnectedCannotSync => - 'Non connecté - impossible de synchroniser les messages'; - - @override - String syncedMessageCount(int count) { - return 'Synchronisé $count message(s)'; - } - - @override - String get noNewMessages => 'Aucun nouveau message'; - - @override - String syncFailed(String error) { - return 'Échec de la synchronisation : $error'; - } - - @override - String get failedToResendMessage => 'Échec du renvoi du message'; - - @override - String get retryingMessage => 'Nouvelle tentative de message...'; - - @override - String retryFailed(String error) { - return 'Échec de la nouvelle tentative : $error'; - } - @override String get textCopiedToClipboard => 'Texte copié dans le presse-papiers'; @@ -1117,9 +709,6 @@ class AppLocalizationsFr extends AppLocalizations { String get cannotReplyContactNotFound => 'Impossible de répondre : contact non trouvé'; - @override - String get messageDeleted => 'Message supprimé'; - @override String get copyText => 'Copier le texte'; @@ -1155,12 +744,6 @@ class AppLocalizationsFr extends AppLocalizations { @override String get sarLocationShare => 'Position SAR'; - @override - String get locationShared => 'Position partagée'; - - @override - String get refreshedContacts => 'Contacts actualisés'; - @override String get justNow => 'À l\'instant'; @@ -1268,83 +851,6 @@ class AppLocalizationsFr extends AppLocalizations { @override String get you => 'Vous'; - @override - String get offlineVectorMaps => 'Cartes vectorielles hors ligne'; - - @override - String get offlineVectorMapsDescription => - 'Importer et gérer les tuiles de cartes vectorielles hors ligne (format MBTiles) pour une utilisation sans connexion Internet'; - - @override - String get importMbtiles => 'Importer un fichier MBTiles'; - - @override - String get importMbtilesNote => - 'Prend en charge les fichiers MBTiles avec tuiles vectorielles (format PBF/MVT). Les extraits Geofabrik fonctionnent très bien !'; - - @override - String get noMbtilesFiles => 'Aucune carte vectorielle hors ligne trouvée'; - - @override - String get mbtilesImportedSuccessfully => - 'Fichier MBTiles importé avec succès'; - - @override - String get failedToImportMbtiles => - 'Échec de l\'importation du fichier MBTiles'; - - @override - String get deleteMbtilesConfirmTitle => 'Supprimer la carte hors ligne'; - - @override - String deleteMbtilesConfirmMessage(String name) { - return 'Êtes-vous sûr de vouloir supprimer \"$name\" ? Cela supprimera définitivement la carte hors ligne.'; - } - - @override - String get mbtilesDeletedSuccessfully => - 'Carte hors ligne supprimée avec succès'; - - @override - String get failedToDeleteMbtiles => - 'Échec de la suppression de la carte hors ligne'; - - @override - String get importExportCachedTiles => 'Importer/Exporter les tuiles en cache'; - - @override - String get importExportDescription => - 'Sauvegarder, partager et restaurer les tuiles de carte téléchargées entre appareils'; - - @override - String get exportTilesToFile => 'Exporter les tuiles vers fichier'; - - @override - String get importTilesFromFile => 'Importer les tuiles depuis fichier'; - - @override - String get selectExportLocation => - 'Sélectionner l\'emplacement d\'exportation'; - - @override - String get selectImportFile => 'Sélectionner l\'archive de tuiles'; - - @override - String get exportingTiles => 'Exportation des tuiles...'; - - @override - String get importingTiles => 'Importation des tuiles...'; - - @override - String exportSuccess(int count) { - return '$count tuiles exportées avec succès'; - } - - @override - String importSuccess(int count) { - return '$count magasins importés avec succès'; - } - @override String exportFailed(String error) { return 'Export failed: $error'; @@ -1355,40 +861,12 @@ class AppLocalizationsFr extends AppLocalizations { return 'Import failed: $error'; } - @override - String get exportNote => - 'Crée un fichier d\'archive compressé (.fmtc) qui peut être partagé et importé sur d\'autres appareils.'; - - @override - String get importNote => - 'Importe les tuiles de carte depuis un fichier d\'archive précédemment exporté. Les tuiles seront fusionnées avec le cache existant.'; - - @override - String get noTilesToExport => 'Aucune tuile à exporter'; - - @override - String archiveContainsStores(int count) { - return 'L\'archive contient $count magasins'; - } - - @override - String get vectorTiles => 'Tuiles vectorielles'; - - @override - String get schema => 'Schéma'; - @override String get unknown => 'Inconnu'; - @override - String get bounds => 'Limites'; - @override String get onlineLayers => 'Couches en ligne'; - @override - String get offlineLayers => 'Couches hors ligne'; - @override String get locationTrail => 'Trace de déplacement'; @@ -1428,47 +906,6 @@ class AppLocalizationsFr extends AppLocalizations { @override String get trailControls => 'Contrôles de la trace'; - @override - String get exportTrailToGpx => 'Exporter la trace vers GPX'; - - @override - String get importTrailFromGpx => 'Importer la trace depuis GPX'; - - @override - String get trailExportedSuccessfully => 'Trace exportée avec succès!'; - - @override - String get failedToExportTrail => 'Échec de l\'exportation de la trace'; - - @override - String failedToImportTrail(String error) { - return 'Échec de l\'importation de la trace: $error'; - } - - @override - String get importTrail => 'Importer la trace'; - - @override - String importTrailQuestion(int pointCount) { - return 'Importer la trace avec $pointCount points?\n\nVous pouvez remplacer votre trace actuelle ou l\'afficher à côté.'; - } - - @override - String get viewAlongside => 'Afficher à côté'; - - @override - String get replaceCurrent => 'Remplacer l\'actuel'; - - @override - String trailImported(int pointCount) { - return 'Trace importée! ($pointCount points)'; - } - - @override - String trailReplaced(int pointCount) { - return 'Trace remplacée! ($pointCount points)'; - } - @override String get contactTrails => 'Traces des contacts'; @@ -1741,19 +1178,12 @@ class AppLocalizationsFr extends AppLocalizations { @override String get noRoomsFound => 'Aucune salle trouvée'; - @override - String get noContactsOrRoomsAvailable => 'Aucun contact ou salle disponible'; - @override String get noRecipientsAvailable => 'Aucun destinataire disponible'; @override String get noChannelsFound => 'Aucun canal trouvé'; - @override - String get messagesWillBeSentToPublicChannel => - 'Les messages seront envoyés au canal public'; - @override String get newMessage => 'Nouveau message'; @@ -1940,10 +1370,6 @@ class AppLocalizationsFr extends AppLocalizations { @override String get rectangleDrawing => 'Rectangle'; - @override - String get coordinatesCopiedToClipboard => - 'Coordonnées copiées dans le presse-papiers'; - @override String get manualCoordinates => 'Coordonnées Manuelles'; @@ -1956,31 +1382,9 @@ class AppLocalizationsFr extends AppLocalizations { @override String get longitudeLabel => 'Longitude'; - @override - String get invalidLatitude => 'Latitude invalide (-90 à 90)'; - - @override - String get invalidLongitude => 'Longitude invalide (-180 à 180)'; - @override String get exampleCoordinates => 'Exemple: 46.0569, 14.5058'; - @override - String get drawingShared => 'Dessin de Carte'; - - @override - String get drawingHidden => 'Dessin masqué de la carte'; - - @override - String alreadyShared(int count) { - return '$count déjà partagé'; - } - - @override - String newDrawingsShared(int count, String plural) { - return '$count nouveau(x) dessin(s) partagé(s)'; - } - @override String get shareDrawing => 'Partager le Dessin'; @@ -2037,12 +1441,6 @@ class AppLocalizationsFr extends AppLocalizations { @override String get forestRoads => 'Chemins Forestiers'; - @override - String get showCadastralParcels => 'Afficher les parcelles cadastrales'; - - @override - String get showForestRoads => 'Afficher les chemins forestiers'; - @override String get wmsOverlays => 'Superpositions WMS'; @@ -2148,10 +1546,6 @@ class AppLocalizationsFr extends AppLocalizations { return 'Échec de la suppression du canal : $error'; } - @override - String get allChannelSlotsInUse => - 'Tous les emplacements de canaux sont utilisés (maximum 39 canaux personnalisés)'; - @override String get createChannel => 'Créer un Canal'; @@ -2193,21 +1587,6 @@ class AppLocalizationsFr extends AppLocalizations { String get wizardConnectingFeature3 => 'Fonctionne entièrement hors ligne - aucun internet requis'; - @override - String get wizardSimpleModeTitle => 'Mode Simple'; - - @override - String get wizardSimpleModeDescription => - 'Nouveau dans les réseaux maillés ? Activez le mode simple pour une interface simplifiée avec seulement les fonctions essentielles.'; - - @override - String get wizardSimpleModeFeature1 => - 'Interface conviviale pour débutants avec les fonctions principales'; - - @override - String get wizardSimpleModeFeature2 => - 'Passer en mode avancé à tout moment dans les paramètres'; - @override String get wizardChannelTitle => 'Canaux'; diff --git a/lib/l10n/app_localizations_hr.dart b/lib/l10n/app_localizations_hr.dart index e2887b9..3a8ce94 100644 --- a/lib/l10n/app_localizations_hr.dart +++ b/lib/l10n/app_localizations_hr.dart @@ -29,9 +29,6 @@ class AppLocalizationsHr extends AppLocalizations { @override String get disconnect => 'Prekini'; - @override - String get scanningForDevices => 'Skeniranje uređaja...'; - @override String get noDevicesFound => 'Nisu pronađeni uređaji'; @@ -62,27 +59,14 @@ class AppLocalizationsHr extends AppLocalizations { @override String get failedToGetGpsLocation => 'Neuspjelo dobivanje GPS lokacije'; - @override - String advertisedAtLocation(String latitude, String longitude) { - return 'Objavljeno na $latitude, $longitude'; - } - @override String failedToAdvertise(String error) { return 'Neuspjela objava: $error'; } - @override - String reconnecting(int attempt, int max) { - return 'Ponovno povezivanje... ($attempt/$max)'; - } - @override String get cancelReconnection => 'Otkaži ponovno povezivanje'; - @override - String get mapManagement => 'Upravljanje kartom'; - @override String get general => 'Općenito'; @@ -129,13 +113,6 @@ class AppLocalizationsHr extends AppLocalizations { String get displayPacketActivity => 'Prikaži indikatore aktivnosti paketa u gornjoj traci'; - @override - String get simpleMode => 'Jednostavni način'; - - @override - String get simpleModeDescription => - 'Sakrij nevažne informacije u porukama i kontaktima'; - @override String get disableMap => 'Onemogući kartu'; @@ -148,74 +125,6 @@ class AppLocalizationsHr extends AppLocalizations { @override String get chooseLanguage => 'Odaberite jezik'; - @override - String get english => 'Engleski'; - - @override - String get slovenian => 'Slovenski'; - - @override - String get croatian => 'Hrvatski'; - - @override - String get german => 'Njemački'; - - @override - String get spanish => 'Španjolski'; - - @override - String get french => 'Francuski'; - - @override - String get italian => 'Talijanski'; - - @override - String get locationBroadcasting => 'Emitiranje lokacije'; - - @override - String get autoLocationTracking => 'Automatsko praćenje lokacije'; - - @override - String get automaticallyBroadcastPosition => - 'Automatski emitiraj ažuriranja pozicije'; - - @override - String get configureTracking => 'Konfiguriraj praćenje'; - - @override - String get distanceAndTimeThresholds => 'Pragovi udaljenosti i vremena'; - - @override - String get locationTrackingConfiguration => 'Konfiguracija praćenja lokacije'; - - @override - String get configureWhenLocationBroadcasts => - 'Konfigurirajte kada se emitiranja lokacije šalju u mesh mrežu'; - - @override - String get minimumDistance => 'Minimalna udaljenost'; - - @override - String broadcastAfterMoving(String distance) { - return 'Emitiraj tek nakon pomicanja $distance metara'; - } - - @override - String get maximumDistance => 'Maksimalna udaljenost'; - - @override - String alwaysBroadcastAfterMoving(String distance) { - return 'Uvijek emitiraj nakon pomicanja $distance metara'; - } - - @override - String get minimumTimeInterval => 'Minimalni vremenski interval'; - - @override - String alwaysBroadcastEvery(String duration) { - return 'Uvijek emitiraj svakih $duration'; - } - @override String get save => 'Spremi'; @@ -251,12 +160,6 @@ class AppLocalizationsHr extends AppLocalizations { @override String get moreInfo => 'Više informacija'; - @override - String get learnMoreAbout => 'Saznajte više o MeshCore SAR-u'; - - @override - String get developer => 'Programer'; - @override String get packageName => 'Ime paketa'; @@ -332,9 +235,6 @@ class AppLocalizationsHr extends AppLocalizations { @override String get refresh => 'Osvježi'; - @override - String get sendDirectMessage => 'Pošalji'; - @override String get resetPath => 'Resetiraj put (preusmjeri)'; @@ -453,21 +353,6 @@ class AppLocalizationsHr extends AppLocalizations { return 'Podijeli $count crtež$plural'; } - @override - String sentDrawingsToRoom(int count, String plural, String roomName) { - return 'Poslano $count crtež$plural karte u $roomName'; - } - - @override - String sharedDrawingsToRoom( - int success, - int total, - String plural, - String roomName, - ) { - return 'Podijeljeno $success/$total crtež$plural u $roomName'; - } - @override String get showReceivedDrawings => 'Prikaži primljene crteže'; @@ -489,9 +374,6 @@ class AppLocalizationsHr extends AppLocalizations { @override String get clearAll => 'Očisti sve'; - @override - String get noLocalDrawings => 'Nema lokalnih crteža za dijeljenje'; - @override String get publicChannel => 'Javni kanal'; @@ -501,37 +383,9 @@ class AppLocalizationsHr extends AppLocalizations { @override String get storedPermanently => 'Trajno pohranjeno u sobi'; - @override - String drawingsSentToPublicChannel(int count, String plural) { - return 'Poslano $count crtež$plural na javni kanal'; - } - - @override - String drawingsSharedToPublicChannel(int success, int total) { - return 'Podijeljeno $success/$total crteža na javni kanal'; - } - @override String get notConnectedToDevice => 'Nije povezano s uređajem'; - @override - String get directMessage => 'Izravna poruka'; - - @override - String directMessageSentTo(String contactName) { - return 'Izravna poruka poslana $contactName'; - } - - @override - String failedToSend(String error) { - return 'Neuspjelo slanje: $error'; - } - - @override - String directMessageInfo(String contactName) { - return 'Ova poruka će biti poslana izravno $contactName. Također će se prikazati u glavnom feedu poruka.'; - } - @override String get typeYourMessage => 'Upišite svoju poruku...'; @@ -561,9 +415,6 @@ class AppLocalizationsHr extends AppLocalizations { @override String get location => 'Lokacija'; - @override - String get myLocation => 'Moja lokacija'; - @override String get fromMap => 'S karte'; @@ -625,9 +476,6 @@ class AppLocalizationsHr extends AppLocalizations { @override String get flood => 'Preplavljanje'; - @override - String get admin => 'Administrator'; - @override String get loggedIn => 'Prijavljen'; @@ -637,29 +485,11 @@ class AppLocalizationsHr extends AppLocalizations { @override String get distance => 'Udaljenost'; - @override - String pingingDirect(String name) { - return 'Pingiranje $name (izravno putem puta)...'; - } - - @override - String pingingFlood(String name) { - return 'Pingiranje $name (preplavljanje - nema puta)...'; - } - @override String directPingTimeout(String name) { return 'Istek izravnog pinga - ponovni pokušaj $name s preplavljanjem...'; } - @override - String pingSuccessful(String name, String fallback) { - return 'Ping uspješan prema $name$fallback'; - } - - @override - String get viaFloodingFallback => ' (putem rezervnog preplavljanja)'; - @override String pingFailed(String name) { return 'Ping neuspješan prema $name - nije primljen odgovor'; @@ -670,16 +500,6 @@ class AppLocalizationsHr extends AppLocalizations { return 'Jeste li sigurni da želite izbrisati \"$name\"?\n\nOvo će ukloniti kontakt iz aplikacije i pratećeg radio uređaja.'; } - @override - String removingContact(String name) { - return 'Uklanjanje $name...'; - } - - @override - String contactRemoved(String name) { - return 'Kontakt \"$name\" uklonjen'; - } - @override String failedToRemoveContact(String error) { return 'Neuspjelo uklanjanje kontakta: $error'; @@ -724,11 +544,6 @@ class AppLocalizationsHr extends AppLocalizations { @override String get telemetry => 'Telemetrija'; - @override - String requestingTelemetry(String name) { - return 'Zahtijevanje telemetrije od $name...'; - } - @override String get voltage => 'Napon'; @@ -800,9 +615,6 @@ class AppLocalizationsHr extends AppLocalizations { @override String get showAll => 'Prikaži sve'; - @override - String get nearbyContacts => 'Obližnji kontakti'; - @override String get locationUnavailable => 'Lokacija nije dostupna'; @@ -843,174 +655,9 @@ class AppLocalizationsHr extends AppLocalizations { @override String get channels => 'Kanali'; - @override - String get cacheStatistics => 'Statistika predmemorije'; - - @override - String get totalTiles => 'Ukupno pločica'; - - @override - String get cacheSize => 'Veličina predmemorije'; - - @override - String get storeName => 'Naziv spremišta'; - - @override - String get noCacheStatistics => 'Statistika predmemorije nije dostupna'; - - @override - String get downloadRegion => 'Preuzmi regiju'; - - @override - String get mapLayer => 'Sloj karte'; - - @override - String get regionBounds => 'Granice regije'; - - @override - String get north => 'Sjever'; - - @override - String get south => 'Jug'; - - @override - String get east => 'Istok'; - - @override - String get west => 'Zapad'; - - @override - String get zoomLevels => 'Razine zumiranja'; - - @override - String minZoom(int zoom) { - return 'Min: $zoom'; - } - - @override - String maxZoom(int zoom) { - return 'Maks: $zoom'; - } - - @override - String get downloadingDots => 'Preuzimanje...'; - - @override - String get cancelDownload => 'Otkaži preuzimanje'; - - @override - String get downloadRegionButton => 'Preuzmi regiju'; - - @override - String get downloadNote => - 'Napomena: Velike regije ili visoke razine zumiranja mogu zahtijevati značajno vrijeme i prostor za pohranu.'; - - @override - String get cacheManagement => 'Upravljanje predmemorijom'; - - @override - String get clearAllMaps => 'Očisti sve karte'; - - @override - String get clearMapsConfirmTitle => 'Očisti sve karte'; - - @override - String get clearMapsConfirmMessage => - 'Jeste li sigurni da želite izbrisati sve preuzete karte? Ova radnja se ne može poništiti.'; - - @override - String get mapDownloadCompleted => 'Preuzimanje karte završeno!'; - - @override - String get cacheClearedSuccessfully => 'Predmemorija uspješno očišćena!'; - - @override - String get downloadCancelled => 'Preuzimanje otkazano'; - - @override - String get startingDownload => 'Pokretanje preuzimanja...'; - - @override - String get downloadingMapTiles => 'Preuzimanje pločica karte...'; - - @override - String get downloadCompletedSuccessfully => 'Preuzimanje uspješno završeno!'; - - @override - String get cancellingDownload => 'Otkazivanje preuzimanja...'; - - @override - String errorLoadingStats(String error) { - return 'Greška pri učitavanju statistike: $error'; - } - - @override - String downloadFailed(String error) { - return 'Preuzimanje nije uspjelo: $error'; - } - - @override - String cancelFailed(String error) { - return 'Otkazivanje nije uspjelo: $error'; - } - - @override - String clearCacheFailed(String error) { - return 'Čišćenje predmemorije nije uspjelo: $error'; - } - - @override - String minZoomError(String error) { - return 'Min zumiranje: $error'; - } - - @override - String maxZoomError(String error) { - return 'Maks zumiranje: $error'; - } - - @override - String get minZoomGreaterThanMax => - 'Minimalno zumiranje mora biti manje ili jednako maksimalnom zumiranju'; - @override String get selectMapLayer => 'Odaberite sloj karte'; - @override - String get mapOptions => 'Opcije karte'; - - @override - String get showLegend => 'Prikaži legendu'; - - @override - String get displayMarkerTypeCounts => 'Prikaži broj vrsta markera'; - - @override - String get rotateMapWithHeading => 'Rotiraj kartu sa smjerom'; - - @override - String get mapFollowsDirection => 'Karta slijedi vaš smjer pri kretanju'; - - @override - String get resetMapRotation => 'Resetiraj rotaciju'; - - @override - String get resetMapRotationTooltip => 'Vrati kartu na sjever'; - - @override - String get showMapDebugInfo => - 'Prikaži informacije za otklanjanje pogrešaka karte'; - - @override - String get displayZoomLevelBounds => 'Prikaži razinu zumiranja i granice'; - - @override - String get fullscreenMode => 'Način cijelog zaslona'; - - @override - String get hideUiFullMapView => - 'Sakrij sve UI kontrole za prikaz cijele karte'; - @override String get openStreetMap => 'OpenStreetMap'; @@ -1029,12 +676,6 @@ class AppLocalizationsHr extends AppLocalizations { @override String get googleTerrain => 'Google teren'; - @override - String get downloadVisibleArea => 'Preuzmi vidljivo područje'; - - @override - String get initializingMap => 'Inicijalizacija karte...'; - @override String get dragToPosition => 'Povuci na poziciju'; @@ -1050,51 +691,6 @@ class AppLocalizationsHr extends AppLocalizations { @override String get sarAlert => 'SAR UZBUNA'; - @override - String get messageSentToPublicChannel => 'Poruka poslana na javni kanal'; - - @override - String get pleaseSelectRoomToSendSar => - 'Molimo odaberite sobu za slanje SAR markera'; - - @override - String failedToSendSarMarker(String error) { - return 'Neuspjelo slanje SAR markera: $error'; - } - - @override - String sarMarkerSentTo(String roomName) { - return 'SAR marker poslan u $roomName'; - } - - @override - String get notConnectedCannotSync => - 'Nije povezano - ne može se sinkronizirati poruke'; - - @override - String syncedMessageCount(int count) { - return 'Sinkronizirano $count poruka'; - } - - @override - String get noNewMessages => 'Nema novih poruka'; - - @override - String syncFailed(String error) { - return 'Sinkronizacija nije uspjela: $error'; - } - - @override - String get failedToResendMessage => 'Neuspjelo ponovno slanje poruke'; - - @override - String get retryingMessage => 'Ponovni pokušaj slanja poruke...'; - - @override - String retryFailed(String error) { - return 'Ponovni pokušaj nije uspio: $error'; - } - @override String get textCopiedToClipboard => 'Tekst kopiran u međuspremnik'; @@ -1106,9 +702,6 @@ class AppLocalizationsHr extends AppLocalizations { String get cannotReplyContactNotFound => 'Ne mogu odgovoriti: kontakt nije pronađen'; - @override - String get messageDeleted => 'Poruka izbrisana'; - @override String get copyText => 'Kopiraj tekst'; @@ -1144,12 +737,6 @@ class AppLocalizationsHr extends AppLocalizations { @override String get sarLocationShare => 'SAR Lokacija'; - @override - String get locationShared => 'Lokacija podijeljena'; - - @override - String get refreshedContacts => 'Kontakti osvježeni'; - @override String get justNow => 'Upravo sada'; @@ -1257,78 +844,6 @@ class AppLocalizationsHr extends AppLocalizations { @override String get you => 'Ti'; - @override - String get offlineVectorMaps => 'Offline vektorske karte'; - - @override - String get offlineVectorMapsDescription => - 'Uvezite i upravljajte offline vektorskim pločicama karata (MBTiles format) za upotrebu bez internetske veze'; - - @override - String get importMbtiles => 'Uvezi MBTiles datoteku'; - - @override - String get importMbtilesNote => - 'Podržava MBTiles datoteke s vektorskim pločicama (PBF/MVT format). Geofabrik izvodi odlično rade!'; - - @override - String get noMbtilesFiles => 'Nisu pronađene offline vektorske karte'; - - @override - String get mbtilesImportedSuccessfully => 'MBTiles datoteka uspješno uvezena'; - - @override - String get failedToImportMbtiles => 'Neuspjeli uvoz MBTiles datoteke'; - - @override - String get deleteMbtilesConfirmTitle => 'Izbriši offline kartu'; - - @override - String deleteMbtilesConfirmMessage(String name) { - return 'Jeste li sigurni da želite izbrisati \"$name\"? Ovo će trajno ukloniti offline kartu.'; - } - - @override - String get mbtilesDeletedSuccessfully => 'Offline karta uspješno izbrisana'; - - @override - String get failedToDeleteMbtiles => 'Neuspjelo brisanje offline karte'; - - @override - String get importExportCachedTiles => 'Uvoz/Izvoz predmemoriranih pločica'; - - @override - String get importExportDescription => - 'Sigurnosno kopirajte, dijelite i vraćajte preuzete pločice karte između uređaja'; - - @override - String get exportTilesToFile => 'Izvezi pločice u datoteku'; - - @override - String get importTilesFromFile => 'Uvezi pločice iz datoteke'; - - @override - String get selectExportLocation => 'Odaberite lokaciju izvoza'; - - @override - String get selectImportFile => 'Odaberite arhivu pločica'; - - @override - String get exportingTiles => 'Izvažanje pločica...'; - - @override - String get importingTiles => 'Uvažanje pločica...'; - - @override - String exportSuccess(int count) { - return 'Uspješno izvezeno $count pločica'; - } - - @override - String importSuccess(int count) { - return 'Uspješno uvezeno $count skladišta'; - } - @override String exportFailed(String error) { return 'Izvoz nije uspio: $error'; @@ -1339,40 +854,12 @@ class AppLocalizationsHr extends AppLocalizations { return 'Uvoz nije uspio: $error'; } - @override - String get exportNote => - 'Stvara komprimiranu arhivsku datoteku (.fmtc) koju možete dijeliti i uvesti na drugim uređajima.'; - - @override - String get importNote => - 'Uvozi pločice karte iz prethodno izvezene arhivske datoteke. Pločice će biti spojene s postojećom predmemorijom.'; - - @override - String get noTilesToExport => 'Nema pločica za izvoz'; - - @override - String archiveContainsStores(int count) { - return 'Arhiva sadrži $count skladišta'; - } - - @override - String get vectorTiles => 'Vektorske pločice'; - - @override - String get schema => 'Shema'; - @override String get unknown => 'Nepoznato'; - @override - String get bounds => 'Granice'; - @override String get onlineLayers => 'Mrežni slojevi'; - @override - String get offlineLayers => 'Offline slojevi'; - @override String get locationTrail => 'Putanja lokacije'; @@ -1411,47 +898,6 @@ class AppLocalizationsHr extends AppLocalizations { @override String get trailControls => 'Upravljanje putanjom'; - @override - String get exportTrailToGpx => 'Izvezi putanju u GPX'; - - @override - String get importTrailFromGpx => 'Uvezi putanju iz GPX'; - - @override - String get trailExportedSuccessfully => 'Putanja uspješno izvezena!'; - - @override - String get failedToExportTrail => 'Izvoz putanje nije uspio'; - - @override - String failedToImportTrail(String error) { - return 'Uvoz putanje nije uspio: $error'; - } - - @override - String get importTrail => 'Uvezi putanju'; - - @override - String importTrailQuestion(int pointCount) { - return 'Uvezi putanju s $pointCount točaka?\n\nMožete zamijeniti trenutnu putanju ili je prikazati zajedno.'; - } - - @override - String get viewAlongside => 'Prikaži zajedno'; - - @override - String get replaceCurrent => 'Zamijeni trenutnu'; - - @override - String trailImported(int pointCount) { - return 'Putanja uvezena! ($pointCount točaka)'; - } - - @override - String trailReplaced(int pointCount) { - return 'Putanja zamijenjena! ($pointCount točaka)'; - } - @override String get contactTrails => 'Putanje kontakata'; @@ -1723,19 +1169,12 @@ class AppLocalizationsHr extends AppLocalizations { @override String get noRoomsFound => 'Nema soba'; - @override - String get noContactsOrRoomsAvailable => 'Nema dostupnih kontakata ili soba'; - @override String get noRecipientsAvailable => 'Nema dostupnih primatelja'; @override String get noChannelsFound => 'Nije pronađen nijedan kanal'; - @override - String get messagesWillBeSentToPublicChannel => - 'Poruke će biti poslane na javni kanal'; - @override String get newMessage => 'Nova poruka'; @@ -1915,10 +1354,6 @@ class AppLocalizationsHr extends AppLocalizations { @override String get rectangleDrawing => 'Pravokutni crtež'; - @override - String get coordinatesCopiedToClipboard => - 'Koordinate kopirane u međuspremnik'; - @override String get manualCoordinates => 'Ručne koordinate'; @@ -1931,37 +1366,9 @@ class AppLocalizationsHr extends AppLocalizations { @override String get longitudeLabel => 'Geografska dužina'; - @override - String get invalidLatitude => 'Nevažeća geografska širina (-90 do 90)'; - - @override - String get invalidLongitude => 'Nevažeća geografska dužina (-180 do 180)'; - @override String get exampleCoordinates => 'Primjer: 46.0569, 14.5058'; - @override - String get drawingShared => 'Crtež podijeljen'; - - @override - String get drawingHidden => 'Crtež sakriven s karte'; - - @override - String alreadyShared(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count već podijeljeno', - one: '1 već podijeljeno', - ); - return '$_temp0'; - } - - @override - String newDrawingsShared(int count, String plural) { - return 'Podijeljeno $count novi$plural crtež$plural'; - } - @override String get shareDrawing => 'Podijeli crtež'; @@ -2017,12 +1424,6 @@ class AppLocalizationsHr extends AppLocalizations { @override String get forestRoads => 'Šumske ceste'; - @override - String get showCadastralParcels => 'Prikaži katastarske čestice'; - - @override - String get showForestRoads => 'Prikaži šumske ceste'; - @override String get wmsOverlays => 'WMS prekrivanja'; @@ -2126,10 +1527,6 @@ class AppLocalizationsHr extends AppLocalizations { return 'Neuspješno brisanje kanala: $error'; } - @override - String get allChannelSlotsInUse => - 'Svi slotovi kanala su zauzeti (maksimalno 39 prilagođenih kanala)'; - @override String get createChannel => 'Kreiraj kanal'; @@ -2170,21 +1567,6 @@ class AppLocalizationsHr extends AppLocalizations { String get wizardConnectingFeature3 => 'Radi potpuno izvan mreže — internet nije potreban'; - @override - String get wizardSimpleModeTitle => 'Jednostavan način'; - - @override - String get wizardSimpleModeDescription => - 'Prvi put koristite mesh mrežu? Uključite jednostavan način za pojednostavljeno sučelje s osnovnim funkcijama.'; - - @override - String get wizardSimpleModeFeature1 => - 'Sučelje prilagođeno početnicima s osnovnim funkcijama'; - - @override - String get wizardSimpleModeFeature2 => - 'U svakom trenutku prebacite na napredni način u Postavkama'; - @override String get wizardChannelTitle => 'Kanali'; diff --git a/lib/l10n/app_localizations_it.dart b/lib/l10n/app_localizations_it.dart index 35f39ba..d4a2b81 100644 --- a/lib/l10n/app_localizations_it.dart +++ b/lib/l10n/app_localizations_it.dart @@ -29,9 +29,6 @@ class AppLocalizationsIt extends AppLocalizations { @override String get disconnect => 'Disconnetti'; - @override - String get scanningForDevices => 'Ricerca dispositivi in corso...'; - @override String get noDevicesFound => 'Nessun dispositivo trovato'; @@ -62,27 +59,14 @@ class AppLocalizationsIt extends AppLocalizations { @override String get failedToGetGpsLocation => 'Impossibile ottenere la posizione GPS'; - @override - String advertisedAtLocation(String latitude, String longitude) { - return 'Annunciato a $latitude, $longitude'; - } - @override String failedToAdvertise(String error) { return 'Annuncio fallito: $error'; } - @override - String reconnecting(int attempt, int max) { - return 'Riconnessione in corso... ($attempt/$max)'; - } - @override String get cancelReconnection => 'Annulla riconnessione'; - @override - String get mapManagement => 'Gestione Mappa'; - @override String get general => 'Generale'; @@ -129,13 +113,6 @@ class AppLocalizationsIt extends AppLocalizations { String get displayPacketActivity => 'Mostra indicatori di attività pacchetti nella barra superiore'; - @override - String get simpleMode => 'Modalità Semplice'; - - @override - String get simpleModeDescription => - 'Nascondi informazioni non essenziali nei messaggi e contatti'; - @override String get disableMap => 'Disabilita mappa'; @@ -149,75 +126,6 @@ class AppLocalizationsIt extends AppLocalizations { @override String get chooseLanguage => 'Scegli Lingua'; - @override - String get english => 'Inglese'; - - @override - String get slovenian => 'Sloveno'; - - @override - String get croatian => 'Croato'; - - @override - String get german => 'Tedesco'; - - @override - String get spanish => 'Spagnolo'; - - @override - String get french => 'Francese'; - - @override - String get italian => 'Italiano'; - - @override - String get locationBroadcasting => 'Trasmissione Posizione'; - - @override - String get autoLocationTracking => 'Tracciamento Posizione Automatico'; - - @override - String get automaticallyBroadcastPosition => - 'Trasmetti automaticamente aggiornamenti di posizione'; - - @override - String get configureTracking => 'Configura Tracciamento'; - - @override - String get distanceAndTimeThresholds => 'Soglie di distanza e tempo'; - - @override - String get locationTrackingConfiguration => - 'Configurazione Tracciamento Posizione'; - - @override - String get configureWhenLocationBroadcasts => - 'Configura quando le trasmissioni di posizione vengono inviate alla rete mesh'; - - @override - String get minimumDistance => 'Distanza Minima'; - - @override - String broadcastAfterMoving(String distance) { - return 'Trasmetti solo dopo essersi spostati di $distance metri'; - } - - @override - String get maximumDistance => 'Distanza Massima'; - - @override - String alwaysBroadcastAfterMoving(String distance) { - return 'Trasmetti sempre dopo essersi spostati di $distance metri'; - } - - @override - String get minimumTimeInterval => 'Intervallo Minimo di Tempo'; - - @override - String alwaysBroadcastEvery(String duration) { - return 'Trasmetti sempre ogni $duration'; - } - @override String get save => 'Salva'; @@ -253,12 +161,6 @@ class AppLocalizationsIt extends AppLocalizations { @override String get moreInfo => 'Maggiori informazioni'; - @override - String get learnMoreAbout => 'Ulteriori informazioni su MeshCore SAR'; - - @override - String get developer => 'Sviluppatore'; - @override String get packageName => 'Nome Pacchetto'; @@ -335,9 +237,6 @@ class AppLocalizationsIt extends AppLocalizations { @override String get refresh => 'Aggiorna'; - @override - String get sendDirectMessage => 'Invia'; - @override String get resetPath => 'Resetta Percorso (Ri-instrada)'; @@ -458,21 +357,6 @@ class AppLocalizationsIt extends AppLocalizations { return 'Condividi $count disegno$plural'; } - @override - String sentDrawingsToRoom(int count, String plural, String roomName) { - return 'Inviati $count disegno$plural mappa a $roomName'; - } - - @override - String sharedDrawingsToRoom( - int success, - int total, - String plural, - String roomName, - ) { - return 'Condivisi $success/$total disegno$plural con $roomName'; - } - @override String get showReceivedDrawings => 'Mostra Disegni Ricevuti'; @@ -494,9 +378,6 @@ class AppLocalizationsIt extends AppLocalizations { @override String get clearAll => 'Cancella Tutto'; - @override - String get noLocalDrawings => 'Nessun disegno locale da condividere'; - @override String get publicChannel => 'Canale Pubblico'; @@ -506,37 +387,9 @@ class AppLocalizationsIt extends AppLocalizations { @override String get storedPermanently => 'Archiviato permanentemente nella stanza'; - @override - String drawingsSentToPublicChannel(int count, String plural) { - return '$count disegno$plural mappa inviato al Canale Pubblico'; - } - - @override - String drawingsSharedToPublicChannel(int success, int total) { - return '$success/$total disegni condivisi sul Canale Pubblico'; - } - @override String get notConnectedToDevice => 'Non connesso al dispositivo'; - @override - String get directMessage => 'Messaggio Diretto'; - - @override - String directMessageSentTo(String contactName) { - return 'Messaggio diretto inviato a $contactName'; - } - - @override - String failedToSend(String error) { - return 'Invio fallito: $error'; - } - - @override - String directMessageInfo(String contactName) { - return 'Questo messaggio verrà inviato direttamente a $contactName. Apparirà anche nel feed dei messaggi principali.'; - } - @override String get typeYourMessage => 'Scrivi il tuo messaggio...'; @@ -566,9 +419,6 @@ class AppLocalizationsIt extends AppLocalizations { @override String get location => 'Posizione'; - @override - String get myLocation => 'La mia posizione'; - @override String get fromMap => 'Dalla Mappa'; @@ -630,9 +480,6 @@ class AppLocalizationsIt extends AppLocalizations { @override String get flood => 'Flood'; - @override - String get admin => 'Admin'; - @override String get loggedIn => 'Connesso'; @@ -642,29 +489,11 @@ class AppLocalizationsIt extends AppLocalizations { @override String get distance => 'Distanza'; - @override - String pingingDirect(String name) { - return 'Ping $name (diretto via percorso)...'; - } - - @override - String pingingFlood(String name) { - return 'Ping $name (flooding - nessun percorso)...'; - } - @override String directPingTimeout(String name) { return 'Timeout ping diretto - nuovo tentativo $name con flooding...'; } - @override - String pingSuccessful(String name, String fallback) { - return 'Ping riuscito a $name$fallback'; - } - - @override - String get viaFloodingFallback => ' (via fallback flooding)'; - @override String pingFailed(String name) { return 'Ping fallito a $name - nessuna risposta ricevuta'; @@ -675,16 +504,6 @@ class AppLocalizationsIt extends AppLocalizations { return 'Sei sicuro di voler eliminare \"$name\"?\n\nQuesto rimuoverà il contatto sia dall\'app che dal dispositivo radio companion.'; } - @override - String removingContact(String name) { - return 'Rimozione di $name...'; - } - - @override - String contactRemoved(String name) { - return 'Contatto \"$name\" rimosso'; - } - @override String failedToRemoveContact(String error) { return 'Impossibile rimuovere il contatto: $error'; @@ -729,11 +548,6 @@ class AppLocalizationsIt extends AppLocalizations { @override String get telemetry => 'Telemetria'; - @override - String requestingTelemetry(String name) { - return 'Richiesta telemetria da $name...'; - } - @override String get voltage => 'Tensione'; @@ -805,9 +619,6 @@ class AppLocalizationsIt extends AppLocalizations { @override String get showAll => 'Mostra Tutto'; - @override - String get nearbyContacts => 'Contatti Vicini'; - @override String get locationUnavailable => 'Posizione non disponibile'; @@ -848,176 +659,9 @@ class AppLocalizationsIt extends AppLocalizations { @override String get channels => 'Canali'; - @override - String get cacheStatistics => 'Statistiche Cache'; - - @override - String get totalTiles => 'Tile Totali'; - - @override - String get cacheSize => 'Dimensione Cache'; - - @override - String get storeName => 'Nome Archivio'; - - @override - String get noCacheStatistics => 'Nessuna statistica cache disponibile'; - - @override - String get downloadRegion => 'Scarica Regione'; - - @override - String get mapLayer => 'Livello Mappa'; - - @override - String get regionBounds => 'Limiti Regione'; - - @override - String get north => 'Nord'; - - @override - String get south => 'Sud'; - - @override - String get east => 'Est'; - - @override - String get west => 'Ovest'; - - @override - String get zoomLevels => 'Livelli di Zoom'; - - @override - String minZoom(int zoom) { - return 'Min: $zoom'; - } - - @override - String maxZoom(int zoom) { - return 'Max: $zoom'; - } - - @override - String get downloadingDots => 'Scaricamento in corso...'; - - @override - String get cancelDownload => 'Annulla Download'; - - @override - String get downloadRegionButton => 'Scarica Regione'; - - @override - String get downloadNote => - 'Nota: Regioni grandi o livelli di zoom elevati possono richiedere tempo e spazio di archiviazione significativi.'; - - @override - String get cacheManagement => 'Gestione Cache'; - - @override - String get clearAllMaps => 'Cancella Tutte le Mappe'; - - @override - String get clearMapsConfirmTitle => 'Cancella Tutte le Mappe'; - - @override - String get clearMapsConfirmMessage => - 'Sei sicuro di voler eliminare tutte le mappe scaricate? Questa azione non può essere annullata.'; - - @override - String get mapDownloadCompleted => 'Download mappa completato!'; - - @override - String get cacheClearedSuccessfully => 'Cache cancellata con successo!'; - - @override - String get downloadCancelled => 'Download annullato'; - - @override - String get startingDownload => 'Avvio download...'; - - @override - String get downloadingMapTiles => 'Scaricamento tile mappa...'; - - @override - String get downloadCompletedSuccessfully => - 'Download completato con successo!'; - - @override - String get cancellingDownload => 'Annullamento download...'; - - @override - String errorLoadingStats(String error) { - return 'Errore nel caricamento delle statistiche: $error'; - } - - @override - String downloadFailed(String error) { - return 'Download fallito: $error'; - } - - @override - String cancelFailed(String error) { - return 'Annullamento fallito: $error'; - } - - @override - String clearCacheFailed(String error) { - return 'Cancellazione cache fallita: $error'; - } - - @override - String minZoomError(String error) { - return 'Zoom minimo: $error'; - } - - @override - String maxZoomError(String error) { - return 'Zoom massimo: $error'; - } - - @override - String get minZoomGreaterThanMax => - 'Lo zoom minimo deve essere minore o uguale allo zoom massimo'; - @override String get selectMapLayer => 'Seleziona Livello Mappa'; - @override - String get mapOptions => 'Opzioni Mappa'; - - @override - String get showLegend => 'Mostra Legenda'; - - @override - String get displayMarkerTypeCounts => - 'Visualizza conteggio tipi di marcatori'; - - @override - String get rotateMapWithHeading => 'Ruota Mappa con Direzione'; - - @override - String get mapFollowsDirection => - 'La mappa segue la tua direzione quando ti muovi'; - - @override - String get resetMapRotation => 'Ripristina Rotazione'; - - @override - String get resetMapRotationTooltip => 'Ripristina mappa verso nord'; - - @override - String get showMapDebugInfo => 'Mostra Info Debug Mappa'; - - @override - String get displayZoomLevelBounds => 'Visualizza livello di zoom e limiti'; - - @override - String get fullscreenMode => 'Modalità Schermo Intero'; - - @override - String get hideUiFullMapView => - 'Nascondi tutti i controlli UI per la visualizzazione completa della mappa'; - @override String get openStreetMap => 'OpenStreetMap'; @@ -1036,12 +680,6 @@ class AppLocalizationsIt extends AppLocalizations { @override String get googleTerrain => 'Google Terreno'; - @override - String get downloadVisibleArea => 'Scarica area visibile'; - - @override - String get initializingMap => 'Inizializzazione mappa...'; - @override String get dragToPosition => 'Trascina per Posizionare'; @@ -1057,52 +695,6 @@ class AppLocalizationsIt extends AppLocalizations { @override String get sarAlert => 'ALLERTA SAR'; - @override - String get messageSentToPublicChannel => - 'Messaggio inviato al canale pubblico'; - - @override - String get pleaseSelectRoomToSendSar => - 'Seleziona una stanza per inviare il marcatore SAR'; - - @override - String failedToSendSarMarker(String error) { - return 'Impossibile inviare il marcatore SAR: $error'; - } - - @override - String sarMarkerSentTo(String roomName) { - return 'Marcatore SAR inviato a $roomName'; - } - - @override - String get notConnectedCannotSync => - 'Non connesso - impossibile sincronizzare i messaggi'; - - @override - String syncedMessageCount(int count) { - return 'Sincronizzati $count messaggio(i)'; - } - - @override - String get noNewMessages => 'Nessun nuovo messaggio'; - - @override - String syncFailed(String error) { - return 'Sincronizzazione fallita: $error'; - } - - @override - String get failedToResendMessage => 'Impossibile reinviare il messaggio'; - - @override - String get retryingMessage => 'Nuovo tentativo messaggio...'; - - @override - String retryFailed(String error) { - return 'Nuovo tentativo fallito: $error'; - } - @override String get textCopiedToClipboard => 'Testo copiato negli appunti'; @@ -1114,9 +706,6 @@ class AppLocalizationsIt extends AppLocalizations { String get cannotReplyContactNotFound => 'Impossibile rispondere: contatto non trovato'; - @override - String get messageDeleted => 'Messaggio eliminato'; - @override String get copyText => 'Copia testo'; @@ -1152,12 +741,6 @@ class AppLocalizationsIt extends AppLocalizations { @override String get sarLocationShare => 'Posizione SAR'; - @override - String get locationShared => 'Posizione condivisa'; - - @override - String get refreshedContacts => 'Contatti aggiornati'; - @override String get justNow => 'Proprio ora'; @@ -1265,80 +848,6 @@ class AppLocalizationsIt extends AppLocalizations { @override String get you => 'Tu'; - @override - String get offlineVectorMaps => 'Mappe Vettoriali Offline'; - - @override - String get offlineVectorMapsDescription => - 'Importa e gestisci tile di mappe vettoriali offline (formato MBTiles) per l\'uso senza connessione internet'; - - @override - String get importMbtiles => 'Importa File MBTiles'; - - @override - String get importMbtilesNote => - 'Supporta file MBTiles con tile vettoriali (formato PBF/MVT). Gli estratti Geofabrik funzionano benissimo!'; - - @override - String get noMbtilesFiles => 'Nessuna mappa vettoriale offline trovata'; - - @override - String get mbtilesImportedSuccessfully => - 'File MBTiles importato con successo'; - - @override - String get failedToImportMbtiles => 'Impossibile importare il file MBTiles'; - - @override - String get deleteMbtilesConfirmTitle => 'Elimina Mappa Offline'; - - @override - String deleteMbtilesConfirmMessage(String name) { - return 'Sei sicuro di voler eliminare \"$name\"? Questo rimuoverà permanentemente la mappa offline.'; - } - - @override - String get mbtilesDeletedSuccessfully => - 'Mappa offline eliminata con successo'; - - @override - String get failedToDeleteMbtiles => 'Impossibile eliminare la mappa offline'; - - @override - String get importExportCachedTiles => 'Importa/Esporta tile in cache'; - - @override - String get importExportDescription => - 'Esegui backup, condividi e ripristina tile mappa scaricati tra dispositivi'; - - @override - String get exportTilesToFile => 'Esporta tile su file'; - - @override - String get importTilesFromFile => 'Importa tile da file'; - - @override - String get selectExportLocation => 'Seleziona posizione esportazione'; - - @override - String get selectImportFile => 'Seleziona archivio tile'; - - @override - String get exportingTiles => 'Esportazione tile...'; - - @override - String get importingTiles => 'Importazione tile...'; - - @override - String exportSuccess(int count) { - return '$count tile esportati con successo'; - } - - @override - String importSuccess(int count) { - return '$count archivi importati con successo'; - } - @override String exportFailed(String error) { return 'Export failed: $error'; @@ -1349,40 +858,12 @@ class AppLocalizationsIt extends AppLocalizations { return 'Import failed: $error'; } - @override - String get exportNote => - 'Crea un file archivio compresso (.fmtc) che può essere condiviso e importato su altri dispositivi.'; - - @override - String get importNote => - 'Importa tile mappa da un file archivio precedentemente esportato. I tile verranno uniti con la cache esistente.'; - - @override - String get noTilesToExport => 'Nessun tile da esportare'; - - @override - String archiveContainsStores(int count) { - return 'L\'archivio contiene $count archivi'; - } - - @override - String get vectorTiles => 'Tile Vettoriali'; - - @override - String get schema => 'Schema'; - @override String get unknown => 'Sconosciuto'; - @override - String get bounds => 'Limiti'; - @override String get onlineLayers => 'Livelli Online'; - @override - String get offlineLayers => 'Livelli Offline'; - @override String get locationTrail => 'Traccia Posizione'; @@ -1422,47 +903,6 @@ class AppLocalizationsIt extends AppLocalizations { @override String get trailControls => 'Controlli Traccia'; - @override - String get exportTrailToGpx => 'Esporta traccia in GPX'; - - @override - String get importTrailFromGpx => 'Importa traccia da GPX'; - - @override - String get trailExportedSuccessfully => 'Traccia esportata con successo!'; - - @override - String get failedToExportTrail => 'Esportazione traccia fallita'; - - @override - String failedToImportTrail(String error) { - return 'Importazione traccia fallita: $error'; - } - - @override - String get importTrail => 'Importa traccia'; - - @override - String importTrailQuestion(int pointCount) { - return 'Importare traccia con $pointCount punti?\n\nPuoi sostituire la tua traccia attuale o visualizzarla affiancata.'; - } - - @override - String get viewAlongside => 'Visualizza affiancata'; - - @override - String get replaceCurrent => 'Sostituisci attuale'; - - @override - String trailImported(int pointCount) { - return 'Traccia importata! ($pointCount punti)'; - } - - @override - String trailReplaced(int pointCount) { - return 'Traccia sostituita! ($pointCount punti)'; - } - @override String get contactTrails => 'Tracce contatti'; @@ -1734,20 +1174,12 @@ class AppLocalizationsIt extends AppLocalizations { @override String get noRoomsFound => 'Nessuna stanza trovata'; - @override - String get noContactsOrRoomsAvailable => - 'Nessun contatto o stanza disponibile'; - @override String get noRecipientsAvailable => 'Nessun destinatario disponibile'; @override String get noChannelsFound => 'Nessun canale trovato'; - @override - String get messagesWillBeSentToPublicChannel => - 'I messaggi saranno inviati al canale pubblico'; - @override String get newMessage => 'Nuovo messaggio'; @@ -1932,9 +1364,6 @@ class AppLocalizationsIt extends AppLocalizations { @override String get rectangleDrawing => 'Rettangolo'; - @override - String get coordinatesCopiedToClipboard => 'Coordinate copiate negli appunti'; - @override String get manualCoordinates => 'Coordinate Manuali'; @@ -1947,31 +1376,9 @@ class AppLocalizationsIt extends AppLocalizations { @override String get longitudeLabel => 'Longitudine'; - @override - String get invalidLatitude => 'Latitudine non valida (-90 a 90)'; - - @override - String get invalidLongitude => 'Longitudine non valida (-180 a 180)'; - @override String get exampleCoordinates => 'Esempio: 46.0569, 14.5058'; - @override - String get drawingShared => 'Disegno della Mappa'; - - @override - String get drawingHidden => 'Disegno nascosto dalla mappa'; - - @override - String alreadyShared(int count) { - return '$count già condiviso'; - } - - @override - String newDrawingsShared(int count, String plural) { - return '$count nuovo(i) disegno(i) condiviso(i)'; - } - @override String get shareDrawing => 'Condividi Disegno'; @@ -2028,12 +1435,6 @@ class AppLocalizationsIt extends AppLocalizations { @override String get forestRoads => 'Strade Forestali'; - @override - String get showCadastralParcels => 'Mostra particelle catastali'; - - @override - String get showForestRoads => 'Mostra strade forestali'; - @override String get wmsOverlays => 'Sovrapposizioni WMS'; @@ -2138,10 +1539,6 @@ class AppLocalizationsIt extends AppLocalizations { return 'Eliminazione del canale fallita: $error'; } - @override - String get allChannelSlotsInUse => - 'Tutti gli slot dei canali sono in uso (massimo 39 canali personalizzati)'; - @override String get createChannel => 'Crea Canale'; @@ -2183,21 +1580,6 @@ class AppLocalizationsIt extends AppLocalizations { String get wizardConnectingFeature3 => 'Funziona completamente offline - non è richiesta connessione internet'; - @override - String get wizardSimpleModeTitle => 'Modalità Semplice'; - - @override - String get wizardSimpleModeDescription => - 'Nuovo alle reti mesh? Abilita la modalità semplice per un\'interfaccia semplificata con solo le funzioni essenziali.'; - - @override - String get wizardSimpleModeFeature1 => - 'Interfaccia intuitiva per principianti con funzioni principali'; - - @override - String get wizardSimpleModeFeature2 => - 'Passa alla modalità avanzata in qualsiasi momento dalle Impostazioni'; - @override String get wizardChannelTitle => 'Canali'; diff --git a/lib/l10n/app_localizations_ru.dart b/lib/l10n/app_localizations_ru.dart index 61fdfd6..c415d11 100644 --- a/lib/l10n/app_localizations_ru.dart +++ b/lib/l10n/app_localizations_ru.dart @@ -29,9 +29,6 @@ class AppLocalizationsRu extends AppLocalizations { @override String get disconnect => 'Отключить'; - @override - String get scanningForDevices => 'Поиск устройств...'; - @override String get noDevicesFound => 'Устройства не найдены'; @@ -62,27 +59,14 @@ class AppLocalizationsRu extends AppLocalizations { @override String get failedToGetGpsLocation => 'Не удалось получить GPS-координаты'; - @override - String advertisedAtLocation(String latitude, String longitude) { - return 'Транслируется в $latitude, $longitude'; - } - @override String failedToAdvertise(String error) { return 'Ошибка трансляции: $error'; } - @override - String reconnecting(int attempt, int max) { - return 'Переподключение... ($attempt/$max)'; - } - @override String get cancelReconnection => 'Отменить переподключение'; - @override - String get mapManagement => 'Управление картой'; - @override String get general => 'Основные'; @@ -129,13 +113,6 @@ class AppLocalizationsRu extends AppLocalizations { String get displayPacketActivity => 'Отображать активность пакетов в верхней панели'; - @override - String get simpleMode => 'Простой режим'; - - @override - String get simpleModeDescription => - 'Скрыть второстепенную информацию в сообщениях и контактах'; - @override String get disableMap => 'Отключить карту'; @@ -149,75 +126,6 @@ class AppLocalizationsRu extends AppLocalizations { @override String get chooseLanguage => 'Выбрать язык'; - @override - String get english => 'Английский'; - - @override - String get slovenian => 'Словенский'; - - @override - String get croatian => 'Хорватский'; - - @override - String get german => 'Немецкий'; - - @override - String get spanish => 'Испанский'; - - @override - String get french => 'Французский'; - - @override - String get italian => 'Итальянский'; - - @override - String get locationBroadcasting => 'Трансляция местоположения'; - - @override - String get autoLocationTracking => 'Авто-отслеживание геолокации'; - - @override - String get automaticallyBroadcastPosition => - 'Автоматически транслировать обновления позиции'; - - @override - String get configureTracking => 'Настроить отслеживание'; - - @override - String get distanceAndTimeThresholds => 'Пороги расстояния и времени'; - - @override - String get locationTrackingConfiguration => - 'Настройка отслеживания геолокации'; - - @override - String get configureWhenLocationBroadcasts => - 'Настройте условия отправки обновлений геолокации в mesh-сеть'; - - @override - String get minimumDistance => 'Минимальное расстояние'; - - @override - String broadcastAfterMoving(String distance) { - return 'Транслировать только после перемещения на $distance м'; - } - - @override - String get maximumDistance => 'Максимальное расстояние'; - - @override - String alwaysBroadcastAfterMoving(String distance) { - return 'Всегда транслировать после перемещения на $distance м'; - } - - @override - String get minimumTimeInterval => 'Минимальный интервал времени'; - - @override - String alwaysBroadcastEvery(String duration) { - return 'Всегда транслировать каждые $duration'; - } - @override String get save => 'Сохранить'; @@ -253,12 +161,6 @@ class AppLocalizationsRu extends AppLocalizations { @override String get moreInfo => 'Подробнее'; - @override - String get learnMoreAbout => 'Узнать больше о MeshCore SAR'; - - @override - String get developer => 'Разработчик'; - @override String get packageName => 'Имя пакета'; @@ -334,9 +236,6 @@ class AppLocalizationsRu extends AppLocalizations { @override String get refresh => 'Обновить'; - @override - String get sendDirectMessage => 'Отправить'; - @override String get resetPath => 'Сбросить маршрут (перепроложить)'; @@ -457,21 +356,6 @@ class AppLocalizationsRu extends AppLocalizations { return 'Поделиться $count рисун$plural'; } - @override - String sentDrawingsToRoom(int count, String plural, String roomName) { - return 'Отправлено $count рисун$plural в $roomName'; - } - - @override - String sharedDrawingsToRoom( - int success, - int total, - String plural, - String roomName, - ) { - return 'Передано $success/$total рисун$plural в $roomName'; - } - @override String get showReceivedDrawings => 'Показать полученные рисунки'; @@ -493,9 +377,6 @@ class AppLocalizationsRu extends AppLocalizations { @override String get clearAll => 'Очистить всё'; - @override - String get noLocalDrawings => 'Нет локальных рисунков для отправки'; - @override String get publicChannel => 'Публичный канал'; @@ -505,37 +386,9 @@ class AppLocalizationsRu extends AppLocalizations { @override String get storedPermanently => 'Сохранено постоянно в комнате'; - @override - String drawingsSentToPublicChannel(int count, String plural) { - return 'Отправлено $count рисун$plural в публичный канал'; - } - - @override - String drawingsSharedToPublicChannel(int success, int total) { - return 'Передано $success/$total рисунков в публичный канал'; - } - @override String get notConnectedToDevice => 'Устройство не подключено'; - @override - String get directMessage => 'Личное сообщение'; - - @override - String directMessageSentTo(String contactName) { - return 'Личное сообщение отправлено $contactName'; - } - - @override - String failedToSend(String error) { - return 'Не удалось отправить: $error'; - } - - @override - String directMessageInfo(String contactName) { - return 'Это сообщение будет отправлено напрямую $contactName. Оно также появится в общей ленте сообщений.'; - } - @override String get typeYourMessage => 'Введите сообщение...'; @@ -565,9 +418,6 @@ class AppLocalizationsRu extends AppLocalizations { @override String get location => 'Местоположение'; - @override - String get myLocation => 'Моё местоположение'; - @override String get fromMap => 'С карты'; @@ -630,9 +480,6 @@ class AppLocalizationsRu extends AppLocalizations { @override String get flood => 'Широковещательно'; - @override - String get admin => 'Администратор'; - @override String get loggedIn => 'Вход выполнен'; @@ -642,29 +489,11 @@ class AppLocalizationsRu extends AppLocalizations { @override String get distance => 'Расстояние'; - @override - String pingingDirect(String name) { - return 'Пинг $name (напрямую по маршруту)...'; - } - - @override - String pingingFlood(String name) { - return 'Пинг $name (широковещательно — нет маршрута)...'; - } - @override String directPingTimeout(String name) { return 'Таймаут прямого пинга — повтор $name широковещательно...'; } - @override - String pingSuccessful(String name, String fallback) { - return 'Пинг успешен: $name$fallback'; - } - - @override - String get viaFloodingFallback => ' (через широковещательный резерв)'; - @override String pingFailed(String name) { return 'Пинг не удался: $name — ответ не получен'; @@ -675,16 +504,6 @@ class AppLocalizationsRu extends AppLocalizations { return 'Вы уверены, что хотите удалить \"$name\"?\n\nЭто удалит контакт как из приложения, так и с сопряжённого радиоустройства.'; } - @override - String removingContact(String name) { - return 'Удаление $name...'; - } - - @override - String contactRemoved(String name) { - return 'Контакт \"$name\" удалён'; - } - @override String failedToRemoveContact(String error) { return 'Не удалось удалить контакт: $error'; @@ -729,11 +548,6 @@ class AppLocalizationsRu extends AppLocalizations { @override String get telemetry => 'Телеметрия'; - @override - String requestingTelemetry(String name) { - return 'Запрос телеметрии от $name...'; - } - @override String get voltage => 'Напряжение'; @@ -805,9 +619,6 @@ class AppLocalizationsRu extends AppLocalizations { @override String get showAll => 'Показать все'; - @override - String get nearbyContacts => 'Ближайшие контакты'; - @override String get locationUnavailable => 'Местоположение недоступно'; @@ -848,173 +659,9 @@ class AppLocalizationsRu extends AppLocalizations { @override String get channels => 'Каналы'; - @override - String get cacheStatistics => 'Статистика кэша'; - - @override - String get totalTiles => 'Всего тайлов'; - - @override - String get cacheSize => 'Размер кэша'; - - @override - String get storeName => 'Имя хранилища'; - - @override - String get noCacheStatistics => 'Статистика кэша недоступна'; - - @override - String get downloadRegion => 'Скачать регион'; - - @override - String get mapLayer => 'Слой карты'; - - @override - String get regionBounds => 'Границы региона'; - - @override - String get north => 'Север'; - - @override - String get south => 'Юг'; - - @override - String get east => 'Восток'; - - @override - String get west => 'Запад'; - - @override - String get zoomLevels => 'Уровни масштаба'; - - @override - String minZoom(int zoom) { - return 'Мин: $zoom'; - } - - @override - String maxZoom(int zoom) { - return 'Макс: $zoom'; - } - - @override - String get downloadingDots => 'Загрузка...'; - - @override - String get cancelDownload => 'Отменить загрузку'; - - @override - String get downloadRegionButton => 'Скачать регион'; - - @override - String get downloadNote => - 'Внимание: большие регионы или высокие уровни масштаба могут потребовать значительного времени и места.'; - - @override - String get cacheManagement => 'Управление кэшем'; - - @override - String get clearAllMaps => 'Очистить все карты'; - - @override - String get clearMapsConfirmTitle => 'Очистить все карты'; - - @override - String get clearMapsConfirmMessage => - 'Вы уверены, что хотите удалить все загруженные карты? Это действие нельзя отменить.'; - - @override - String get mapDownloadCompleted => 'Загрузка карты завершена!'; - - @override - String get cacheClearedSuccessfully => 'Кэш успешно очищен!'; - - @override - String get downloadCancelled => 'Загрузка отменена'; - - @override - String get startingDownload => 'Начало загрузки...'; - - @override - String get downloadingMapTiles => 'Загрузка тайлов карты...'; - - @override - String get downloadCompletedSuccessfully => 'Загрузка успешно завершена!'; - - @override - String get cancellingDownload => 'Отмена загрузки...'; - - @override - String errorLoadingStats(String error) { - return 'Ошибка загрузки статистики: $error'; - } - - @override - String downloadFailed(String error) { - return 'Ошибка загрузки: $error'; - } - - @override - String cancelFailed(String error) { - return 'Ошибка отмены: $error'; - } - - @override - String clearCacheFailed(String error) { - return 'Ошибка очистки кэша: $error'; - } - - @override - String minZoomError(String error) { - return 'Мин. масштаб: $error'; - } - - @override - String maxZoomError(String error) { - return 'Макс. масштаб: $error'; - } - - @override - String get minZoomGreaterThanMax => - 'Минимальный масштаб должен быть меньше или равен максимальному'; - @override String get selectMapLayer => 'Выбрать слой карты'; - @override - String get mapOptions => 'Параметры карты'; - - @override - String get showLegend => 'Показать легенду'; - - @override - String get displayMarkerTypeCounts => 'Отображать счётчики типов маркеров'; - - @override - String get rotateMapWithHeading => 'Поворачивать карту по курсу'; - - @override - String get mapFollowsDirection => 'Карта следует вашему направлению движения'; - - @override - String get resetMapRotation => 'Сбросить поворот'; - - @override - String get resetMapRotationTooltip => 'Вернуть карту на север'; - - @override - String get showMapDebugInfo => 'Показать отладочную информацию карты'; - - @override - String get displayZoomLevelBounds => 'Отображать уровень масштаба и границы'; - - @override - String get fullscreenMode => 'Полноэкранный режим'; - - @override - String get hideUiFullMapView => - 'Скрыть все элементы интерфейса для полного вида карты'; - @override String get openStreetMap => 'OpenStreetMap'; @@ -1033,12 +680,6 @@ class AppLocalizationsRu extends AppLocalizations { @override String get googleTerrain => 'Google Рельеф'; - @override - String get downloadVisibleArea => 'Скачать видимую область'; - - @override - String get initializingMap => 'Инициализация карты...'; - @override String get dragToPosition => 'Перетащите для позиционирования'; @@ -1054,52 +695,6 @@ class AppLocalizationsRu extends AppLocalizations { @override String get sarAlert => 'ТРЕВОГА SAR'; - @override - String get messageSentToPublicChannel => - 'Сообщение отправлено в публичный канал'; - - @override - String get pleaseSelectRoomToSendSar => - 'Пожалуйста, выберите комнату для отправки маркера SAR'; - - @override - String failedToSendSarMarker(String error) { - return 'Не удалось отправить маркер SAR: $error'; - } - - @override - String sarMarkerSentTo(String roomName) { - return 'Маркер SAR отправлен в $roomName'; - } - - @override - String get notConnectedCannotSync => - 'Нет подключения — синхронизация невозможна'; - - @override - String syncedMessageCount(int count) { - return 'Синхронизировано $count сообщение(й)'; - } - - @override - String get noNewMessages => 'Новых сообщений нет'; - - @override - String syncFailed(String error) { - return 'Синхронизация не удалась: $error'; - } - - @override - String get failedToResendMessage => 'Не удалось повторно отправить сообщение'; - - @override - String get retryingMessage => 'Повторная отправка сообщения...'; - - @override - String retryFailed(String error) { - return 'Повтор не удался: $error'; - } - @override String get textCopiedToClipboard => 'Текст скопирован в буфер обмена'; @@ -1111,9 +706,6 @@ class AppLocalizationsRu extends AppLocalizations { String get cannotReplyContactNotFound => 'Не удаётся ответить: контакт не найден'; - @override - String get messageDeleted => 'Сообщение удалено'; - @override String get copyText => 'Копировать текст'; @@ -1149,12 +741,6 @@ class AppLocalizationsRu extends AppLocalizations { @override String get sarLocationShare => 'Местоположение SAR'; - @override - String get locationShared => 'Местоположение передано'; - - @override - String get refreshedContacts => 'Контакты обновлены'; - @override String get justNow => 'Только что'; @@ -1262,78 +848,6 @@ class AppLocalizationsRu extends AppLocalizations { @override String get you => 'Вы'; - @override - String get offlineVectorMaps => 'Офлайн-векторные карты'; - - @override - String get offlineVectorMapsDescription => - 'Импортируйте офлайн-векторные тайлы карт (формат MBTiles) для использования без интернета'; - - @override - String get importMbtiles => 'Импортировать файл MBTiles'; - - @override - String get importMbtilesNote => - 'Поддерживаются файлы MBTiles с векторными тайлами (формат PBF/MVT). Отлично подходят выгрузки Geofabrik!'; - - @override - String get noMbtilesFiles => 'Офлайн-векторные карты не найдены'; - - @override - String get mbtilesImportedSuccessfully => 'Файл MBTiles успешно импортирован'; - - @override - String get failedToImportMbtiles => 'Не удалось импортировать файл MBTiles'; - - @override - String get deleteMbtilesConfirmTitle => 'Удалить офлайн-карту'; - - @override - String deleteMbtilesConfirmMessage(String name) { - return 'Вы уверены, что хотите удалить \"$name\"? Офлайн-карта будет удалена безвозвратно.'; - } - - @override - String get mbtilesDeletedSuccessfully => 'Офлайн-карта успешно удалена'; - - @override - String get failedToDeleteMbtiles => 'Не удалось удалить офлайн-карту'; - - @override - String get importExportCachedTiles => 'Импорт/Экспорт кэшированных тайлов'; - - @override - String get importExportDescription => - 'Резервное копирование, обмен и восстановление загруженных тайлов карт между устройствами'; - - @override - String get exportTilesToFile => 'Экспортировать тайлы в файл'; - - @override - String get importTilesFromFile => 'Импортировать тайлы из файла'; - - @override - String get selectExportLocation => 'Выберите место для экспорта'; - - @override - String get selectImportFile => 'Выберите архив тайлов'; - - @override - String get exportingTiles => 'Экспорт тайлов...'; - - @override - String get importingTiles => 'Импорт тайлов...'; - - @override - String exportSuccess(int count) { - return 'Экспортировано $count тайлов'; - } - - @override - String importSuccess(int count) { - return 'Импортировано $count хранилищ'; - } - @override String exportFailed(String error) { return 'Ошибка экспорта: $error'; @@ -1344,40 +858,12 @@ class AppLocalizationsRu extends AppLocalizations { return 'Ошибка импорта: $error'; } - @override - String get exportNote => - 'Создаёт сжатый архив (.fmtc), которым можно поделиться и импортировать на других устройствах.'; - - @override - String get importNote => - 'Импортирует тайлы карт из ранее экспортированного архива. Тайлы будут объединены с существующим кэшем.'; - - @override - String get noTilesToExport => 'Нет доступных тайлов для экспорта'; - - @override - String archiveContainsStores(int count) { - return 'Архив содержит $count хранилищ'; - } - - @override - String get vectorTiles => 'Векторные тайлы'; - - @override - String get schema => 'Схема'; - @override String get unknown => 'Неизвестно'; - @override - String get bounds => 'Границы'; - @override String get onlineLayers => 'Онлайн-слои'; - @override - String get offlineLayers => 'Офлайн-слои'; - @override String get locationTrail => 'Трек местоположения'; @@ -1416,47 +902,6 @@ class AppLocalizationsRu extends AppLocalizations { @override String get trailControls => 'Управление треком'; - @override - String get exportTrailToGpx => 'Экспортировать трек в GPX'; - - @override - String get importTrailFromGpx => 'Импортировать трек из GPX'; - - @override - String get trailExportedSuccessfully => 'Трек успешно экспортирован!'; - - @override - String get failedToExportTrail => 'Не удалось экспортировать трек'; - - @override - String failedToImportTrail(String error) { - return 'Не удалось импортировать трек: $error'; - } - - @override - String get importTrail => 'Импортировать трек'; - - @override - String importTrailQuestion(int pointCount) { - return 'Импортировать трек из $pointCount точек?\n\nВы можете заменить текущий трек или просмотреть его рядом.'; - } - - @override - String get viewAlongside => 'Просмотреть рядом'; - - @override - String get replaceCurrent => 'Заменить текущий'; - - @override - String trailImported(int pointCount) { - return 'Трек импортирован! ($pointCount точек)'; - } - - @override - String trailReplaced(int pointCount) { - return 'Трек заменён! ($pointCount точек)'; - } - @override String get contactTrails => 'Треки контактов'; @@ -1729,19 +1174,12 @@ class AppLocalizationsRu extends AppLocalizations { @override String get noRoomsFound => 'Комнаты не найдены'; - @override - String get noContactsOrRoomsAvailable => 'Нет доступных контактов или комнат'; - @override String get noRecipientsAvailable => 'Нет доступных получателей'; @override String get noChannelsFound => 'Каналы не найдены'; - @override - String get messagesWillBeSentToPublicChannel => - 'Сообщения будут отправлены в публичный канал'; - @override String get newMessage => 'Новое сообщение'; @@ -1922,10 +1360,6 @@ class AppLocalizationsRu extends AppLocalizations { @override String get rectangleDrawing => 'Прямоугольник'; - @override - String get coordinatesCopiedToClipboard => - 'Координаты скопированы в буфер обмена'; - @override String get manualCoordinates => 'Ввод координат вручную'; @@ -1938,37 +1372,9 @@ class AppLocalizationsRu extends AppLocalizations { @override String get longitudeLabel => 'Долгота'; - @override - String get invalidLatitude => 'Неверная широта (от -90 до 90)'; - - @override - String get invalidLongitude => 'Неверная долгота (от -180 до 180)'; - @override String get exampleCoordinates => 'Пример: 55.7558, 37.6173'; - @override - String get drawingShared => 'Рисунок на карте'; - - @override - String get drawingHidden => 'Рисунок скрыт с карты'; - - @override - String alreadyShared(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count уже передано', - one: '1 уже передан', - ); - return '$_temp0'; - } - - @override - String newDrawingsShared(int count, String plural) { - return 'Передано $count новых рисунк$plural'; - } - @override String get shareDrawing => 'Поделиться рисунком'; @@ -2025,12 +1431,6 @@ class AppLocalizationsRu extends AppLocalizations { @override String get forestRoads => 'Лесные дороги'; - @override - String get showCadastralParcels => 'Показать кадастровые участки'; - - @override - String get showForestRoads => 'Показать лесные дороги'; - @override String get wmsOverlays => 'WMS-наложения'; @@ -2135,10 +1535,6 @@ class AppLocalizationsRu extends AppLocalizations { return 'Не удалось удалить канал: $error'; } - @override - String get allChannelSlotsInUse => - 'Все слоты каналов заняты (максимум 39 пользовательских каналов)'; - @override String get createChannel => 'Создать канал'; @@ -2179,21 +1575,6 @@ class AppLocalizationsRu extends AppLocalizations { String get wizardConnectingFeature3 => 'Работает полностью офлайн — интернет не нужен'; - @override - String get wizardSimpleModeTitle => 'Простой режим'; - - @override - String get wizardSimpleModeDescription => - 'Впервые работаете с mesh-сетью? Включите простой режим для упрощённого интерфейса с основными функциями.'; - - @override - String get wizardSimpleModeFeature1 => - 'Удобный для новичков интерфейс с основными функциями'; - - @override - String get wizardSimpleModeFeature2 => - 'Переключиться в расширенный режим можно в любое время в настройках'; - @override String get wizardChannelTitle => 'Каналы'; diff --git a/lib/l10n/app_localizations_sl.dart b/lib/l10n/app_localizations_sl.dart index 9fa9c77..f94f0d5 100644 --- a/lib/l10n/app_localizations_sl.dart +++ b/lib/l10n/app_localizations_sl.dart @@ -29,9 +29,6 @@ class AppLocalizationsSl extends AppLocalizations { @override String get disconnect => 'Prekini'; - @override - String get scanningForDevices => 'Iskanje naprav...'; - @override String get noDevicesFound => 'Ni najdenih naprav'; @@ -62,27 +59,14 @@ class AppLocalizationsSl extends AppLocalizations { @override String get failedToGetGpsLocation => 'Pridobitev GPS lokacije ni uspela'; - @override - String advertisedAtLocation(String latitude, String longitude) { - return 'Objavljeno na $latitude, $longitude'; - } - @override String failedToAdvertise(String error) { return 'Objava ni uspela: $error'; } - @override - String reconnecting(int attempt, int max) { - return 'Ponovno povezovanje... ($attempt/$max)'; - } - @override String get cancelReconnection => 'Prekliči ponovno povezovanje'; - @override - String get mapManagement => 'Upravljanje zemljevida'; - @override String get general => 'Splošno'; @@ -129,13 +113,6 @@ class AppLocalizationsSl extends AppLocalizations { String get displayPacketActivity => 'Prikaži kazalnike aktivnosti paketov v zgornji vrstici'; - @override - String get simpleMode => 'Preprost način'; - - @override - String get simpleModeDescription => - 'Skrij nepomembne informacije v sporočilih in kontaktih'; - @override String get disableMap => 'Onemogoči zemljevid'; @@ -149,74 +126,6 @@ class AppLocalizationsSl extends AppLocalizations { @override String get chooseLanguage => 'Izberite jezik'; - @override - String get english => 'Angleščina'; - - @override - String get slovenian => 'Slovenščina'; - - @override - String get croatian => 'Hrvaščina'; - - @override - String get german => 'Nemščina'; - - @override - String get spanish => 'Španščina'; - - @override - String get french => 'Francoščina'; - - @override - String get italian => 'Italijanščina'; - - @override - String get locationBroadcasting => 'Oddajanje lokacije'; - - @override - String get autoLocationTracking => 'Samodejno sledenje lokaciji'; - - @override - String get automaticallyBroadcastPosition => - 'Samodejno oddajaj posodobitve položaja'; - - @override - String get configureTracking => 'Konfiguriraj sledenje'; - - @override - String get distanceAndTimeThresholds => 'Pragovi razdalje in časa'; - - @override - String get locationTrackingConfiguration => 'Konfiguracija sledenja lokaciji'; - - @override - String get configureWhenLocationBroadcasts => - 'Konfigurirajte, kdaj se oddajanja lokacije pošiljajo v omrežje mesh'; - - @override - String get minimumDistance => 'Minimalna razdalja'; - - @override - String broadcastAfterMoving(String distance) { - return 'Oddajaj šele po premiku $distance metrov'; - } - - @override - String get maximumDistance => 'Maksimalna razdalja'; - - @override - String alwaysBroadcastAfterMoving(String distance) { - return 'Vedno oddajaj po premiku $distance metrov'; - } - - @override - String get minimumTimeInterval => 'Minimalni časovni interval'; - - @override - String alwaysBroadcastEvery(String duration) { - return 'Vedno oddajaj vsakih $duration'; - } - @override String get save => 'Shrani'; @@ -252,12 +161,6 @@ class AppLocalizationsSl extends AppLocalizations { @override String get moreInfo => 'Več informacij'; - @override - String get learnMoreAbout => 'Več o MeshCore SAR'; - - @override - String get developer => 'Razvijalec'; - @override String get packageName => 'Ime paketa'; @@ -333,9 +236,6 @@ class AppLocalizationsSl extends AppLocalizations { @override String get refresh => 'Osveži'; - @override - String get sendDirectMessage => 'Pošlji'; - @override String get resetPath => 'Ponastavi pot (preusmeri)'; @@ -454,21 +354,6 @@ class AppLocalizationsSl extends AppLocalizations { return 'Deli $count risb$plural'; } - @override - String sentDrawingsToRoom(int count, String plural, String roomName) { - return 'Poslanih $count risb$plural karte v $roomName'; - } - - @override - String sharedDrawingsToRoom( - int success, - int total, - String plural, - String roomName, - ) { - return 'Deljeno $success/$total risb$plural v $roomName'; - } - @override String get showReceivedDrawings => 'Prikaži prejete risbe'; @@ -490,9 +375,6 @@ class AppLocalizationsSl extends AppLocalizations { @override String get clearAll => 'Počisti vse'; - @override - String get noLocalDrawings => 'Ni lokalnih risb za deljenje'; - @override String get publicChannel => 'Javni kanal'; @@ -502,37 +384,9 @@ class AppLocalizationsSl extends AppLocalizations { @override String get storedPermanently => 'Trajno shranjeno v sobi'; - @override - String drawingsSentToPublicChannel(int count, String plural) { - return 'Poslano $count risb$plural na javni kanal'; - } - - @override - String drawingsSharedToPublicChannel(int success, int total) { - return 'Deljeno $success/$total risb na javni kanal'; - } - @override String get notConnectedToDevice => 'Ni povezano z napravo'; - @override - String get directMessage => 'Neposredno sporočilo'; - - @override - String directMessageSentTo(String contactName) { - return 'Neposredno sporočilo poslano $contactName'; - } - - @override - String failedToSend(String error) { - return 'Pošiljanje ni uspelo: $error'; - } - - @override - String directMessageInfo(String contactName) { - return 'To sporočilo bo poslano neposredno $contactName. Prikazalo se bo tudi v glavnem viru sporočil.'; - } - @override String get typeYourMessage => 'Vnesite svoje sporočilo...'; @@ -562,9 +416,6 @@ class AppLocalizationsSl extends AppLocalizations { @override String get location => 'Lokacija'; - @override - String get myLocation => 'Moja lokacija'; - @override String get fromMap => 'Z zemljevida'; @@ -626,9 +477,6 @@ class AppLocalizationsSl extends AppLocalizations { @override String get flood => 'Razpršitev'; - @override - String get admin => 'Administrator'; - @override String get loggedIn => 'Prijavljen'; @@ -638,29 +486,11 @@ class AppLocalizationsSl extends AppLocalizations { @override String get distance => 'Razdalja'; - @override - String pingingDirect(String name) { - return 'Pinganje $name (neposredno preko poti)...'; - } - - @override - String pingingFlood(String name) { - return 'Pinganje $name (razpršitev - brez poti)...'; - } - @override String directPingTimeout(String name) { return 'Časovna omejitev neposrednega pinga - ponovni poskus $name z razprševanjem...'; } - @override - String pingSuccessful(String name, String fallback) { - return 'Ping uspešen do $name$fallback'; - } - - @override - String get viaFloodingFallback => ' (preko rezervnega razprševanja)'; - @override String pingFailed(String name) { return 'Ping neuspešen do $name - odgovor ni prejet'; @@ -671,16 +501,6 @@ class AppLocalizationsSl extends AppLocalizations { return 'Ste prepričani, da želite izbrisati \"$name\"?\n\nTo bo odstranilo stik iz aplikacije in spremljevalne radijske naprave.'; } - @override - String removingContact(String name) { - return 'Odstranjevanje $name...'; - } - - @override - String contactRemoved(String name) { - return 'Stik \"$name\" odstranjen'; - } - @override String failedToRemoveContact(String error) { return 'Odstranjevanje stika ni uspelo: $error'; @@ -725,11 +545,6 @@ class AppLocalizationsSl extends AppLocalizations { @override String get telemetry => 'Telemetrija'; - @override - String requestingTelemetry(String name) { - return 'Zahtevanje telemetrije od $name...'; - } - @override String get voltage => 'Napetost'; @@ -801,9 +616,6 @@ class AppLocalizationsSl extends AppLocalizations { @override String get showAll => 'Prikaži vse'; - @override - String get nearbyContacts => 'Bližnji stiki'; - @override String get locationUnavailable => 'Lokacija ni na voljo'; @@ -844,174 +656,9 @@ class AppLocalizationsSl extends AppLocalizations { @override String get channels => 'Kanali'; - @override - String get cacheStatistics => 'Statistika predpomnilnika'; - - @override - String get totalTiles => 'Skupaj ploščic'; - - @override - String get cacheSize => 'Velikost predpomnilnika'; - - @override - String get storeName => 'Ime skladišča'; - - @override - String get noCacheStatistics => 'Statistika predpomnilnika ni na voljo'; - - @override - String get downloadRegion => 'Prenesi regijo'; - - @override - String get mapLayer => 'Sloj zemljevida'; - - @override - String get regionBounds => 'Meje regije'; - - @override - String get north => 'Sever'; - - @override - String get south => 'Jug'; - - @override - String get east => 'Vzhod'; - - @override - String get west => 'Zahod'; - - @override - String get zoomLevels => 'Nivoji povečave'; - - @override - String minZoom(int zoom) { - return 'Min: $zoom'; - } - - @override - String maxZoom(int zoom) { - return 'Maks: $zoom'; - } - - @override - String get downloadingDots => 'Prenašanje...'; - - @override - String get cancelDownload => 'Prekliči prenos'; - - @override - String get downloadRegionButton => 'Prenesi regijo'; - - @override - String get downloadNote => - 'Opomba: Velike regije ali visoki nivoji povečave lahko zahtevajo veliko časa in prostora za shranjevanje.'; - - @override - String get cacheManagement => 'Upravljanje predpomnilnika'; - - @override - String get clearAllMaps => 'Počisti vse zemljevide'; - - @override - String get clearMapsConfirmTitle => 'Počisti vse zemljevide'; - - @override - String get clearMapsConfirmMessage => - 'Ste prepričani, da želite izbrisati vse prenesene zemljevide? Tega dejanja ni mogoče razveljaviti.'; - - @override - String get mapDownloadCompleted => 'Prenos zemljevida končan!'; - - @override - String get cacheClearedSuccessfully => 'Predpomnilnik uspešno počiščen!'; - - @override - String get downloadCancelled => 'Prenos preklican'; - - @override - String get startingDownload => 'Začetek prenosa...'; - - @override - String get downloadingMapTiles => 'Prenašanje ploščic zemljevida...'; - - @override - String get downloadCompletedSuccessfully => 'Prenos uspešno končan!'; - - @override - String get cancellingDownload => 'Preklic prenosa...'; - - @override - String errorLoadingStats(String error) { - return 'Napaka pri nalaganju statistike: $error'; - } - - @override - String downloadFailed(String error) { - return 'Prenos ni uspel: $error'; - } - - @override - String cancelFailed(String error) { - return 'Preklic ni uspel: $error'; - } - - @override - String clearCacheFailed(String error) { - return 'Čiščenje predpomnilnika ni uspelo: $error'; - } - - @override - String minZoomError(String error) { - return 'Min povečava: $error'; - } - - @override - String maxZoomError(String error) { - return 'Maks povečava: $error'; - } - - @override - String get minZoomGreaterThanMax => - 'Minimalna povečava mora biti manjša ali enaka maksimalni povečavi'; - @override String get selectMapLayer => 'Izberite sloj zemljevida'; - @override - String get mapOptions => 'Možnosti zemljevida'; - - @override - String get showLegend => 'Prikaži legendo'; - - @override - String get displayMarkerTypeCounts => 'Prikaži število vrst označevalcev'; - - @override - String get rotateMapWithHeading => 'Rotiraj zemljevid s smerjo'; - - @override - String get mapFollowsDirection => 'Zemljevid sledi vaši smeri pri gibanju'; - - @override - String get resetMapRotation => 'Ponastavi rotacijo'; - - @override - String get resetMapRotationTooltip => 'Ponastavi zemljevid na sever'; - - @override - String get showMapDebugInfo => - 'Prikaži informacije za razhroščevanje zemljevida'; - - @override - String get displayZoomLevelBounds => 'Prikaži nivo povečave in meje'; - - @override - String get fullscreenMode => 'Način celozaslonskega prikaza'; - - @override - String get hideUiFullMapView => - 'Skrij vse UI kontrole za poln prikaz zemljevida'; - @override String get openStreetMap => 'OpenStreetMap'; @@ -1030,12 +677,6 @@ class AppLocalizationsSl extends AppLocalizations { @override String get googleTerrain => 'Google teren'; - @override - String get downloadVisibleArea => 'Prenesi vidno območje'; - - @override - String get initializingMap => 'Inicializacija zemljevida...'; - @override String get dragToPosition => 'Povleci na položaj'; @@ -1051,51 +692,6 @@ class AppLocalizationsSl extends AppLocalizations { @override String get sarAlert => 'SAR ALARM'; - @override - String get messageSentToPublicChannel => 'Sporočilo poslano na javni kanal'; - - @override - String get pleaseSelectRoomToSendSar => - 'Prosimo, izberite sobo za pošiljanje SAR označevalca'; - - @override - String failedToSendSarMarker(String error) { - return 'Pošiljanje SAR označevalca ni uspelo: $error'; - } - - @override - String sarMarkerSentTo(String roomName) { - return 'SAR označevalec poslan v $roomName'; - } - - @override - String get notConnectedCannotSync => - 'Ni povezano - sporočil ni mogoče sinhronizirati'; - - @override - String syncedMessageCount(int count) { - return 'Sinhronizirano $count sporočil'; - } - - @override - String get noNewMessages => 'Ni novih sporočil'; - - @override - String syncFailed(String error) { - return 'Sinhronizacija ni uspela: $error'; - } - - @override - String get failedToResendMessage => 'Ponovno pošiljanje sporočila ni uspelo'; - - @override - String get retryingMessage => 'Ponovni poskus pošiljanja sporočila...'; - - @override - String retryFailed(String error) { - return 'Ponovni poskus ni uspel: $error'; - } - @override String get textCopiedToClipboard => 'Besedilo kopirano v odložišče'; @@ -1107,9 +703,6 @@ class AppLocalizationsSl extends AppLocalizations { String get cannotReplyContactNotFound => 'Ni mogoče odgovoriti: stik ni najden'; - @override - String get messageDeleted => 'Sporočilo izbrisano'; - @override String get copyText => 'Kopiraj besedilo'; @@ -1145,12 +738,6 @@ class AppLocalizationsSl extends AppLocalizations { @override String get sarLocationShare => 'SAR Lokacija'; - @override - String get locationShared => 'Lokacija deljena'; - - @override - String get refreshedContacts => 'Stiki osveženi'; - @override String get justNow => 'Pravkar'; @@ -1258,81 +845,6 @@ class AppLocalizationsSl extends AppLocalizations { @override String get you => 'Ti'; - @override - String get offlineVectorMaps => 'Brezpovezni vektorski zemljevidi'; - - @override - String get offlineVectorMapsDescription => - 'Uvozite in upravljajte brezpovezne vektorske ploščice zemljevidov (format MBTiles) za uporabo brez internetne povezave'; - - @override - String get importMbtiles => 'Uvozi MBTiles datoteko'; - - @override - String get importMbtilesNote => - 'Podpira MBTiles datoteke z vektorskimi ploščicami (format PBF/MVT). Geofabrik izvozi odlično delujejo!'; - - @override - String get noMbtilesFiles => - 'Ni najdenih brezpoveznih vektorskih zemljevidov'; - - @override - String get mbtilesImportedSuccessfully => 'MBTiles datoteka uspešno uvožena'; - - @override - String get failedToImportMbtiles => 'Uvoz MBTiles datoteke ni uspel'; - - @override - String get deleteMbtilesConfirmTitle => 'Izbriši brezpovezni zemljevid'; - - @override - String deleteMbtilesConfirmMessage(String name) { - return 'Ste prepričani, da želite izbrisati \"$name\"? To bo trajno odstranilo brezpovezni zemljevid.'; - } - - @override - String get mbtilesDeletedSuccessfully => - 'Brezpovezni zemljevid uspešno izbrisan'; - - @override - String get failedToDeleteMbtiles => - 'Brisanje brezpoveznega zemljevida ni uspelo'; - - @override - String get importExportCachedTiles => 'Uvoz/Izvoz predpomnjenih ploščic'; - - @override - String get importExportDescription => - 'Varnostno kopirajte, delite in obnovite prenesene ploščice zemljevida med napravami'; - - @override - String get exportTilesToFile => 'Izvozi ploščice v datoteko'; - - @override - String get importTilesFromFile => 'Uvozi ploščice iz datoteke'; - - @override - String get selectExportLocation => 'Izberi lokacijo izvoza'; - - @override - String get selectImportFile => 'Izberi arhiv ploščic'; - - @override - String get exportingTiles => 'Izvažanje ploščic...'; - - @override - String get importingTiles => 'Uvažanje ploščic...'; - - @override - String exportSuccess(int count) { - return 'Uspešno izvoženih $count ploščic'; - } - - @override - String importSuccess(int count) { - return 'Uspešno uvoženih $count skladišč'; - } - @override String exportFailed(String error) { return 'Izvoz ni uspel: $error'; @@ -1343,40 +855,12 @@ class AppLocalizationsSl extends AppLocalizations { return 'Uvoz ni uspel: $error'; } - @override - String get exportNote => - 'Ustvari stisnjeno arhivsko datoteko (.fmtc), ki jo lahko delite in uvozite na drugih napravah.'; - - @override - String get importNote => - 'Uvozi ploščice zemljevida iz predhodno izvožene arhivske datoteke. Ploščice bodo združene z obstoječim predpomnilnikom.'; - - @override - String get noTilesToExport => 'Ni ploščic za izvoz'; - - @override - String archiveContainsStores(int count) { - return 'Arhiv vsebuje $count skladišč'; - } - - @override - String get vectorTiles => 'Vektorske ploščice'; - - @override - String get schema => 'Shema'; - @override String get unknown => 'Neznano'; - @override - String get bounds => 'Meje'; - @override String get onlineLayers => 'Spletne plasti'; - @override - String get offlineLayers => 'Brezpovezne plasti'; - @override String get locationTrail => 'Sledilna pot'; @@ -1415,47 +899,6 @@ class AppLocalizationsSl extends AppLocalizations { @override String get trailControls => 'Nadzor poti'; - @override - String get exportTrailToGpx => 'Izvozi pot v GPX'; - - @override - String get importTrailFromGpx => 'Uvozi pot iz GPX'; - - @override - String get trailExportedSuccessfully => 'Pot uspešno izvožena!'; - - @override - String get failedToExportTrail => 'Izvoz poti ni uspel'; - - @override - String failedToImportTrail(String error) { - return 'Uvoz poti ni uspel: $error'; - } - - @override - String get importTrail => 'Uvozi pot'; - - @override - String importTrailQuestion(int pointCount) { - return 'Uvozi pot s $pointCount točkami?\n\nLahko zamenjate trenutno pot ali jo prikažete skupaj.'; - } - - @override - String get viewAlongside => 'Prikaži skupaj'; - - @override - String get replaceCurrent => 'Zamenjaj trenutno'; - - @override - String trailImported(int pointCount) { - return 'Pot uvožena! ($pointCount točk)'; - } - - @override - String trailReplaced(int pointCount) { - return 'Pot zamenjana! ($pointCount točk)'; - } - @override String get contactTrails => 'Poti stikov'; @@ -1725,19 +1168,12 @@ class AppLocalizationsSl extends AppLocalizations { @override String get noRoomsFound => 'Ni sob'; - @override - String get noContactsOrRoomsAvailable => 'Ni na voljo kontaktov ali sob'; - @override String get noRecipientsAvailable => 'Ni na voljo prejemnikov'; @override String get noChannelsFound => 'Ni najdenih kanalov'; - @override - String get messagesWillBeSentToPublicChannel => - 'Sporočila bodo poslana na javni kanal'; - @override String get newMessage => 'Novo sporočilo'; @@ -1918,9 +1354,6 @@ class AppLocalizationsSl extends AppLocalizations { @override String get rectangleDrawing => 'Pravokotna risba'; - @override - String get coordinatesCopiedToClipboard => 'Koordinate kopirane v odložišče'; - @override String get manualCoordinates => 'Ročne koordinate'; @@ -1933,37 +1366,9 @@ class AppLocalizationsSl extends AppLocalizations { @override String get longitudeLabel => 'Geografska dolžina'; - @override - String get invalidLatitude => 'Neveljavna geografska širina (-90 do 90)'; - - @override - String get invalidLongitude => 'Neveljavna geografska dolžina (-180 do 180)'; - @override String get exampleCoordinates => 'Primer: 46.0569, 14.5058'; - @override - String get drawingShared => 'Risba deljena'; - - @override - String get drawingHidden => 'Risba skrita z zemljevida'; - - @override - String alreadyShared(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count že deljeno', - one: '1 že deljeno', - ); - return '$_temp0'; - } - - @override - String newDrawingsShared(int count, String plural) { - return 'Deljeno $count nov$plural risb$plural'; - } - @override String get shareDrawing => 'Deli risbo'; @@ -2018,12 +1423,6 @@ class AppLocalizationsSl extends AppLocalizations { @override String get forestRoads => 'Gozdne ceste'; - @override - String get showCadastralParcels => 'Prikaži katastrske parcele'; - - @override - String get showForestRoads => 'Prikaži gozdne ceste'; - @override String get wmsOverlays => 'WMS prekrivanja'; @@ -2126,10 +1525,6 @@ class AppLocalizationsSl extends AppLocalizations { return 'Neuspešno brisanje kanala: $error'; } - @override - String get allChannelSlotsInUse => - 'Vsa mesta za kanale so zasedena (maksimalno 39 prilagojenih kanalov)'; - @override String get createChannel => 'Ustvari kanal'; @@ -2170,21 +1565,6 @@ class AppLocalizationsSl extends AppLocalizations { String get wizardConnectingFeature3 => 'Deluje povsem brez povezave — internet ni potreben'; - @override - String get wizardSimpleModeTitle => 'Preprost način'; - - @override - String get wizardSimpleModeDescription => - 'Ste novi v mesh omrežju? Vključite preprost način za poenostavljen vmesnik z osnovnimi funkcijami.'; - - @override - String get wizardSimpleModeFeature1 => - 'Vmesnik, prilagojen začetnikom, z osnovnimi funkcijami'; - - @override - String get wizardSimpleModeFeature2 => - 'Na napredni način lahko kadarkoli preklopite v nastavitvah'; - @override String get wizardChannelTitle => 'Kanali'; diff --git a/lib/l10n/app_localizations_zh.dart b/lib/l10n/app_localizations_zh.dart index e07c5a9..065149f 100644 --- a/lib/l10n/app_localizations_zh.dart +++ b/lib/l10n/app_localizations_zh.dart @@ -29,9 +29,6 @@ class AppLocalizationsZh extends AppLocalizations { @override String get disconnect => '断开连接'; - @override - String get scanningForDevices => '正在扫描设备...'; - @override String get noDevicesFound => '未找到设备'; @@ -59,27 +56,14 @@ class AppLocalizationsZh extends AppLocalizations { @override String get failedToGetGpsLocation => '获取 GPS 位置失败'; - @override - String advertisedAtLocation(String latitude, String longitude) { - return '已广播位置 $latitude, $longitude'; - } - @override String failedToAdvertise(String error) { return '广播失败: $error'; } - @override - String reconnecting(int attempt, int max) { - return '正在重新连接... ($attempt/$max)'; - } - @override String get cancelReconnection => '取消重新连接'; - @override - String get mapManagement => '地图管理'; - @override String get general => '通用'; @@ -125,12 +109,6 @@ class AppLocalizationsZh extends AppLocalizations { @override String get displayPacketActivity => '在顶部栏显示数据包活动指示器'; - @override - String get simpleMode => '简洁模式'; - - @override - String get simpleModeDescription => '在消息和联系人中隐藏非必要信息'; - @override String get disableMap => '禁用地图'; @@ -143,72 +121,6 @@ class AppLocalizationsZh extends AppLocalizations { @override String get chooseLanguage => '选择语言'; - @override - String get english => '英语'; - - @override - String get slovenian => '斯洛文尼亚语'; - - @override - String get croatian => '克罗地亚语'; - - @override - String get german => '德语'; - - @override - String get spanish => '西班牙语'; - - @override - String get french => '法语'; - - @override - String get italian => '意大利语'; - - @override - String get locationBroadcasting => '位置广播'; - - @override - String get autoLocationTracking => '自动位置跟踪'; - - @override - String get automaticallyBroadcastPosition => '自动广播位置更新'; - - @override - String get configureTracking => '配置跟踪'; - - @override - String get distanceAndTimeThresholds => '距离和时间阈值'; - - @override - String get locationTrackingConfiguration => '位置跟踪配置'; - - @override - String get configureWhenLocationBroadcasts => '配置何时向 Mesh 网络发送位置广播'; - - @override - String get minimumDistance => '最小距离'; - - @override - String broadcastAfterMoving(String distance) { - return '仅在移动 $distance 米后广播'; - } - - @override - String get maximumDistance => '最大距离'; - - @override - String alwaysBroadcastAfterMoving(String distance) { - return '移动 $distance 米后始终广播'; - } - - @override - String get minimumTimeInterval => '最小时间间隔'; - - @override - String alwaysBroadcastEvery(String duration) { - return '每隔 $duration 始终广播'; - } - @override String get save => '保存'; @@ -244,12 +156,6 @@ class AppLocalizationsZh extends AppLocalizations { @override String get moreInfo => '更多信息'; - @override - String get learnMoreAbout => '了解更多关于 MeshCore 搜救助手的信息'; - - @override - String get developer => '开发者'; - @override String get packageName => '包名'; @@ -321,9 +227,6 @@ class AppLocalizationsZh extends AppLocalizations { @override String get refresh => '刷新'; - @override - String get sendDirectMessage => '发送'; - @override String get resetPath => '重置路径 (重新路由)'; @@ -441,21 +344,6 @@ class AppLocalizationsZh extends AppLocalizations { return '共享 $count 个绘图'; } - @override - String sentDrawingsToRoom(int count, String plural, String roomName) { - return '已发送 $count 个地图绘制到 $roomName'; - } - - @override - String sharedDrawingsToRoom( - int success, - int total, - String plural, - String roomName, - ) { - return '已将 $success/$total 个绘图共享到 $roomName'; - } - @override String get showReceivedDrawings => '显示接收到的绘图'; @@ -477,9 +365,6 @@ class AppLocalizationsZh extends AppLocalizations { @override String get clearAll => '全部清除'; - @override - String get noLocalDrawings => '没有可共享的本地绘图'; - @override String get publicChannel => '公共频道'; @@ -489,37 +374,9 @@ class AppLocalizationsZh extends AppLocalizations { @override String get storedPermanently => '永久存储在房间中'; - @override - String drawingsSentToPublicChannel(int count, String plural) { - return '已将 $count 个地图绘制发送到公共频道'; - } - - @override - String drawingsSharedToPublicChannel(int success, int total) { - return '已将 $success/$total 个绘图共享到公共频道'; - } - @override String get notConnectedToDevice => '未连接到设备'; - @override - String get directMessage => '直连消息'; - - @override - String directMessageSentTo(String contactName) { - return '直连消息已发送给 $contactName'; - } - - @override - String failedToSend(String error) { - return '发送失败:$error'; - } - - @override - String directMessageInfo(String contactName) { - return '此消息将直连发送给 $contactName。它也将出现在主消息流中。'; - } - @override String get typeYourMessage => '输入您的消息...'; @@ -547,9 +404,6 @@ class AppLocalizationsZh extends AppLocalizations { @override String get location => '位置'; - @override - String get myLocation => '我的位置'; - @override String get fromMap => '来自地图'; @@ -610,9 +464,6 @@ class AppLocalizationsZh extends AppLocalizations { @override String get flood => '泛洪'; - @override - String get admin => '管理员'; - @override String get loggedIn => '已登录'; @@ -622,29 +473,11 @@ class AppLocalizationsZh extends AppLocalizations { @override String get distance => '距离'; - @override - String pingingDirect(String name) { - return '正在 Ping $name(通过路径直连发送)...'; - } - - @override - String pingingFlood(String name) { - return '正在 Ping $name(泛洪 - 无路径)...'; - } - @override String directPingTimeout(String name) { return '直连 Ping 超时 - 正在使用泛洪重试 $name...'; } - @override - String pingSuccessful(String name, String fallback) { - return '成功 Ping 到 $name$fallback'; - } - - @override - String get viaFloodingFallback => '(通过泛洪回退)'; - @override String pingFailed(String name) { return 'Ping $name 失败 - 未收到响应'; @@ -655,16 +488,6 @@ class AppLocalizationsZh extends AppLocalizations { return '您确定要删除“$name”吗?\n\n这将从应用程序和配套的无线电设备中移除该联系人。'; } - @override - String removingContact(String name) { - return '正在移除 $name...'; - } - - @override - String contactRemoved(String name) { - return '联系人“$name”已移除'; - } - @override String failedToRemoveContact(String error) { return '移除联系人失败:$error'; @@ -709,11 +532,6 @@ class AppLocalizationsZh extends AppLocalizations { @override String get telemetry => '遥测'; - @override - String requestingTelemetry(String name) { - return '正在向 $name 请求遥测数据...'; - } - @override String get voltage => '电压'; @@ -785,9 +603,6 @@ class AppLocalizationsZh extends AppLocalizations { @override String get showAll => '显示全部'; - @override - String get nearbyContacts => '附近联系人'; - @override String get locationUnavailable => '位置不可用'; @@ -827,169 +642,9 @@ class AppLocalizationsZh extends AppLocalizations { @override String get channels => '频道'; - @override - String get cacheStatistics => '缓存统计'; - - @override - String get totalTiles => '总瓦片数'; - - @override - String get cacheSize => '缓存大小'; - - @override - String get storeName => '存储名称'; - - @override - String get noCacheStatistics => '没有可用的缓存统计信息'; - - @override - String get downloadRegion => '下载区域'; - - @override - String get mapLayer => '地图图层'; - - @override - String get regionBounds => '区域边界'; - - @override - String get north => '北'; - - @override - String get south => '南'; - - @override - String get east => '东'; - - @override - String get west => '西'; - - @override - String get zoomLevels => '缩放级别'; - - @override - String minZoom(int zoom) { - return '最小:$zoom'; - } - - @override - String maxZoom(int zoom) { - return '最大:$zoom'; - } - - @override - String get downloadingDots => '正在下载...'; - - @override - String get cancelDownload => '取消下载'; - - @override - String get downloadRegionButton => '下载区域'; - - @override - String get downloadNote => '注意:大的区域或高缩放级别可能需要大量时间和存储空间。'; - - @override - String get cacheManagement => '缓存管理'; - - @override - String get clearAllMaps => '清除所有地图'; - - @override - String get clearMapsConfirmTitle => '清除所有地图'; - - @override - String get clearMapsConfirmMessage => '您确定要删除所有下载的地图吗?此操作无法撤销。'; - - @override - String get mapDownloadCompleted => '地图下载完成!'; - - @override - String get cacheClearedSuccessfully => '缓存清除成功!'; - - @override - String get downloadCancelled => '下载已取消'; - - @override - String get startingDownload => '正在开始下载...'; - - @override - String get downloadingMapTiles => '正在下载地图瓦片...'; - - @override - String get downloadCompletedSuccessfully => '下载成功完成!'; - - @override - String get cancellingDownload => '正在取消下载...'; - - @override - String errorLoadingStats(String error) { - return '加载统计信息时出错:$error'; - } - - @override - String downloadFailed(String error) { - return '下载失败:$error'; - } - - @override - String cancelFailed(String error) { - return '取消失败:$error'; - } - - @override - String clearCacheFailed(String error) { - return '清除缓存失败:$error'; - } - - @override - String minZoomError(String error) { - return '最小缩放:$error'; - } - - @override - String maxZoomError(String error) { - return '最大缩放:$error'; - } - - @override - String get minZoomGreaterThanMax => '最小缩放必须小于或等于最大缩放'; - @override String get selectMapLayer => '选择地图图层'; - @override - String get mapOptions => '地图选项'; - - @override - String get showLegend => '显示图例'; - - @override - String get displayMarkerTypeCounts => '显示标记类型计数'; - - @override - String get rotateMapWithHeading => '随航向旋转地图'; - - @override - String get mapFollowsDirection => '地图在移动时跟随您的方向'; - - @override - String get resetMapRotation => '重置旋转'; - - @override - String get resetMapRotationTooltip => '重置地图方向为北'; - - @override - String get showMapDebugInfo => '显示地图调试信息'; - - @override - String get displayZoomLevelBounds => '显示缩放级别和边界'; - - @override - String get fullscreenMode => '全屏模式'; - - @override - String get hideUiFullMapView => '隐藏所有 UI 控件以获得全地图视图'; - @override String get openStreetMap => 'OpenStreetMap'; @@ -1008,12 +663,6 @@ class AppLocalizationsZh extends AppLocalizations { @override String get googleTerrain => 'Google 地形图'; - @override - String get downloadVisibleArea => '下载可见区域'; - - @override - String get initializingMap => '正在初始化地图...'; - @override String get dragToPosition => '拖动以定位'; @@ -1029,49 +678,6 @@ class AppLocalizationsZh extends AppLocalizations { @override String get sarAlert => '搜救警报'; - @override - String get messageSentToPublicChannel => '消息已发送到公共频道'; - - @override - String get pleaseSelectRoomToSendSar => '请选择一个房间发送搜救标记'; - - @override - String failedToSendSarMarker(String error) { - return '发送搜救标记失败:$error'; - } - - @override - String sarMarkerSentTo(String roomName) { - return '搜救标记已发送到 $roomName'; - } - - @override - String get notConnectedCannotSync => '未连接 - 无法同步消息'; - - @override - String syncedMessageCount(int count) { - return '已同步 $count 条消息'; - } - - @override - String get noNewMessages => '没有新消息'; - - @override - String syncFailed(String error) { - return '同步失败:$error'; - } - - @override - String get failedToResendMessage => '重新发送消息失败'; - - @override - String get retryingMessage => '正在重试消息...'; - - @override - String retryFailed(String error) { - return '重试失败:$error'; - } - @override String get textCopiedToClipboard => '文本已复制到剪贴板'; @@ -1081,9 +687,6 @@ class AppLocalizationsZh extends AppLocalizations { @override String get cannotReplyContactNotFound => '无法回复:未找到联系人'; - @override - String get messageDeleted => '消息已删除'; - @override String get copyText => '复制文本'; @@ -1118,12 +721,6 @@ class AppLocalizationsZh extends AppLocalizations { @override String get sarLocationShare => '搜救位置'; - @override - String get locationShared => '位置已共享'; - - @override - String get refreshedContacts => '联系人已刷新'; - @override String get justNow => '刚刚'; @@ -1231,77 +828,6 @@ class AppLocalizationsZh extends AppLocalizations { @override String get you => '您'; - @override - String get offlineVectorMaps => '离线矢量地图'; - - @override - String get offlineVectorMapsDescription => - '导入和管理离线矢量地图瓦片(MBTiles 格式),以便在没有互联网连接时使用'; - - @override - String get importMbtiles => '导入 MBTiles 文件'; - - @override - String get importMbtilesNote => - '支持带有矢量瓦片(PBF/MVT 格式)的 MBTiles 文件。Geofabrik 的数据提取非常好用!'; - - @override - String get noMbtilesFiles => '未找到离线矢量地图'; - - @override - String get mbtilesImportedSuccessfully => 'MBTiles 文件导入成功'; - - @override - String get failedToImportMbtiles => '导入 MBTiles 文件失败'; - - @override - String get deleteMbtilesConfirmTitle => '删除离线地图'; - - @override - String deleteMbtilesConfirmMessage(String name) { - return '您确定要删除“$name”吗?这将永久移除该离线地图。'; - } - - @override - String get mbtilesDeletedSuccessfully => '离线地图删除成功'; - - @override - String get failedToDeleteMbtiles => '删除离线地图失败'; - - @override - String get importExportCachedTiles => '导入/导出缓存的瓦片'; - - @override - String get importExportDescription => '在设备之间备份、共享和恢复下载的地图瓦片'; - - @override - String get exportTilesToFile => '导出瓦片到文件'; - - @override - String get importTilesFromFile => '从文件导入瓦片'; - - @override - String get selectExportLocation => '选择导出位置'; - - @override - String get selectImportFile => '选择瓦片存档'; - - @override - String get exportingTiles => '正在导出瓦片...'; - - @override - String get importingTiles => '正在导入瓦片...'; - - @override - String exportSuccess(int count) { - return '成功导出 $count 个瓦片'; - } - - @override - String importSuccess(int count) { - return '成功导入 $count 个存储'; - } - @override String exportFailed(String error) { return '导出失败:$error'; @@ -1312,38 +838,12 @@ class AppLocalizationsZh extends AppLocalizations { return '导入失败:$error'; } - @override - String get exportNote => '创建一个压缩存档(.fmtc)文件,可以共享并在其他设备上导入。'; - - @override - String get importNote => '从先前导出的存档文件导入地图瓦片。瓦片将与现有缓存合并。'; - - @override - String get noTilesToExport => '没有可导出的瓦片'; - - @override - String archiveContainsStores(int count) { - return '存档包含 $count 个存储'; - } - - @override - String get vectorTiles => '矢量瓦片'; - - @override - String get schema => '模式'; - @override String get unknown => '未知'; - @override - String get bounds => '边界'; - @override String get onlineLayers => '在线图层'; - @override - String get offlineLayers => '离线图层'; - @override String get locationTrail => '位置轨迹'; @@ -1380,47 +880,6 @@ class AppLocalizationsZh extends AppLocalizations { @override String get trailControls => '轨迹控制'; - @override - String get exportTrailToGpx => '导出轨迹到 GPX'; - - @override - String get importTrailFromGpx => '从 GPX 导入轨迹'; - - @override - String get trailExportedSuccessfully => '轨迹导出成功!'; - - @override - String get failedToExportTrail => '导出轨迹失败'; - - @override - String failedToImportTrail(String error) { - return '导入轨迹失败:$error'; - } - - @override - String get importTrail => '导入轨迹'; - - @override - String importTrailQuestion(int pointCount) { - return '导入包含 $pointCount 个点的轨迹吗?\n\n您可以替换当前轨迹,或将其与现有轨迹并排查看。'; - } - - @override - String get viewAlongside => '并排查看'; - - @override - String get replaceCurrent => '替换当前'; - - @override - String trailImported(int pointCount) { - return '轨迹已导入!($pointCount 个点)'; - } - - @override - String trailReplaced(int pointCount) { - return '轨迹已替换!($pointCount 个点)'; - } - @override String get contactTrails => '联系人轨迹'; @@ -1672,18 +1131,12 @@ class AppLocalizationsZh extends AppLocalizations { @override String get noRoomsFound => '未找到房间'; - @override - String get noContactsOrRoomsAvailable => '没有可用的联系人或房间'; - @override String get noRecipientsAvailable => '没有可用的收件人'; @override String get noChannelsFound => '未找到频道'; - @override - String get messagesWillBeSentToPublicChannel => '消息将发送到公共频道'; - @override String get newMessage => '新消息'; @@ -1855,9 +1308,6 @@ class AppLocalizationsZh extends AppLocalizations { @override String get rectangleDrawing => '矩形绘图'; - @override - String get coordinatesCopiedToClipboard => '坐标已复制到剪贴板'; - @override String get manualCoordinates => '手动输入坐标'; @@ -1870,31 +1320,9 @@ class AppLocalizationsZh extends AppLocalizations { @override String get longitudeLabel => '经度'; - @override - String get invalidLatitude => '无效的纬度(-90 到 90)'; - - @override - String get invalidLongitude => '无效的经度(-180 到 180)'; - @override String get exampleCoordinates => '例如:46.0569, 14.5058'; - @override - String get drawingShared => '地图绘制'; - - @override - String get drawingHidden => '绘图已从地图上隐藏'; - - @override - String alreadyShared(int count) { - return '$count 个已共享'; - } - - @override - String newDrawingsShared(int count, String plural) { - return '已共享 $count 个新绘图'; - } - @override String get shareDrawing => '共享绘图'; @@ -1948,12 +1376,6 @@ class AppLocalizationsZh extends AppLocalizations { @override String get forestRoads => '森林道路'; - @override - String get showCadastralParcels => '显示地籍地块'; - - @override - String get showForestRoads => '显示森林道路'; - @override String get wmsOverlays => 'WMS 覆盖层'; @@ -2054,9 +1476,6 @@ class AppLocalizationsZh extends AppLocalizations { return '删除频道失败:$error'; } - @override - String get allChannelSlotsInUse => '所有频道槽位都已在使用中(最多 39 个自定义频道)'; - @override String get createChannel => '创建频道'; @@ -2095,19 +1514,6 @@ class AppLocalizationsZh extends AppLocalizations { @override String get wizardConnectingFeature3 => '完全离线工作 - 无需互联网'; - @override - String get wizardSimpleModeTitle => '简洁模式'; - - @override - String get wizardSimpleModeDescription => - '刚接触 Mesh 网络?启用简洁模式以获得仅包含基本功能的简化界面。'; - - @override - String get wizardSimpleModeFeature1 => '对初学者友好的界面,包含核心功能'; - - @override - String get wizardSimpleModeFeature2 => '随时在设置中切换到高级模式'; - @override String get wizardChannelTitle => '频道'; diff --git a/lib/l10n/app_ru.arb b/lib/l10n/app_ru.arb index 00f4318..9c2aa82 100644 --- a/lib/l10n/app_ru.arb +++ b/lib/l10n/app_ru.arb @@ -1,685 +1,515 @@ { "@@locale": "ru", - - "appTitle": "MeshCore SAR", - "messages": "Сообщения", - "contacts": "Контакты", - "map": "Карта", - "settings": "Настройки", - "connect": "Подключить", - "disconnect": "Отключить", - "scanningForDevices": "Поиск устройств...", - "noDevicesFound": "Устройства не найдены", - "scanAgain": "Повторить поиск", - "tapToConnect": "Нажмите для подключения", - "deviceNotConnected": "Устройство не подключено", - "locationPermissionDenied": "Доступ к геолокации запрещён", - "locationPermissionPermanentlyDenied": "Доступ к геолокации запрещён навсегда. Включите его в настройках.", - "locationPermissionRequired": "Доступ к геолокации необходим для GPS-трекинга и координации команды. Вы можете включить его позже в настройках.", - "locationServicesDisabled": "Службы геолокации отключены. Пожалуйста, включите их в настройках.", - "failedToGetGpsLocation": "Не удалось получить GPS-координаты", - "advertisedAtLocation": "Транслируется в {latitude}, {longitude}", - "failedToAdvertise": "Ошибка трансляции: {error}", - "reconnecting": "Переподключение... ({attempt}/{max})", - "cancelReconnection": "Отменить переподключение", - "mapManagement": "Управление картой", - "general": "Основные", - "theme": "Тема", - "chooseTheme": "Выбрать тему", - "light": "Светлая", - "dark": "Тёмная", - "blueLightTheme": "Синяя светлая тема", - "blueDarkTheme": "Синяя тёмная тема", - "sarRed": "SAR Красная", - "alertEmergencyMode": "Режим тревоги / ЧС", - "sarGreen": "SAR Зелёная", - "safeAllClearMode": "Режим «Всё в порядке»", - "autoSystem": "Авто (Система)", - "followSystemTheme": "Следовать системной теме", - "showRxTxIndicators": "Показывать индикаторы RX/TX", - "displayPacketActivity": "Отображать активность пакетов в верхней панели", - "simpleMode": "Простой режим", - "simpleModeDescription": "Скрыть второстепенную информацию в сообщениях и контактах", - "disableMap": "Отключить карту", - "disableMapDescription": "Скрыть вкладку карты для экономии заряда батареи", - "language": "Язык", - "chooseLanguage": "Выбрать язык", - "english": "Английский", - "slovenian": "Словенский", - "croatian": "Хорватский", - "german": "Немецкий", - "spanish": "Испанский", - "french": "Французский", - "italian": "Итальянский", - "russian": "Русский", - "locationBroadcasting": "Трансляция местоположения", - "autoLocationTracking": "Авто-отслеживание геолокации", - "automaticallyBroadcastPosition": "Автоматически транслировать обновления позиции", - "configureTracking": "Настроить отслеживание", - "distanceAndTimeThresholds": "Пороги расстояния и времени", - "locationTrackingConfiguration": "Настройка отслеживания геолокации", - "configureWhenLocationBroadcasts": "Настройте условия отправки обновлений геолокации в mesh-сеть", - "minimumDistance": "Минимальное расстояние", - "broadcastAfterMoving": "Транслировать только после перемещения на {distance} м", - "maximumDistance": "Максимальное расстояние", - "alwaysBroadcastAfterMoving": "Всегда транслировать после перемещения на {distance} м", - "minimumTimeInterval": "Минимальный интервал времени", - "alwaysBroadcastEvery": "Всегда транслировать каждые {duration}", - "save": "Сохранить", - "cancel": "Отмена", - "close": "Закрыть", - "about": "О приложении", - "appVersion": "Версия приложения", - "appName": "Название приложения", - "aboutMeshCoreSar": "О MeshCore SAR", - "aboutDescription": "Приложение для поисково-спасательных операций, разработанное для аварийно-спасательных служб. Возможности:\n\n• BLE mesh-сеть для связи между устройствами\n• Офлайн-карты с несколькими вариантами слоёв\n• Отслеживание членов команды в реальном времени\n• Тактические маркеры SAR (найденный человек, пожар, место сбора)\n• Управление контактами и обмен сообщениями\n• GPS-трекинг с показанием курса компаса\n• Кэширование тайлов карт для работы офлайн", - "technologiesUsed": "Используемые технологии:", - "technologiesList": "• Flutter для кросс-платформенной разработки\n• BLE (Bluetooth Low Energy) для mesh-сети\n• OpenStreetMap для карт\n• Provider для управления состоянием\n• SharedPreferences для локального хранилища", - "moreInfo": "Подробнее", - "learnMoreAbout": "Узнать больше о MeshCore SAR", - "developer": "Разработчик", - "packageName": "Имя пакета", - "sampleData": "Тестовые данные", - "sampleDataDescription": "Загрузить или очистить тестовые контакты, сообщения каналов и маркеры SAR", - "loadSampleData": "Загрузить тестовые данные", - "clearAllData": "Очистить все данные", - "clearAllDataConfirmTitle": "Очистить все данные", - "clearAllDataConfirmMessage": "Это удалит все контакты и маркеры SAR. Вы уверены?", - "clear": "Очистить", + "appTitle": "MeshCore SAR", + "messages": "Сообщения", + "contacts": "Контакты", + "map": "Карта", + "settings": "Настройки", + "connect": "Подключить", + "disconnect": "Отключить", + "noDevicesFound": "Устройства не найдены", + "scanAgain": "Повторить поиск", + "tapToConnect": "Нажмите для подключения", + "deviceNotConnected": "Устройство не подключено", + "locationPermissionDenied": "Доступ к геолокации запрещён", + "locationPermissionPermanentlyDenied": "Доступ к геолокации запрещён навсегда. Включите его в настройках.", + "locationPermissionRequired": "Доступ к геолокации необходим для GPS-трекинга и координации команды. Вы можете включить его позже в настройках.", + "locationServicesDisabled": "Службы геолокации отключены. Пожалуйста, включите их в настройках.", + "failedToGetGpsLocation": "Не удалось получить GPS-координаты", + "failedToAdvertise": "Ошибка трансляции: {error}", + "cancelReconnection": "Отменить переподключение", + "general": "Основные", + "theme": "Тема", + "chooseTheme": "Выбрать тему", + "light": "Светлая", + "dark": "Тёмная", + "blueLightTheme": "Синяя светлая тема", + "blueDarkTheme": "Синяя тёмная тема", + "sarRed": "SAR Красная", + "alertEmergencyMode": "Режим тревоги / ЧС", + "sarGreen": "SAR Зелёная", + "safeAllClearMode": "Режим «Всё в порядке»", + "autoSystem": "Авто (Система)", + "followSystemTheme": "Следовать системной теме", + "showRxTxIndicators": "Показывать индикаторы RX/TX", + "displayPacketActivity": "Отображать активность пакетов в верхней панели", + "disableMap": "Отключить карту", + "disableMapDescription": "Скрыть вкладку карты для экономии заряда батареи", + "language": "Язык", + "chooseLanguage": "Выбрать язык", + "save": "Сохранить", + "cancel": "Отмена", + "close": "Закрыть", + "about": "О приложении", + "appVersion": "Версия приложения", + "appName": "Название приложения", + "aboutMeshCoreSar": "О MeshCore SAR", + "aboutDescription": "Приложение для поисково-спасательных операций, разработанное для аварийно-спасательных служб. Возможности:\n\n• BLE mesh-сеть для связи между устройствами\n• Офлайн-карты с несколькими вариантами слоёв\n• Отслеживание членов команды в реальном времени\n• Тактические маркеры SAR (найденный человек, пожар, место сбора)\n• Управление контактами и обмен сообщениями\n• GPS-трекинг с показанием курса компаса\n• Кэширование тайлов карт для работы офлайн", + "technologiesUsed": "Используемые технологии:", + "technologiesList": "• Flutter для кросс-платформенной разработки\n• BLE (Bluetooth Low Energy) для mesh-сети\n• OpenStreetMap для карт\n• Provider для управления состоянием\n• SharedPreferences для локального хранилища", + "moreInfo": "Подробнее", + "packageName": "Имя пакета", + "sampleData": "Тестовые данные", + "sampleDataDescription": "Загрузить или очистить тестовые контакты, сообщения каналов и маркеры SAR", + "loadSampleData": "Загрузить тестовые данные", + "clearAllData": "Очистить все данные", + "clearAllDataConfirmTitle": "Очистить все данные", + "clearAllDataConfirmMessage": "Это удалит все контакты и маркеры SAR. Вы уверены?", + "clear": "Очистить", "loadedSampleData": "Загружено: {teamCount} членов команды, {channelCount} каналов, {sarCount} маркеров SAR, {messageCount} сообщений", - "failedToLoadSampleData": "Не удалось загрузить тестовые данные: {error}", - "allDataCleared": "Все данные очищены", - "failedToStartBackgroundTracking": "Не удалось запустить фоновое отслеживание. Проверьте разрешения и BLE-соединение.", + "failedToLoadSampleData": "Не удалось загрузить тестовые данные: {error}", + "allDataCleared": "Все данные очищены", + "failedToStartBackgroundTracking": "Не удалось запустить фоновое отслеживание. Проверьте разрешения и BLE-соединение.", "locationBroadcast": "Трансляция геолокации: {latitude}, {longitude}", - "defaultPinInfo": "PIN-код по умолчанию для устройств без экрана — 123456. Проблемы с сопряжением? Удалите устройство из Bluetooth в системных настройках.", - "noMessagesYet": "Сообщений пока нет", - "pullDownToSync": "Потяните вниз для синхронизации сообщений", - "deleteContact": "Удалить контакт", - "delete": "Удалить", - "viewOnMap": "Показать на карте", - "refresh": "Обновить", - "sendDirectMessage": "Отправить", - "resetPath": "Сбросить маршрут (перепроложить)", - "publicKeyCopied": "Публичный ключ скопирован в буфер обмена", - "copiedToClipboard": "{label} скопировано в буфер обмена", - "pleaseEnterPassword": "Пожалуйста, введите пароль", - "failedToSyncContacts": "Не удалось синхронизировать контакты: {error}", - "loggedInSuccessfully": "Вход выполнен! Ожидание сообщений комнаты...", - "loginFailed": "Ошибка входа — неверный пароль", - "loggingIn": "Вход в {roomName}...", - "failedToSendLogin": "Не удалось отправить данные входа: {error}", - "lowLocationAccuracy": "Низкая точность геолокации", - "continue_": "Продолжить", - "sendSarMarker": "Отправить маркер SAR", - "deleteDrawing": "Удалить рисунок", - "drawingTools": "Инструменты рисования", - "drawLine": "Нарисовать линию", - "drawLineDesc": "Нарисуйте произвольную линию на карте", - "drawRectangle": "Нарисовать прямоугольник", - "drawRectangleDesc": "Нарисуйте прямоугольную область на карте", - "measureDistance": "Измерить расстояние", - "measureDistanceDesc": "Долгое нажатие на две точки для измерения", - "clearMeasurement": "Сбросить измерение", - "distanceLabel": "Расстояние: {distance}", - "longPressForSecondPoint": "Долгое нажатие для второй точки", - "longPressToStartMeasurement": "Долгое нажатие для установки первой точки", - "longPressToStartNewMeasurement": "Долгое нажатие для начала нового измерения", - "shareDrawings": "Поделиться рисунками", - "clearAllDrawings": "Удалить все рисунки", - "completeLine": "Завершить линию", + "defaultPinInfo": "PIN-код по умолчанию для устройств без экрана — 123456. Проблемы с сопряжением? Удалите устройство из Bluetooth в системных настройках.", + "noMessagesYet": "Сообщений пока нет", + "pullDownToSync": "Потяните вниз для синхронизации сообщений", + "deleteContact": "Удалить контакт", + "delete": "Удалить", + "viewOnMap": "Показать на карте", + "refresh": "Обновить", + "resetPath": "Сбросить маршрут (перепроложить)", + "publicKeyCopied": "Публичный ключ скопирован в буфер обмена", + "copiedToClipboard": "{label} скопировано в буфер обмена", + "pleaseEnterPassword": "Пожалуйста, введите пароль", + "failedToSyncContacts": "Не удалось синхронизировать контакты: {error}", + "loggedInSuccessfully": "Вход выполнен! Ожидание сообщений комнаты...", + "loginFailed": "Ошибка входа — неверный пароль", + "loggingIn": "Вход в {roomName}...", + "failedToSendLogin": "Не удалось отправить данные входа: {error}", + "lowLocationAccuracy": "Низкая точность геолокации", + "continue_": "Продолжить", + "sendSarMarker": "Отправить маркер SAR", + "deleteDrawing": "Удалить рисунок", + "drawingTools": "Инструменты рисования", + "drawLine": "Нарисовать линию", + "drawLineDesc": "Нарисуйте произвольную линию на карте", + "drawRectangle": "Нарисовать прямоугольник", + "drawRectangleDesc": "Нарисуйте прямоугольную область на карте", + "measureDistance": "Измерить расстояние", + "measureDistanceDesc": "Долгое нажатие на две точки для измерения", + "clearMeasurement": "Сбросить измерение", + "distanceLabel": "Расстояние: {distance}", + "longPressForSecondPoint": "Долгое нажатие для второй точки", + "longPressToStartMeasurement": "Долгое нажатие для установки первой точки", + "longPressToStartNewMeasurement": "Долгое нажатие для начала нового измерения", + "shareDrawings": "Поделиться рисунками", + "clearAllDrawings": "Удалить все рисунки", + "completeLine": "Завершить линию", "broadcastDrawingsToTeam": "Транслировать {count} рисун{plural} команде", "removeAllDrawings": "Удалить все {count} рисун{plural}", "deleteAllDrawingsConfirm": "Удалить все {count} рисун{plural} с карты?", - "drawing": "Рисунок", + "drawing": "Рисунок", "shareDrawingsCount": "Поделиться {count} рисун{plural}", - "sentDrawingsToRoom": "Отправлено {count} рисун{plural} в {roomName}", - "sharedDrawingsToRoom": "Передано {success}/{total} рисун{plural} в {roomName}", - "showReceivedDrawings": "Показать полученные рисунки", - "showingAllDrawings": "Показаны все рисунки", - "showingOnlyYourDrawings": "Показаны только ваши рисунки", - "showSarMarkers": "Показать маркеры SAR", - "showingSarMarkers": "Маркеры SAR отображаются", - "hidingSarMarkers": "Маркеры SAR скрыты", - "clearAll": "Очистить всё", - "noLocalDrawings": "Нет локальных рисунков для отправки", - "publicChannel": "Публичный канал", - "broadcastToAll": "Трансляция всем ближайшим узлам (временно)", - "storedPermanently": "Сохранено постоянно в комнате", - "drawingsSentToPublicChannel": "Отправлено {count} рисун{plural} в публичный канал", - "drawingsSharedToPublicChannel": "Передано {success}/{total} рисунков в публичный канал", - "notConnectedToDevice": "Устройство не подключено", - "directMessage": "Личное сообщение", - "directMessageSentTo": "Личное сообщение отправлено {contactName}", - "failedToSend": "Не удалось отправить: {error}", - "directMessageInfo": "Это сообщение будет отправлено напрямую {contactName}. Оно также появится в общей ленте сообщений.", - "typeYourMessage": "Введите сообщение...", - "quickLocationMarker": "Быстрый маркер местоположения", - "markerType": "Тип маркера", - "sendTo": "Отправить в", - "noDestinationsAvailable": "Нет доступных получателей.", - "selectDestination": "Выберите получателя...", - "ephemeralBroadcastInfo": "Временно: передаётся по эфиру. Не сохраняется — узлы должны быть онлайн.", - "persistentRoomInfo": "Постоянно: хранится неизменно в комнате. Синхронизируется автоматически и доступно офлайн.", - "location": "Местоположение", - "myLocation": "Моё местоположение", - "fromMap": "С карты", - "gettingLocation": "Получение местоположения...", - "locationError": "Ошибка геолокации", - "retry": "Повторить", - "refreshLocation": "Обновить местоположение", - "accuracyMeters": "Точность: ±{accuracy}м", - "notesOptional": "Заметки (необязательно)", - "addAdditionalInformation": "Добавьте дополнительную информацию...", - "lowAccuracyWarning": "Точность геолокации: ±{accuracy}м. Этого может быть недостаточно для операций SAR.\n\nПродолжить всё равно?", - "loginToRoom": "Войти в комнату", - "enterPasswordInfo": "Введите пароль для доступа к этой комнате. Пароль будет сохранён для дальнейшего использования.", - "password": "Пароль", - "enterRoomPassword": "Введите пароль комнаты", - "loggingInDots": "Вход...", - "login": "Войти", - "failedToAddRoom": "Не удалось добавить комнату на устройство: {error}\n\nВозможно, комната ещё не объявила себя.\nПопробуйте подождать, пока комната не выйдет на связь.", - "direct": "Напрямую", - "flood": "Широковещательно", - "admin": "Администратор", - "loggedIn": "Вход выполнен", - "noGpsData": "Нет данных GPS", - "distance": "Расстояние", - "pingingDirect": "Пинг {name} (напрямую по маршруту)...", - "pingingFlood": "Пинг {name} (широковещательно — нет маршрута)...", - "directPingTimeout": "Таймаут прямого пинга — повтор {name} широковещательно...", - "pingSuccessful": "Пинг успешен: {name}{fallback}", - "viaFloodingFallback": " (через широковещательный резерв)", - "pingFailed": "Пинг не удался: {name} — ответ не получен", - "deleteContactConfirmation": "Вы уверены, что хотите удалить \"{name}\"?\n\nЭто удалит контакт как из приложения, так и с сопряжённого радиоустройства.", - "removingContact": "Удаление {name}...", - "contactRemoved": "Контакт \"{name}\" удалён", - "failedToRemoveContact": "Не удалось удалить контакт: {error}", - "type": "Тип", - "publicKey": "Публичный ключ", - "lastSeen": "Последнее появление", - "roomStatus": "Статус комнаты", - "loginStatus": "Статус входа", - "notLoggedIn": "Не выполнен вход", - "adminAccess": "Доступ администратора", - "yes": "Да", - "no": "Нет", - "permissions": "Разрешения", - "passwordSaved": "Пароль сохранён", - "locationColon": "Местоположение:", - "telemetry": "Телеметрия", - "requestingTelemetry": "Запрос телеметрии от {name}...", - "voltage": "Напряжение", - "battery": "Батарея", - "temperature": "Температура", - "humidity": "Влажность", - "pressure": "Давление", - "gpsTelemetry": "GPS (телеметрия)", - "updated": "Обновлено", - "pathResetInfo": "Маршрут сброшен для {name}. Следующее сообщение найдёт новый путь.", - "reLoginToRoom": "Войти в комнату повторно", - "heading": "Курс", - "elevation": "Высота", - "accuracy": "Точность", - "bearing": "Азимут", - "direction": "Направление", - "filterMarkers": "Фильтр маркеров", - "filterMarkersTooltip": "Фильтровать маркеры", - "contactsFilter": "Контакты", - "repeatersFilter": "Ретрансляторы", - "sarMarkers": "Маркеры SAR", - "foundPerson": "Найденный человек", - "fire": "Пожар", - "stagingArea": "Место сбора", - "showAll": "Показать все", - "nearbyContacts": "Ближайшие контакты", - "locationUnavailable": "Местоположение недоступно", - "ahead": "впереди", - "degreesRight": "{degrees}° вправо", - "degreesLeft": "{degrees}° влево", + "showReceivedDrawings": "Показать полученные рисунки", + "showingAllDrawings": "Показаны все рисунки", + "showingOnlyYourDrawings": "Показаны только ваши рисунки", + "showSarMarkers": "Показать маркеры SAR", + "showingSarMarkers": "Маркеры SAR отображаются", + "hidingSarMarkers": "Маркеры SAR скрыты", + "clearAll": "Очистить всё", + "publicChannel": "Публичный канал", + "broadcastToAll": "Трансляция всем ближайшим узлам (временно)", + "storedPermanently": "Сохранено постоянно в комнате", + "notConnectedToDevice": "Устройство не подключено", + "typeYourMessage": "Введите сообщение...", + "quickLocationMarker": "Быстрый маркер местоположения", + "markerType": "Тип маркера", + "sendTo": "Отправить в", + "noDestinationsAvailable": "Нет доступных получателей.", + "selectDestination": "Выберите получателя...", + "ephemeralBroadcastInfo": "Временно: передаётся по эфиру. Не сохраняется — узлы должны быть онлайн.", + "persistentRoomInfo": "Постоянно: хранится неизменно в комнате. Синхронизируется автоматически и доступно офлайн.", + "location": "Местоположение", + "fromMap": "С карты", + "gettingLocation": "Получение местоположения...", + "locationError": "Ошибка геолокации", + "retry": "Повторить", + "refreshLocation": "Обновить местоположение", + "accuracyMeters": "Точность: ±{accuracy}м", + "notesOptional": "Заметки (необязательно)", + "addAdditionalInformation": "Добавьте дополнительную информацию...", + "lowAccuracyWarning": "Точность геолокации: ±{accuracy}м. Этого может быть недостаточно для операций SAR.\n\nПродолжить всё равно?", + "loginToRoom": "Войти в комнату", + "enterPasswordInfo": "Введите пароль для доступа к этой комнате. Пароль будет сохранён для дальнейшего использования.", + "password": "Пароль", + "enterRoomPassword": "Введите пароль комнаты", + "loggingInDots": "Вход...", + "login": "Войти", + "failedToAddRoom": "Не удалось добавить комнату на устройство: {error}\n\nВозможно, комната ещё не объявила себя.\nПопробуйте подождать, пока комната не выйдет на связь.", + "direct": "Напрямую", + "flood": "Широковещательно", + "loggedIn": "Вход выполнен", + "noGpsData": "Нет данных GPS", + "distance": "Расстояние", + "directPingTimeout": "Таймаут прямого пинга — повтор {name} широковещательно...", + "pingFailed": "Пинг не удался: {name} — ответ не получен", + "deleteContactConfirmation": "Вы уверены, что хотите удалить \"{name}\"?\n\nЭто удалит контакт как из приложения, так и с сопряжённого радиоустройства.", + "failedToRemoveContact": "Не удалось удалить контакт: {error}", + "type": "Тип", + "publicKey": "Публичный ключ", + "lastSeen": "Последнее появление", + "roomStatus": "Статус комнаты", + "loginStatus": "Статус входа", + "notLoggedIn": "Не выполнен вход", + "adminAccess": "Доступ администратора", + "yes": "Да", + "no": "Нет", + "permissions": "Разрешения", + "passwordSaved": "Пароль сохранён", + "locationColon": "Местоположение:", + "telemetry": "Телеметрия", + "voltage": "Напряжение", + "battery": "Батарея", + "temperature": "Температура", + "humidity": "Влажность", + "pressure": "Давление", + "gpsTelemetry": "GPS (телеметрия)", + "updated": "Обновлено", + "pathResetInfo": "Маршрут сброшен для {name}. Следующее сообщение найдёт новый путь.", + "reLoginToRoom": "Войти в комнату повторно", + "heading": "Курс", + "elevation": "Высота", + "accuracy": "Точность", + "bearing": "Азимут", + "direction": "Направление", + "filterMarkers": "Фильтр маркеров", + "filterMarkersTooltip": "Фильтровать маркеры", + "contactsFilter": "Контакты", + "repeatersFilter": "Ретрансляторы", + "sarMarkers": "Маркеры SAR", + "foundPerson": "Найденный человек", + "fire": "Пожар", + "stagingArea": "Место сбора", + "showAll": "Показать все", + "locationUnavailable": "Местоположение недоступно", + "ahead": "впереди", + "degreesRight": "{degrees}° вправо", + "degreesLeft": "{degrees}° влево", "latLonFormat": "Ш: {latitude} Д: {longitude}", - "noContactsYet": "Контактов пока нет", - "connectToDeviceToLoadContacts": "Подключите устройство для загрузки контактов", - "teamMembers": "Члены команды", - "repeaters": "Ретрансляторы", - "rooms": "Комнаты", - "channels": "Каналы", - "cacheStatistics": "Статистика кэша", - "totalTiles": "Всего тайлов", - "cacheSize": "Размер кэша", - "storeName": "Имя хранилища", - "noCacheStatistics": "Статистика кэша недоступна", - "downloadRegion": "Скачать регион", - "mapLayer": "Слой карты", - "regionBounds": "Границы региона", - "north": "Север", - "south": "Юг", - "east": "Восток", - "west": "Запад", - "zoomLevels": "Уровни масштаба", - "minZoom": "Мин: {zoom}", - "maxZoom": "Макс: {zoom}", - "downloadingDots": "Загрузка...", - "cancelDownload": "Отменить загрузку", - "downloadRegionButton": "Скачать регион", - "downloadNote": "Внимание: большие регионы или высокие уровни масштаба могут потребовать значительного времени и места.", - "cacheManagement": "Управление кэшем", - "clearAllMaps": "Очистить все карты", - "clearMapsConfirmTitle": "Очистить все карты", - "clearMapsConfirmMessage": "Вы уверены, что хотите удалить все загруженные карты? Это действие нельзя отменить.", - "mapDownloadCompleted": "Загрузка карты завершена!", - "cacheClearedSuccessfully": "Кэш успешно очищен!", - "downloadCancelled": "Загрузка отменена", - "startingDownload": "Начало загрузки...", - "downloadingMapTiles": "Загрузка тайлов карты...", - "downloadCompletedSuccessfully": "Загрузка успешно завершена!", - "cancellingDownload": "Отмена загрузки...", - "errorLoadingStats": "Ошибка загрузки статистики: {error}", - "downloadFailed": "Ошибка загрузки: {error}", - "cancelFailed": "Ошибка отмены: {error}", - "clearCacheFailed": "Ошибка очистки кэша: {error}", - "minZoomError": "Мин. масштаб: {error}", - "maxZoomError": "Макс. масштаб: {error}", - "minZoomGreaterThanMax": "Минимальный масштаб должен быть меньше или равен максимальному", - "selectMapLayer": "Выбрать слой карты", - "mapOptions": "Параметры карты", - "showLegend": "Показать легенду", - "displayMarkerTypeCounts": "Отображать счётчики типов маркеров", - "rotateMapWithHeading": "Поворачивать карту по курсу", - "mapFollowsDirection": "Карта следует вашему направлению движения", - "resetMapRotation": "Сбросить поворот", - "resetMapRotationTooltip": "Вернуть карту на север", - "showMapDebugInfo": "Показать отладочную информацию карты", - "displayZoomLevelBounds": "Отображать уровень масштаба и границы", - "fullscreenMode": "Полноэкранный режим", - "hideUiFullMapView": "Скрыть все элементы интерфейса для полного вида карты", - "openStreetMap": "OpenStreetMap", - "openTopoMap": "OpenTopoMap", - "esriSatellite": "ESRI Спутник", - "googleHybrid": "Google Гибрид", - "googleRoadmap": "Google Дороги", - "googleTerrain": "Google Рельеф", - "downloadVisibleArea": "Скачать видимую область", - "initializingMap": "Инициализация карты...", - "dragToPosition": "Перетащите для позиционирования", - "createSarMarker": "Создать маркер SAR", - "compass": "Компас", - "navigationAndContacts": "Навигация и контакты", - "sarAlert": "ТРЕВОГА SAR", - "messageSentToPublicChannel": "Сообщение отправлено в публичный канал", - "pleaseSelectRoomToSendSar": "Пожалуйста, выберите комнату для отправки маркера SAR", - "failedToSendSarMarker": "Не удалось отправить маркер SAR: {error}", - "sarMarkerSentTo": "Маркер SAR отправлен в {roomName}", - "notConnectedCannotSync": "Нет подключения — синхронизация невозможна", - "syncedMessageCount": "Синхронизировано {count} сообщение(й)", - "noNewMessages": "Новых сообщений нет", - "syncFailed": "Синхронизация не удалась: {error}", - "failedToResendMessage": "Не удалось повторно отправить сообщение", - "retryingMessage": "Повторная отправка сообщения...", - "retryFailed": "Повтор не удался: {error}", - "textCopiedToClipboard": "Текст скопирован в буфер обмена", - "cannotReplySenderMissing": "Не удаётся ответить: нет информации об отправителе", - "cannotReplyContactNotFound": "Не удаётся ответить: контакт не найден", - "messageDeleted": "Сообщение удалено", - "copyText": "Копировать текст", - "saveAsTemplate": "Сохранить как шаблон", - "templateSaved": "Шаблон успешно сохранён", - "templateAlreadyExists": "Шаблон с таким эмодзи уже существует", - "deleteMessage": "Удалить сообщение", - "deleteMessageConfirmation": "Вы уверены, что хотите удалить это сообщение?", - "shareLocation": "Поделиться местоположением", + "noContactsYet": "Контактов пока нет", + "connectToDeviceToLoadContacts": "Подключите устройство для загрузки контактов", + "teamMembers": "Члены команды", + "repeaters": "Ретрансляторы", + "rooms": "Комнаты", + "channels": "Каналы", + "selectMapLayer": "Выбрать слой карты", + "openStreetMap": "OpenStreetMap", + "openTopoMap": "OpenTopoMap", + "esriSatellite": "ESRI Спутник", + "googleHybrid": "Google Гибрид", + "googleRoadmap": "Google Дороги", + "googleTerrain": "Google Рельеф", + "dragToPosition": "Перетащите для позиционирования", + "createSarMarker": "Создать маркер SAR", + "compass": "Компас", + "navigationAndContacts": "Навигация и контакты", + "sarAlert": "ТРЕВОГА SAR", + "textCopiedToClipboard": "Текст скопирован в буфер обмена", + "cannotReplySenderMissing": "Не удаётся ответить: нет информации об отправителе", + "cannotReplyContactNotFound": "Не удаётся ответить: контакт не найден", + "copyText": "Копировать текст", + "saveAsTemplate": "Сохранить как шаблон", + "templateSaved": "Шаблон успешно сохранён", + "templateAlreadyExists": "Шаблон с таким эмодзи уже существует", + "deleteMessage": "Удалить сообщение", + "deleteMessageConfirmation": "Вы уверены, что хотите удалить это сообщение?", + "shareLocation": "Поделиться местоположением", "shareLocationText": "{markerInfo}\n\nКоординаты: {lat}, {lon}\n\nGoogle Maps: {url}", - "sarLocationShare": "Местоположение SAR", - "locationShared": "Местоположение передано", - "refreshedContacts": "Контакты обновлены", - "justNow": "Только что", - "minutesAgo": "{minutes}м назад", - "hoursAgo": "{hours}ч назад", - "daysAgo": "{days}д назад", - "secondsAgo": "{seconds}с назад", - "sending": "Отправка...", - "sent": "Отправлено", - "delivered": "Доставлено", - "deliveredWithTime": "Доставлено ({time}мс)", - "failed": "Ошибка", - "broadcast": "Трансляция", + "sarLocationShare": "Местоположение SAR", + "justNow": "Только что", + "minutesAgo": "{minutes}м назад", + "hoursAgo": "{hours}ч назад", + "daysAgo": "{days}д назад", + "secondsAgo": "{seconds}с назад", + "sending": "Отправка...", + "sent": "Отправлено", + "delivered": "Доставлено", + "deliveredWithTime": "Доставлено ({time}мс)", + "failed": "Ошибка", + "broadcast": "Трансляция", "deliveredToContacts": "Доставлено {delivered}/{total} контактам", - "allDelivered": "Все доставлено", - "recipientDetails": "Детали получателей", - "pending": "Ожидание", - "sarMarkerFoundPerson": "Найденный человек", - "sarMarkerFire": "Место пожара", - "sarMarkerStagingArea": "Место сбора", - "sarMarkerObject": "Найденный объект", - "from": "От", - "coordinates": "Координаты", - "tapToViewOnMap": "Нажмите, чтобы открыть на карте", - "radioSettings": "Настройки радио", - "frequencyMHz": "Частота (МГц)", - "frequencyExample": "например, 869.618", - "bandwidth": "Полоса пропускания", - "spreadingFactor": "Коэффициент расширения", - "codingRate": "Скорость кодирования", - "txPowerDbm": "Мощность TX (дБм)", - "maxPowerDbm": "Макс: {power} дБм", - "you": "Вы", - "offlineVectorMaps": "Офлайн-векторные карты", - "offlineVectorMapsDescription": "Импортируйте офлайн-векторные тайлы карт (формат MBTiles) для использования без интернета", - "importMbtiles": "Импортировать файл MBTiles", - "importMbtilesNote": "Поддерживаются файлы MBTiles с векторными тайлами (формат PBF/MVT). Отлично подходят выгрузки Geofabrik!", - "noMbtilesFiles": "Офлайн-векторные карты не найдены", - "mbtilesImportedSuccessfully": "Файл MBTiles успешно импортирован", - "failedToImportMbtiles": "Не удалось импортировать файл MBTiles", - "deleteMbtilesConfirmTitle": "Удалить офлайн-карту", - "deleteMbtilesConfirmMessage": "Вы уверены, что хотите удалить \"{name}\"? Офлайн-карта будет удалена безвозвратно.", - "mbtilesDeletedSuccessfully": "Офлайн-карта успешно удалена", - "failedToDeleteMbtiles": "Не удалось удалить офлайн-карту", - "importExportCachedTiles": "Импорт/Экспорт кэшированных тайлов", - "importExportDescription": "Резервное копирование, обмен и восстановление загруженных тайлов карт между устройствами", - "exportTilesToFile": "Экспортировать тайлы в файл", - "importTilesFromFile": "Импортировать тайлы из файла", - "selectExportLocation": "Выберите место для экспорта", - "selectImportFile": "Выберите архив тайлов", - "exportingTiles": "Экспорт тайлов...", - "importingTiles": "Импорт тайлов...", - "exportSuccess": "Экспортировано {count} тайлов", - "importSuccess": "Импортировано {count} хранилищ", - "exportFailed": "Ошибка экспорта: {error}", - "importFailed": "Ошибка импорта: {error}", - "exportNote": "Создаёт сжатый архив (.fmtc), которым можно поделиться и импортировать на других устройствах.", - "importNote": "Импортирует тайлы карт из ранее экспортированного архива. Тайлы будут объединены с существующим кэшем.", - "noTilesToExport": "Нет доступных тайлов для экспорта", - "archiveContainsStores": "Архив содержит {count} хранилищ", - "vectorTiles": "Векторные тайлы", - "schema": "Схема", - "unknown": "Неизвестно", - "bounds": "Границы", - "onlineLayers": "Онлайн-слои", - "offlineLayers": "Офлайн-слои", - "locationTrail": "Трек местоположения", - "showTrailOnMap": "Показать трек на карте", - "trailVisible": "Трек отображается на карте", - "trailHiddenRecording": "Трек скрыт (запись продолжается)", - "duration": "Продолжительность", - "points": "Точки", - "clearTrail": "Очистить трек", - "clearTrailQuestion": "Очистить трек?", - "clearTrailConfirmation": "Вы уверены, что хотите очистить текущий трек? Это действие нельзя отменить.", - "noTrailRecorded": "Трек ещё не записан", - "startTrackingToRecord": "Запустите отслеживание геолокации для записи трека", - "trailControls": "Управление треком", - "exportTrailToGpx": "Экспортировать трек в GPX", - "importTrailFromGpx": "Импортировать трек из GPX", - "trailExportedSuccessfully": "Трек успешно экспортирован!", - "failedToExportTrail": "Не удалось экспортировать трек", - "failedToImportTrail": "Не удалось импортировать трек: {error}", - "importTrail": "Импортировать трек", - "importTrailQuestion": "Импортировать трек из {pointCount} точек?\n\nВы можете заменить текущий трек или просмотреть его рядом.", - "viewAlongside": "Просмотреть рядом", - "replaceCurrent": "Заменить текущий", - "trailImported": "Трек импортирован! ({pointCount} точек)", - "trailReplaced": "Трек заменён! ({pointCount} точек)", - "contactTrails": "Треки контактов", - "showAllContactTrails": "Показать все треки контактов", - "noContactsWithLocationHistory": "Нет контактов с историей местоположения", - "showingTrailsForContacts": "Показаны треки для {count} контактов", - "individualContactTrails": "Индивидуальные треки контактов", - "deviceInformation": "Информация об устройстве", - "bleName": "Имя BLE", - "meshName": "Имя в сети Mesh", - "notSet": "Не задано", - "model": "Модель", - "version": "Версия", - "buildDate": "Дата сборки", - "firmware": "Прошивка", - "maxContacts": "Макс. контактов", - "maxChannels": "Макс. каналов", - "publicInfo": "Публичная информация", - "meshNetworkName": "Название сети Mesh", - "nameBroadcastInMesh": "Имя, транслируемое в mesh-объявлениях", - "telemetryAndLocationSharing": "Телеметрия и передача местоположения", - "lat": "Ш", - "lon": "Д", - "useCurrentLocation": "Использовать текущее местоположение", - "noneUnknown": "Нет/Неизвестно", - "chatNode": "Узел чата", - "repeater": "Ретранслятор", - "roomChannel": "Комната/Канал", - "typeNumber": "Тип {number}", - "copiedToClipboardShort": "{label} скопировано в буфер обмена", - "failedToSave": "Не удалось сохранить: {error}", - "failedToGetLocation": "Не удалось получить местоположение: {error}", - "sarTemplates": "Шаблоны SAR", - "manageSarTemplates": "Управление шаблонами целеуказания", - "addTemplate": "Добавить шаблон", - "editTemplate": "Изменить шаблон", - "deleteTemplate": "Удалить шаблон", - "templateName": "Название шаблона", - "templateNameHint": "например, Найденный человек", - "templateEmoji": "Эмодзи", - "emojiRequired": "Требуется эмодзи", - "nameRequired": "Требуется название", - "templateDescription": "Описание (необязательно)", - "templateDescriptionHint": "Добавьте дополнительный контекст...", - "templateColor": "Цвет", - "previewFormat": "Предпросмотр (формат сообщения SAR)", - "importFromClipboard": "Импорт", - "exportToClipboard": "Экспорт", - "deleteTemplateConfirmation": "Удалить шаблон '{name}'?", - "templateAdded": "Шаблон добавлен", - "templateUpdated": "Шаблон обновлён", - "templateDeleted": "Шаблон удалён", - "templatesImported": "{count, plural, =0{Шаблоны не импортированы} =1{Импортирован 1 шаблон} other{Импортировано {count} шаблонов}}", - "templatesExported": "{count, plural, =1{1 шаблон экспортирован в буфер обмена} other{{count} шаблонов экспортировано в буфер обмена}}", - "resetToDefaults": "Сбросить до умолчаний", - "resetToDefaultsConfirmation": "Все пользовательские шаблоны будут удалены и восстановлены 4 шаблона по умолчанию. Продолжить?", - "reset": "Сбросить", - "resetComplete": "Шаблоны сброшены до умолчаний", - "noTemplates": "Шаблоны недоступны", - "tapAddToCreate": "Нажмите +, чтобы создать первый шаблон", - "ok": "ОК", - "permissionsSection": "Разрешения", - "locationPermission": "Разрешение геолокации", - "checking": "Проверка...", - "locationPermissionGrantedAlways": "Разрешено (всегда)", - "locationPermissionGrantedWhileInUse": "Разрешено (при использовании)", - "locationPermissionDeniedTapToRequest": "Запрещено — нажмите для запроса", - "locationPermissionPermanentlyDeniedOpenSettings": "Запрещено навсегда — откройте настройки", - "locationPermissionDialogContent": "Доступ к геолокации запрещён навсегда. Включите его в настройках устройства для GPS-трекинга и обмена местоположением.", - "openSettings": "Открыть настройки", - "locationPermissionGranted": "Разрешение геолокации получено!", - "locationPermissionRequiredForGps": "Разрешение геолокации необходимо для GPS-трекинга и обмена местоположением.", - "locationPermissionAlreadyGranted": "Разрешение геолокации уже предоставлено.", - "sarNavyBlue": "SAR Тёмно-синяя", - "sarNavyBlueDescription": "Профессиональный / оперативный режим", - "selectRecipient": "Выбрать получателя", - "broadcastToAllNearby": "Трансляция всем ближайшим", - "searchRecipients": "Поиск получателей...", - "noContactsFound": "Контакты не найдены", - "noRoomsFound": "Комнаты не найдены", - "noContactsOrRoomsAvailable": "Нет доступных контактов или комнат", - "noRecipientsAvailable": "Нет доступных получателей", - "noChannelsFound": "Каналы не найдены", - "messagesWillBeSentToPublicChannel": "Сообщения будут отправлены в публичный канал", - "newMessage": "Новое сообщение", - "channel": "Канал", - "samplePoliceLead": "Руководитель группы полиции", - "sampleDroneOperator": "Оператор дрона", - "sampleFirefighterAlpha": "Пожарный", - "sampleMedicCharlie": "Медик", - "sampleCommandDelta": "Командование", - "sampleFireEngine": "Пожарная машина", - "sampleAirSupport": "Авиационная поддержка", - "sampleBaseCoordinator": "Базовый координатор", - "channelEmergency": "Аварийный", - "channelCoordination": "Координация", - "channelUpdates": "Обновления", - "sampleTeamMember": "Тестовый член команды", - "sampleScout": "Тестовый разведчик", - "sampleBase": "Тестовая база", - "sampleSearcher": "Тестовый поисковик", - "sampleObjectBackpack": " Найден рюкзак синего цвета", - "sampleObjectVehicle": " Брошенный автомобиль — установить владельца", - "sampleObjectCamping": " Обнаружено туристическое снаряжение", - "sampleObjectTrailMarker": " Указатель тропы найден вне маршрута", - "sampleMsgAllTeamsCheckIn": "Всем группам: сообщить о готовности", - "sampleMsgWeatherUpdate": "Погода: ясно, температура 18°C", - "sampleMsgBaseCamp": "Базовый лагерь развёрнут у места сбора", - "sampleMsgTeamAlpha": "Группа выдвигается в сектор 2", - "sampleMsgRadioCheck": "Проверка связи — всем станциям ответить", - "sampleMsgWaterSupply": "Вода доступна на контрольной точке 3", - "sampleMsgTeamBravo": "Группа докладывает: сектор 1 чист", - "sampleMsgEtaRallyPoint": "Прибытие на место сбора: 15 минут", - "sampleMsgSupplyDrop": "Сброс снаряжения подтверждён на 14:00", - "sampleMsgDroneSurvey": "Разведка дроном завершена — ничего не обнаружено", - "sampleMsgTeamCharlie": "Группа запрашивает подкрепление", - "sampleMsgRadioDiscipline": "Всем подразделениям: соблюдать радиодисциплину", - "sampleMsgUrgentMedical": "СРОЧНО: нужна медицинская помощь в секторе 4", - "sampleMsgAdultMale": " Взрослый мужчина, в сознании", - "sampleMsgFireSpotted": "Обнаружен пожар — координаты следуют", - "sampleMsgSpreadingRapidly": " Распространяется быстро!", - "sampleMsgPriorityHelicopter": "ПРИОРИТЕТ: нужна поддержка вертолёта", - "sampleMsgMedicalTeamEnRoute": "Медицинская группа движется к вашему местоположению", - "sampleMsgEvacHelicopter": "Вертолёт эвакуации: прибытие через 10 минут", - "sampleMsgEmergencyResolved": "Чрезвычайная ситуация ликвидирована — опасности нет", - "sampleMsgEmergencyStagingArea": " Аварийное место сбора", - "sampleMsgEmergencyServices": "Аварийные службы уведомлены и реагируют", - "sampleAlphaTeamLead": "Руководитель группы", - "sampleBravoScout": "Разведчик", - "sampleCharlieMedic": "Медик", - "sampleDeltaNavigator": "Навигатор", - "sampleEchoSupport": "Поддержка", - "sampleBaseCommand": "Базовое командование", - "sampleFieldCoordinator": "Полевой координатор", - "sampleMedicalTeam": "Медицинская группа", - "mapDrawing": "Рисунок на карте", - "navigateToDrawing": "Перейти к рисунку", - "copyCoordinates": "Копировать координаты", - "hideFromMap": "Скрыть с карты", - "lineDrawing": "Линия", - "rectangleDrawing": "Прямоугольник", - "coordinatesCopiedToClipboard": "Координаты скопированы в буфер обмена", - "manualCoordinates": "Ввод координат вручную", - "enterCoordinatesManually": "Ввести координаты вручную", - "latitudeLabel": "Широта", - "longitudeLabel": "Долгота", - "invalidLatitude": "Неверная широта (от -90 до 90)", - "invalidLongitude": "Неверная долгота (от -180 до 180)", - "exampleCoordinates": "Пример: 55.7558, 37.6173", - "drawingShared": "Рисунок на карте", - "drawingHidden": "Рисунок скрыт с карты", - "alreadyShared": "{count, plural, =1{1 уже передан} other{{count} уже передано}}", - "newDrawingsShared": "Передано {count} новых рисунк{plural}", - "shareDrawing": "Поделиться рисунком", - "shareWithAllNearbyDevices": "Поделиться со всеми ближайшими устройствами", - "shareToRoom": "Отправить в комнату", - "sendToPersistentStorage": "Отправить в постоянное хранилище комнаты", - "deleteDrawingConfirm": "Вы уверены, что хотите удалить этот рисунок?", - "drawingDeleted": "Рисунок удалён", - "yourDrawingsCount": "Ваши рисунки ({count})", - "shared": "Передано", - "line": "Линия", - "rectangle": "Прямоугольник", - "updateAvailable": "Доступно обновление", - "currentVersion": "Текущая", - "latestVersion": "Последняя", - "downloadUpdate": "Скачать", - "updateLater": "Позже", - "cadastralParcels": "Кадастровые участки", - "forestRoads": "Лесные дороги", - "showCadastralParcels": "Показать кадастровые участки", - "showForestRoads": "Показать лесные дороги", - "wmsOverlays": "WMS-наложения", - "hikingTrails": "Туристические маршруты", - "mainRoads": "Главные дороги", - "houseNumbers": "Номера домов", - "fireHazardZones": "Пожароопасные зоны", - "historicalFires": "Исторические пожары", - "firebreaks": "Противопожарные просеки", - "krasFireZones": "Пожарные зоны Краса", - "placeNames": "Названия мест", - "municipalityBorders": "Границы муниципалитетов", - "topographicMap": "Топографическая карта 1:25000", - "recentMessages": "Последние сообщения", - "addChannel": "Добавить канал", - "channelName": "Название канала", - "channelNameHint": "например, Группа спасения Альфа", - "channelSecret": "Секрет канала", - "channelSecretHint": "Общий пароль для этого канала", - "channelSecretHelp": "Этот секрет необходимо передать всем членам команды, которым нужен доступ к каналу", - "channelTypesInfo": "Hash-каналы (#команда): секрет генерируется из названия автоматически. Одно название = один канал на всех устройствах.\n\nЗакрытые каналы: используется явный секрет. Войти могут только те, у кого есть секрет.", - "hashChannelInfo": "Hash-канал: секрет будет автоматически создан из названия. Все, кто использует одно и то же имя, окажутся в одном канале.", - "channelNameRequired": "Требуется название канала", - "channelNameTooLong": "Название канала не должно превышать 31 символ", - "channelSecretRequired": "Требуется секрет канала", - "channelSecretTooLong": "Секрет канала не должен превышать 32 символа", - "invalidAsciiCharacters": "Разрешены только символы ASCII", - "channelCreatedSuccessfully": "Канал успешно создан", - "channelCreationFailed": "Не удалось создать канал: {error}", - "deleteChannel": "Удалить канал", - "deleteChannelConfirmation": "Вы уверены, что хотите удалить канал \"{channelName}\"? Это действие нельзя отменить.", - "channelDeletedSuccessfully": "Канал успешно удалён", - "channelDeletionFailed": "Не удалось удалить канал: {error}", - "allChannelSlotsInUse": "Все слоты каналов заняты (максимум 39 пользовательских каналов)", - "createChannel": "Создать канал", - "wizardBack": "Назад", - "wizardSkip": "Пропустить", - "wizardNext": "Далее", - "wizardGetStarted": "Начать", - "wizardWelcomeTitle": "Добро пожаловать в MeshCore SAR", - "wizardWelcomeDescription": "Мощный инструмент связи вне сети для поисково-спасательных операций. Поддерживайте связь с командой через mesh-радио, когда традиционные сети недоступны.", - "wizardConnectingTitle": "Подключение к радиоустройству", - "wizardConnectingDescription": "Подключите смартфон к радиоустройству MeshCore по Bluetooth для связи вне сети.", - "wizardConnectingFeature1": "Поиск ближайших устройств MeshCore", - "wizardConnectingFeature2": "Сопряжение с радиоустройством по Bluetooth", - "wizardConnectingFeature3": "Работает полностью офлайн — интернет не нужен", - "wizardSimpleModeTitle": "Простой режим", - "wizardSimpleModeDescription": "Впервые работаете с mesh-сетью? Включите простой режим для упрощённого интерфейса с основными функциями.", - "wizardSimpleModeFeature1": "Удобный для новичков интерфейс с основными функциями", - "wizardSimpleModeFeature2": "Переключиться в расширенный режим можно в любое время в настройках", - "wizardChannelTitle": "Каналы", - "wizardChannelDescription": "Транслируйте сообщения всем участникам канала — идеально для общих объявлений и координации команды.", - "wizardChannelFeature1": "Публичный канал для общей связи команды", - "wizardChannelFeature2": "Создавайте пользовательские каналы для отдельных групп", - "wizardChannelFeature3": "Сообщения автоматически ретранслируются через mesh", - "wizardContactsTitle": "Контакты", - "wizardContactsDescription": "Члены вашей команды появляются автоматически по мере подключения к mesh-сети. Отправляйте им личные сообщения или просматривайте их местоположение.", - "wizardContactsFeature1": "Контакты обнаруживаются автоматически", - "wizardContactsFeature2": "Отправка личных сообщений", - "wizardContactsFeature3": "Просмотр уровня заряда и времени последнего появления", - "wizardMapTitle": "Карта и местоположение", - "wizardMapDescription": "Отслеживайте команду в реальном времени и отмечайте важные места для поисково-спасательных операций.", - "wizardMapFeature1": "Маркеры SAR для найденных людей, пожаров и мест сбора", - "wizardMapFeature2": "GPS-отслеживание членов команды в реальном времени", - "wizardMapFeature3": "Загрузка офлайн-карт для отдалённых районов", - "wizardMapFeature4": "Рисование фигур и обмен тактической информацией", - "viewWelcomeTutorial": "Просмотреть обучение", - "allTeamContacts": "Все контакты команды", - "directMessagesInfo": "Личные сообщения с подтверждением. Отправлено {count} членам команды.", - "sarMarkerSentToContacts": "Маркер SAR отправлен {count} контактам", - "noContactsAvailable": "Нет доступных контактов команды", - "reply": "Ответить", - "technicalDetails": "Технические детали", - "messageTechnicalDetails": "Технические детали сообщения", - "linkQuality": "Качество связи", - "delivery": "Доставка", - "status": "Статус", - "expectedAckTag": "Ожидаемый тег ACK", - "roundTrip": "Время отклика", - "retryAttempt": "Попытка повтора", - "floodFallback": "Широковещательный резерв", - "identity": "Идентификатор", - "messageId": "ID сообщения", - "sender": "Отправитель", - "senderKey": "Ключ отправителя", - "recipient": "Получатель", - "recipientKey": "Ключ получателя", - "voice": "Голос", - "voiceId": "ID голоса", - "envelope": "Конверт", - "sessionProgress": "Прогресс сессии", - "complete": "Завершено", - "rawDump": "Необработанные данные", - "cannotRetryMissingRecipient": "Повтор невозможен: нет информации о получателе", - "voiceUnavailable": "Голос сейчас недоступен", + "allDelivered": "Все доставлено", + "recipientDetails": "Детали получателей", + "pending": "Ожидание", + "sarMarkerFoundPerson": "Найденный человек", + "sarMarkerFire": "Место пожара", + "sarMarkerStagingArea": "Место сбора", + "sarMarkerObject": "Найденный объект", + "from": "От", + "coordinates": "Координаты", + "tapToViewOnMap": "Нажмите, чтобы открыть на карте", + "radioSettings": "Настройки радио", + "frequencyMHz": "Частота (МГц)", + "frequencyExample": "например, 869.618", + "bandwidth": "Полоса пропускания", + "spreadingFactor": "Коэффициент расширения", + "codingRate": "Скорость кодирования", + "txPowerDbm": "Мощность TX (дБм)", + "maxPowerDbm": "Макс: {power} дБм", + "you": "Вы", + "exportFailed": "Ошибка экспорта: {error}", + "importFailed": "Ошибка импорта: {error}", + "unknown": "Неизвестно", + "onlineLayers": "Онлайн-слои", + "locationTrail": "Трек местоположения", + "showTrailOnMap": "Показать трек на карте", + "trailVisible": "Трек отображается на карте", + "trailHiddenRecording": "Трек скрыт (запись продолжается)", + "duration": "Продолжительность", + "points": "Точки", + "clearTrail": "Очистить трек", + "clearTrailQuestion": "Очистить трек?", + "clearTrailConfirmation": "Вы уверены, что хотите очистить текущий трек? Это действие нельзя отменить.", + "noTrailRecorded": "Трек ещё не записан", + "startTrackingToRecord": "Запустите отслеживание геолокации для записи трека", + "trailControls": "Управление треком", + "contactTrails": "Треки контактов", + "showAllContactTrails": "Показать все треки контактов", + "noContactsWithLocationHistory": "Нет контактов с историей местоположения", + "showingTrailsForContacts": "Показаны треки для {count} контактов", + "individualContactTrails": "Индивидуальные треки контактов", + "deviceInformation": "Информация об устройстве", + "bleName": "Имя BLE", + "meshName": "Имя в сети Mesh", + "notSet": "Не задано", + "model": "Модель", + "version": "Версия", + "buildDate": "Дата сборки", + "firmware": "Прошивка", + "maxContacts": "Макс. контактов", + "maxChannels": "Макс. каналов", + "publicInfo": "Публичная информация", + "meshNetworkName": "Название сети Mesh", + "nameBroadcastInMesh": "Имя, транслируемое в mesh-объявлениях", + "telemetryAndLocationSharing": "Телеметрия и передача местоположения", + "lat": "Ш", + "lon": "Д", + "useCurrentLocation": "Использовать текущее местоположение", + "noneUnknown": "Нет/Неизвестно", + "chatNode": "Узел чата", + "repeater": "Ретранслятор", + "roomChannel": "Комната/Канал", + "typeNumber": "Тип {number}", + "copiedToClipboardShort": "{label} скопировано в буфер обмена", + "failedToSave": "Не удалось сохранить: {error}", + "failedToGetLocation": "Не удалось получить местоположение: {error}", + "sarTemplates": "Шаблоны SAR", + "manageSarTemplates": "Управление шаблонами целеуказания", + "addTemplate": "Добавить шаблон", + "editTemplate": "Изменить шаблон", + "deleteTemplate": "Удалить шаблон", + "templateName": "Название шаблона", + "templateNameHint": "например, Найденный человек", + "templateEmoji": "Эмодзи", + "emojiRequired": "Требуется эмодзи", + "nameRequired": "Требуется название", + "templateDescription": "Описание (необязательно)", + "templateDescriptionHint": "Добавьте дополнительный контекст...", + "templateColor": "Цвет", + "previewFormat": "Предпросмотр (формат сообщения SAR)", + "importFromClipboard": "Импорт", + "exportToClipboard": "Экспорт", + "deleteTemplateConfirmation": "Удалить шаблон '{name}'?", + "templateAdded": "Шаблон добавлен", + "templateUpdated": "Шаблон обновлён", + "templateDeleted": "Шаблон удалён", + "templatesImported": "{count, plural, =0{Шаблоны не импортированы} =1{Импортирован 1 шаблон} other{Импортировано {count} шаблонов}}", + "templatesExported": "{count, plural, =1{1 шаблон экспортирован в буфер обмена} other{{count} шаблонов экспортировано в буфер обмена}}", + "resetToDefaults": "Сбросить до умолчаний", + "resetToDefaultsConfirmation": "Все пользовательские шаблоны будут удалены и восстановлены 4 шаблона по умолчанию. Продолжить?", + "reset": "Сбросить", + "resetComplete": "Шаблоны сброшены до умолчаний", + "noTemplates": "Шаблоны недоступны", + "tapAddToCreate": "Нажмите +, чтобы создать первый шаблон", + "ok": "ОК", + "permissionsSection": "Разрешения", + "locationPermission": "Разрешение геолокации", + "checking": "Проверка...", + "locationPermissionGrantedAlways": "Разрешено (всегда)", + "locationPermissionGrantedWhileInUse": "Разрешено (при использовании)", + "locationPermissionDeniedTapToRequest": "Запрещено — нажмите для запроса", + "locationPermissionPermanentlyDeniedOpenSettings": "Запрещено навсегда — откройте настройки", + "locationPermissionDialogContent": "Доступ к геолокации запрещён навсегда. Включите его в настройках устройства для GPS-трекинга и обмена местоположением.", + "openSettings": "Открыть настройки", + "locationPermissionGranted": "Разрешение геолокации получено!", + "locationPermissionRequiredForGps": "Разрешение геолокации необходимо для GPS-трекинга и обмена местоположением.", + "locationPermissionAlreadyGranted": "Разрешение геолокации уже предоставлено.", + "sarNavyBlue": "SAR Тёмно-синяя", + "sarNavyBlueDescription": "Профессиональный / оперативный режим", + "selectRecipient": "Выбрать получателя", + "broadcastToAllNearby": "Трансляция всем ближайшим", + "searchRecipients": "Поиск получателей...", + "noContactsFound": "Контакты не найдены", + "noRoomsFound": "Комнаты не найдены", + "noRecipientsAvailable": "Нет доступных получателей", + "noChannelsFound": "Каналы не найдены", + "newMessage": "Новое сообщение", + "channel": "Канал", + "samplePoliceLead": "Руководитель группы полиции", + "sampleDroneOperator": "Оператор дрона", + "sampleFirefighterAlpha": "Пожарный", + "sampleMedicCharlie": "Медик", + "sampleCommandDelta": "Командование", + "sampleFireEngine": "Пожарная машина", + "sampleAirSupport": "Авиационная поддержка", + "sampleBaseCoordinator": "Базовый координатор", + "channelEmergency": "Аварийный", + "channelCoordination": "Координация", + "channelUpdates": "Обновления", + "sampleTeamMember": "Тестовый член команды", + "sampleScout": "Тестовый разведчик", + "sampleBase": "Тестовая база", + "sampleSearcher": "Тестовый поисковик", + "sampleObjectBackpack": " Найден рюкзак синего цвета", + "sampleObjectVehicle": " Брошенный автомобиль — установить владельца", + "sampleObjectCamping": " Обнаружено туристическое снаряжение", + "sampleObjectTrailMarker": " Указатель тропы найден вне маршрута", + "sampleMsgAllTeamsCheckIn": "Всем группам: сообщить о готовности", + "sampleMsgWeatherUpdate": "Погода: ясно, температура 18°C", + "sampleMsgBaseCamp": "Базовый лагерь развёрнут у места сбора", + "sampleMsgTeamAlpha": "Группа выдвигается в сектор 2", + "sampleMsgRadioCheck": "Проверка связи — всем станциям ответить", + "sampleMsgWaterSupply": "Вода доступна на контрольной точке 3", + "sampleMsgTeamBravo": "Группа докладывает: сектор 1 чист", + "sampleMsgEtaRallyPoint": "Прибытие на место сбора: 15 минут", + "sampleMsgSupplyDrop": "Сброс снаряжения подтверждён на 14:00", + "sampleMsgDroneSurvey": "Разведка дроном завершена — ничего не обнаружено", + "sampleMsgTeamCharlie": "Группа запрашивает подкрепление", + "sampleMsgRadioDiscipline": "Всем подразделениям: соблюдать радиодисциплину", + "sampleMsgUrgentMedical": "СРОЧНО: нужна медицинская помощь в секторе 4", + "sampleMsgAdultMale": " Взрослый мужчина, в сознании", + "sampleMsgFireSpotted": "Обнаружен пожар — координаты следуют", + "sampleMsgSpreadingRapidly": " Распространяется быстро!", + "sampleMsgPriorityHelicopter": "ПРИОРИТЕТ: нужна поддержка вертолёта", + "sampleMsgMedicalTeamEnRoute": "Медицинская группа движется к вашему местоположению", + "sampleMsgEvacHelicopter": "Вертолёт эвакуации: прибытие через 10 минут", + "sampleMsgEmergencyResolved": "Чрезвычайная ситуация ликвидирована — опасности нет", + "sampleMsgEmergencyStagingArea": " Аварийное место сбора", + "sampleMsgEmergencyServices": "Аварийные службы уведомлены и реагируют", + "sampleAlphaTeamLead": "Руководитель группы", + "sampleBravoScout": "Разведчик", + "sampleCharlieMedic": "Медик", + "sampleDeltaNavigator": "Навигатор", + "sampleEchoSupport": "Поддержка", + "sampleBaseCommand": "Базовое командование", + "sampleFieldCoordinator": "Полевой координатор", + "sampleMedicalTeam": "Медицинская группа", + "mapDrawing": "Рисунок на карте", + "navigateToDrawing": "Перейти к рисунку", + "copyCoordinates": "Копировать координаты", + "hideFromMap": "Скрыть с карты", + "lineDrawing": "Линия", + "rectangleDrawing": "Прямоугольник", + "manualCoordinates": "Ввод координат вручную", + "enterCoordinatesManually": "Ввести координаты вручную", + "latitudeLabel": "Широта", + "longitudeLabel": "Долгота", + "exampleCoordinates": "Пример: 55.7558, 37.6173", + "shareDrawing": "Поделиться рисунком", + "shareWithAllNearbyDevices": "Поделиться со всеми ближайшими устройствами", + "shareToRoom": "Отправить в комнату", + "sendToPersistentStorage": "Отправить в постоянное хранилище комнаты", + "deleteDrawingConfirm": "Вы уверены, что хотите удалить этот рисунок?", + "drawingDeleted": "Рисунок удалён", + "yourDrawingsCount": "Ваши рисунки ({count})", + "shared": "Передано", + "line": "Линия", + "rectangle": "Прямоугольник", + "updateAvailable": "Доступно обновление", + "currentVersion": "Текущая", + "latestVersion": "Последняя", + "downloadUpdate": "Скачать", + "updateLater": "Позже", + "cadastralParcels": "Кадастровые участки", + "forestRoads": "Лесные дороги", + "wmsOverlays": "WMS-наложения", + "hikingTrails": "Туристические маршруты", + "mainRoads": "Главные дороги", + "houseNumbers": "Номера домов", + "fireHazardZones": "Пожароопасные зоны", + "historicalFires": "Исторические пожары", + "firebreaks": "Противопожарные просеки", + "krasFireZones": "Пожарные зоны Краса", + "placeNames": "Названия мест", + "municipalityBorders": "Границы муниципалитетов", + "topographicMap": "Топографическая карта 1:25000", + "recentMessages": "Последние сообщения", + "addChannel": "Добавить канал", + "channelName": "Название канала", + "channelNameHint": "например, Группа спасения Альфа", + "channelSecret": "Секрет канала", + "channelSecretHint": "Общий пароль для этого канала", + "channelSecretHelp": "Этот секрет необходимо передать всем членам команды, которым нужен доступ к каналу", + "channelTypesInfo": "Hash-каналы (#команда): секрет генерируется из названия автоматически. Одно название = один канал на всех устройствах.\n\nЗакрытые каналы: используется явный секрет. Войти могут только те, у кого есть секрет.", + "hashChannelInfo": "Hash-канал: секрет будет автоматически создан из названия. Все, кто использует одно и то же имя, окажутся в одном канале.", + "channelNameRequired": "Требуется название канала", + "channelNameTooLong": "Название канала не должно превышать 31 символ", + "channelSecretRequired": "Требуется секрет канала", + "channelSecretTooLong": "Секрет канала не должен превышать 32 символа", + "invalidAsciiCharacters": "Разрешены только символы ASCII", + "channelCreatedSuccessfully": "Канал успешно создан", + "channelCreationFailed": "Не удалось создать канал: {error}", + "deleteChannel": "Удалить канал", + "deleteChannelConfirmation": "Вы уверены, что хотите удалить канал \"{channelName}\"? Это действие нельзя отменить.", + "channelDeletedSuccessfully": "Канал успешно удалён", + "channelDeletionFailed": "Не удалось удалить канал: {error}", + "createChannel": "Создать канал", + "wizardBack": "Назад", + "wizardSkip": "Пропустить", + "wizardNext": "Далее", + "wizardGetStarted": "Начать", + "wizardWelcomeTitle": "Добро пожаловать в MeshCore SAR", + "wizardWelcomeDescription": "Мощный инструмент связи вне сети для поисково-спасательных операций. Поддерживайте связь с командой через mesh-радио, когда традиционные сети недоступны.", + "wizardConnectingTitle": "Подключение к радиоустройству", + "wizardConnectingDescription": "Подключите смартфон к радиоустройству MeshCore по Bluetooth для связи вне сети.", + "wizardConnectingFeature1": "Поиск ближайших устройств MeshCore", + "wizardConnectingFeature2": "Сопряжение с радиоустройством по Bluetooth", + "wizardConnectingFeature3": "Работает полностью офлайн — интернет не нужен", + "wizardChannelTitle": "Каналы", + "wizardChannelDescription": "Транслируйте сообщения всем участникам канала — идеально для общих объявлений и координации команды.", + "wizardChannelFeature1": "Публичный канал для общей связи команды", + "wizardChannelFeature2": "Создавайте пользовательские каналы для отдельных групп", + "wizardChannelFeature3": "Сообщения автоматически ретранслируются через mesh", + "wizardContactsTitle": "Контакты", + "wizardContactsDescription": "Члены вашей команды появляются автоматически по мере подключения к mesh-сети. Отправляйте им личные сообщения или просматривайте их местоположение.", + "wizardContactsFeature1": "Контакты обнаруживаются автоматически", + "wizardContactsFeature2": "Отправка личных сообщений", + "wizardContactsFeature3": "Просмотр уровня заряда и времени последнего появления", + "wizardMapTitle": "Карта и местоположение", + "wizardMapDescription": "Отслеживайте команду в реальном времени и отмечайте важные места для поисково-спасательных операций.", + "wizardMapFeature1": "Маркеры SAR для найденных людей, пожаров и мест сбора", + "wizardMapFeature2": "GPS-отслеживание членов команды в реальном времени", + "wizardMapFeature3": "Загрузка офлайн-карт для отдалённых районов", + "wizardMapFeature4": "Рисование фигур и обмен тактической информацией", + "viewWelcomeTutorial": "Просмотреть обучение", + "allTeamContacts": "Все контакты команды", + "directMessagesInfo": "Личные сообщения с подтверждением. Отправлено {count} членам команды.", + "sarMarkerSentToContacts": "Маркер SAR отправлен {count} контактам", + "noContactsAvailable": "Нет доступных контактов команды", + "reply": "Ответить", + "technicalDetails": "Технические детали", + "messageTechnicalDetails": "Технические детали сообщения", + "linkQuality": "Качество связи", + "delivery": "Доставка", + "status": "Статус", + "expectedAckTag": "Ожидаемый тег ACK", + "roundTrip": "Время отклика", + "retryAttempt": "Попытка повтора", + "floodFallback": "Широковещательный резерв", + "identity": "Идентификатор", + "messageId": "ID сообщения", + "sender": "Отправитель", + "senderKey": "Ключ отправителя", + "recipient": "Получатель", + "recipientKey": "Ключ получателя", + "voice": "Голос", + "voiceId": "ID голоса", + "envelope": "Конверт", + "sessionProgress": "Прогресс сессии", + "complete": "Завершено", + "rawDump": "Необработанные данные", + "cannotRetryMissingRecipient": "Повтор невозможен: нет информации о получателе", + "voiceUnavailable": "Голос сейчас недоступен", "requestingVoice": "Запрос голоса" } diff --git a/lib/l10n/app_sl.arb b/lib/l10n/app_sl.arb index 9b8394a..bb47e48 100644 --- a/lib/l10n/app_sl.arb +++ b/lib/l10n/app_sl.arb @@ -1,679 +1,229 @@ { "@@locale": "sl", - "appTitle": "MeshCore SAR", - "messages": "Sporočila", - "contacts": "Stiki", - "map": "Zemljevid", - "settings": "Nastavitve", - "connect": "Poveži", - "disconnect": "Prekini", - - "scanningForDevices": "Iskanje naprav...", - "noDevicesFound": "Ni najdenih naprav", - "scanAgain": "Ponovi iskanje", - "tapToConnect": "Tapnite za povezavo", - "deviceNotConnected": "Naprava ni povezana", - "locationPermissionDenied": "Dovoljenje za lokacijo zavrnjeno", - "locationPermissionPermanentlyDenied": "Dovoljenje za lokacijo trajno zavrnjeno. Prosimo, omogočite v Nastavitvah.", - "locationPermissionRequired": "Dovoljenje za lokacijo je potrebno za GPS sledenje in usklajevanje ekipe. Lahko ga omogočite kasneje v Nastavitvah.", - "locationServicesDisabled": "Lokacijske storitve so onemogočene. Prosimo, omogočite jih v Nastavitvah.", - "failedToGetGpsLocation": "Pridobitev GPS lokacije ni uspela", - - "advertisedAtLocation": "Objavljeno na {latitude}, {longitude}", - "failedToAdvertise": "Objava ni uspela: {error}", - - "reconnecting": "Ponovno povezovanje... ({attempt}/{max})", - "cancelReconnection": "Prekliči ponovno povezovanje", - - "mapManagement": "Upravljanje zemljevida", - "general": "Splošno", - "theme": "Tema", - "chooseTheme": "Izberite temo", - "light": "Svetla", - "dark": "Temna", - "blueLightTheme": "Modra svetla tema", - "blueDarkTheme": "Modra temna tema", - "sarRed": "SAR rdeča", - "alertEmergencyMode": "Način opozorila/nujni primer", - "sarGreen": "SAR zelena", - "safeAllClearMode": "Način varno/vse jasno", - "autoSystem": "Samodejno (Sistem)", - "followSystemTheme": "Sledi sistemski temi", - "showRxTxIndicators": "Prikaži RX/TX kazalnike", - "displayPacketActivity": "Prikaži kazalnike aktivnosti paketov v zgornji vrstici", - - "simpleMode": "Preprost način", - - "simpleModeDescription": "Skrij nepomembne informacije v sporočilih in kontaktih", - "disableMap": "Onemogoči zemljevid", - "disableMapDescription": "Skrij zavihek z zemljevidom za varčevanje z baterijo", - "language": "Jezik", - "chooseLanguage": "Izberite jezik", - - "english": "Angleščina", - - "slovenian": "Slovenščina", - - "croatian": "Hrvaščina", - - "german": "Nemščina", - - "spanish": "Španščina", - - "french": "Francoščina", - - "italian": "Italijanščina", - - "locationBroadcasting": "Oddajanje lokacije", - - "autoLocationTracking": "Samodejno sledenje lokaciji", - - "automaticallyBroadcastPosition": "Samodejno oddajaj posodobitve položaja", - - "configureTracking": "Konfiguriraj sledenje", - - "distanceAndTimeThresholds": "Pragovi razdalje in časa", - - "locationTrackingConfiguration": "Konfiguracija sledenja lokaciji", - - "configureWhenLocationBroadcasts": "Konfigurirajte, kdaj se oddajanja lokacije pošiljajo v omrežje mesh", - - "minimumDistance": "Minimalna razdalja", - - "broadcastAfterMoving": "Oddajaj šele po premiku {distance} metrov", - - "maximumDistance": "Maksimalna razdalja", - - "alwaysBroadcastAfterMoving": "Vedno oddajaj po premiku {distance} metrov", - - "minimumTimeInterval": "Minimalni časovni interval", - - "alwaysBroadcastEvery": "Vedno oddajaj vsakih {duration}", - "save": "Shrani", - "cancel": "Prekliči", - "close": "Zapri", - "about": "O aplikaciji", - "appVersion": "Različica aplikacije", - "appName": "Ime aplikacije", - "aboutMeshCoreSar": "O MeshCore SAR", - "aboutDescription": "Aplikacija za iskanje in reševanje, zasnovana za ekipe za odzivanje v nujnih primerih. Funkcije vključujejo:\n\n• BLE mesh omrežje za komunikacijo naprava-naprava\n• Brez povezave delujejo zemljevidi z več sloji\n• Sledenje članov ekipe v realnem času\n• SAR taktični označevalci (najdena oseba, ogenj, zbirališče)\n• Upravljanje stikov in sporočanje\n• GPS sledenje s kompasno smerjo\n• Predpomnenje ploščic zemljevida za uporabo brez povezave", - "technologiesUsed": "Uporabljene tehnologije:", - "technologiesList": "• Flutter za večplatformni razvoj\n• BLE (Bluetooth Low Energy) za mesh omrežje\n• OpenStreetMap za kartografijo\n• Provider za upravljanje stanja\n• SharedPreferences za lokalno shranjevanje", - "moreInfo": "Več informacij", - - "learnMoreAbout": "Več o MeshCore SAR", - - "developer": "Razvijalec", - "packageName": "Ime paketa", - "sampleData": "Vzorčni podatki", - "sampleDataDescription": "Naložite ali počistite vzorčne stike, sporočila kanalov in SAR označevalce za testiranje", - "loadSampleData": "Naloži vzorec", - "clearAllData": "Počisti vse podatke", - "clearAllDataConfirmTitle": "Počisti vse podatke", - "clearAllDataConfirmMessage": "To bo počistilo vse stike in SAR označevalce. Ste prepričani?", - "clear": "Počisti", - "loadedSampleData": "Naloženih {teamCount} članov ekipe, {channelCount} kanalov, {sarCount} SAR označevalcev, {messageCount} sporočil", - "failedToLoadSampleData": "Nalaganje vzorčnih podatkov ni uspelo: {error}", - "allDataCleared": "Vsi podatki počiščeni", - "failedToStartBackgroundTracking": "Zagon sledenja v ozadju ni uspel. Preverite dovoljenja in BLE povezavo.", - "locationBroadcast": "Oddajanje lokacije: {latitude}, {longitude}", - "defaultPinInfo": "Privzeta PIN koda za naprave brez zaslona je 123456. Težave s seznanitvijo? Pozabite napravo Bluetooth v sistemskih nastavitvah.", - "noMessagesYet": "Še ni sporočil", - "pullDownToSync": "Potegnite navzdol za sinhronizacijo", - "deleteContact": "Izbriši stik", - "delete": "Izbriši", - - - "viewOnMap": "Poglej na zemljevidu", - "refresh": "Osveži", - - "sendDirectMessage": "Pošlji", - "resetPath": "Ponastavi pot (preusmeri)", - "publicKeyCopied": "Javni ključ kopiran v odložišče", - "copiedToClipboard": "{label} kopirano v odložišče", - "pleaseEnterPassword": "Prosimo, vnesite geslo", - "failedToSyncContacts": "Sinhronizacija stikov ni uspela: {error}", - "loggedInSuccessfully": "Uspešno prijavljen! Čakanje na sporočila sobe...", - "loginFailed": "Prijava ni uspela - nepravilno geslo", - "loggingIn": "Prijavljanje v {roomName}...", - "failedToSendLogin": "Pošiljanje prijave ni uspelo: {error}", - "lowLocationAccuracy": "Nizka natančnost lokacije", - "continue_": "Nadaljuj", - "sendSarMarker": "Pošlji SAR označevalec", - "deleteDrawing": "Izbriši risbo", - "drawingTools": "Orodja za risanje", - "drawLine": "Nariši črto", - "drawLineDesc": "Nariši prosto črto na zemljevidu", - "drawRectangle": "Nariši pravokotnik", - "drawRectangleDesc": "Nariši pravokotno področje na zemljevidu", - "measureDistance": "Meri razdaljo", - "measureDistanceDesc": "Dolg pritisk na dve točki za merjenje", - "clearMeasurement": "Počisti meritev", - "distanceLabel": "Razdalja: {distance}", - "longPressForSecondPoint": "Dolg pritisk za drugo točko", - "longPressToStartMeasurement": "Dolg pritisk za prvo točko", - "longPressToStartNewMeasurement": "Dolg pritisk za novo meritev", - "shareDrawings": "Deli risbe", - "clearAllDrawings": "Počisti vse risbe", - "completeLine": "Dokonč črto", - "broadcastDrawingsToTeam": "Oddaj {count} risb{plural} ekipi", - "removeAllDrawings": "Odstrani vseh {count} risb{plural}", - "deleteAllDrawingsConfirm": "Izbriši vseh {count} risb{plural} z zemljevida?", - "drawing": "Risanje", - "shareDrawingsCount": "Deli {count} risb{plural}", - - "sentDrawingsToRoom": "Poslanih {count} risb{plural} karte v {roomName}", - - "sharedDrawingsToRoom": "Deljeno {success}/{total} risb{plural} v {roomName}", - "showReceivedDrawings": "Prikaži prejete risbe", - "showingAllDrawings": "Prikazujem vse risbe", - "showingOnlyYourDrawings": "Prikazujem samo vaše risbe", - "showSarMarkers": "Prikaži SAR označevalce", - "showingSarMarkers": "Prikazujem SAR označevalce", - "hidingSarMarkers": "Skrivam SAR označevalce", - "clearAll": "Počisti vse", - - "noLocalDrawings": "Ni lokalnih risb za deljenje", - "publicChannel": "Javni kanal", - "broadcastToAll": "Oddajaj vsem bližnjim vozliščem (začasno)", - "storedPermanently": "Trajno shranjeno v sobi", - - "drawingsSentToPublicChannel": "Poslano {count} risb{plural} na javni kanal", - - "drawingsSharedToPublicChannel": "Deljeno {success}/{total} risb na javni kanal", - "notConnectedToDevice": "Ni povezano z napravo", - - "directMessage": "Neposredno sporočilo", - - "directMessageSentTo": "Neposredno sporočilo poslano {contactName}", - - "failedToSend": "Pošiljanje ni uspelo: {error}", - - "directMessageInfo": "To sporočilo bo poslano neposredno {contactName}. Prikazalo se bo tudi v glavnem viru sporočil.", - "typeYourMessage": "Vnesite svoje sporočilo...", - "quickLocationMarker": "Hitri označevalec lokacije", - "markerType": "Vrsta označevalca", - "sendTo": "Pošlji na", - "noDestinationsAvailable": "Ni dostopnih ciljev.", - "selectDestination": "Izberite cilj...", - "ephemeralBroadcastInfo": "Začasno: Samo oddajanje. Ni shranjeno - vozlišča morajo biti povezana.", - "persistentRoomInfo": "Trajno: Nespremenljivo shranjeno v sobi. Samodejno sinhronizirano in ohranjeno brez povezave.", - "location": "Lokacija", - - "myLocation": "Moja lokacija", - "fromMap": "Z zemljevida", - "gettingLocation": "Pridobivanje lokacije...", - "locationError": "Napaka lokacije", - "retry": "Poskusi znova", - "refreshLocation": "Osveži lokacijo", - "accuracyMeters": "Natančnost: ±{accuracy}m", - "notesOptional": "Opombe (neobvezno)", - "addAdditionalInformation": "Dodajte dodatne informacije...", - "lowAccuracyWarning": "Natančnost lokacije je ±{accuracy}m. To morda ni dovolj natančno za SAR operacije.\n\nVseeno nadaljuj?", - "loginToRoom": "Prijava v sobo", - "enterPasswordInfo": "Vnesite geslo za dostop do te sobe. Geslo bo shranjeno za prihodnjo uporabo.", - "password": "Geslo", - "enterRoomPassword": "Vnesite geslo sobe", - "loggingInDots": "Prijavljanje...", - "login": "Prijava", - "failedToAddRoom": "Dodajanje sobe v napravo ni uspelo: {error}\n\nSoba morda še ni oglašena.\nPoskusite počakati, da soba odda.", - "direct": "Neposredno", - "flood": "Razpršitev", - - "admin": "Administrator", - "loggedIn": "Prijavljen", - "noGpsData": "Ni GPS podatkov", - - - - "pingingDirect": "Pinganje {name} (neposredno preko poti)...", - - "pingingFlood": "Pinganje {name} (razpršitev - brez poti)...", - "directPingTimeout": "Časovna omejitev neposrednega pinga - ponovni poskus {name} z razprševanjem...", - - "pingSuccessful": "Ping uspešen do {name}{fallback}", - - "viaFloodingFallback": " (preko rezervnega razprševanja)", - "pingFailed": "Ping neuspešen do {name} - odgovor ni prejet", - "deleteContactConfirmation": "Ste prepričani, da želite izbrisati \"{name}\"?\n\nTo bo odstranilo stik iz aplikacije in spremljevalne radijske naprave.", - - "removingContact": "Odstranjevanje {name}...", - - "contactRemoved": "Stik \"{name}\" odstranjen", - "failedToRemoveContact": "Odstranjevanje stika ni uspelo: {error}", - "type": "Vrsta", - "publicKey": "Javni ključ", - "lastSeen": "Nazadnje viden", - "roomStatus": "Status sobe", - "loginStatus": "Status prijave", - "notLoggedIn": "Ni prijavljen", - "adminAccess": "Administratorski dostop", - "yes": "Da", - "no": "Ne", - "permissions": "Dovoljenja", - "passwordSaved": "Geslo shranjeno", - "locationColon": "Lokacija:", - "telemetry": "Telemetrija", - - "requestingTelemetry": "Zahtevanje telemetrije od {name}...", - "voltage": "Napetost", - "battery": "Baterija", - "temperature": "Temperatura", - "humidity": "Vlažnost", - "pressure": "Tlak", - "gpsTelemetry": "GPS (Telemetrija)", - "updated": "Posodobljeno", - "pathResetInfo": "Pot ponastavljena za {name}. Naslednje sporočilo bo našlo novo pot.", - "reLoginToRoom": "Ponovna prijava v sobo", - "heading": "Smer", - "elevation": "Nadmorska višina", - "accuracy": "Natančnost", - "distance": "Razdalja", - - - "bearing": "Azimut", - "direction": "Smer", - "filterMarkers": "Filtriraj označevalce", - "filterMarkersTooltip": "Filtriraj označevalce", - "contactsFilter": "Stiki", - "repeatersFilter": "Ponavljalniki", - "sarMarkers": "SAR označevalci", - "foundPerson": "Najdena oseba", - "fire": "Ogenj", - "stagingArea": "Zbirališče", - "showAll": "Prikaži vse", - - "nearbyContacts": "Bližnji stiki", - "locationUnavailable": "Lokacija ni na voljo", - "ahead": "naravnost", - "degreesRight": "{degrees}° desno", - "degreesLeft": "{degrees}° levo", - "latLonFormat": "Šir: {latitude} Dolž: {longitude}", - "noContactsYet": "Še ni stikov", - "connectToDeviceToLoadContacts": "Povežite se z napravo za nalaganje stikov", - "teamMembers": "Člani ekipe", - "repeaters": "Ponavljalniki", - "rooms": "Sobe", - "channels": "Kanali", - - "cacheStatistics": "Statistika predpomnilnika", - - "totalTiles": "Skupaj ploščic", - - "cacheSize": "Velikost predpomnilnika", - - "storeName": "Ime skladišča", - - "noCacheStatistics": "Statistika predpomnilnika ni na voljo", - - "downloadRegion": "Prenesi regijo", - - "mapLayer": "Sloj zemljevida", - - "regionBounds": "Meje regije", - - "north": "Sever", - - "south": "Jug", - - "east": "Vzhod", - - "west": "Zahod", - - "zoomLevels": "Nivoji povečave", - - "minZoom": "Min: {zoom}", - - "maxZoom": "Maks: {zoom}", - - "downloadingDots": "Prenašanje...", - - "cancelDownload": "Prekliči prenos", - - "downloadRegionButton": "Prenesi regijo", - - "downloadNote": "Opomba: Velike regije ali visoki nivoji povečave lahko zahtevajo veliko časa in prostora za shranjevanje.", - - "cacheManagement": "Upravljanje predpomnilnika", - - "clearAllMaps": "Počisti vse zemljevide", - - "clearMapsConfirmTitle": "Počisti vse zemljevide", - - "clearMapsConfirmMessage": "Ste prepričani, da želite izbrisati vse prenesene zemljevide? Tega dejanja ni mogoče razveljaviti.", - - "mapDownloadCompleted": "Prenos zemljevida končan!", - - "cacheClearedSuccessfully": "Predpomnilnik uspešno počiščen!", - - "downloadCancelled": "Prenos preklican", - - "startingDownload": "Začetek prenosa...", - - "downloadingMapTiles": "Prenašanje ploščic zemljevida...", - - "downloadCompletedSuccessfully": "Prenos uspešno končan!", - - "cancellingDownload": "Preklic prenosa...", - - "errorLoadingStats": "Napaka pri nalaganju statistike: {error}", - - "downloadFailed": "Prenos ni uspel: {error}", - - "cancelFailed": "Preklic ni uspel: {error}", - - "clearCacheFailed": "Čiščenje predpomnilnika ni uspelo: {error}", - - "minZoomError": "Min povečava: {error}", - - "maxZoomError": "Maks povečava: {error}", - - "minZoomGreaterThanMax": "Minimalna povečava mora biti manjša ali enaka maksimalni povečavi", - "selectMapLayer": "Izberite sloj zemljevida", - - "mapOptions": "Možnosti zemljevida", - - "showLegend": "Prikaži legendo", - - "displayMarkerTypeCounts": "Prikaži število vrst označevalcev", - - "rotateMapWithHeading": "Rotiraj zemljevid s smerjo", - - "mapFollowsDirection": "Zemljevid sledi vaši smeri pri gibanju", - - "resetMapRotation": "Ponastavi rotacijo", - - "resetMapRotationTooltip": "Ponastavi zemljevid na sever", - - "showMapDebugInfo": "Prikaži informacije za razhroščevanje zemljevida", - - "displayZoomLevelBounds": "Prikaži nivo povečave in meje", - - "fullscreenMode": "Način celozaslonskega prikaza", - - "hideUiFullMapView": "Skrij vse UI kontrole za poln prikaz zemljevida", - "openStreetMap": "OpenStreetMap", - "openTopoMap": "OpenTopoMap", - "esriSatellite": "ESRI satelit", - "googleHybrid": "Google hibridni zemljevid", - "googleRoadmap": "Google cestni zemljevid", - "googleTerrain": "Google teren", - - "downloadVisibleArea": "Prenesi vidno območje", - - "initializingMap": "Inicializacija zemljevida...", - "dragToPosition": "Povleci na položaj", - "createSarMarker": "Ustvari SAR označevalec", - "compass": "Kompas", - "navigationAndContacts": "Navigacija in stiki", - "sarAlert": "SAR ALARM", - "justNow": "Pravkar", - "minutesAgo": "pred {minutes}m", - "hoursAgo": "pred {hours}h", - "daysAgo": "pred {days}d", - "secondsAgo": "pred {seconds}s", - "sending": "Pošiljanje...", - "sent": "Poslano", - "delivered": "Dostavljeno", - "deliveredWithTime": "Dostavljeno ({time}ms)", - "failed": "Neuspešno", - "broadcast": "Oddajano", - "deliveredToContacts": "Dostavljeno {delivered}/{total} stikom", - "allDelivered": "Vse dostavljeno", - "recipientDetails": "Podrobnosti prejemnikov", - "pending": "V čakanju", - - "messageSentToPublicChannel": "Sporočilo poslano na javni kanal", - - "pleaseSelectRoomToSendSar": "Prosimo, izberite sobo za pošiljanje SAR označevalca", - - "failedToSendSarMarker": "Pošiljanje SAR označevalca ni uspelo: {error}", - - "sarMarkerSentTo": "SAR označevalec poslan v {roomName}", - - "notConnectedCannotSync": "Ni povezano - sporočil ni mogoče sinhronizirati", - - "syncedMessageCount": "Sinhronizirano {count} sporočil", - - "noNewMessages": "Ni novih sporočil", - - "syncFailed": "Sinhronizacija ni uspela: {error}", - - "failedToResendMessage": "Ponovno pošiljanje sporočila ni uspelo", - - "retryingMessage": "Ponovni poskus pošiljanja sporočila...", - - "retryFailed": "Ponovni poskus ni uspel: {error}", - "textCopiedToClipboard": "Besedilo kopirano v odložišče", - "cannotReplySenderMissing": "Ni mogoče odgovoriti: informacije o pošiljatelju manjkajo", - "cannotReplyContactNotFound": "Ni mogoče odgovoriti: stik ni najden", - - "messageDeleted": "Sporočilo izbrisano", "copyText": "Kopiraj besedilo", - "textCopiedToClipboard": "Besedilo kopirano v odložišče", "saveAsTemplate": "Shrani kot predlogo", "templateSaved": "Predloga uspešno shranjena", "templateAlreadyExists": "Predloga s tem emojijem že obstaja", @@ -682,24 +232,13 @@ "shareLocation": "Deli lokacijo", "shareLocationText": "{markerInfo}\n\nKoordinate: {lat}, {lon}\n\nGoogle Maps: {url}", "sarLocationShare": "SAR Lokacija", - "locationShared": "Lokacija deljena", - - "refreshedContacts": "Stiki osveženi", - "sarMarkerFoundPerson": "Najdena oseba", - "sarMarkerFire": "Lokacija ognja", - "sarMarkerStagingArea": "Zbirališče", - "sarMarkerObject": "Najden predmet", - "from": "Od", - "coordinates": "Koordinate", - "tapToViewOnMap": "Tapnite za prikaz na zemljevidu", - "radioSettings": "Nastavitve radia", "frequencyMHz": "Frekvenca (MHz)", "frequencyExample": "npr. 869.618", @@ -708,181 +247,53 @@ "codingRate": "Razmerje kodiranja", "txPowerDbm": "Izhodna moč (dBm)", "maxPowerDbm": "Največ: {power} dBm", - "you": "Ti", - - "offlineVectorMaps": "Brezpovezni vektorski zemljevidi", - - "offlineVectorMapsDescription": "Uvozite in upravljajte brezpovezne vektorske ploščice zemljevidov (format MBTiles) za uporabo brez internetne povezave", - - "importMbtiles": "Uvozi MBTiles datoteko", - - "importMbtilesNote": "Podpira MBTiles datoteke z vektorskimi ploščicami (format PBF/MVT). Geofabrik izvozi odlično delujejo!", - - "noMbtilesFiles": "Ni najdenih brezpoveznih vektorskih zemljevidov", - - "mbtilesImportedSuccessfully": "MBTiles datoteka uspešno uvožena", - - "failedToImportMbtiles": "Uvoz MBTiles datoteke ni uspel", - - "deleteMbtilesConfirmTitle": "Izbriši brezpovezni zemljevid", - - "deleteMbtilesConfirmMessage": "Ste prepričani, da želite izbrisati \"{name}\"? To bo trajno odstranilo brezpovezni zemljevid.", - - "mbtilesDeletedSuccessfully": "Brezpovezni zemljevid uspešno izbrisan", - - "failedToDeleteMbtiles": "Brisanje brezpoveznega zemljevida ni uspelo", - - "importExportCachedTiles": "Uvoz/Izvoz predpomnjenih ploščic", - - "importExportDescription": "Varnostno kopirajte, delite in obnovite prenesene ploščice zemljevida med napravami", - - "exportTilesToFile": "Izvozi ploščice v datoteko", - - "importTilesFromFile": "Uvozi ploščice iz datoteke", - - "selectExportLocation": "Izberi lokacijo izvoza", - - "selectImportFile": "Izberi arhiv ploščic", - - "exportingTiles": "Izvažanje ploščic...", - - "importingTiles": "Uvažanje ploščic...", - - "exportSuccess": "Uspešno izvoženih {count} ploščic", - - "importSuccess": "Uspešno uvoženih {count} skladišč", - "exportFailed": "Izvoz ni uspel: {error}", - "importFailed": "Uvoz ni uspel: {error}", - - "exportNote": "Ustvari stisnjeno arhivsko datoteko (.fmtc), ki jo lahko delite in uvozite na drugih napravah.", - - "importNote": "Uvozi ploščice zemljevida iz predhodno izvožene arhivske datoteke. Ploščice bodo združene z obstoječim predpomnilnikom.", - - "noTilesToExport": "Ni ploščic za izvoz", - - "archiveContainsStores": "Arhiv vsebuje {count} skladišč", - - "vectorTiles": "Vektorske ploščice", - - "schema": "Shema", - "unknown": "Neznano", - - "bounds": "Meje", - "onlineLayers": "Spletne plasti", - - "offlineLayers": "Brezpovezne plasti", - "locationTrail": "Sledilna pot", - "showTrailOnMap": "Prikaži pot na zemljevidu", - "trailVisible": "Pot je vidna na zemljevidu", - "trailHiddenRecording": "Pot je skrita (še se snema)", - "duration": "Trajanje", - "points": "Točke", - "clearTrail": "Počisti pot", - "clearTrailQuestion": "Počisti pot?", - "clearTrailConfirmation": "Ste prepričani, da želite počistiti trenutno sledilno pot? Tega dejanja ni mogoče razveljaviti.", - "noTrailRecorded": "Še ni posnete poti", - "startTrackingToRecord": "Začnite sledenje lokacije za snemanje poti", - "trailControls": "Nadzor poti", - - "exportTrailToGpx": "Izvozi pot v GPX", - - "importTrailFromGpx": "Uvozi pot iz GPX", - - "trailExportedSuccessfully": "Pot uspešno izvožena!", - - "failedToExportTrail": "Izvoz poti ni uspel", - - "failedToImportTrail": "Uvoz poti ni uspel: {error}", - - "importTrail": "Uvozi pot", - - "importTrailQuestion": "Uvozi pot s {pointCount} točkami?\n\nLahko zamenjate trenutno pot ali jo prikažete skupaj.", - - "viewAlongside": "Prikaži skupaj", - - "replaceCurrent": "Zamenjaj trenutno", - - "trailImported": "Pot uvožena! ({pointCount} točk)", - - "trailReplaced": "Pot zamenjana! ({pointCount} točk)", - "contactTrails": "Poti stikov", - "showAllContactTrails": "Prikaži vse poti stikov", - "noContactsWithLocationHistory": "Ni stikov z zgodovino lokacije", - "showingTrailsForContacts": "Prikazujem poti za {count} stikov", - "individualContactTrails": "Posamezne poti stikov", - "deviceInformation": "Informacije o napravi", - "bleName": "BLE ime", - "meshName": "Mesh ime", - "notSet": "Ni nastavljeno", - "model": "Model", - "version": "Različica", - "buildDate": "Datum izdelave", - "firmware": "Vdelana programska oprema", - "maxContacts": "Maks. stikov", - "maxChannels": "Maks. kanalov", - "publicInfo": "Javne informacije", - "meshNetworkName": "Ime mesh omrežja", - "nameBroadcastInMesh": "Ime, ki se oddaja v mesh oglasih", - "telemetryAndLocationSharing": "Telemetrija in deljenje lokacije", - "lat": "Šir", - "lon": "Dolž", - "useCurrentLocation": "Uporabi trenutno lokacijo", - "noneUnknown": "Brez/Neznano", - "chatNode": "Vozlišče za klepet", - "repeater": "Ponavljalnik", - "roomChannel": "Soba/Kanal", - "typeNumber": "Tip {number}", - "copiedToClipboardShort": "Kopirano {label} v odložišče", - "failedToSave": "Shranjevanje ni uspelo: {error}", - "failedToGetLocation": "Pridobivanje lokacije ni uspelo: {error}", - "sarTemplates": "SAR predloge", "manageSarTemplates": "Upravljanje SAR predlog", "addTemplate": "Dodaj predlogo", @@ -905,8 +316,6 @@ "templateDeleted": "Predloga izbrisana", "templatesImported": "{count, plural, =0{Ni uvoženih predlog} =1{Uvožena 1 predloga} other{Uvoženih {count} predlog}}", "templatesExported": "{count, plural, =1{Izvožena 1 predloga v odložišče} other{Izvoženih {count} predlog v odložišče}}", - "importFailed": "Uvoz ni uspel: {error}", - "exportFailed": "Izvoz ni uspel: {error}", "resetToDefaults": "Ponastavi na privzeto", "resetToDefaultsConfirmation": "To bo izbrisalo vse prilagojene predloge in obnovilo 4 privzete predloge. Nadaljevati?", "reset": "Ponastavi", @@ -914,7 +323,6 @@ "noTemplates": "Ni razpoložljivih predlog", "tapAddToCreate": "Tapnite + za ustvarjanje prve predloge", "ok": "OK", - "permissionsSection": "Dovoljenja", "locationPermission": "Dovoljenje za lokacijo", "checking": "Preverjanje...", @@ -929,19 +337,15 @@ "locationPermissionAlreadyGranted": "Dovoljenje za lokacijo je že odobreno.", "sarNavyBlue": "SAR Mornarska Modra", "sarNavyBlueDescription": "Profesionalni/Operativni Način", - "selectRecipient": "Izberi prejemnika", "broadcastToAllNearby": "Oddajaj vsem v bližini", "searchRecipients": "Išči prejemnike...", "noContactsFound": "Ni kontaktov", "noRoomsFound": "Ni sob", - "noContactsOrRoomsAvailable": "Ni na voljo kontaktov ali sob", "noRecipientsAvailable": "Ni na voljo prejemnikov", "noChannelsFound": "Ni najdenih kanalov", - "messagesWillBeSentToPublicChannel": "Sporočila bodo poslana na javni kanal", "newMessage": "Novo sporočilo", "channel": "Kanal", - "samplePoliceLead": "Vodja Policije", "sampleDroneOperator": "Operater Drona", "sampleFirefighterAlpha": "Gasilec", @@ -991,28 +395,17 @@ "sampleBaseCommand": "Poveljstvo Baze", "sampleFieldCoordinator": "Terenski Koordinator", "sampleMedicalTeam": "Medicinska Ekipa", - "mapDrawing": "Risba zemljevida", "navigateToDrawing": "Navigiraj do risbe", "copyCoordinates": "Kopiraj koordinate", "hideFromMap": "Skrij z zemljevida", "lineDrawing": "Linijska risba", "rectangleDrawing": "Pravokotna risba", - "coordinatesCopiedToClipboard": "Koordinate kopirane v odložišče", - "manualCoordinates": "Ročne koordinate", "enterCoordinatesManually": "Ročno vnesite koordinate", "latitudeLabel": "Geografska širina", "longitudeLabel": "Geografska dolžina", - "invalidLatitude": "Neveljavna geografska širina (-90 do 90)", - "invalidLongitude": "Neveljavna geografska dolžina (-180 do 180)", "exampleCoordinates": "Primer: 46.0569, 14.5058", - - "drawingShared": "Risba deljena", - "drawingHidden": "Risba skrita z zemljevida", - "alreadyShared": "{count, plural, =1{1 že deljeno} other{{count} že deljeno}}", - "newDrawingsShared": "Deljeno {count} nov{plural} risb{plural}", - "shareDrawing": "Deli risbo", "shareWithAllNearbyDevices": "Deli z vsemi bližnjimi napravami", "shareToRoom": "Deli v Sobo", @@ -1023,19 +416,14 @@ "shared": "Deljeno", "line": "Črta", "rectangle": "Pravokotnik", - "updateAvailable": "Na voljo je posodobitev", "currentVersion": "Trenutna različica", "latestVersion": "Najnovejša različica", "downloadUpdate": "Prenesi posodobitev", "updateLater": "Kasneje", - "cadastralParcels": "Katastrske parcele", "forestRoads": "Gozdne ceste", - "showCadastralParcels": "Prikaži katastrske parcele", - "showForestRoads": "Prikaži gozdne ceste", "wmsOverlays": "WMS prekrivanja", - "hikingTrails": "Planinske poti", "mainRoads": "Glavne ceste", "houseNumbers": "Hišne številke", @@ -1046,9 +434,7 @@ "placeNames": "Zemljepisna imena", "municipalityBorders": "Občinske meje", "topographicMap": "Topografska karta 1:25000", - "recentMessages": "Nedavna sporočila", - "addChannel": "Dodaj kanal", "channelName": "Ime kanala", "channelNameHint": "npr. Reševalna ekipa Alfa", @@ -1068,9 +454,7 @@ "deleteChannelConfirmation": "Ali ste prepričani, da želite izbrisati kanal \"{channelName}\"? Tega dejanja ni mogoče razveljaviti.", "channelDeletedSuccessfully": "Kanal uspešno izbrisan", "channelDeletionFailed": "Neuspešno brisanje kanala: {error}", - "allChannelSlotsInUse": "Vsa mesta za kanale so zasedena (maksimalno 39 prilagojenih kanalov)", "createChannel": "Ustvari kanal", - "wizardBack": "Nazaj", "wizardSkip": "Preskoči", "wizardNext": "Naprej", @@ -1082,10 +466,6 @@ "wizardConnectingFeature1": "Poišče bližnje naprave MeshCore", "wizardConnectingFeature2": "Seznanitev z radijsko napravo prek Bluetootha", "wizardConnectingFeature3": "Deluje povsem brez povezave — internet ni potreben", - "wizardSimpleModeTitle": "Preprost način", - "wizardSimpleModeDescription": "Ste novi v mesh omrežju? Vključite preprost način za poenostavljen vmesnik z osnovnimi funkcijami.", - "wizardSimpleModeFeature1": "Vmesnik, prilagojen začetnikom, z osnovnimi funkcijami", - "wizardSimpleModeFeature2": "Na napredni način lahko kadarkoli preklopite v nastavitvah", "wizardChannelTitle": "Kanali", "wizardChannelDescription": "Pošiljajte sporočila vsem na kanalu — idealno za obvestila in koordinacijo ekipe.", "wizardChannelFeature1": "Javni kanal za splošno komunikacijo ekipe", @@ -1106,56 +486,30 @@ "allTeamContacts": "Vsi stiki ekipe", "directMessagesInfo": "Neposredna sporočila s potrditvami. Poslano {count} članom ekipe.", "sarMarkerSentToContacts": "SAR označevalec poslan {count} stikom", - "noContactsAvailable": "Ni razpoložljivih stikov ekipe" -, - + "noContactsAvailable": "Ni razpoložljivih stikov ekipe", "reply": "Odgovori", - "technicalDetails": "Tehnični podrobnosti", - "messageTechnicalDetails": "Tehnični podrobnosti sporočila", - "linkQuality": "Kakovost povezave", - "delivery": "Dostava", - "status": "Status", - "expectedAckTag": "Pričakovana oznaka ACK", - "roundTrip": "Povratna pot", - "retryAttempt": "Poskus ponovnega pošiljanja", - "floodFallback": "Flood rezerva", - "identity": "Identiteta", - "messageId": "ID sporočila", - "sender": "Pošiljatelj", - "senderKey": "Ključ pošiljatelja", - "recipient": "Prejemnik", - "recipientKey": "Ključ prejemnika", - "voice": "Glas", - "voiceId": "ID glasu", - "envelope": "Ovojnica", - "sessionProgress": "Napredek seje", - "complete": "Dokončano", - "rawDump": "Surovi izpis", - "cannotRetryMissingRecipient": "Ponovnega pošiljanja ni mogoče: informacije o prejemniku manjkajo", - "voiceUnavailable": "Glas trenutno ni na voljo", - "requestingVoice": "Zahteva za glasom" -} \ No newline at end of file +} diff --git a/lib/l10n/app_zh.arb b/lib/l10n/app_zh.arb index f8f437e..9464552 100644 --- a/lib/l10n/app_zh.arb +++ b/lib/l10n/app_zh.arb @@ -28,10 +28,6 @@ "@disconnect": { "description": "断开连接按钮标签" }, - "scanningForDevices": "正在扫描设备...", - "@scanningForDevices": { - "description": "扫描 BLE 设备时显示的文本" - }, "noDevicesFound": "未找到设备", "@noDevicesFound": { "description": "未找到 BLE 设备时显示的文本" @@ -68,18 +64,6 @@ "@failedToGetGpsLocation": { "description": "无法获取 GPS 位置时的错误" }, - "advertisedAtLocation": "已广播位置 {latitude}, {longitude}", - "@advertisedAtLocation": { - "description": "显示已广播位置的成功消息", - "placeholders": { - "latitude": { - "type": "String" - }, - "longitude": { - "type": "String" - } - } - }, "failedToAdvertise": "广播失败: {error}", "@failedToAdvertise": { "description": "广播失败的错误消息", @@ -89,26 +73,10 @@ } } }, - "reconnecting": "正在重新连接... ({attempt}/{max})", - "@reconnecting": { - "description": "重新连接尝试期间显示的文本", - "placeholders": { - "attempt": { - "type": "int" - }, - "max": { - "type": "int" - } - } - }, "cancelReconnection": "取消重新连接", "@cancelReconnection": { "description": "取消重新连接按钮的工具提示" }, - "mapManagement": "地图管理", - "@mapManagement": { - "description": "地图管理菜单项" - }, "general": "通用", "@general": { "description": "通用设置区域标题" @@ -169,14 +137,6 @@ "@displayPacketActivity": { "description": "RX/TX 指示器设置的描述" }, - "simpleMode": "简洁模式", - "@simpleMode": { - "description": "启用简洁模式的设置" - }, - "simpleModeDescription": "在消息和联系人中隐藏非必要信息", - "@simpleModeDescription": { - "description": "简洁模式设置的描述" - }, "disableMap": "禁用地图", "@disableMap": { "description": "禁用地图标签页的设置" @@ -193,101 +153,6 @@ "@chooseLanguage": { "description": "语言选择对话框标题" }, - "english": "英语", - "@english": { - "description": "英语语言选项" - }, - "slovenian": "斯洛文尼亚语", - "@slovenian": { - "description": "斯洛文尼亚语语言选项" - }, - "croatian": "克罗地亚语", - "@croatian": { - "description": "克罗地亚语语言选项" - }, - "german": "德语", - "@german": { - "description": "德语语言选项" - }, - "spanish": "西班牙语", - "@spanish": { - "description": "西班牙语语言选项" - }, - "french": "法语", - "@french": { - "description": "法语语言选项" - }, - "italian": "意大利语", - "@italian": { - "description": "意大利语语言选项" - }, - "locationBroadcasting": "位置广播", - "@locationBroadcasting": { - "description": "位置设置区域标题" - }, - "autoLocationTracking": "自动位置跟踪", - "@autoLocationTracking": { - "description": "自动位置跟踪设置" - }, - "automaticallyBroadcastPosition": "自动广播位置更新", - "@automaticallyBroadcastPosition": { - "description": "自动位置跟踪的描述" - }, - "configureTracking": "配置跟踪", - "@configureTracking": { - "description": "配置跟踪按钮标签" - }, - "distanceAndTimeThresholds": "距离和时间阈值", - "@distanceAndTimeThresholds": { - "description": "跟踪配置的描述" - }, - "locationTrackingConfiguration": "位置跟踪配置", - "@locationTrackingConfiguration": { - "description": "跟踪配置对话框标题" - }, - "configureWhenLocationBroadcasts": "配置何时向 Mesh 网络发送位置广播", - "@configureWhenLocationBroadcasts": { - "description": "跟踪配置对话框的描述" - }, - "minimumDistance": "最小距离", - "@minimumDistance": { - "description": "最小距离设置标签" - }, - "broadcastAfterMoving": "仅在移动 {distance} 米后广播", - "@broadcastAfterMoving": { - "description": "最小距离的描述", - "placeholders": { - "distance": { - "type": "String" - } - } - }, - "maximumDistance": "最大距离", - "@maximumDistance": { - "description": "最大距离设置标签" - }, - "alwaysBroadcastAfterMoving": "移动 {distance} 米后始终广播", - "@alwaysBroadcastAfterMoving": { - "description": "最大距离的描述", - "placeholders": { - "distance": { - "type": "String" - } - } - }, - "minimumTimeInterval": "最小时间间隔", - "@minimumTimeInterval": { - "description": "最小时间间隔设置标签" - }, - "alwaysBroadcastEvery": "每隔 {duration} 始终广播", - "@alwaysBroadcastEvery": { - "description": "时间间隔的描述", - "placeholders": { - "duration": { - "type": "String" - } - } - }, "save": "保存", "@save": { "description": "保存按钮标签" @@ -332,14 +197,6 @@ "@moreInfo": { "description": "更多信息按钮标签" }, - "learnMoreAbout": "了解更多关于 MeshCore 搜救助手的信息", - "@learnMoreAbout": { - "description": "了解更多链接的描述" - }, - "developer": "开发者", - "@developer": { - "description": "开发者区域标题" - }, "packageName": "包名", "@packageName": { "description": "包名标签" @@ -447,10 +304,6 @@ "@refresh": { "description": "刷新按钮标签" }, - "sendDirectMessage": "发送", - "@sendDirectMessage": { - "description": "向联系人发送直连消息的操作" - }, "resetPath": "重置路径 (重新路由)", "@resetPath": { "description": "重置联系人路径以重新路由的操作" @@ -640,39 +493,6 @@ } } }, - "sentDrawingsToRoom": "已发送 {count} 个地图绘制到 {roomName}", - "@sentDrawingsToRoom": { - "description": "将绘图发送到房间时的系统消息", - "placeholders": { - "count": { - "type": "int" - }, - "plural": { - "type": "String" - }, - "roomName": { - "type": "String" - } - } - }, - "sharedDrawingsToRoom": "已将 {success}/{total} 个绘图共享到 {roomName}", - "@sharedDrawingsToRoom": { - "description": "显示共享到房间的绘图数量的提示消息", - "placeholders": { - "success": { - "type": "int" - }, - "total": { - "type": "int" - }, - "plural": { - "type": "String" - }, - "roomName": { - "type": "String" - } - } - }, "showReceivedDrawings": "显示接收到的绘图", "@showReceivedDrawings": { "description": "显示/隐藏来自其他团队成员的绘图的开关" @@ -701,10 +521,6 @@ "@clearAll": { "description": "全部清除按钮标签" }, - "noLocalDrawings": "没有可共享的本地绘图", - "@noLocalDrawings": { - "description": "没有绘图可共享时的消息" - }, "publicChannel": "公共频道", "@publicChannel": { "description": "用于共享的公共频道选项" @@ -717,65 +533,10 @@ "@storedPermanently": { "description": "房间存储持久性的描述" }, - "drawingsSentToPublicChannel": "已将 {count} 个地图绘制发送到公共频道", - "@drawingsSentToPublicChannel": { - "description": "将绘图发送到公共频道时的系统消息", - "placeholders": { - "count": { - "type": "int" - }, - "plural": { - "type": "String" - } - } - }, - "drawingsSharedToPublicChannel": "已将 {success}/{total} 个绘图共享到公共频道", - "@drawingsSharedToPublicChannel": { - "description": "显示共享到公共频道的绘图成功数量的提示消息", - "placeholders": { - "success": { - "type": "int" - }, - "total": { - "type": "int" - } - } - }, "notConnectedToDevice": "未连接到设备", "@notConnectedToDevice": { "description": "直连消息发送时设备未连接的错误消息" }, - "directMessage": "直连消息", - "@directMessage": { - "description": "直连消息面板的标题" - }, - "directMessageSentTo": "直连消息已发送给 {contactName}", - "@directMessageSentTo": { - "description": "发送直连消息后的成功消息", - "placeholders": { - "contactName": { - "type": "String" - } - } - }, - "failedToSend": "发送失败:{error}", - "@failedToSend": { - "description": "发送直连消息失败时的错误消息", - "placeholders": { - "error": { - "type": "String" - } - } - }, - "directMessageInfo": "此消息将直连发送给 {contactName}。它也将出现在主消息流中。", - "@directMessageInfo": { - "description": "关于直连消息行为的信息", - "placeholders": { - "contactName": { - "type": "String" - } - } - }, "typeYourMessage": "输入您的消息...", "@typeYourMessage": { "description": "消息输入字段的占位符文本" @@ -812,10 +573,6 @@ "@location": { "description": "位置区域的标签" }, - "myLocation": "我的位置", - "@myLocation": { - "description": "插入当前 GPS 位置的按钮标签" - }, "fromMap": "来自地图", "@fromMap": { "description": "显示位置来自地图点击的徽章" @@ -903,10 +660,6 @@ "@flood": { "description": "泛洪路由指示器" }, - "admin": "管理员", - "@admin": { - "description": "管理员徽章标签" - }, "loggedIn": "已登录", "@loggedIn": { "description": "已登录状态徽章" @@ -919,24 +672,6 @@ "@distance": { "description": "距离标签" }, - "pingingDirect": "正在 Ping {name}(通过路径直连发送)...", - "@pingingDirect": { - "description": "直连 Ping 的状态消息", - "placeholders": { - "name": { - "type": "String" - } - } - }, - "pingingFlood": "正在 Ping {name}(泛洪 - 无路径)...", - "@pingingFlood": { - "description": "泛洪 Ping 的状态消息", - "placeholders": { - "name": { - "type": "String" - } - } - }, "directPingTimeout": "直连 Ping 超时 - 正在使用泛洪重试 {name}...", "@directPingTimeout": { "description": "直连 Ping 超时时的警告", @@ -946,22 +681,6 @@ } } }, - "pingSuccessful": "成功 Ping 到 {name}{fallback}", - "@pingSuccessful": { - "description": "Ping 的成功消息", - "placeholders": { - "name": { - "type": "String" - }, - "fallback": { - "type": "String" - } - } - }, - "viaFloodingFallback": "(通过泛洪回退)", - "@viaFloodingFallback": { - "description": "带有回退的 Ping 成功的后缀" - }, "pingFailed": "Ping {name} 失败 - 未收到响应", "@pingFailed": { "description": "Ping 失败时的错误消息", @@ -980,24 +699,6 @@ } } }, - "removingContact": "正在移除 {name}...", - "@removingContact": { - "description": "移除联系人时的状态消息", - "placeholders": { - "name": { - "type": "String" - } - } - }, - "contactRemoved": "联系人“{name}”已移除", - "@contactRemoved": { - "description": "移除联系人后的成功消息", - "placeholders": { - "name": { - "type": "String" - } - } - }, "failedToRemoveContact": "移除联系人失败:{error}", "@failedToRemoveContact": { "description": "联系人移除失败时的错误消息", @@ -1059,15 +760,6 @@ "@telemetry": { "description": "遥测区域标题" }, - "requestingTelemetry": "正在向 {name} 请求遥测数据...", - "@requestingTelemetry": { - "description": "请求遥测时的状态消息", - "placeholders": { - "name": { - "type": "String" - } - } - }, "voltage": "电压", "@voltage": { "description": "电压标签" @@ -1165,10 +857,6 @@ "@showAll": { "description": "显示所有筛选的按钮" }, - "nearbyContacts": "附近联系人", - "@nearbyContacts": { - "description": "指南针中附近联系人列表的标题" - }, "locationUnavailable": "位置不可用", "@locationUnavailable": { "description": "GPS 位置不可用时的消息" @@ -1231,242 +919,10 @@ "@channels": { "description": "广播频道区域标题" }, - "cacheStatistics": "缓存统计", - "@cacheStatistics": { - "description": "缓存统计区域标题" - }, - "totalTiles": "总瓦片数", - "@totalTiles": { - "description": "缓存瓦片总数标签" - }, - "cacheSize": "缓存大小", - "@cacheSize": { - "description": "以 MB 为单位的缓存大小标签" - }, - "storeName": "存储名称", - "@storeName": { - "description": "缓存存储名称标签" - }, - "noCacheStatistics": "没有可用的缓存统计信息", - "@noCacheStatistics": { - "description": "缓存统计信息不可用时的消息" - }, - "downloadRegion": "下载区域", - "@downloadRegion": { - "description": "下载区域部分标题" - }, - "mapLayer": "地图图层", - "@mapLayer": { - "description": "地图图层选择标签" - }, - "regionBounds": "区域边界", - "@regionBounds": { - "description": "区域边界输入部分标题" - }, - "north": "北", - "@north": { - "description": "北坐标标签" - }, - "south": "南", - "@south": { - "description": "南坐标标签" - }, - "east": "东", - "@east": { - "description": "东坐标标签" - }, - "west": "西", - "@west": { - "description": "西坐标标签" - }, - "zoomLevels": "缩放级别", - "@zoomLevels": { - "description": "缩放级别部分标题" - }, - "minZoom": "最小:{zoom}", - "@minZoom": { - "description": "最小缩放级别标签", - "placeholders": { - "zoom": { - "type": "int" - } - } - }, - "maxZoom": "最大:{zoom}", - "@maxZoom": { - "description": "最大缩放级别标签", - "placeholders": { - "zoom": { - "type": "int" - } - } - }, - "downloadingDots": "正在下载...", - "@downloadingDots": { - "description": "下载过程中的状态消息" - }, - "cancelDownload": "取消下载", - "@cancelDownload": { - "description": "取消下载的按钮" - }, - "downloadRegionButton": "下载区域", - "@downloadRegionButton": { - "description": "开始区域下载的按钮" - }, - "downloadNote": "注意:大的区域或高缩放级别可能需要大量时间和存储空间。", - "@downloadNote": { - "description": "关于下载大小和时间的警告" - }, - "cacheManagement": "缓存管理", - "@cacheManagement": { - "description": "缓存管理部分标题" - }, - "clearAllMaps": "清除所有地图", - "@clearAllMaps": { - "description": "清除所有缓存地图的按钮" - }, - "clearMapsConfirmTitle": "清除所有地图", - "@clearMapsConfirmTitle": { - "description": "清除地图确认对话框的标题" - }, - "clearMapsConfirmMessage": "您确定要删除所有下载的地图吗?此操作无法撤销。", - "@clearMapsConfirmMessage": { - "description": "清除地图的确认消息" - }, - "mapDownloadCompleted": "地图下载完成!", - "@mapDownloadCompleted": { - "description": "地图下载后的成功消息" - }, - "cacheClearedSuccessfully": "缓存清除成功!", - "@cacheClearedSuccessfully": { - "description": "清除缓存后的成功消息" - }, - "downloadCancelled": "下载已取消", - "@downloadCancelled": { - "description": "下载取消时的消息" - }, - "startingDownload": "正在开始下载...", - "@startingDownload": { - "description": "下载开始时的初始状态" - }, - "downloadingMapTiles": "正在下载地图瓦片...", - "@downloadingMapTiles": { - "description": "瓦片下载期间的状态" - }, - "downloadCompletedSuccessfully": "下载成功完成!", - "@downloadCompletedSuccessfully": { - "description": "下载成功后的状态" - }, - "cancellingDownload": "正在取消下载...", - "@cancellingDownload": { - "description": "取消下载时的状态" - }, - "errorLoadingStats": "加载统计信息时出错:{error}", - "@errorLoadingStats": { - "description": "加载缓存统计信息失败时的错误消息", - "placeholders": { - "error": { - "type": "String" - } - } - }, - "downloadFailed": "下载失败:{error}", - "@downloadFailed": { - "description": "下载失败时的错误消息", - "placeholders": { - "error": { - "type": "String" - } - } - }, - "cancelFailed": "取消失败:{error}", - "@cancelFailed": { - "description": "取消操作失败时的错误消息", - "placeholders": { - "error": { - "type": "String" - } - } - }, - "clearCacheFailed": "清除缓存失败:{error}", - "@clearCacheFailed": { - "description": "清除缓存失败时的错误消息", - "placeholders": { - "error": { - "type": "String" - } - } - }, - "minZoomError": "最小缩放:{error}", - "@minZoomError": { - "description": "最小缩放的验证错误", - "placeholders": { - "error": { - "type": "String" - } - } - }, - "maxZoomError": "最大缩放:{error}", - "@maxZoomError": { - "description": "最大缩放的验证错误", - "placeholders": { - "error": { - "type": "String" - } - } - }, - "minZoomGreaterThanMax": "最小缩放必须小于或等于最大缩放", - "@minZoomGreaterThanMax": { - "description": "当最小缩放大于最大缩放时的验证错误" - }, "selectMapLayer": "选择地图图层", "@selectMapLayer": { "description": "地图图层选择对话框的标题" }, - "mapOptions": "地图选项", - "@mapOptions": { - "description": "地图选项对话框的标题" - }, - "showLegend": "显示图例", - "@showLegend": { - "description": "显示地图图例的开关" - }, - "displayMarkerTypeCounts": "显示标记类型计数", - "@displayMarkerTypeCounts": { - "description": "显示图例开关的描述" - }, - "rotateMapWithHeading": "随航向旋转地图", - "@rotateMapWithHeading": { - "description": "随指南针航向旋转地图的开关" - }, - "mapFollowsDirection": "地图在移动时跟随您的方向", - "@mapFollowsDirection": { - "description": "旋转地图开关的描述" - }, - "resetMapRotation": "重置旋转", - "@resetMapRotation": { - "description": "将地图旋转重置为北的按钮" - }, - "resetMapRotationTooltip": "重置地图方向为北", - "@resetMapRotationTooltip": { - "description": "重置旋转按钮的工具提示" - }, - "showMapDebugInfo": "显示地图调试信息", - "@showMapDebugInfo": { - "description": "显示地图调试信息的开关" - }, - "displayZoomLevelBounds": "显示缩放级别和边界", - "@displayZoomLevelBounds": { - "description": "调试信息开关的描述" - }, - "fullscreenMode": "全屏模式", - "@fullscreenMode": { - "description": "全屏地图模式的开关" - }, - "hideUiFullMapView": "隐藏所有 UI 控件以获得全地图视图", - "@hideUiFullMapView": { - "description": "全屏模式开关的描述" - }, "openStreetMap": "OpenStreetMap", "@openStreetMap": { "description": "OpenStreetMap 图层名称" @@ -1491,14 +947,6 @@ "@googleTerrain": { "description": "Google 地形图层名称(地形图)" }, - "downloadVisibleArea": "下载可见区域", - "@downloadVisibleArea": { - "description": "下载可见区域按钮的工具提示" - }, - "initializingMap": "正在初始化地图...", - "@initializingMap": { - "description": "地图初始化的加载消息" - }, "dragToPosition": "拖动以定位", "@dragToPosition": { "description": "在地图上拖动图钉时的标签" @@ -1519,75 +967,6 @@ "@sarAlert": { "description": "消息上的搜救警报徽章标签" }, - "messageSentToPublicChannel": "消息已发送到公共频道", - "@messageSentToPublicChannel": { - "description": "消息发送到公共频道后的成功消息" - }, - "pleaseSelectRoomToSendSar": "请选择一个房间发送搜救标记", - "@pleaseSelectRoomToSendSar": { - "description": "未为搜救标记选择房间时的错误" - }, - "failedToSendSarMarker": "发送搜救标记失败:{error}", - "@failedToSendSarMarker": { - "description": "搜救标记发送失败时的错误消息", - "placeholders": { - "error": { - "type": "String" - } - } - }, - "sarMarkerSentTo": "搜救标记已发送到 {roomName}", - "@sarMarkerSentTo": { - "description": "搜救标记发送到房间后的成功消息", - "placeholders": { - "roomName": { - "type": "String" - } - } - }, - "notConnectedCannotSync": "未连接 - 无法同步消息", - "@notConnectedCannotSync": { - "description": "尝试在未连接时同步消息的警告" - }, - "syncedMessageCount": "已同步 {count} 条消息", - "@syncedMessageCount": { - "description": "显示同步消息数量的成功消息", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "noNewMessages": "没有新消息", - "@noNewMessages": { - "description": "没有新消息可同步时的信息消息" - }, - "syncFailed": "同步失败:{error}", - "@syncFailed": { - "description": "同步失败时的错误消息", - "placeholders": { - "error": { - "type": "String" - } - } - }, - "failedToResendMessage": "重新发送消息失败", - "@failedToResendMessage": { - "description": "消息重试失败时的错误" - }, - "retryingMessage": "正在重试消息...", - "@retryingMessage": { - "description": "重试失败消息时的信息消息" - }, - "retryFailed": "重试失败:{error}", - "@retryFailed": { - "description": "重试失败时的错误消息", - "placeholders": { - "error": { - "type": "String" - } - } - }, "textCopiedToClipboard": "文本已复制到剪贴板", "@textCopiedToClipboard": { "description": "文本复制后的成功消息" @@ -1600,10 +979,6 @@ "@cannotReplyContactNotFound": { "description": "回复时未找到联系人的错误" }, - "messageDeleted": "消息已删除", - "@messageDeleted": { - "description": "消息删除后的信息消息" - }, "copyText": "复制文本", "@copyText": { "description": "将消息文本复制到剪贴板的选项" @@ -1654,14 +1029,6 @@ "@sarLocationShare": { "description": "共享搜救标记位置时的主题行" }, - "locationShared": "位置已共享", - "@locationShared": { - "description": "位置共享后的成功消息" - }, - "refreshedContacts": "联系人已刷新", - "@refreshedContacts": { - "description": "联系人刷新后的成功消息" - }, "justNow": "刚刚", "@justNow": { "description": "非常近期活动的时间指示器" @@ -1824,105 +1191,6 @@ "@you": { "description": "消息气泡中当前用户的标签" }, - "offlineVectorMaps": "离线矢量地图", - "@offlineVectorMaps": { - "description": "离线矢量地图部分标题" - }, - "offlineVectorMapsDescription": "导入和管理离线矢量地图瓦片(MBTiles 格式),以便在没有互联网连接时使用", - "@offlineVectorMapsDescription": { - "description": "离线矢量地图部分的描述" - }, - "importMbtiles": "导入 MBTiles 文件", - "@importMbtiles": { - "description": "导入 MBTiles 文件的按钮" - }, - "importMbtilesNote": "支持带有矢量瓦片(PBF/MVT 格式)的 MBTiles 文件。Geofabrik 的数据提取非常好用!", - "@importMbtilesNote": { - "description": "关于支持的 MBTiles 文件类型的说明" - }, - "noMbtilesFiles": "未找到离线矢量地图", - "@noMbtilesFiles": { - "description": "没有可用 MBTiles 文件时的消息" - }, - "mbtilesImportedSuccessfully": "MBTiles 文件导入成功", - "@mbtilesImportedSuccessfully": { - "description": "导入 MBTiles 文件后的成功消息" - }, - "failedToImportMbtiles": "导入 MBTiles 文件失败", - "@failedToImportMbtiles": { - "description": "MBTiles 导入失败时的错误消息" - }, - "deleteMbtilesConfirmTitle": "删除离线地图", - "@deleteMbtilesConfirmTitle": { - "description": "删除 MBTiles 确认对话框的标题" - }, - "deleteMbtilesConfirmMessage": "您确定要删除“{name}”吗?这将永久移除该离线地图。", - "@deleteMbtilesConfirmMessage": { - "description": "删除 MBTiles 文件的确认消息", - "placeholders": { - "name": { - "type": "String" - } - } - }, - "mbtilesDeletedSuccessfully": "离线地图删除成功", - "@mbtilesDeletedSuccessfully": { - "description": "删除 MBTiles 文件后的成功消息" - }, - "failedToDeleteMbtiles": "删除离线地图失败", - "@failedToDeleteMbtiles": { - "description": "MBTiles 删除失败时的错误消息" - }, - "importExportCachedTiles": "导入/导出缓存的瓦片", - "@importExportCachedTiles": { - "description": "导入/导出部分标题" - }, - "importExportDescription": "在设备之间备份、共享和恢复下载的地图瓦片", - "@importExportDescription": { - "description": "导入/导出功能的描述" - }, - "exportTilesToFile": "导出瓦片到文件", - "@exportTilesToFile": { - "description": "将瓦片导出到存档文件的按钮" - }, - "importTilesFromFile": "从文件导入瓦片", - "@importTilesFromFile": { - "description": "从存档文件导入瓦片的按钮" - }, - "selectExportLocation": "选择导出位置", - "@selectExportLocation": { - "description": "导出文件选择器的标题" - }, - "selectImportFile": "选择瓦片存档", - "@selectImportFile": { - "description": "导入文件选择器的标题" - }, - "exportingTiles": "正在导出瓦片...", - "@exportingTiles": { - "description": "导出过程中的状态消息" - }, - "importingTiles": "正在导入瓦片...", - "@importingTiles": { - "description": "导入过程中的状态消息" - }, - "exportSuccess": "成功导出 {count} 个瓦片", - "@exportSuccess": { - "description": "导出后的成功消息", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "importSuccess": "成功导入 {count} 个存储", - "@importSuccess": { - "description": "导入后的成功消息", - "placeholders": { - "count": { - "type": "int" - } - } - }, "exportFailed": "导出失败:{error}", "@exportFailed": { "description": "导出失败时的错误消息", @@ -1941,51 +1209,14 @@ } } }, - "exportNote": "创建一个压缩存档(.fmtc)文件,可以共享并在其他设备上导入。", - "@exportNote": { - "description": "关于导出功能的说明" - }, - "importNote": "从先前导出的存档文件导入地图瓦片。瓦片将与现有缓存合并。", - "@importNote": { - "description": "关于导入功能的说明" - }, - "noTilesToExport": "没有可导出的瓦片", - "@noTilesToExport": { - "description": "缓存为空时的消息" - }, - "archiveContainsStores": "存档包含 {count} 个存储", - "@archiveContainsStores": { - "description": "关于存档内容的信息", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "vectorTiles": "矢量瓦片", - "@vectorTiles": { - "description": "矢量瓦片类型的标签" - }, - "schema": "模式", - "@schema": { - "description": "矢量瓦片模式的标签" - }, "unknown": "未知", "@unknown": { "description": "未知值标签" }, - "bounds": "边界", - "@bounds": { - "description": "地理边界标签" - }, "onlineLayers": "在线图层", "@onlineLayers": { "description": "在线地图图层区域标题" }, - "offlineLayers": "离线图层", - "@offlineLayers": { - "description": "离线地图图层区域标题(MBTiles)" - }, "locationTrail": "位置轨迹", "@locationTrail": { "description": "位置轨迹标题" @@ -2034,70 +1265,6 @@ "@trailControls": { "description": "轨迹控制工具提示" }, - "exportTrailToGpx": "导出轨迹到 GPX", - "@exportTrailToGpx": { - "description": "将轨迹导出到 GPX 文件的按钮标签" - }, - "importTrailFromGpx": "从 GPX 导入轨迹", - "@importTrailFromGpx": { - "description": "从 GPX 文件导入轨迹的按钮标签" - }, - "trailExportedSuccessfully": "轨迹导出成功!", - "@trailExportedSuccessfully": { - "description": "轨迹导出时的成功消息" - }, - "failedToExportTrail": "导出轨迹失败", - "@failedToExportTrail": { - "description": "轨迹导出失败时的错误消息" - }, - "failedToImportTrail": "导入轨迹失败:{error}", - "@failedToImportTrail": { - "description": "轨迹导入失败时的错误消息", - "placeholders": { - "error": { - "type": "String" - } - } - }, - "importTrail": "导入轨迹", - "@importTrail": { - "description": "导入轨迹对话框标题" - }, - "importTrailQuestion": "导入包含 {pointCount} 个点的轨迹吗?\n\n您可以替换当前轨迹,或将其与现有轨迹并排查看。", - "@importTrailQuestion": { - "description": "导入轨迹确认对话框内容", - "placeholders": { - "pointCount": { - "type": "int" - } - } - }, - "viewAlongside": "并排查看", - "@viewAlongside": { - "description": "将导入的轨迹与当前轨迹并排显示的按钮" - }, - "replaceCurrent": "替换当前", - "@replaceCurrent": { - "description": "用导入的轨迹替换当前轨迹的按钮" - }, - "trailImported": "轨迹已导入!({pointCount} 个点)", - "@trailImported": { - "description": "轨迹导入时的成功消息", - "placeholders": { - "pointCount": { - "type": "int" - } - } - }, - "trailReplaced": "轨迹已替换!({pointCount} 个点)", - "@trailReplaced": { - "description": "轨迹替换时的成功消息", - "placeholders": { - "pointCount": { - "type": "int" - } - } - }, "contactTrails": "联系人轨迹", "@contactTrails": { "description": "联系人轨迹区域标题" @@ -2346,24 +1513,6 @@ } } }, - "importFailed": "导入失败:{error}", - "@importFailed": { - "description": "导入失败时的错误消息", - "placeholders": { - "error": { - "type": "String" - } - } - }, - "exportFailed": "导出失败:{error}", - "@exportFailed": { - "description": "导出失败时的错误消息", - "placeholders": { - "error": { - "type": "String" - } - } - }, "resetToDefaults": "恢复默认", "@resetToDefaults": { "description": "将模板重置为默认值的操作" @@ -2468,10 +1617,6 @@ "@noRoomsFound": { "description": "没有房间匹配搜索时的消息" }, - "noContactsOrRoomsAvailable": "没有可用的联系人或房间", - "@noContactsOrRoomsAvailable": { - "description": "没有联系人或房间存在时的消息" - }, "noRecipientsAvailable": "没有可用的收件人", "@noRecipientsAvailable": { "description": "没有收件人(联系人、房间或频道)存在时的消息" @@ -2480,10 +1625,6 @@ "@noChannelsFound": { "description": "没有频道匹配搜索时的消息" }, - "messagesWillBeSentToPublicChannel": "消息将发送到公共频道", - "@messagesWillBeSentToPublicChannel": { - "description": "当只有公共频道可用时的信息消息" - }, "newMessage": "新消息", "@newMessage": { "description": "新消息的通知标题" @@ -2712,10 +1853,6 @@ "@rectangleDrawing": { "description": "矩形类型绘图的标签" }, - "coordinatesCopiedToClipboard": "坐标已复制到剪贴板", - "@coordinatesCopiedToClipboard": { - "description": "坐标复制后的成功消息" - }, "manualCoordinates": "手动输入坐标", "@manualCoordinates": { "description": "手动坐标输入开关的标签" @@ -2732,47 +1869,10 @@ "@longitudeLabel": { "description": "经度输入字段的标签" }, - "invalidLatitude": "无效的纬度(-90 到 90)", - "@invalidLatitude": { - "description": "纬度值无效时的错误消息" - }, - "invalidLongitude": "无效的经度(-180 到 180)", - "@invalidLongitude": { - "description": "经度值无效时的错误消息" - }, "exampleCoordinates": "例如:46.0569, 14.5058", "@exampleCoordinates": { "description": "示例坐标格式提示" }, - "drawingShared": "地图绘制", - "@drawingShared": { - "description": "共享绘图通知的标签" - }, - "drawingHidden": "绘图已从地图上隐藏", - "@drawingHidden": { - "description": "绘图隐藏后的成功消息" - }, - "alreadyShared": "{count} 个已共享", - "@alreadyShared": { - "description": "显示已共享绘图数量的消息", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "newDrawingsShared": "已共享 {count} 个新绘图", - "@newDrawingsShared": { - "description": "共享新绘图后的成功消息", - "placeholders": { - "count": { - "type": "int" - }, - "plural": { - "type": "String" - } - } - }, "shareDrawing": "共享绘图", "@shareDrawing": { "description": "共享单个绘图对话框的标题" @@ -2846,14 +1946,6 @@ "@forestRoads": { "description": "森林道路 WMS 覆盖图层标签" }, - "showCadastralParcels": "显示地籍地块", - "@showCadastralParcels": { - "description": "地籍地块覆盖切换按钮的工具提示" - }, - "showForestRoads": "显示森林道路", - "@showForestRoads": { - "description": "森林道路覆盖切换按钮的工具提示" - }, "wmsOverlays": "WMS 覆盖层", "@wmsOverlays": { "description": "图层选择器中 WMS 覆盖图层部分的标题" @@ -2993,10 +2085,6 @@ } } }, - "allChannelSlotsInUse": "所有频道槽位都已在使用中(最多 39 个自定义频道)", - "@allChannelSlotsInUse": { - "description": "没有可用频道槽位时的错误" - }, "createChannel": "创建频道", "@createChannel": { "description": "创建频道的按钮文本" @@ -3045,22 +2133,6 @@ "@wizardConnectingFeature3": { "description": "向导连接功能 3" }, - "wizardSimpleModeTitle": "简洁模式", - "@wizardSimpleModeTitle": { - "description": "向导简洁模式页面标题" - }, - "wizardSimpleModeDescription": "刚接触 Mesh 网络?启用简洁模式以获得仅包含基本功能的简化界面。", - "@wizardSimpleModeDescription": { - "description": "向导简洁模式页面描述" - }, - "wizardSimpleModeFeature1": "对初学者友好的界面,包含核心功能", - "@wizardSimpleModeFeature1": { - "description": "向导简洁模式功能 1" - }, - "wizardSimpleModeFeature2": "随时在设置中切换到高级模式", - "@wizardSimpleModeFeature2": { - "description": "向导简洁模式功能 2" - }, "wizardChannelTitle": "频道", "@wizardChannelTitle": { "description": "向导频道页面标题" @@ -3156,53 +2228,78 @@ "description": "没有可发送的聊天联系人时的消息" }, "reply": "回复", - "@reply": {}, + "@reply": { + }, "technicalDetails": "技术细节", - "@technicalDetails": {}, + "@technicalDetails": { + }, "messageTechnicalDetails": "消息技术细节", - "@messageTechnicalDetails": {}, + "@messageTechnicalDetails": { + }, "linkQuality": "链路质量", - "@linkQuality": {}, + "@linkQuality": { + }, "delivery": "投递", - "@delivery": {}, + "@delivery": { + }, "status": "状态", - "@status": {}, + "@status": { + }, "expectedAckTag": "预期的 ACK 标签", - "@expectedAckTag": {}, + "@expectedAckTag": { + }, "roundTrip": "往返时间", - "@roundTrip": {}, + "@roundTrip": { + }, "retryAttempt": "重试尝试", - "@retryAttempt": {}, + "@retryAttempt": { + }, "floodFallback": "泛洪回退", - "@floodFallback": {}, + "@floodFallback": { + }, "identity": "身份", - "@identity": {}, + "@identity": { + }, "messageId": "消息 ID", - "@messageId": {}, + "@messageId": { + }, "sender": "发送者", - "@sender": {}, + "@sender": { + }, "senderKey": "发送者密钥", - "@senderKey": {}, + "@senderKey": { + }, "recipient": "接收者", - "@recipient": {}, + "@recipient": { + }, "recipientKey": "接收者密钥", - "@recipientKey": {}, + "@recipientKey": { + }, "voice": "语音", - "@voice": {}, + "@voice": { + }, "voiceId": "语音 ID", - "@voiceId": {}, + "@voiceId": { + }, "envelope": "信封", - "@envelope": {}, + "@envelope": { + }, "sessionProgress": "会话进度", - "@sessionProgress": {}, + "@sessionProgress": { + }, "complete": "完成", - "@complete": {}, + "@complete": { + }, "rawDump": "原始数据", - "@rawDump": {}, + "@rawDump": { + }, "cannotRetryMissingRecipient": "无法重试:缺少接收者信息", - "@cannotRetryMissingRecipient": {}, + "@cannotRetryMissingRecipient": { + }, "voiceUnavailable": "当前语音不可用", - "@voiceUnavailable": {}, + "@voiceUnavailable": { + }, "requestingVoice": "正在请求语音", - "@requestingVoice": {} -} \ No newline at end of file + "@requestingVoice": { + } +} diff --git a/lib/widgets/contacts/contact_tile.dart b/lib/widgets/contacts/contact_tile.dart index c092b8d..38e4640 100644 --- a/lib/widgets/contacts/contact_tile.dart +++ b/lib/widgets/contacts/contact_tile.dart @@ -76,31 +76,6 @@ class ContactTile extends StatelessWidget { final roomLoginState = contact.type == ContactType.room ? connectionProvider.getRoomLoginState(contact.publicKeyPrefix) : null; - final trailing = contact.isChannel && !contact.isPublicChannel - ? PopupMenuButton( - icon: const Icon(Icons.more_vert), - onSelected: (value) { - if (value == 'delete') { - _showDeleteChannelDialog(context, contact); - } - }, - itemBuilder: (context) => [ - PopupMenuItem( - value: 'delete', - child: Row( - children: [ - const Icon(Icons.delete, color: Colors.red, size: 20), - const SizedBox(width: 8), - Text( - AppLocalizations.of(context)!.deleteChannel, - style: const TextStyle(color: Colors.red), - ), - ], - ), - ), - ], - ) - : null; void handleTap() => _handlePrimaryTap(context, contact); final onLongPress = isPingInProgress @@ -285,10 +260,6 @@ class ContactTile extends StatelessWidget { ), ), ], - if (trailing != null) ...[ - const SizedBox(width: 2), - trailing, - ], ], ), subtitleWidget, @@ -304,7 +275,7 @@ class ContactTile extends StatelessWidget { } void _handlePrimaryTap(BuildContext context, Contact contact) { - if (contact.isChannel) { + if (contact.type == ContactType.repeater) { _showContactDetails(context, contact); return; } @@ -315,6 +286,10 @@ class ContactTile extends StatelessWidget { void _showContactActionSheet(BuildContext context, Contact contact) { final l10n = AppLocalizations.of(context)!; final canMessage = + contact.type == ContactType.chat || + contact.type == ContactType.room || + contact.type == ContactType.channel; + final canSetPath = contact.type == ContactType.chat || contact.type == ContactType.room; showModalBottomSheet( @@ -337,23 +312,28 @@ class ContactTile extends StatelessWidget { await _openMessagesForContact(context, contact); }, ), - ListTile( - leading: const Icon(Icons.alt_route), - title: const Text('Set path'), - onTap: () { - Navigator.pop(sheetContext); - _showSetRouteDialog(context, contact); - }, - ), + if (canSetPath) + ListTile( + leading: const Icon(Icons.alt_route), + title: const Text('Set path'), + onTap: () { + Navigator.pop(sheetContext); + _showSetRouteDialog(context, contact); + }, + ), ListTile( leading: const Icon(Icons.delete, color: Colors.red), title: Text( - l10n.deleteContact, + contact.isChannel ? l10n.deleteChannel : l10n.deleteContact, style: const TextStyle(color: Colors.red), ), onTap: () { Navigator.pop(sheetContext); - _showDeleteConfirmation(context, contact); + if (contact.isChannel) { + _showDeleteChannelDialog(context, contact); + } else { + _showDeleteConfirmation(context, contact); + } }, ), ], @@ -367,7 +347,9 @@ class ContactTile extends StatelessWidget { Contact contact, ) async { final messagesProvider = context.read(); - final destinationType = contact.type == ContactType.room + final destinationType = contact.type == ContactType.channel + ? MessageDestinationPreferences.destinationTypeChannel + : contact.type == ContactType.room ? MessageDestinationPreferences.destinationTypeRoom : MessageDestinationPreferences.destinationTypeContact; @@ -903,11 +885,23 @@ class ContactTile extends StatelessWidget { SizedBox( width: double.infinity, child: OutlinedButton.icon( - onPressed: () => - _showDeleteConfirmation(context, contact), + onPressed: () { + if (contact.isChannel) { + _showDeleteChannelDialog( + context, + contact, + closeDetailsSheetOnDelete: true, + ); + return; + } + + _showDeleteConfirmation(context, contact); + }, icon: const Icon(Icons.delete_outline), label: Text( - AppLocalizations.of(context)!.deleteContact, + contact.isChannel + ? AppLocalizations.of(context)!.deleteChannel + : AppLocalizations.of(context)!.deleteContact, ), style: OutlinedButton.styleFrom( padding: const EdgeInsets.symmetric(vertical: 14), @@ -1257,7 +1251,11 @@ class ContactTile extends StatelessWidget { } /// Show delete channel confirmation dialog - void _showDeleteChannelDialog(BuildContext context, Contact contact) { + void _showDeleteChannelDialog( + BuildContext context, + Contact contact, { + bool closeDetailsSheetOnDelete = false, + }) { final l10n = AppLocalizations.of(context)!; showDialog( @@ -1273,6 +1271,9 @@ class ContactTile extends StatelessWidget { TextButton( onPressed: () async { Navigator.of(dialogContext).pop(); + if (closeDetailsSheetOnDelete) { + Navigator.of(context).pop(); + } try { // Extract channel index from pseudo public key