import 'dart:async'; import 'package:flutter/foundation.dart'; import 'package:flutter/widgets.dart'; import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:intl/intl.dart' as intl; import 'app_localizations_de.dart'; import 'app_localizations_el.dart'; import 'app_localizations_en.dart'; import 'app_localizations_es.dart'; import 'app_localizations_fr.dart'; import 'app_localizations_hr.dart'; import 'app_localizations_it.dart'; import 'app_localizations_pl.dart'; import 'app_localizations_pt.dart'; import 'app_localizations_ru.dart'; import 'app_localizations_sl.dart'; import 'app_localizations_tr.dart'; import 'app_localizations_uk.dart'; import 'app_localizations_zh.dart'; // ignore_for_file: type=lint /// Callers can lookup localized strings with an instance of AppLocalizations /// returned by `AppLocalizations.of(context)`. /// /// Applications need to include `AppLocalizations.delegate()` in their app's /// `localizationDelegates` list, and the locales they support in the app's /// `supportedLocales` list. For example: /// /// ```dart /// import 'l10n/app_localizations.dart'; /// /// return MaterialApp( /// localizationsDelegates: AppLocalizations.localizationsDelegates, /// supportedLocales: AppLocalizations.supportedLocales, /// home: MyApplicationHome(), /// ); /// ``` /// /// ## Update pubspec.yaml /// /// Please make sure to update your pubspec.yaml to include the following /// packages: /// /// ```yaml /// dependencies: /// # Internationalization support. /// flutter_localizations: /// sdk: flutter /// intl: any # Use the pinned version from flutter_localizations /// /// # Rest of dependencies /// ``` /// /// ## iOS Applications /// /// iOS applications define key application metadata, including supported /// locales, in an Info.plist file that is built into the application bundle. /// To configure the locales supported by your app, you’ll need to edit this /// file. /// /// First, open your project’s ios/Runner.xcworkspace Xcode workspace file. /// Then, in the Project Navigator, open the Info.plist file under the Runner /// project’s Runner folder. /// /// Next, select the Information Property List item, select Add Item from the /// Editor menu, then select Localizations from the pop-up menu. /// /// Select and expand the newly-created Localizations item then, for each /// locale your application supports, add a new item and select the locale /// you wish to add from the pop-up menu in the Value field. This list should /// be consistent with the languages listed in the AppLocalizations.supportedLocales /// property. abstract class AppLocalizations { AppLocalizations(String locale) : localeName = intl.Intl.canonicalizedLocale(locale.toString()); final String localeName; static AppLocalizations? of(BuildContext context) { return Localizations.of(context, AppLocalizations); } static const LocalizationsDelegate delegate = _AppLocalizationsDelegate(); /// A list of this localizations delegate along with the default localizations /// delegates. /// /// Returns a list of localizations delegates containing this delegate along with /// GlobalMaterialLocalizations.delegate, GlobalCupertinoLocalizations.delegate, /// and GlobalWidgetsLocalizations.delegate. /// /// Additional delegates can be added by appending to this list in /// MaterialApp. This list does not have to be used at all if a custom list /// of delegates is preferred or required. static const List> localizationsDelegates = >[ delegate, GlobalMaterialLocalizations.delegate, GlobalCupertinoLocalizations.delegate, GlobalWidgetsLocalizations.delegate, ]; /// A list of this localizations delegate's supported locales. static const List supportedLocales = [ Locale('de'), Locale('el'), Locale('en'), Locale('es'), Locale('fr'), Locale('hr'), Locale('it'), Locale('pl'), Locale('pt'), Locale('ru'), Locale('sl'), Locale('tr'), Locale('uk'), Locale('zh'), ]; /// The application title /// /// In en, this message translates to: /// **'MeshCore SAR'** String get appTitle; /// Messages tab label /// /// In en, this message translates to: /// **'Messages'** String get messages; /// Contacts tab label /// /// In en, this message translates to: /// **'Contacts'** String get contacts; /// Map tab label /// /// In en, this message translates to: /// **'Map'** String get map; /// Settings screen title /// /// In en, this message translates to: /// **'Settings'** String get settings; /// Connect button label /// /// In en, this message translates to: /// **'Connect'** String get connect; /// Disconnect button label /// /// In en, this message translates to: /// **'Disconnect'** String get disconnect; /// Text shown when no BLE devices are found /// /// In en, this message translates to: /// **'No devices found'** String get noDevicesFound; /// Button to restart BLE scanning /// /// In en, this message translates to: /// **'Scan Again'** String get scanAgain; /// Subtitle text for device in scan list /// /// In en, this message translates to: /// **'Tap to connect'** String get tapToConnect; /// Error message when device is not connected /// /// In en, this message translates to: /// **'Device not connected'** String get deviceNotConnected; /// Error when location permission is denied /// /// In en, this message translates to: /// **'Location permission denied'** String get locationPermissionDenied; /// Error when location permission is permanently denied /// /// In en, this message translates to: /// **'Location permission permanently denied. Please enable in Settings.'** String get locationPermissionPermanentlyDenied; /// Message when location permission is needed /// /// In en, this message translates to: /// **'Location permission is required for GPS tracking and team coordination. You can enable it later in Settings.'** String get locationPermissionRequired; /// Error when location services are disabled /// /// In en, this message translates to: /// **'Location services are disabled. Please enable them in Settings.'** String get locationServicesDisabled; /// Error when GPS location cannot be obtained /// /// In en, this message translates to: /// **'Failed to get GPS location'** String get failedToGetGpsLocation; /// Error message for failed advertisement /// /// In en, this message translates to: /// **'Failed to advertise: {error}'** String failedToAdvertise(String error); /// Tooltip for cancel reconnection button /// /// In en, this message translates to: /// **'Cancel reconnection'** String get cancelReconnection; /// General settings section header /// /// In en, this message translates to: /// **'General'** String get general; /// Theme setting label /// /// In en, this message translates to: /// **'Theme'** String get theme; /// Theme selection dialog title /// /// In en, this message translates to: /// **'Choose Theme'** String get chooseTheme; /// Light theme option /// /// In en, this message translates to: /// **'Light'** String get light; /// Dark theme option /// /// In en, this message translates to: /// **'Dark'** String get dark; /// Description for blue light theme /// /// In en, this message translates to: /// **'Blue light theme'** String get blueLightTheme; /// Description for blue dark theme /// /// In en, this message translates to: /// **'Blue dark theme'** String get blueDarkTheme; /// SAR Red theme option /// /// In en, this message translates to: /// **'SAR Red'** String get sarRed; /// Description for SAR Red theme /// /// In en, this message translates to: /// **'Alert/Emergency mode'** String get alertEmergencyMode; /// SAR Green theme option /// /// In en, this message translates to: /// **'SAR Green'** String get sarGreen; /// Description for SAR Green theme /// /// In en, this message translates to: /// **'Safe/All Clear mode'** String get safeAllClearMode; /// Auto/System theme option /// /// In en, this message translates to: /// **'Auto (System)'** String get autoSystem; /// Description for system theme /// /// In en, this message translates to: /// **'Follow system theme'** String get followSystemTheme; /// Setting to show RX/TX indicators /// /// In en, this message translates to: /// **'Show RX/TX Indicators'** String get showRxTxIndicators; /// Description for RX/TX indicators setting /// /// In en, this message translates to: /// **'Display packet activity indicators in top bar'** String get displayPacketActivity; /// Setting to disable the map tab /// /// In en, this message translates to: /// **'Disable Map'** String get disableMap; /// Description for disable map setting /// /// In en, this message translates to: /// **'Hide the map tab to reduce battery usage'** String get disableMapDescription; /// Language setting label /// /// In en, this message translates to: /// **'Language'** String get language; /// Language selection dialog title /// /// In en, this message translates to: /// **'Choose Language'** String get chooseLanguage; /// Save button label /// /// In en, this message translates to: /// **'Save'** String get save; /// Cancel button label /// /// In en, this message translates to: /// **'Cancel'** String get cancel; /// Close button label /// /// In en, this message translates to: /// **'Close'** String get close; /// About section header /// /// In en, this message translates to: /// **'About'** String get about; /// App version label /// /// In en, this message translates to: /// **'App Version'** String get appVersion; /// App name label /// /// In en, this message translates to: /// **'App Name'** String get appName; /// About dialog title /// /// In en, this message translates to: /// **'About MeshCore SAR'** String get aboutMeshCoreSar; /// About dialog description /// /// In en, this message translates to: /// **'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'** String get aboutDescription; /// Technologies used section title /// /// In en, this message translates to: /// **'Technologies Used:'** String get technologiesUsed; /// List of technologies used /// /// In en, this message translates to: /// **'• 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'** String get technologiesList; /// More info button label /// /// In en, this message translates to: /// **'More Info'** String get moreInfo; /// Package name label /// /// In en, this message translates to: /// **'Package Name'** String get packageName; /// Sample data section header /// /// In en, this message translates to: /// **'Sample Data'** String get sampleData; /// Sample data section description /// /// In en, this message translates to: /// **'Load or clear sample contacts, channel messages, and SAR markers for testing'** String get sampleDataDescription; /// Load sample data button /// /// In en, this message translates to: /// **'Load Sample Data'** String get loadSampleData; /// Clear all data button /// /// In en, this message translates to: /// **'Clear All Data'** String get clearAllData; /// Clear data confirmation dialog title /// /// In en, this message translates to: /// **'Clear All Data'** String get clearAllDataConfirmTitle; /// Clear data confirmation message /// /// In en, this message translates to: /// **'This will clear all contacts and SAR markers. Are you sure?'** String get clearAllDataConfirmMessage; /// Clear button label /// /// In en, this message translates to: /// **'Clear'** String get clear; /// Success message after loading sample data /// /// In en, this message translates to: /// **'Loaded {teamCount} team members, {channelCount} channels, {sarCount} SAR markers, {messageCount} messages'** String loadedSampleData( int teamCount, int channelCount, int sarCount, int messageCount, ); /// Error message when sample data fails to load /// /// In en, this message translates to: /// **'Failed to load sample data: {error}'** String failedToLoadSampleData(String error); /// Success message after clearing all data /// /// In en, this message translates to: /// **'All data cleared'** String get allDataCleared; /// Error message when background tracking fails to start /// /// In en, this message translates to: /// **'Failed to start background tracking. Check permissions and BLE connection.'** String get failedToStartBackgroundTracking; /// Success message for location broadcast /// /// In en, this message translates to: /// **'Location broadcast: {latitude}, {longitude}'** String locationBroadcast(String latitude, String longitude); /// Information about default PIN for pairing /// /// In en, this message translates to: /// **'The default pin for devices without a screen is 123456. Trouble pairing? Forget the bluetooth device in system settings.'** String get defaultPinInfo; /// Empty state message when there are no messages /// /// In en, this message translates to: /// **'No messages yet'** String get noMessagesYet; /// Instruction to pull down to refresh messages /// /// In en, this message translates to: /// **'Pull down to sync messages'** String get pullDownToSync; /// Delete contact action label /// /// In en, this message translates to: /// **'Delete Contact'** String get deleteContact; /// Delete button label /// /// In en, this message translates to: /// **'Delete'** String get delete; /// Action to view contact location on map /// /// In en, this message translates to: /// **'View on Map'** String get viewOnMap; /// Refresh button label /// /// In en, this message translates to: /// **'Refresh'** String get refresh; /// Action to reset contact path for re-routing /// /// In en, this message translates to: /// **'Reset Path (Re-route)'** String get resetPath; /// Success message when public key is copied /// /// In en, this message translates to: /// **'Public key copied to clipboard'** String get publicKeyCopied; /// Success message when a value is copied to clipboard /// /// In en, this message translates to: /// **'{label} copied to clipboard'** String copiedToClipboard(String label); /// Validation message for empty password field /// /// In en, this message translates to: /// **'Please enter a password'** String get pleaseEnterPassword; /// Error message when contact sync fails /// /// In en, this message translates to: /// **'Failed to sync contacts: {error}'** String failedToSyncContacts(String error); /// Success message after successful room login /// /// In en, this message translates to: /// **'Logged in successfully! Waiting for room messages...'** String get loggedInSuccessfully; /// Error message when room login fails /// /// In en, this message translates to: /// **'Login failed - incorrect password'** String get loginFailed; /// Status message during room login process /// /// In en, this message translates to: /// **'Logging in to {roomName}...'** String loggingIn(String roomName); /// Error message when login command fails to send /// /// In en, this message translates to: /// **'Failed to send login: {error}'** String failedToSendLogin(String error); /// Warning title for low GPS accuracy /// /// In en, this message translates to: /// **'Low Location Accuracy'** String get lowLocationAccuracy; /// Continue button label /// /// In en, this message translates to: /// **'Continue'** String get continue_; /// Action to send SAR marker /// /// In en, this message translates to: /// **'Send SAR marker'** String get sendSarMarker; /// Action to delete a map drawing /// /// In en, this message translates to: /// **'Delete Drawing'** String get deleteDrawing; /// Drawing tools section or menu title /// /// In en, this message translates to: /// **'Drawing Tools'** String get drawingTools; /// Map drawing mode: line /// /// In en, this message translates to: /// **'Draw Line'** String get drawLine; /// Description for line drawing mode /// /// In en, this message translates to: /// **'Draw a freehand line on the map'** String get drawLineDesc; /// Map drawing mode: rectangle /// /// In en, this message translates to: /// **'Draw Rectangle'** String get drawRectangle; /// Description for rectangle drawing mode /// /// In en, this message translates to: /// **'Draw a rectangular area on the map'** String get drawRectangleDesc; /// Map drawing mode: measure distance /// /// In en, this message translates to: /// **'Measure Distance'** String get measureDistance; /// Description for distance measurement mode /// /// In en, this message translates to: /// **'Long press two points to measure'** String get measureDistanceDesc; /// Tooltip to clear measurement /// /// In en, this message translates to: /// **'Clear Measurement'** String get clearMeasurement; /// Label showing measured distance /// /// In en, this message translates to: /// **'Distance: {distance}'** String distanceLabel(String distance); /// Instruction when first measurement point is set /// /// In en, this message translates to: /// **'Long press for second point'** String get longPressForSecondPoint; /// Instruction to start measurement /// /// In en, this message translates to: /// **'Long press to set first point'** String get longPressToStartMeasurement; /// Instruction to restart measurement after completion /// /// In en, this message translates to: /// **'Long press to start new measurement'** String get longPressToStartNewMeasurement; /// Action to share drawings to network /// /// In en, this message translates to: /// **'Share Drawings'** String get shareDrawings; /// Action to clear all local drawings /// /// In en, this message translates to: /// **'Clear All Drawings'** String get clearAllDrawings; /// Tooltip to complete drawing a line /// /// In en, this message translates to: /// **'Complete Line'** String get completeLine; /// Subtitle showing how many drawings will be broadcast /// /// In en, this message translates to: /// **'Broadcast {count} drawing{plural} to team'** String broadcastDrawingsToTeam(int count, String plural); /// Subtitle for remove all drawings action /// /// In en, this message translates to: /// **'Remove all {count} drawing{plural}'** String removeAllDrawings(int count, String plural); /// Confirmation dialog message for deleting all drawings /// /// In en, this message translates to: /// **'Delete all {count} drawing{plural} from the map?'** String deleteAllDrawingsConfirm(int count, String plural); /// Generic drawing label /// /// In en, this message translates to: /// **'Drawing'** String get drawing; /// Title for share drawings dialog /// /// In en, this message translates to: /// **'Share {count} Drawing{plural}'** String shareDrawingsCount(int count, String plural); /// Toggle to show/hide received drawings from other team members /// /// In en, this message translates to: /// **'Show Received Drawings'** String get showReceivedDrawings; /// Subtitle when received drawings are visible /// /// In en, this message translates to: /// **'Showing all drawings'** String get showingAllDrawings; /// Subtitle when received drawings are hidden /// /// In en, this message translates to: /// **'Showing only your drawings'** String get showingOnlyYourDrawings; /// Toggle to show/hide SAR markers on map /// /// In en, this message translates to: /// **'Show SAR Markers'** String get showSarMarkers; /// Subtitle when SAR markers are visible /// /// In en, this message translates to: /// **'Showing SAR markers'** String get showingSarMarkers; /// Subtitle when SAR markers are hidden /// /// In en, this message translates to: /// **'Hiding SAR markers'** String get hidingSarMarkers; /// Clear all button label /// /// In en, this message translates to: /// **'Clear All'** String get clearAll; /// Public channel option for sharing /// /// In en, this message translates to: /// **'Public Channel'** String get publicChannel; /// Description for public channel broadcast /// /// In en, this message translates to: /// **'Broadcast to all nearby nodes (ephemeral)'** String get broadcastToAll; /// Description for room storage permanence /// /// In en, this message translates to: /// **'Stored permanently in room'** String get storedPermanently; /// Error message when device is not connected for direct messaging /// /// In en, this message translates to: /// **'Not connected to device'** String get notConnectedToDevice; /// Placeholder text for message input field /// /// 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; /// 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; /// Warning when direct ping times out /// /// In en, this message translates to: /// **'Direct ping timeout - retrying {name} with flooding...'** String directPingTimeout(String name); /// 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); /// 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; /// 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; /// Bearing label in compass /// /// In en, this message translates to: /// **'Bearing'** String get bearing; /// Direction label in compass /// /// In en, this message translates to: /// **'Direction'** String get direction; /// 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; /// Filter option for repeaters /// /// In en, this message translates to: /// **'Repeaters'** String get repeatersFilter; /// 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; /// 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); /// Empty state message when there are no contacts /// /// In en, this message translates to: /// **'No contacts yet'** String get noContactsYet; /// Instruction to connect device to load contacts /// /// In en, this message translates to: /// **'Connect to a device to load contacts'** String get connectToDeviceToLoadContacts; /// Section header for team members (chat contacts) /// /// In en, this message translates to: /// **'Team Members'** String get teamMembers; /// Section header for repeater nodes /// /// In en, this message translates to: /// **'Repeaters'** String get repeaters; /// Section header for rooms /// /// In en, this message translates to: /// **'Rooms'** String get rooms; /// Section header for broadcast channels /// /// In en, this message translates to: /// **'Channels'** String get channels; /// Title for map layer selection dialog /// /// In en, this message translates to: /// **'Select Map Layer'** String get selectMapLayer; /// OpenStreetMap layer name /// /// In en, this message translates to: /// **'OpenStreetMap'** String get openStreetMap; /// OpenTopoMap layer name /// /// In en, this message translates to: /// **'OpenTopoMap'** String get openTopoMap; /// ESRI Satellite imagery layer name /// /// In en, this message translates to: /// **'ESRI Satellite'** String get esriSatellite; /// Google Hybrid layer name (satellite + labels) /// /// In en, this message translates to: /// **'Google Hybrid'** String get googleHybrid; /// Google Roadmap layer name (street map) /// /// In en, this message translates to: /// **'Google Roadmap'** String get googleRoadmap; /// Google Terrain layer name (topographic) /// /// In en, this message translates to: /// **'Google Terrain'** String get googleTerrain; /// Label when dragging a pin on map /// /// In en, this message translates to: /// **'Drag to Position'** String get dragToPosition; /// Label for creating SAR marker from pin /// /// In en, this message translates to: /// **'Create SAR Marker'** String get createSarMarker; /// Compass title in detailed compass dialog /// /// In en, this message translates to: /// **'Compass'** String get compass; /// Subtitle for compass dialog /// /// In en, this message translates to: /// **'Navigation & Contacts'** String get navigationAndContacts; /// Label for SAR alert badge on messages /// /// In en, this message translates to: /// **'SAR ALERT'** String get sarAlert; /// Success message when text is copied /// /// In en, this message translates to: /// **'Text copied to clipboard'** String get textCopiedToClipboard; /// Error when sender info is missing for reply /// /// In en, this message translates to: /// **'Cannot reply: sender information missing'** String get cannotReplySenderMissing; /// Error when contact not found for reply /// /// In en, this message translates to: /// **'Cannot reply: contact not found'** String get cannotReplyContactNotFound; /// Option to copy message text to clipboard /// /// In en, this message translates to: /// **'Copy text'** String get copyText; /// Option to save SAR message as a reusable template /// /// In en, this message translates to: /// **'Save as Template'** String get saveAsTemplate; /// Success message when SAR template is saved /// /// In en, this message translates to: /// **'Template saved successfully'** String get templateSaved; /// Error message when trying to save duplicate template /// /// In en, this message translates to: /// **'Template with this emoji already exists'** String get templateAlreadyExists; /// Dialog title for deleting a message /// /// In en, this message translates to: /// **'Delete message'** String get deleteMessage; /// Confirmation text for message deletion /// /// In en, this message translates to: /// **'Are you sure you want to delete this message?'** String get deleteMessageConfirmation; /// Option to share SAR marker location /// /// In en, this message translates to: /// **'Share location'** String get shareLocation; /// Formatted text for sharing SAR marker location /// /// In en, this message translates to: /// **'{markerInfo}\n\nCoordinates: {lat}, {lon}\n\nGoogle Maps: {url}'** String shareLocationText( String markerInfo, String lat, String lon, String url, ); /// Subject line when sharing SAR marker location /// /// In en, this message translates to: /// **'SAR Location'** String get sarLocationShare; /// Time indicator for very recent activity /// /// In en, this message translates to: /// **'Just now'** String get justNow; /// Time indicator for minutes ago /// /// In en, this message translates to: /// **'{minutes}m ago'** String minutesAgo(int minutes); /// Time indicator for hours ago /// /// In en, this message translates to: /// **'{hours}h ago'** String hoursAgo(int hours); /// Time indicator for days ago /// /// In en, this message translates to: /// **'{days}d ago'** String daysAgo(int days); /// Time indicator for seconds ago /// /// In en, this message translates to: /// **'{seconds}s ago'** String secondsAgo(int seconds); /// Delivery status: sending /// /// In en, this message translates to: /// **'Sending...'** String get sending; /// Delivery status: sent /// /// In en, this message translates to: /// **'Sent'** String get sent; /// Delivery status: delivered /// /// In en, this message translates to: /// **'Delivered'** String get delivered; /// Delivery status with round-trip time /// /// In en, this message translates to: /// **'Delivered ({time}ms)'** String deliveredWithTime(int time); /// Delivery status: failed /// /// In en, this message translates to: /// **'Failed'** String get failed; /// Delivery status for channel messages (no echoes yet) /// /// In en, this message translates to: /// **'Broadcast'** String get broadcast; /// Grouped message delivery count /// /// In en, this message translates to: /// **'Delivered to {delivered}/{total} contacts'** String deliveredToContacts(int delivered, int total); /// Status when all recipients received the message /// /// In en, this message translates to: /// **'All delivered'** String get allDelivered; /// Header for expandable recipient list /// /// In en, this message translates to: /// **'Recipient Details'** String get recipientDetails; /// Delivery status: pending/waiting /// /// In en, this message translates to: /// **'Pending'** String get pending; /// SAR marker type: found person /// /// In en, this message translates to: /// **'Found Person'** String get sarMarkerFoundPerson; /// SAR marker type: fire /// /// In en, this message translates to: /// **'Fire Location'** String get sarMarkerFire; /// SAR marker type: staging area /// /// In en, this message translates to: /// **'Staging Area'** String get sarMarkerStagingArea; /// SAR marker type: object /// /// In en, this message translates to: /// **'Object Found'** String get sarMarkerObject; /// Sender label in notifications /// /// In en, this message translates to: /// **'From'** String get from; /// Coordinates label /// /// In en, this message translates to: /// **'Coordinates'** String get coordinates; /// Notification action text /// /// In en, this message translates to: /// **'Tap to view on map'** String get tapToViewOnMap; /// Section title for radio settings /// /// In en, this message translates to: /// **'Radio Settings'** String get radioSettings; /// Label for radio frequency field /// /// In en, this message translates to: /// **'Frequency (MHz)'** String get frequencyMHz; /// Helper text example for frequency /// /// In en, this message translates to: /// **'e.g., 869.618'** String get frequencyExample; /// Label for bandwidth dropdown /// /// In en, this message translates to: /// **'Bandwidth'** String get bandwidth; /// Label for spreading factor dropdown /// /// In en, this message translates to: /// **'Spreading Factor'** String get spreadingFactor; /// Label for coding rate dropdown /// /// In en, this message translates to: /// **'Coding Rate'** String get codingRate; /// Label for TX power field /// /// In en, this message translates to: /// **'TX Power (dBm)'** String get txPowerDbm; /// Helper text showing maximum TX power /// /// In en, this message translates to: /// **'Max: {power} dBm'** String maxPowerDbm(int power); /// Label for the current user in message bubbles /// /// In en, this message translates to: /// **'You'** String get you; /// Error message when export fails /// /// In en, this message translates to: /// **'Export failed: {error}'** String exportFailed(String error); /// Error message when import fails /// /// In en, this message translates to: /// **'Import failed: {error}'** String importFailed(String error); /// Unknown value label /// /// In en, this message translates to: /// **'Unknown'** String get unknown; /// Section header for online map layers /// /// In en, this message translates to: /// **'Online Layers'** String get onlineLayers; /// Location trail title /// /// In en, this message translates to: /// **'Location Trail'** String get locationTrail; /// Toggle to show/hide trail on map /// /// In en, this message translates to: /// **'Show Trail on Map'** String get showTrailOnMap; /// Trail visibility status - visible /// /// In en, this message translates to: /// **'Trail is visible on the map'** String get trailVisible; /// Trail visibility status - hidden but recording /// /// In en, this message translates to: /// **'Trail is hidden (still recording)'** String get trailHiddenRecording; /// Duration label /// /// In en, this message translates to: /// **'Duration'** String get duration; /// Trail points count label /// /// In en, this message translates to: /// **'Points'** String get points; /// Button to clear location trail /// /// In en, this message translates to: /// **'Clear Trail'** String get clearTrail; /// Confirmation dialog title /// /// In en, this message translates to: /// **'Clear Trail?'** String get clearTrailQuestion; /// Confirmation dialog message /// /// In en, this message translates to: /// **'Are you sure you want to clear the current location trail? This action cannot be undone.'** String get clearTrailConfirmation; /// Message when no trail exists /// /// In en, this message translates to: /// **'No trail recorded yet'** String get noTrailRecorded; /// Instructions to start trail recording /// /// In en, this message translates to: /// **'Start location tracking to record your trail'** String get startTrackingToRecord; /// Trail controls tooltip /// /// In en, this message translates to: /// **'Trail Controls'** String get trailControls; /// Contact trails section header /// /// In en, this message translates to: /// **'Contact Trails'** String get contactTrails; /// Toggle label to show all contact trails /// /// In en, this message translates to: /// **'Show All Contact Trails'** String get showAllContactTrails; /// Subtitle when no contacts have trails /// /// In en, this message translates to: /// **'No contacts with location history'** String get noContactsWithLocationHistory; /// Subtitle showing number of contacts with trails /// /// In en, this message translates to: /// **'Showing trails for {count} contacts'** String showingTrailsForContacts(int count); /// Expansion tile title for individual contact trails /// /// In en, this message translates to: /// **'Individual Contact Trails'** String get individualContactTrails; /// Device information section header /// /// In en, this message translates to: /// **'Device Information'** String get deviceInformation; /// Bluetooth Low Energy device name label /// /// In en, this message translates to: /// **'BLE Name'** String get bleName; /// Mesh network name label /// /// In en, this message translates to: /// **'Mesh Name'** String get meshName; /// Label when a value is not set /// /// In en, this message translates to: /// **'Not set'** String get notSet; /// Device model label /// /// In en, this message translates to: /// **'Model'** String get model; /// Version label /// /// In en, this message translates to: /// **'Version'** String get version; /// Firmware build date label /// /// In en, this message translates to: /// **'Build Date'** String get buildDate; /// Firmware label /// /// In en, this message translates to: /// **'Firmware'** String get firmware; /// Maximum contacts capacity label /// /// In en, this message translates to: /// **'Max Contacts'** String get maxContacts; /// Maximum channels capacity label /// /// In en, this message translates to: /// **'Max Channels'** String get maxChannels; /// Public information section header /// /// In en, this message translates to: /// **'Public Info'** String get publicInfo; /// Mesh network name field label /// /// In en, this message translates to: /// **'Mesh Network Name'** String get meshNetworkName; /// Helper text for mesh network name field /// /// In en, this message translates to: /// **'Name broadcast in mesh advertisements'** String get nameBroadcastInMesh; /// Telemetry and location sharing toggle label /// /// In en, this message translates to: /// **'Telemetry & Location Sharing'** String get telemetryAndLocationSharing; /// Latitude field label (short form) /// /// In en, this message translates to: /// **'Lat'** String get lat; /// Longitude field label (short form) /// /// In en, this message translates to: /// **'Lon'** String get lon; /// Tooltip for use current location button /// /// In en, this message translates to: /// **'Use current location'** String get useCurrentLocation; /// Device type: none or unknown /// /// In en, this message translates to: /// **'None/Unknown'** String get noneUnknown; /// Device type: chat node /// /// In en, this message translates to: /// **'Chat Node'** String get chatNode; /// Device type: repeater /// /// In en, this message translates to: /// **'Repeater'** String get repeater; /// Device type: room or channel /// /// In en, this message translates to: /// **'Room/Channel'** String get roomChannel; /// Generic device type with number /// /// In en, this message translates to: /// **'Type {number}'** String typeNumber(int number); /// Short success message when copying to clipboard /// /// In en, this message translates to: /// **'Copied {label} to clipboard'** String copiedToClipboardShort(String label); /// Generic error message for save failures /// /// In en, this message translates to: /// **'Failed to save: {error}'** String failedToSave(String error); /// Error message when getting location fails /// /// In en, this message translates to: /// **'Failed to get location: {error}'** String failedToGetLocation(String error); /// SAR templates menu title /// /// In en, this message translates to: /// **'SAR Templates'** String get sarTemplates; /// Subtitle for SAR templates settings /// /// In en, this message translates to: /// **'Manage cursor on target templates'** String get manageSarTemplates; /// Button to add new SAR template /// /// In en, this message translates to: /// **'Add Template'** String get addTemplate; /// Dialog title for editing template /// /// In en, this message translates to: /// **'Edit Template'** String get editTemplate; /// Action to delete template /// /// In en, this message translates to: /// **'Delete Template'** String get deleteTemplate; /// Label for template name field /// /// In en, this message translates to: /// **'Template Name'** String get templateName; /// Hint text for template name /// /// In en, this message translates to: /// **'e.g. Found Person'** String get templateNameHint; /// Label for template emoji field /// /// In en, this message translates to: /// **'Emoji'** String get templateEmoji; /// Validation error when emoji field is empty /// /// In en, this message translates to: /// **'Emoji is required'** String get emojiRequired; /// Validation error when name field is empty /// /// In en, this message translates to: /// **'Name is required'** String get nameRequired; /// Label for template description field /// /// In en, this message translates to: /// **'Description (Optional)'** String get templateDescription; /// Hint text for template description /// /// In en, this message translates to: /// **'Add additional context...'** String get templateDescriptionHint; /// Label for template color picker /// /// In en, this message translates to: /// **'Color'** String get templateColor; /// Label for format preview /// /// In en, this message translates to: /// **'Preview (SAR Message Format)'** String get previewFormat; /// Button to import templates from clipboard /// /// In en, this message translates to: /// **'Import'** String get importFromClipboard; /// Button to export templates to clipboard /// /// In en, this message translates to: /// **'Export'** String get exportToClipboard; /// Confirmation message for template deletion /// /// In en, this message translates to: /// **'Delete template \'{name}\'?'** String deleteTemplateConfirmation(String name); /// Success message when template is added /// /// In en, this message translates to: /// **'Template added'** String get templateAdded; /// Success message when template is updated /// /// In en, this message translates to: /// **'Template updated'** String get templateUpdated; /// Success message when template is deleted /// /// In en, this message translates to: /// **'Template deleted'** String get templateDeleted; /// Success message after importing templates /// /// In en, this message translates to: /// **'{count, plural, =0{No templates imported} =1{Imported 1 template} other{Imported {count} templates}}'** String templatesImported(int count); /// Success message after exporting templates /// /// In en, this message translates to: /// **'{count, plural, =1{Exported 1 template to clipboard} other{Exported {count} templates to clipboard}}'** String templatesExported(int count); /// Action to reset templates to defaults /// /// In en, this message translates to: /// **'Reset to Defaults'** String get resetToDefaults; /// Confirmation message for reset to defaults /// /// In en, this message translates to: /// **'This will delete all custom templates and restore the 4 default templates. Continue?'** String get resetToDefaultsConfirmation; /// Reset button label /// /// In en, this message translates to: /// **'Reset'** String get reset; /// Success message after reset /// /// In en, this message translates to: /// **'Templates reset to defaults'** String get resetComplete; /// Message when no templates exist /// /// In en, this message translates to: /// **'No templates available'** String get noTemplates; /// Helper text when no templates exist /// /// In en, this message translates to: /// **'Tap + to create your first template'** String get tapAddToCreate; /// OK button label /// /// In en, this message translates to: /// **'OK'** String get ok; /// Permissions section header /// /// In en, this message translates to: /// **'Permissions'** String get permissionsSection; /// Location permission label /// /// In en, this message translates to: /// **'Location Permission'** String get locationPermission; /// Loading state indicator /// /// In en, this message translates to: /// **'Checking...'** String get checking; /// Location permission status: granted always /// /// In en, this message translates to: /// **'Granted (Always)'** String get locationPermissionGrantedAlways; /// Location permission status: granted while in use /// /// In en, this message translates to: /// **'Granted (While In Use)'** String get locationPermissionGrantedWhileInUse; /// Location permission status: denied, user can request /// /// In en, this message translates to: /// **'Denied - Tap to request'** String get locationPermissionDeniedTapToRequest; /// Location permission status: permanently denied /// /// In en, this message translates to: /// **'Permanently Denied - Open Settings'** String get locationPermissionPermanentlyDeniedOpenSettings; /// Content for location permission dialog when permanently denied /// /// In en, this message translates to: /// **'Location permission is permanently denied. Please enable it in your device settings to use GPS tracking and location sharing features.'** String get locationPermissionDialogContent; /// Button to open device settings /// /// In en, this message translates to: /// **'Open Settings'** String get openSettings; /// Success message when location permission is granted /// /// In en, this message translates to: /// **'Location permission granted!'** String get locationPermissionGranted; /// Info message about location permission requirement /// /// In en, this message translates to: /// **'Location permission is required for GPS tracking and location sharing.'** String get locationPermissionRequiredForGps; /// Info message when permission is already granted /// /// In en, this message translates to: /// **'Location permission is already granted.'** String get locationPermissionAlreadyGranted; /// SAR Navy Blue theme name /// /// In en, this message translates to: /// **'SAR Navy Blue'** String get sarNavyBlue; /// Description for SAR Navy Blue theme /// /// In en, this message translates to: /// **'Professional/Operations Mode'** String get sarNavyBlueDescription; /// Title for recipient selector sheet /// /// In en, this message translates to: /// **'Select Recipient'** String get selectRecipient; /// Subtitle for public channel option /// /// In en, this message translates to: /// **'Broadcast to all nearby'** String get broadcastToAllNearby; /// Placeholder text for recipient search field /// /// In en, this message translates to: /// **'Search recipients...'** String get searchRecipients; /// Message when no contacts match search /// /// In en, this message translates to: /// **'No contacts found'** String get noContactsFound; /// Message when no rooms match search /// /// In en, this message translates to: /// **'No rooms found'** String get noRoomsFound; /// Message when no recipients exist (contacts, rooms, or channels) /// /// In en, this message translates to: /// **'No recipients available'** String get noRecipientsAvailable; /// Message when no channels match the search /// /// In en, this message translates to: /// **'No channels found'** String get noChannelsFound; /// Notification title for new message /// /// In en, this message translates to: /// **'New message'** String get newMessage; /// Channel label in notifications /// /// In en, this message translates to: /// **'Channel'** String get channel; /// Sample team member name /// /// In en, this message translates to: /// **'Police Lead'** String get samplePoliceLead; /// Sample team member name /// /// In en, this message translates to: /// **'Drone Operator'** String get sampleDroneOperator; /// Sample team member name /// /// In en, this message translates to: /// **'Firefighter'** String get sampleFirefighterAlpha; /// Sample team member name /// /// In en, this message translates to: /// **'Medic'** String get sampleMedicCharlie; /// Sample team member name /// /// In en, this message translates to: /// **'Command'** String get sampleCommandDelta; /// Sample team member name /// /// In en, this message translates to: /// **'Fire Engine'** String get sampleFireEngine; /// Sample team member name /// /// In en, this message translates to: /// **'Air Support'** String get sampleAirSupport; /// Sample team member name /// /// In en, this message translates to: /// **'Base Coordinator'** String get sampleBaseCoordinator; /// Emergency channel name /// /// In en, this message translates to: /// **'Emergency'** String get channelEmergency; /// Coordination channel name /// /// In en, this message translates to: /// **'Coordination'** String get channelCoordination; /// Updates channel name /// /// In en, this message translates to: /// **'Updates'** String get channelUpdates; /// Sample sender name /// /// In en, this message translates to: /// **'Sample Team Member'** String get sampleTeamMember; /// Sample sender name /// /// In en, this message translates to: /// **'Sample Scout'** String get sampleScout; /// Sample sender name /// /// In en, this message translates to: /// **'Sample Base'** String get sampleBase; /// Sample sender name /// /// In en, this message translates to: /// **'Sample Searcher'** String get sampleSearcher; /// Sample object note /// /// In en, this message translates to: /// **' Backpack found - blue color'** String get sampleObjectBackpack; /// Sample object note /// /// In en, this message translates to: /// **' Vehicle abandoned - check for owner'** String get sampleObjectVehicle; /// Sample object note /// /// In en, this message translates to: /// **' Camping equipment discovered'** String get sampleObjectCamping; /// Sample object note /// /// In en, this message translates to: /// **' Trail marker found off-path'** String get sampleObjectTrailMarker; /// Sample channel message /// /// In en, this message translates to: /// **'All teams check in'** String get sampleMsgAllTeamsCheckIn; /// Sample channel message /// /// In en, this message translates to: /// **'Weather update: Clear skies, temp 18°C'** String get sampleMsgWeatherUpdate; /// Sample channel message /// /// In en, this message translates to: /// **'Base camp established at staging area'** String get sampleMsgBaseCamp; /// Sample channel message /// /// In en, this message translates to: /// **'Team moving to sector 2'** String get sampleMsgTeamAlpha; /// Sample channel message /// /// In en, this message translates to: /// **'Radio check - all stations respond'** String get sampleMsgRadioCheck; /// Sample channel message /// /// In en, this message translates to: /// **'Water supply available at checkpoint 3'** String get sampleMsgWaterSupply; /// Sample channel message /// /// In en, this message translates to: /// **'Team reporting: sector 1 clear'** String get sampleMsgTeamBravo; /// Sample channel message /// /// In en, this message translates to: /// **'ETA to rally point: 15 minutes'** String get sampleMsgEtaRallyPoint; /// Sample channel message /// /// In en, this message translates to: /// **'Supply drop confirmed for 14:00'** String get sampleMsgSupplyDrop; /// Sample channel message /// /// In en, this message translates to: /// **'Drone survey completed - no findings'** String get sampleMsgDroneSurvey; /// Sample channel message /// /// In en, this message translates to: /// **'Team requesting backup'** String get sampleMsgTeamCharlie; /// Sample channel message /// /// In en, this message translates to: /// **'All units: maintain radio discipline'** String get sampleMsgRadioDiscipline; /// Sample emergency message /// /// In en, this message translates to: /// **'URGENT: Medical assistance needed at sector 4'** String get sampleMsgUrgentMedical; /// Sample emergency message note /// /// In en, this message translates to: /// **' Adult male, conscious'** String get sampleMsgAdultMale; /// Sample emergency message /// /// In en, this message translates to: /// **'Fire spotted - coordinates incoming'** String get sampleMsgFireSpotted; /// Sample emergency message note /// /// In en, this message translates to: /// **' Spreading rapidly!'** String get sampleMsgSpreadingRapidly; /// Sample emergency message /// /// In en, this message translates to: /// **'PRIORITY: Need helicopter support'** String get sampleMsgPriorityHelicopter; /// Sample emergency message /// /// In en, this message translates to: /// **'Medical team en route to your location'** String get sampleMsgMedicalTeamEnRoute; /// Sample emergency message /// /// In en, this message translates to: /// **'Evac helicopter ETA 10 minutes'** String get sampleMsgEvacHelicopter; /// Sample emergency message /// /// In en, this message translates to: /// **'Emergency resolved - all clear'** String get sampleMsgEmergencyResolved; /// Sample emergency message note /// /// In en, this message translates to: /// **' Emergency staging area'** String get sampleMsgEmergencyStagingArea; /// Sample emergency message /// /// In en, this message translates to: /// **'Emergency services notified and responding'** String get sampleMsgEmergencyServices; /// Sample team name /// /// In en, this message translates to: /// **'Team Lead'** String get sampleAlphaTeamLead; /// Sample team name /// /// In en, this message translates to: /// **'Scout'** String get sampleBravoScout; /// Sample team name /// /// In en, this message translates to: /// **'Medic'** String get sampleCharlieMedic; /// Sample team name /// /// In en, this message translates to: /// **'Navigator'** String get sampleDeltaNavigator; /// Sample team name /// /// In en, this message translates to: /// **'Support'** String get sampleEchoSupport; /// Sample team name /// /// In en, this message translates to: /// **'Base Command'** String get sampleBaseCommand; /// Sample team name /// /// In en, this message translates to: /// **'Field Coordinator'** String get sampleFieldCoordinator; /// Sample team name /// /// In en, this message translates to: /// **'Medical Team'** String get sampleMedicalTeam; /// Label for map drawing messages /// /// In en, this message translates to: /// **'Map Drawing'** String get mapDrawing; /// Option to navigate to drawing on map /// /// In en, this message translates to: /// **'Navigate to Drawing'** String get navigateToDrawing; /// Option to copy coordinates to clipboard /// /// In en, this message translates to: /// **'Copy Coordinates'** String get copyCoordinates; /// Option to hide drawing from map /// /// In en, this message translates to: /// **'Hide from Map'** String get hideFromMap; /// Label for line type drawings /// /// In en, this message translates to: /// **'Line Drawing'** String get lineDrawing; /// Label for rectangle type drawings /// /// In en, this message translates to: /// **'Rectangle Drawing'** String get rectangleDrawing; /// Label for manual coordinate input toggle /// /// In en, this message translates to: /// **'Manual Coordinates'** String get manualCoordinates; /// Description for manual coordinate input option /// /// In en, this message translates to: /// **'Enter coordinates manually'** String get enterCoordinatesManually; /// Label for latitude input field /// /// In en, this message translates to: /// **'Latitude'** String get latitudeLabel; /// Label for longitude input field /// /// In en, this message translates to: /// **'Longitude'** String get longitudeLabel; /// Example coordinate format hint /// /// In en, this message translates to: /// **'Example: 46.0569, 14.5058'** String get exampleCoordinates; /// Title for share single drawing dialog /// /// In en, this message translates to: /// **'Share Drawing'** String get shareDrawing; /// Subtitle for public channel sharing option /// /// In en, this message translates to: /// **'Share with all nearby devices'** String get shareWithAllNearbyDevices; /// Header for room sharing section /// /// In en, this message translates to: /// **'Share to Room'** String get shareToRoom; /// Subtitle for room sharing option /// /// In en, this message translates to: /// **'Send to persistent room storage'** String get sendToPersistentStorage; /// Confirmation message for deleting a single drawing /// /// In en, this message translates to: /// **'Are you sure you want to delete this drawing?'** String get deleteDrawingConfirm; /// Success message after deleting a drawing /// /// In en, this message translates to: /// **'Drawing deleted'** String get drawingDeleted; /// Header showing count of user's drawings /// /// In en, this message translates to: /// **'Your Drawings ({count})'** String yourDrawingsCount(int count); /// Status label for shared drawings /// /// In en, this message translates to: /// **'Shared'** String get shared; /// Line drawing type label /// /// In en, this message translates to: /// **'Line'** String get line; /// Rectangle drawing type label /// /// In en, this message translates to: /// **'Rectangle'** String get rectangle; /// Title for update dialog when new version is available /// /// In en, this message translates to: /// **'Update Available'** String get updateAvailable; /// Label for current app version /// /// In en, this message translates to: /// **'Current'** String get currentVersion; /// Label for latest available app version /// /// In en, this message translates to: /// **'Latest'** String get latestVersion; /// Button to download app update /// /// In en, this message translates to: /// **'Download'** String get downloadUpdate; /// Button to dismiss update dialog /// /// In en, this message translates to: /// **'Later'** String get updateLater; /// Label for cadastral parcels WMS overlay layer /// /// In en, this message translates to: /// **'Cadastral Parcels'** String get cadastralParcels; /// Label for forest roads WMS overlay layer /// /// In en, this message translates to: /// **'Forest Roads'** String get forestRoads; /// Section header for WMS overlay layers in layer selector /// /// In en, this message translates to: /// **'WMS Overlays'** String get wmsOverlays; /// Label for hiking/mountain trails WMS overlay layer /// /// In en, this message translates to: /// **'Hiking Trails'** String get hikingTrails; /// Label for main roads WMS overlay layer /// /// In en, this message translates to: /// **'Main Roads'** String get mainRoads; /// Label for house numbers WMS overlay layer /// /// In en, this message translates to: /// **'House Numbers'** String get houseNumbers; /// Label for fire hazard risk zones WMS overlay layer /// /// In en, this message translates to: /// **'Fire Hazard Zones'** String get fireHazardZones; /// Label for historical forest fires WMS overlay layer /// /// In en, this message translates to: /// **'Historical Fires'** String get historicalFires; /// Label for firebreaks WMS overlay layer /// /// In en, this message translates to: /// **'Firebreaks'** String get firebreaks; /// Label for Kras fire zones WMS overlay layer /// /// In en, this message translates to: /// **'Kras Fire Zones'** String get krasFireZones; /// Label for geographic place names WMS overlay layer /// /// In en, this message translates to: /// **'Place Names'** String get placeNames; /// Label for municipality borders WMS overlay layer /// /// In en, this message translates to: /// **'Municipality Borders'** String get municipalityBorders; /// Label for DTK25 topographic base map layer /// /// In en, this message translates to: /// **'Topographic Map 1:25000'** String get topographicMap; /// Header for recent messages overlay on map in fullscreen mode /// /// In en, this message translates to: /// **'Recent Messages'** String get recentMessages; /// Button to add a new channel /// /// In en, this message translates to: /// **'Add Channel'** String get addChannel; /// Label for channel name field /// /// In en, this message translates to: /// **'Channel Name'** String get channelName; /// Hint for channel name field /// /// In en, this message translates to: /// **'e.g., Rescue Team Alpha'** String get channelNameHint; /// Label for channel secret field /// /// In en, this message translates to: /// **'Channel Secret'** String get channelSecret; /// Hint for channel secret field /// /// In en, this message translates to: /// **'Shared password for this channel'** String get channelSecretHint; /// Help text explaining channel secret /// /// In en, this message translates to: /// **'This secret must be shared with all team members who need access to this channel'** String get channelSecretHelp; /// Information banner explaining hash and private channel types /// /// In en, this message translates to: /// **'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.'** String get channelTypesInfo; /// Help text for hash channels (# prefix) /// /// In en, this message translates to: /// **'Hash channel: Secret will be auto-generated from the channel name. Anyone using the same name will join the same channel.'** String get hashChannelInfo; /// Validation error for empty channel name /// /// In en, this message translates to: /// **'Channel name is required'** String get channelNameRequired; /// Validation error for channel name too long /// /// In en, this message translates to: /// **'Channel name must be 31 characters or less'** String get channelNameTooLong; /// Validation error for empty channel secret /// /// In en, this message translates to: /// **'Channel secret is required'** String get channelSecretRequired; /// Validation error for channel secret too long /// /// In en, this message translates to: /// **'Channel secret must be 32 characters or less'** String get channelSecretTooLong; /// Validation error for non-ASCII characters /// /// In en, this message translates to: /// **'Only ASCII characters are allowed'** String get invalidAsciiCharacters; /// Success message after creating channel /// /// In en, this message translates to: /// **'Channel created successfully'** String get channelCreatedSuccessfully; /// Error message when channel creation fails /// /// In en, this message translates to: /// **'Failed to create channel: {error}'** String channelCreationFailed(String error); /// Delete channel button/menu item /// /// In en, this message translates to: /// **'Delete Channel'** String get deleteChannel; /// Confirmation dialog when deleting a channel /// /// In en, this message translates to: /// **'Are you sure you want to delete channel \"{channelName}\"? This action cannot be undone.'** String deleteChannelConfirmation(String channelName); /// Success message after deleting channel /// /// In en, this message translates to: /// **'Channel deleted successfully'** String get channelDeletedSuccessfully; /// Error message when channel deletion fails /// /// In en, this message translates to: /// **'Failed to delete channel: {error}'** String channelDeletionFailed(String error); /// Button text for creating a channel /// /// In en, this message translates to: /// **'Create Channel'** String get createChannel; /// Wizard back button text /// /// In en, this message translates to: /// **'Back'** String get wizardBack; /// Wizard skip button text /// /// In en, this message translates to: /// **'Skip'** String get wizardSkip; /// Wizard next button text /// /// In en, this message translates to: /// **'Next'** String get wizardNext; /// Wizard final button text to complete onboarding /// /// In en, this message translates to: /// **'Get Started'** String get wizardGetStarted; /// Welcome wizard first page title /// /// In en, this message translates to: /// **'Welcome to MeshCore SAR'** String get wizardWelcomeTitle; /// Welcome wizard first page description /// /// In en, this message translates to: /// **'A powerful off-grid communication tool for search and rescue operations. Connect with your team using mesh radio technology when traditional networks are unavailable.'** String get wizardWelcomeDescription; /// Wizard connecting page title /// /// In en, this message translates to: /// **'Connecting to Your Radio'** String get wizardConnectingTitle; /// Wizard connecting page description /// /// In en, this message translates to: /// **'Connect your smartphone to a MeshCore radio device via Bluetooth to start communicating off-grid.'** String get wizardConnectingDescription; /// Wizard connecting feature 1 /// /// In en, this message translates to: /// **'Scan for nearby MeshCore devices'** String get wizardConnectingFeature1; /// Wizard connecting feature 2 /// /// In en, this message translates to: /// **'Pair with your radio via Bluetooth'** String get wizardConnectingFeature2; /// Wizard connecting feature 3 /// /// In en, this message translates to: /// **'Works completely offline - no internet required'** String get wizardConnectingFeature3; /// Wizard channel page title /// /// In en, this message translates to: /// **'Channels'** String get wizardChannelTitle; /// Wizard channel page description /// /// In en, this message translates to: /// **'Broadcast messages to everyone on a channel, perfect for team-wide announcements and coordination.'** String get wizardChannelDescription; /// Wizard channel feature 1 /// /// In en, this message translates to: /// **'Public Channel for general team communication'** String get wizardChannelFeature1; /// Wizard channel feature 2 /// /// In en, this message translates to: /// **'Create custom channels for specific groups'** String get wizardChannelFeature2; /// Wizard channel feature 3 /// /// In en, this message translates to: /// **'Messages are automatically relayed by the mesh'** String get wizardChannelFeature3; /// Wizard contacts page title /// /// In en, this message translates to: /// **'Contacts'** String get wizardContactsTitle; /// Wizard contacts page description /// /// In en, this message translates to: /// **'Your team members appear automatically as they join the mesh network. Send them direct messages or view their location.'** String get wizardContactsDescription; /// Wizard contacts feature 1 /// /// In en, this message translates to: /// **'Contacts discovered automatically'** String get wizardContactsFeature1; /// Wizard contacts feature 2 /// /// In en, this message translates to: /// **'Send private direct messages'** String get wizardContactsFeature2; /// Wizard contacts feature 3 /// /// In en, this message translates to: /// **'View battery level and last seen time'** String get wizardContactsFeature3; /// Wizard map page title /// /// In en, this message translates to: /// **'Map & Location'** String get wizardMapTitle; /// Wizard map page description /// /// In en, this message translates to: /// **'Track your team in real-time and mark important locations for search and rescue operations.'** String get wizardMapDescription; /// Wizard map feature 1 /// /// In en, this message translates to: /// **'SAR markers for found persons, fires, and staging areas'** String get wizardMapFeature1; /// Wizard map feature 2 /// /// In en, this message translates to: /// **'Real-time GPS tracking of team members'** String get wizardMapFeature2; /// Wizard map feature 3 /// /// In en, this message translates to: /// **'Download offline maps for remote areas'** String get wizardMapFeature3; /// Wizard map feature 4 /// /// In en, this message translates to: /// **'Draw shapes and share tactical information'** String get wizardMapFeature4; /// Settings option to re-show welcome wizard /// /// In en, this message translates to: /// **'View Welcome Tutorial'** String get viewWelcomeTutorial; /// Destination option to send SAR marker to all team contacts /// /// In en, this message translates to: /// **'All Team Contacts'** String get allTeamContacts; /// Information about sending to all contacts /// /// In en, this message translates to: /// **'Direct messages with ACKs. Sent to {count} team members.'** String directMessagesInfo(int count); /// Success message after sending SAR marker to all contacts /// /// In en, this message translates to: /// **'SAR marker sent to {count} contacts'** String sarMarkerSentToContacts(int count); /// Message when there are no chat contacts to send to /// /// In en, this message translates to: /// **'No team contacts available'** String get noContactsAvailable; /// No description provided for @reply. /// /// In en, this message translates to: /// **'Reply'** String get reply; /// No description provided for @technicalDetails. /// /// In en, this message translates to: /// **'Technical details'** String get technicalDetails; /// No description provided for @messageTechnicalDetails. /// /// In en, this message translates to: /// **'Message technical details'** String get messageTechnicalDetails; /// No description provided for @linkQuality. /// /// In en, this message translates to: /// **'Link quality'** String get linkQuality; /// No description provided for @delivery. /// /// In en, this message translates to: /// **'Delivery'** String get delivery; /// No description provided for @status. /// /// In en, this message translates to: /// **'Status'** String get status; /// No description provided for @expectedAckTag. /// /// In en, this message translates to: /// **'Expected ACK tag'** String get expectedAckTag; /// No description provided for @roundTrip. /// /// In en, this message translates to: /// **'Round-trip'** String get roundTrip; /// No description provided for @retryAttempt. /// /// In en, this message translates to: /// **'Retry attempt'** String get retryAttempt; /// No description provided for @floodFallback. /// /// In en, this message translates to: /// **'Flood fallback'** String get floodFallback; /// No description provided for @identity. /// /// In en, this message translates to: /// **'Identity'** String get identity; /// No description provided for @messageId. /// /// In en, this message translates to: /// **'Message ID'** String get messageId; /// No description provided for @sender. /// /// In en, this message translates to: /// **'Sender'** String get sender; /// No description provided for @senderKey. /// /// In en, this message translates to: /// **'Sender key'** String get senderKey; /// No description provided for @recipient. /// /// In en, this message translates to: /// **'Recipient'** String get recipient; /// No description provided for @recipientKey. /// /// In en, this message translates to: /// **'Recipient key'** String get recipientKey; /// No description provided for @voice. /// /// In en, this message translates to: /// **'Voice'** String get voice; /// No description provided for @voiceId. /// /// In en, this message translates to: /// **'Voice ID'** String get voiceId; /// No description provided for @envelope. /// /// In en, this message translates to: /// **'Envelope'** String get envelope; /// No description provided for @sessionProgress. /// /// In en, this message translates to: /// **'Session progress'** String get sessionProgress; /// No description provided for @complete. /// /// In en, this message translates to: /// **'Complete'** String get complete; /// No description provided for @rawDump. /// /// In en, this message translates to: /// **'Raw dump'** String get rawDump; /// No description provided for @cannotRetryMissingRecipient. /// /// In en, this message translates to: /// **'Cannot retry: recipient information missing'** String get cannotRetryMissingRecipient; /// No description provided for @voiceUnavailable. /// /// In en, this message translates to: /// **'Voice unavailable right now'** String get voiceUnavailable; /// No description provided for @requestingVoice. /// /// In en, this message translates to: /// **'Requesting voice'** String get requestingVoice; } class _AppLocalizationsDelegate extends LocalizationsDelegate { const _AppLocalizationsDelegate(); @override Future load(Locale locale) { return SynchronousFuture(lookupAppLocalizations(locale)); } @override bool isSupported(Locale locale) => [ 'de', 'el', 'en', 'es', 'fr', 'hr', 'it', 'pl', 'pt', 'ru', 'sl', 'tr', 'uk', 'zh', ].contains(locale.languageCode); @override bool shouldReload(_AppLocalizationsDelegate old) => false; } AppLocalizations lookupAppLocalizations(Locale locale) { // Lookup logic when only language code is specified. switch (locale.languageCode) { case 'de': return AppLocalizationsDe(); case 'el': return AppLocalizationsEl(); case 'en': return AppLocalizationsEn(); case 'es': return AppLocalizationsEs(); case 'fr': return AppLocalizationsFr(); case 'hr': return AppLocalizationsHr(); case 'it': return AppLocalizationsIt(); case 'pl': return AppLocalizationsPl(); case 'pt': return AppLocalizationsPt(); case 'ru': return AppLocalizationsRu(); case 'sl': return AppLocalizationsSl(); case 'tr': return AppLocalizationsTr(); case 'uk': return AppLocalizationsUk(); case 'zh': return AppLocalizationsZh(); } throw FlutterError( 'AppLocalizations.delegate failed to load unsupported locale "$locale". This is likely ' 'an issue with the localizations generation tool. Please file an issue ' 'on GitHub with a reproducible sample app and the gen-l10n configuration ' 'that was used.', ); }