mirror of
https://github.com/dz0ny/meshcore-sar.git
synced 2026-08-12 00:40:28 +00:00
Refactor localization in UI components and error messages
- Updated various UI components to utilize AppLocalizations for better internationalization support. - Replaced hardcoded strings with localized strings in home_screen.dart, ble_connection_manager.dart, contact_tile.dart, room_login_sheet.dart, compass widgets, and sar_update_sheet.dart. - Improved user feedback messages by integrating localization for actions like pinging contacts, displaying connection statuses, and error notifications. - Enhanced the clarity of UI elements by ensuring all text is translatable, improving the overall user experience for non-English speakers.
This commit is contained in:
@@ -677,5 +677,496 @@
|
||||
"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"
|
||||
},
|
||||
|
||||
"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",
|
||||
"placeholders": {
|
||||
"accuracy": {
|
||||
"type": "int"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
"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",
|
||||
"placeholders": {
|
||||
"accuracy": {
|
||||
"type": "int"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
"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",
|
||||
"placeholders": {
|
||||
"error": {
|
||||
"type": "String"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
"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",
|
||||
"placeholders": {
|
||||
"name": {
|
||||
"type": "String"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
"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",
|
||||
"placeholders": {
|
||||
"name": {
|
||||
"type": "String"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
"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",
|
||||
"placeholders": {
|
||||
"name": {
|
||||
"type": "String"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
"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",
|
||||
"placeholders": {
|
||||
"error": {
|
||||
"type": "String"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
"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",
|
||||
"placeholders": {
|
||||
"name": {
|
||||
"type": "String"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
"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"
|
||||
},
|
||||
|
||||
"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"
|
||||
},
|
||||
|
||||
"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",
|
||||
"placeholders": {
|
||||
"degrees": {
|
||||
"type": "int"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
"degreesLeft": "{degrees}° left",
|
||||
"@degreesLeft": {
|
||||
"description": "Relative bearing direction - left",
|
||||
"placeholders": {
|
||||
"degrees": {
|
||||
"type": "int"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
"latLonFormat": "Lat: {latitude} Lon: {longitude}",
|
||||
"@latLonFormat": {
|
||||
"description": "Latitude and longitude display format",
|
||||
"placeholders": {
|
||||
"latitude": {
|
||||
"type": "String"
|
||||
},
|
||||
"longitude": {
|
||||
"type": "String"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -231,5 +231,165 @@
|
||||
|
||||
"directMessageInfo": "Ova poruka će biti poslana izravno {contactName}. Također će se prikazati u glavnom feedu poruka.",
|
||||
|
||||
"typeYourMessage": "Upišite svoju poruku..."
|
||||
"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",
|
||||
|
||||
"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": "Poplava",
|
||||
|
||||
"admin": "Administrator",
|
||||
|
||||
"loggedIn": "Prijavljen",
|
||||
|
||||
"noGpsData": "Nema GPS podataka",
|
||||
|
||||
"distance": "Udaljenost",
|
||||
|
||||
"pingingDirect": "Pingiranje {name} (izravno putem puta)...",
|
||||
|
||||
"pingingFlood": "Pingiranje {name} (poplava - nema puta)...",
|
||||
|
||||
"directPingTimeout": "Istek izravnog pinga - ponovni pokušaj {name} s poplavom...",
|
||||
|
||||
"pingSuccessful": "Ping uspješan prema {name}{fallback}",
|
||||
|
||||
"viaFloodingFallback": " (putem rezervnog plavljenja)",
|
||||
|
||||
"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",
|
||||
|
||||
"filterMarkers": "Filtriraj markere",
|
||||
|
||||
"filterMarkersTooltip": "Filtriraj markere",
|
||||
|
||||
"contactsFilter": "Kontakti",
|
||||
|
||||
"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žina: {longitude}"
|
||||
}
|
||||
|
||||
@@ -800,6 +800,486 @@ abstract class AppLocalizations {
|
||||
/// In en, this message translates to:
|
||||
/// **'Type your message...'**
|
||||
String get typeYourMessage;
|
||||
|
||||
/// Subtitle for SAR marker sheet header
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Quick location marker'**
|
||||
String get quickLocationMarker;
|
||||
|
||||
/// Label for marker type selection section
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Marker Type'**
|
||||
String get markerType;
|
||||
|
||||
/// Label for destination selection section
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Send To'**
|
||||
String get sendTo;
|
||||
|
||||
/// Warning when no rooms or channels exist
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'No destinations available.'**
|
||||
String get noDestinationsAvailable;
|
||||
|
||||
/// Placeholder for destination dropdown
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Select destination...'**
|
||||
String get selectDestination;
|
||||
|
||||
/// Information about ephemeral channel broadcasts
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Ephemeral: Broadcast over-the-air only. Not stored - nodes must be online.'**
|
||||
String get ephemeralBroadcastInfo;
|
||||
|
||||
/// Information about persistent room storage
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Persistent: Stored immutably in room. Synced automatically and preserved offline.'**
|
||||
String get persistentRoomInfo;
|
||||
|
||||
/// Label for location section
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Location'**
|
||||
String get location;
|
||||
|
||||
/// Badge showing location is from map tap
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'From Map'**
|
||||
String get fromMap;
|
||||
|
||||
/// Loading message while fetching GPS location
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Getting location...'**
|
||||
String get gettingLocation;
|
||||
|
||||
/// Title for location error messages
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Location Error'**
|
||||
String get locationError;
|
||||
|
||||
/// Retry button label
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Retry'**
|
||||
String get retry;
|
||||
|
||||
/// Tooltip for refresh location button
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Refresh location'**
|
||||
String get refreshLocation;
|
||||
|
||||
/// Display of GPS accuracy in meters
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Accuracy: ±{accuracy}m'**
|
||||
String accuracyMeters(int accuracy);
|
||||
|
||||
/// Label for optional notes field
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Notes (optional)'**
|
||||
String get notesOptional;
|
||||
|
||||
/// Placeholder for notes field
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Add additional information...'**
|
||||
String get addAdditionalInformation;
|
||||
|
||||
/// Warning dialog content for low GPS accuracy
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Location accuracy is ±{accuracy}m. This may not be accurate enough for SAR operations.\n\nContinue anyway?'**
|
||||
String lowAccuracyWarning(int accuracy);
|
||||
|
||||
/// Title for room login dialog
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Login to Room'**
|
||||
String get loginToRoom;
|
||||
|
||||
/// Information about room password
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Enter the password to access this room. The password will be saved for future use.'**
|
||||
String get enterPasswordInfo;
|
||||
|
||||
/// Password field label
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Password'**
|
||||
String get password;
|
||||
|
||||
/// Password field hint
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Enter room password'**
|
||||
String get enterRoomPassword;
|
||||
|
||||
/// Button text while logging in
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Logging in...'**
|
||||
String get loggingInDots;
|
||||
|
||||
/// Login button label
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Login'**
|
||||
String get login;
|
||||
|
||||
/// Error message when adding room fails
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Failed to add room to device: {error}\n\nThe room may not have advertised yet.\nTry waiting for the room to broadcast.'**
|
||||
String failedToAddRoom(String error);
|
||||
|
||||
/// Direct routing indicator
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Direct'**
|
||||
String get direct;
|
||||
|
||||
/// Flood routing indicator
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'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:
|
||||
/// **'Logged In'**
|
||||
String get loggedIn;
|
||||
|
||||
/// Message when GPS data is not available
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'No GPS data'**
|
||||
String get noGpsData;
|
||||
|
||||
/// Distance label
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'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:
|
||||
/// **'Ping failed to {name} - no response received'**
|
||||
String pingFailed(String name);
|
||||
|
||||
/// Confirmation message for deleting contact
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'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:
|
||||
/// **'Failed to remove contact: {error}'**
|
||||
String failedToRemoveContact(String error);
|
||||
|
||||
/// Contact type label
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Type'**
|
||||
String get type;
|
||||
|
||||
/// Public key label
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Public Key'**
|
||||
String get publicKey;
|
||||
|
||||
/// Last seen label
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Last Seen'**
|
||||
String get lastSeen;
|
||||
|
||||
/// Room status section header
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Room Status'**
|
||||
String get roomStatus;
|
||||
|
||||
/// Login status label
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Login Status'**
|
||||
String get loginStatus;
|
||||
|
||||
/// Not logged in status
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Not Logged In'**
|
||||
String get notLoggedIn;
|
||||
|
||||
/// Admin access label
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Admin Access'**
|
||||
String get adminAccess;
|
||||
|
||||
/// Yes answer
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Yes'**
|
||||
String get yes;
|
||||
|
||||
/// No answer
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'No'**
|
||||
String get no;
|
||||
|
||||
/// Permissions label
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Permissions'**
|
||||
String get permissions;
|
||||
|
||||
/// Password saved label
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Password Saved'**
|
||||
String get passwordSaved;
|
||||
|
||||
/// Location section header
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Location:'**
|
||||
String get locationColon;
|
||||
|
||||
/// Telemetry section header
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'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:
|
||||
/// **'Voltage'**
|
||||
String get voltage;
|
||||
|
||||
/// Battery label
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Battery'**
|
||||
String get battery;
|
||||
|
||||
/// Temperature label
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Temperature'**
|
||||
String get temperature;
|
||||
|
||||
/// Humidity label
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Humidity'**
|
||||
String get humidity;
|
||||
|
||||
/// Pressure label
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Pressure'**
|
||||
String get pressure;
|
||||
|
||||
/// GPS from telemetry label
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'GPS (Telemetry)'**
|
||||
String get gpsTelemetry;
|
||||
|
||||
/// Updated timestamp label
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Updated'**
|
||||
String get updated;
|
||||
|
||||
/// Info message after path reset
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Path reset for {name}. Next message will find a new route.'**
|
||||
String pathResetInfo(String name);
|
||||
|
||||
/// Button to re-login to room
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Re-Login to Room'**
|
||||
String get reLoginToRoom;
|
||||
|
||||
/// Compass heading label
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Heading'**
|
||||
String get heading;
|
||||
|
||||
/// Elevation/altitude label
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Elevation'**
|
||||
String get elevation;
|
||||
|
||||
/// GPS accuracy label
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Accuracy'**
|
||||
String get accuracy;
|
||||
|
||||
/// Title for filter markers dialog
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Filter Markers'**
|
||||
String get filterMarkers;
|
||||
|
||||
/// Tooltip for filter button
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Filter markers'**
|
||||
String get filterMarkersTooltip;
|
||||
|
||||
/// Filter option for contacts
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Contacts'**
|
||||
String get contactsFilter;
|
||||
|
||||
/// SAR markers section header
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'SAR Markers'**
|
||||
String get sarMarkers;
|
||||
|
||||
/// Found person SAR marker type
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Found Person'**
|
||||
String get foundPerson;
|
||||
|
||||
/// Fire SAR marker type
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Fire'**
|
||||
String get fire;
|
||||
|
||||
/// Staging area SAR marker type
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Staging Area'**
|
||||
String get stagingArea;
|
||||
|
||||
/// Button to show all filters
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'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:
|
||||
/// **'Location unavailable'**
|
||||
String get locationUnavailable;
|
||||
|
||||
/// Relative bearing direction - ahead
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'ahead'**
|
||||
String get ahead;
|
||||
|
||||
/// Relative bearing direction - right
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'{degrees}° right'**
|
||||
String degreesRight(int degrees);
|
||||
|
||||
/// Relative bearing direction - left
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'{degrees}° left'**
|
||||
String degreesLeft(int degrees);
|
||||
|
||||
/// Latitude and longitude display format
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Lat: {latitude} Lon: {longitude}'**
|
||||
String latLonFormat(String latitude, String longitude);
|
||||
}
|
||||
|
||||
class _AppLocalizationsDelegate
|
||||
|
||||
@@ -404,4 +404,281 @@ class AppLocalizationsEn extends AppLocalizations {
|
||||
|
||||
@override
|
||||
String get typeYourMessage => 'Type your message...';
|
||||
|
||||
@override
|
||||
String get quickLocationMarker => 'Quick location marker';
|
||||
|
||||
@override
|
||||
String get markerType => 'Marker Type';
|
||||
|
||||
@override
|
||||
String get sendTo => 'Send To';
|
||||
|
||||
@override
|
||||
String get noDestinationsAvailable => 'No destinations available.';
|
||||
|
||||
@override
|
||||
String get selectDestination => 'Select destination...';
|
||||
|
||||
@override
|
||||
String get ephemeralBroadcastInfo =>
|
||||
'Ephemeral: Broadcast over-the-air only. Not stored - nodes must be online.';
|
||||
|
||||
@override
|
||||
String get persistentRoomInfo =>
|
||||
'Persistent: Stored immutably in room. Synced automatically and preserved offline.';
|
||||
|
||||
@override
|
||||
String get location => 'Location';
|
||||
|
||||
@override
|
||||
String get fromMap => 'From Map';
|
||||
|
||||
@override
|
||||
String get gettingLocation => 'Getting location...';
|
||||
|
||||
@override
|
||||
String get locationError => 'Location Error';
|
||||
|
||||
@override
|
||||
String get retry => 'Retry';
|
||||
|
||||
@override
|
||||
String get refreshLocation => 'Refresh location';
|
||||
|
||||
@override
|
||||
String accuracyMeters(int accuracy) {
|
||||
return 'Accuracy: ±${accuracy}m';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notesOptional => 'Notes (optional)';
|
||||
|
||||
@override
|
||||
String get addAdditionalInformation => 'Add additional information...';
|
||||
|
||||
@override
|
||||
String lowAccuracyWarning(int accuracy) {
|
||||
return 'Location accuracy is ±${accuracy}m. This may not be accurate enough for SAR operations.\n\nContinue anyway?';
|
||||
}
|
||||
|
||||
@override
|
||||
String get loginToRoom => 'Login to Room';
|
||||
|
||||
@override
|
||||
String get enterPasswordInfo =>
|
||||
'Enter the password to access this room. The password will be saved for future use.';
|
||||
|
||||
@override
|
||||
String get password => 'Password';
|
||||
|
||||
@override
|
||||
String get enterRoomPassword => 'Enter room password';
|
||||
|
||||
@override
|
||||
String get loggingInDots => 'Logging in...';
|
||||
|
||||
@override
|
||||
String get login => 'Login';
|
||||
|
||||
@override
|
||||
String failedToAddRoom(String error) {
|
||||
return 'Failed to add room to device: $error\n\nThe room may not have advertised yet.\nTry waiting for the room to broadcast.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get direct => 'Direct';
|
||||
|
||||
@override
|
||||
String get flood => 'Flood';
|
||||
|
||||
@override
|
||||
String get admin => 'Admin';
|
||||
|
||||
@override
|
||||
String get loggedIn => 'Logged In';
|
||||
|
||||
@override
|
||||
String get noGpsData => 'No GPS data';
|
||||
|
||||
@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';
|
||||
}
|
||||
|
||||
@override
|
||||
String deleteContactConfirmation(String name) {
|
||||
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';
|
||||
}
|
||||
|
||||
@override
|
||||
String get type => 'Type';
|
||||
|
||||
@override
|
||||
String get publicKey => 'Public Key';
|
||||
|
||||
@override
|
||||
String get lastSeen => 'Last Seen';
|
||||
|
||||
@override
|
||||
String get roomStatus => 'Room Status';
|
||||
|
||||
@override
|
||||
String get loginStatus => 'Login Status';
|
||||
|
||||
@override
|
||||
String get notLoggedIn => 'Not Logged In';
|
||||
|
||||
@override
|
||||
String get adminAccess => 'Admin Access';
|
||||
|
||||
@override
|
||||
String get yes => 'Yes';
|
||||
|
||||
@override
|
||||
String get no => 'No';
|
||||
|
||||
@override
|
||||
String get permissions => 'Permissions';
|
||||
|
||||
@override
|
||||
String get passwordSaved => 'Password Saved';
|
||||
|
||||
@override
|
||||
String get locationColon => 'Location:';
|
||||
|
||||
@override
|
||||
String get telemetry => 'Telemetry';
|
||||
|
||||
@override
|
||||
String requestingTelemetry(String name) {
|
||||
return 'Requesting telemetry from $name...';
|
||||
}
|
||||
|
||||
@override
|
||||
String get voltage => 'Voltage';
|
||||
|
||||
@override
|
||||
String get battery => 'Battery';
|
||||
|
||||
@override
|
||||
String get temperature => 'Temperature';
|
||||
|
||||
@override
|
||||
String get humidity => 'Humidity';
|
||||
|
||||
@override
|
||||
String get pressure => 'Pressure';
|
||||
|
||||
@override
|
||||
String get gpsTelemetry => 'GPS (Telemetry)';
|
||||
|
||||
@override
|
||||
String get updated => 'Updated';
|
||||
|
||||
@override
|
||||
String pathResetInfo(String name) {
|
||||
return 'Path reset for $name. Next message will find a new route.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get reLoginToRoom => 'Re-Login to Room';
|
||||
|
||||
@override
|
||||
String get heading => 'Heading';
|
||||
|
||||
@override
|
||||
String get elevation => 'Elevation';
|
||||
|
||||
@override
|
||||
String get accuracy => 'Accuracy';
|
||||
|
||||
@override
|
||||
String get filterMarkers => 'Filter Markers';
|
||||
|
||||
@override
|
||||
String get filterMarkersTooltip => 'Filter markers';
|
||||
|
||||
@override
|
||||
String get contactsFilter => 'Contacts';
|
||||
|
||||
@override
|
||||
String get sarMarkers => 'SAR Markers';
|
||||
|
||||
@override
|
||||
String get foundPerson => 'Found Person';
|
||||
|
||||
@override
|
||||
String get fire => 'Fire';
|
||||
|
||||
@override
|
||||
String get stagingArea => 'Staging Area';
|
||||
|
||||
@override
|
||||
String get showAll => 'Show All';
|
||||
|
||||
@override
|
||||
String get nearbyContacts => 'Nearby Contacts';
|
||||
|
||||
@override
|
||||
String get locationUnavailable => 'Location unavailable';
|
||||
|
||||
@override
|
||||
String get ahead => 'ahead';
|
||||
|
||||
@override
|
||||
String degreesRight(int degrees) {
|
||||
return '$degrees° right';
|
||||
}
|
||||
|
||||
@override
|
||||
String degreesLeft(int degrees) {
|
||||
return '$degrees° left';
|
||||
}
|
||||
|
||||
@override
|
||||
String latLonFormat(String latitude, String longitude) {
|
||||
return 'Lat: $latitude Lon: $longitude';
|
||||
}
|
||||
}
|
||||
|
||||
@@ -404,4 +404,281 @@ class AppLocalizationsHr extends AppLocalizations {
|
||||
|
||||
@override
|
||||
String get typeYourMessage => 'Upišite svoju poruku...';
|
||||
|
||||
@override
|
||||
String get quickLocationMarker => 'Brzi označitelj lokacije';
|
||||
|
||||
@override
|
||||
String get markerType => 'Vrsta markera';
|
||||
|
||||
@override
|
||||
String get sendTo => 'Pošalji na';
|
||||
|
||||
@override
|
||||
String get noDestinationsAvailable => 'Nema dostupnih odredišta.';
|
||||
|
||||
@override
|
||||
String get selectDestination => 'Odaberite odredište...';
|
||||
|
||||
@override
|
||||
String get ephemeralBroadcastInfo =>
|
||||
'Privremeno: Samo emitiranje. Nije pohranjeno - čvorovi moraju biti online.';
|
||||
|
||||
@override
|
||||
String get persistentRoomInfo =>
|
||||
'Trajno: Nepromjenjivo pohranjeno u sobi. Automatski sinkronizirano i očuvano offline.';
|
||||
|
||||
@override
|
||||
String get location => 'Lokacija';
|
||||
|
||||
@override
|
||||
String get fromMap => 'S karte';
|
||||
|
||||
@override
|
||||
String get gettingLocation => 'Dohvaćanje lokacije...';
|
||||
|
||||
@override
|
||||
String get locationError => 'Greška lokacije';
|
||||
|
||||
@override
|
||||
String get retry => 'Pokušaj ponovno';
|
||||
|
||||
@override
|
||||
String get refreshLocation => 'Osvježi lokaciju';
|
||||
|
||||
@override
|
||||
String accuracyMeters(int accuracy) {
|
||||
return 'Točnost: ±${accuracy}m';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notesOptional => 'Napomene (opcionalno)';
|
||||
|
||||
@override
|
||||
String get addAdditionalInformation => 'Dodajte dodatne informacije...';
|
||||
|
||||
@override
|
||||
String lowAccuracyWarning(int accuracy) {
|
||||
return 'Točnost lokacije je ±${accuracy}m. Ovo možda nije dovoljno precizno za SAR operacije.\n\nNastaviti svejedno?';
|
||||
}
|
||||
|
||||
@override
|
||||
String get loginToRoom => 'Prijava u sobu';
|
||||
|
||||
@override
|
||||
String get enterPasswordInfo =>
|
||||
'Unesite lozinku za pristup ovoj sobi. Lozinka će biti spremljena za buduću upotrebu.';
|
||||
|
||||
@override
|
||||
String get password => 'Lozinka';
|
||||
|
||||
@override
|
||||
String get enterRoomPassword => 'Unesite lozinku sobe';
|
||||
|
||||
@override
|
||||
String get loggingInDots => 'Prijavljivanje...';
|
||||
|
||||
@override
|
||||
String get login => 'Prijava';
|
||||
|
||||
@override
|
||||
String failedToAddRoom(String error) {
|
||||
return 'Neuspjelo dodavanje sobe na uređaj: $error\n\nSoba možda još nije oglašena.\nPokušajte pričekati da soba emitira.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get direct => 'Izravno';
|
||||
|
||||
@override
|
||||
String get flood => 'Poplava';
|
||||
|
||||
@override
|
||||
String get admin => 'Administrator';
|
||||
|
||||
@override
|
||||
String get loggedIn => 'Prijavljen';
|
||||
|
||||
@override
|
||||
String get noGpsData => 'Nema GPS podataka';
|
||||
|
||||
@override
|
||||
String get distance => 'Udaljenost';
|
||||
|
||||
@override
|
||||
String pingingDirect(String name) {
|
||||
return 'Pingiranje $name (izravno putem puta)...';
|
||||
}
|
||||
|
||||
@override
|
||||
String pingingFlood(String name) {
|
||||
return 'Pingiranje $name (poplava - nema puta)...';
|
||||
}
|
||||
|
||||
@override
|
||||
String directPingTimeout(String name) {
|
||||
return 'Istek izravnog pinga - ponovni pokušaj $name s poplavom...';
|
||||
}
|
||||
|
||||
@override
|
||||
String pingSuccessful(String name, String fallback) {
|
||||
return 'Ping uspješan prema $name$fallback';
|
||||
}
|
||||
|
||||
@override
|
||||
String get viaFloodingFallback => ' (putem rezervnog plavljenja)';
|
||||
|
||||
@override
|
||||
String pingFailed(String name) {
|
||||
return 'Ping neuspješan prema $name - nije primljen odgovor';
|
||||
}
|
||||
|
||||
@override
|
||||
String deleteContactConfirmation(String name) {
|
||||
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';
|
||||
}
|
||||
|
||||
@override
|
||||
String get type => 'Vrsta';
|
||||
|
||||
@override
|
||||
String get publicKey => 'Javni ključ';
|
||||
|
||||
@override
|
||||
String get lastSeen => 'Zadnje viđen';
|
||||
|
||||
@override
|
||||
String get roomStatus => 'Status sobe';
|
||||
|
||||
@override
|
||||
String get loginStatus => 'Status prijave';
|
||||
|
||||
@override
|
||||
String get notLoggedIn => 'Nije prijavljen';
|
||||
|
||||
@override
|
||||
String get adminAccess => 'Administratorski pristup';
|
||||
|
||||
@override
|
||||
String get yes => 'Da';
|
||||
|
||||
@override
|
||||
String get no => 'Ne';
|
||||
|
||||
@override
|
||||
String get permissions => 'Dopuštenja';
|
||||
|
||||
@override
|
||||
String get passwordSaved => 'Lozinka spremljena';
|
||||
|
||||
@override
|
||||
String get locationColon => 'Lokacija:';
|
||||
|
||||
@override
|
||||
String get telemetry => 'Telemetrija';
|
||||
|
||||
@override
|
||||
String requestingTelemetry(String name) {
|
||||
return 'Zahtijevanje telemetrije od $name...';
|
||||
}
|
||||
|
||||
@override
|
||||
String get voltage => 'Napon';
|
||||
|
||||
@override
|
||||
String get battery => 'Baterija';
|
||||
|
||||
@override
|
||||
String get temperature => 'Temperatura';
|
||||
|
||||
@override
|
||||
String get humidity => 'Vlažnost';
|
||||
|
||||
@override
|
||||
String get pressure => 'Tlak';
|
||||
|
||||
@override
|
||||
String get gpsTelemetry => 'GPS (Telemetrija)';
|
||||
|
||||
@override
|
||||
String get updated => 'Ažurirano';
|
||||
|
||||
@override
|
||||
String pathResetInfo(String name) {
|
||||
return 'Put resetiran za $name. Sljedeća poruka će pronaći novu rutu.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get reLoginToRoom => 'Ponovna prijava u sobu';
|
||||
|
||||
@override
|
||||
String get heading => 'Smjer';
|
||||
|
||||
@override
|
||||
String get elevation => 'Nadmorska visina';
|
||||
|
||||
@override
|
||||
String get accuracy => 'Točnost';
|
||||
|
||||
@override
|
||||
String get filterMarkers => 'Filtriraj markere';
|
||||
|
||||
@override
|
||||
String get filterMarkersTooltip => 'Filtriraj markere';
|
||||
|
||||
@override
|
||||
String get contactsFilter => 'Kontakti';
|
||||
|
||||
@override
|
||||
String get sarMarkers => 'SAR markeri';
|
||||
|
||||
@override
|
||||
String get foundPerson => 'Pronađena osoba';
|
||||
|
||||
@override
|
||||
String get fire => 'Požar';
|
||||
|
||||
@override
|
||||
String get stagingArea => 'Zbirno mjesto';
|
||||
|
||||
@override
|
||||
String get showAll => 'Prikaži sve';
|
||||
|
||||
@override
|
||||
String get nearbyContacts => 'Obližnji kontakti';
|
||||
|
||||
@override
|
||||
String get locationUnavailable => 'Lokacija nije dostupna';
|
||||
|
||||
@override
|
||||
String get ahead => 'naprijed';
|
||||
|
||||
@override
|
||||
String degreesRight(int degrees) {
|
||||
return '$degrees° desno';
|
||||
}
|
||||
|
||||
@override
|
||||
String degreesLeft(int degrees) {
|
||||
return '$degrees° lijevo';
|
||||
}
|
||||
|
||||
@override
|
||||
String latLonFormat(String latitude, String longitude) {
|
||||
return 'Ššir: $latitude Dužina: $longitude';
|
||||
}
|
||||
}
|
||||
|
||||
@@ -404,4 +404,281 @@ class AppLocalizationsSl extends AppLocalizations {
|
||||
|
||||
@override
|
||||
String get typeYourMessage => 'Vnesite svoje sporočilo...';
|
||||
|
||||
@override
|
||||
String get quickLocationMarker => 'Hitri označevalec lokacije';
|
||||
|
||||
@override
|
||||
String get markerType => 'Vrsta označevalca';
|
||||
|
||||
@override
|
||||
String get sendTo => 'Pošlji na';
|
||||
|
||||
@override
|
||||
String get noDestinationsAvailable => 'Ni dostopnih ciljev.';
|
||||
|
||||
@override
|
||||
String get selectDestination => 'Izberite cilj...';
|
||||
|
||||
@override
|
||||
String get ephemeralBroadcastInfo =>
|
||||
'Začasno: Samo oddajanje. Ni shranjeno - vozlišča morajo biti povezana.';
|
||||
|
||||
@override
|
||||
String get persistentRoomInfo =>
|
||||
'Trajno: Nespremenljivo shranjeno v sobi. Samodejno sinhronizirano in ohranjeno brez povezave.';
|
||||
|
||||
@override
|
||||
String get location => 'Lokacija';
|
||||
|
||||
@override
|
||||
String get fromMap => 'Z zemljevida';
|
||||
|
||||
@override
|
||||
String get gettingLocation => 'Pridobivanje lokacije...';
|
||||
|
||||
@override
|
||||
String get locationError => 'Napaka lokacije';
|
||||
|
||||
@override
|
||||
String get retry => 'Poskusi znova';
|
||||
|
||||
@override
|
||||
String get refreshLocation => 'Osveži lokacijo';
|
||||
|
||||
@override
|
||||
String accuracyMeters(int accuracy) {
|
||||
return 'Natančnost: ±${accuracy}m';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notesOptional => 'Opombe (neobvezno)';
|
||||
|
||||
@override
|
||||
String get addAdditionalInformation => 'Dodajte dodatne informacije...';
|
||||
|
||||
@override
|
||||
String lowAccuracyWarning(int accuracy) {
|
||||
return 'Natančnost lokacije je ±${accuracy}m. To morda ni dovolj natančno za SAR operacije.\n\nVseeno nadaljuj?';
|
||||
}
|
||||
|
||||
@override
|
||||
String get loginToRoom => 'Prijava v sobo';
|
||||
|
||||
@override
|
||||
String get enterPasswordInfo =>
|
||||
'Vnesite geslo za dostop do te sobe. Geslo bo shranjeno za prihodnjo uporabo.';
|
||||
|
||||
@override
|
||||
String get password => 'Geslo';
|
||||
|
||||
@override
|
||||
String get enterRoomPassword => 'Vnesite geslo sobe';
|
||||
|
||||
@override
|
||||
String get loggingInDots => 'Prijavljanje...';
|
||||
|
||||
@override
|
||||
String get login => 'Prijava';
|
||||
|
||||
@override
|
||||
String failedToAddRoom(String error) {
|
||||
return 'Dodajanje sobe v napravo ni uspelo: $error\n\nSoba morda še ni oglašena.\nPoskusite počakati, da soba odda.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get direct => 'Neposredno';
|
||||
|
||||
@override
|
||||
String get flood => 'Poplava';
|
||||
|
||||
@override
|
||||
String get admin => 'Administrator';
|
||||
|
||||
@override
|
||||
String get loggedIn => 'Prijavljen';
|
||||
|
||||
@override
|
||||
String get noGpsData => 'Ni GPS podatkov';
|
||||
|
||||
@override
|
||||
String get distance => 'Razdalja';
|
||||
|
||||
@override
|
||||
String pingingDirect(String name) {
|
||||
return 'Pinganje $name (neposredno preko poti)...';
|
||||
}
|
||||
|
||||
@override
|
||||
String pingingFlood(String name) {
|
||||
return 'Pinganje $name (poplava - brez poti)...';
|
||||
}
|
||||
|
||||
@override
|
||||
String directPingTimeout(String name) {
|
||||
return 'Časovna omejitev neposrednega pinga - ponovni poskus $name s poplavo...';
|
||||
}
|
||||
|
||||
@override
|
||||
String pingSuccessful(String name, String fallback) {
|
||||
return 'Ping uspešen do $name$fallback';
|
||||
}
|
||||
|
||||
@override
|
||||
String get viaFloodingFallback => ' (preko rezervnega poplavljanja)';
|
||||
|
||||
@override
|
||||
String pingFailed(String name) {
|
||||
return 'Ping neuspešen do $name - odgovor ni prejet';
|
||||
}
|
||||
|
||||
@override
|
||||
String deleteContactConfirmation(String name) {
|
||||
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';
|
||||
}
|
||||
|
||||
@override
|
||||
String get type => 'Vrsta';
|
||||
|
||||
@override
|
||||
String get publicKey => 'Javni ključ';
|
||||
|
||||
@override
|
||||
String get lastSeen => 'Nazadnje viden';
|
||||
|
||||
@override
|
||||
String get roomStatus => 'Status sobe';
|
||||
|
||||
@override
|
||||
String get loginStatus => 'Status prijave';
|
||||
|
||||
@override
|
||||
String get notLoggedIn => 'Ni prijavljen';
|
||||
|
||||
@override
|
||||
String get adminAccess => 'Administratorski dostop';
|
||||
|
||||
@override
|
||||
String get yes => 'Da';
|
||||
|
||||
@override
|
||||
String get no => 'Ne';
|
||||
|
||||
@override
|
||||
String get permissions => 'Dovoljenja';
|
||||
|
||||
@override
|
||||
String get passwordSaved => 'Geslo shranjeno';
|
||||
|
||||
@override
|
||||
String get locationColon => 'Lokacija:';
|
||||
|
||||
@override
|
||||
String get telemetry => 'Telemetrija';
|
||||
|
||||
@override
|
||||
String requestingTelemetry(String name) {
|
||||
return 'Zahtevanje telemetrije od $name...';
|
||||
}
|
||||
|
||||
@override
|
||||
String get voltage => 'Napetost';
|
||||
|
||||
@override
|
||||
String get battery => 'Baterija';
|
||||
|
||||
@override
|
||||
String get temperature => 'Temperatura';
|
||||
|
||||
@override
|
||||
String get humidity => 'Vlažnost';
|
||||
|
||||
@override
|
||||
String get pressure => 'Tlak';
|
||||
|
||||
@override
|
||||
String get gpsTelemetry => 'GPS (Telemetrija)';
|
||||
|
||||
@override
|
||||
String get updated => 'Posodobljeno';
|
||||
|
||||
@override
|
||||
String pathResetInfo(String name) {
|
||||
return 'Pot ponastavljena za $name. Naslednje sporočilo bo našlo novo pot.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get reLoginToRoom => 'Ponovna prijava v sobo';
|
||||
|
||||
@override
|
||||
String get heading => 'Smer';
|
||||
|
||||
@override
|
||||
String get elevation => 'Nadmorska višina';
|
||||
|
||||
@override
|
||||
String get accuracy => 'Natančnost';
|
||||
|
||||
@override
|
||||
String get filterMarkers => 'Filtriraj označevalce';
|
||||
|
||||
@override
|
||||
String get filterMarkersTooltip => 'Filtriraj označevalce';
|
||||
|
||||
@override
|
||||
String get contactsFilter => 'Stiki';
|
||||
|
||||
@override
|
||||
String get sarMarkers => 'SAR označevalci';
|
||||
|
||||
@override
|
||||
String get foundPerson => 'Najdena oseba';
|
||||
|
||||
@override
|
||||
String get fire => 'Ogenj';
|
||||
|
||||
@override
|
||||
String get stagingArea => 'Zbirališče';
|
||||
|
||||
@override
|
||||
String get showAll => 'Prikaži vse';
|
||||
|
||||
@override
|
||||
String get nearbyContacts => 'Bližnji stiki';
|
||||
|
||||
@override
|
||||
String get locationUnavailable => 'Lokacija ni na voljo';
|
||||
|
||||
@override
|
||||
String get ahead => 'naravnost';
|
||||
|
||||
@override
|
||||
String degreesRight(int degrees) {
|
||||
return '$degrees° desno';
|
||||
}
|
||||
|
||||
@override
|
||||
String degreesLeft(int degrees) {
|
||||
return '$degrees° levo';
|
||||
}
|
||||
|
||||
@override
|
||||
String latLonFormat(String latitude, String longitude) {
|
||||
return 'Šir: $latitude Dolž: $longitude';
|
||||
}
|
||||
}
|
||||
|
||||
@@ -231,5 +231,165 @@
|
||||
|
||||
"directMessageInfo": "To sporočilo bo poslano neposredno {contactName}. Prikazalo se bo tudi v glavnem viru sporočil.",
|
||||
|
||||
"typeYourMessage": "Vnesite svoje sporočilo..."
|
||||
"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",
|
||||
|
||||
"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": "Poplava",
|
||||
|
||||
"admin": "Administrator",
|
||||
|
||||
"loggedIn": "Prijavljen",
|
||||
|
||||
"noGpsData": "Ni GPS podatkov",
|
||||
|
||||
"distance": "Razdalja",
|
||||
|
||||
"pingingDirect": "Pinganje {name} (neposredno preko poti)...",
|
||||
|
||||
"pingingFlood": "Pinganje {name} (poplava - brez poti)...",
|
||||
|
||||
"directPingTimeout": "Časovna omejitev neposrednega pinga - ponovni poskus {name} s poplavo...",
|
||||
|
||||
"pingSuccessful": "Ping uspešen do {name}{fallback}",
|
||||
|
||||
"viaFloodingFallback": " (preko rezervnega poplavljanja)",
|
||||
|
||||
"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",
|
||||
|
||||
"filterMarkers": "Filtriraj označevalce",
|
||||
|
||||
"filterMarkersTooltip": "Filtriraj označevalce",
|
||||
|
||||
"contactsFilter": "Stiki",
|
||||
|
||||
"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}"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user