mirror of
https://github.com/dz0ny/meshcore-sar.git
synced 2026-08-11 16:30:28 +00:00
- Updated localization files for German, English, Spanish, French, Croatian, Italian, and Slovenian to include new overlay labels. - Implemented new WMS layers in the map provider and map tab for displaying hiking trails, main roads, house numbers, fire hazard zones, historical fires, firebreaks, Kras fire zones, place names, and municipality borders. - Added toggle functionality for each new overlay in the map provider. - Enhanced the map tab UI to include checkboxes for the new overlays, allowing users to enable or disable them. - Integrated the new WMS layers into the map rendering logic.
2164 lines
49 KiB
Dart
2164 lines
49 KiB
Dart
// ignore: unused_import
|
|
import 'package:intl/intl.dart' as intl;
|
|
import 'app_localizations.dart';
|
|
|
|
// ignore_for_file: type=lint
|
|
|
|
/// The translations for English (`en`).
|
|
class AppLocalizationsEn extends AppLocalizations {
|
|
AppLocalizationsEn([String locale = 'en']) : super(locale);
|
|
|
|
@override
|
|
String get appTitle => 'MeshCore SAR';
|
|
|
|
@override
|
|
String get messages => 'Messages';
|
|
|
|
@override
|
|
String get contacts => 'Contacts';
|
|
|
|
@override
|
|
String get map => 'Map';
|
|
|
|
@override
|
|
String get settings => 'Settings';
|
|
|
|
@override
|
|
String get connect => 'Connect';
|
|
|
|
@override
|
|
String get disconnect => 'Disconnect';
|
|
|
|
@override
|
|
String get scanningForDevices => 'Scanning for devices...';
|
|
|
|
@override
|
|
String get noDevicesFound => 'No devices found';
|
|
|
|
@override
|
|
String get scanAgain => 'Scan Again';
|
|
|
|
@override
|
|
String get tapToConnect => 'Tap to connect';
|
|
|
|
@override
|
|
String get deviceNotConnected => 'Device not connected';
|
|
|
|
@override
|
|
String get locationPermissionDenied => 'Location permission denied';
|
|
|
|
@override
|
|
String get locationPermissionPermanentlyDenied =>
|
|
'Location permission permanently denied. Please enable in Settings.';
|
|
|
|
@override
|
|
String get locationPermissionRequired =>
|
|
'Location permission is required for GPS tracking and team coordination. You can enable it later in Settings.';
|
|
|
|
@override
|
|
String get locationServicesDisabled =>
|
|
'Location services are disabled. Please enable them in Settings.';
|
|
|
|
@override
|
|
String get failedToGetGpsLocation => 'Failed to get GPS location';
|
|
|
|
@override
|
|
String advertisedAtLocation(String latitude, String longitude) {
|
|
return 'Advertised at $latitude, $longitude';
|
|
}
|
|
|
|
@override
|
|
String failedToAdvertise(String error) {
|
|
return 'Failed to advertise: $error';
|
|
}
|
|
|
|
@override
|
|
String reconnecting(int attempt, int max) {
|
|
return 'Reconnecting... ($attempt/$max)';
|
|
}
|
|
|
|
@override
|
|
String get cancelReconnection => 'Cancel reconnection';
|
|
|
|
@override
|
|
String get mapManagement => 'Map Management';
|
|
|
|
@override
|
|
String get general => 'General';
|
|
|
|
@override
|
|
String get theme => 'Theme';
|
|
|
|
@override
|
|
String get chooseTheme => 'Choose Theme';
|
|
|
|
@override
|
|
String get light => 'Light';
|
|
|
|
@override
|
|
String get dark => 'Dark';
|
|
|
|
@override
|
|
String get blueLightTheme => 'Blue light theme';
|
|
|
|
@override
|
|
String get blueDarkTheme => 'Blue dark theme';
|
|
|
|
@override
|
|
String get sarRed => 'SAR Red';
|
|
|
|
@override
|
|
String get alertEmergencyMode => 'Alert/Emergency mode';
|
|
|
|
@override
|
|
String get sarGreen => 'SAR Green';
|
|
|
|
@override
|
|
String get safeAllClearMode => 'Safe/All Clear mode';
|
|
|
|
@override
|
|
String get autoSystem => 'Auto (System)';
|
|
|
|
@override
|
|
String get followSystemTheme => 'Follow system theme';
|
|
|
|
@override
|
|
String get showRxTxIndicators => 'Show RX/TX Indicators';
|
|
|
|
@override
|
|
String get displayPacketActivity =>
|
|
'Display packet activity indicators in top bar';
|
|
|
|
@override
|
|
String get simpleMode => 'Simple Mode';
|
|
|
|
@override
|
|
String get simpleModeDescription =>
|
|
'Hide non-essential information in messages and contacts';
|
|
|
|
@override
|
|
String get language => 'Language';
|
|
|
|
@override
|
|
String get chooseLanguage => 'Choose Language';
|
|
|
|
@override
|
|
String get english => 'English';
|
|
|
|
@override
|
|
String get slovenian => 'Slovenian';
|
|
|
|
@override
|
|
String get croatian => 'Croatian';
|
|
|
|
@override
|
|
String get german => 'German';
|
|
|
|
@override
|
|
String get spanish => 'Spanish';
|
|
|
|
@override
|
|
String get french => 'French';
|
|
|
|
@override
|
|
String get italian => 'Italian';
|
|
|
|
@override
|
|
String get locationBroadcasting => 'Location Broadcasting';
|
|
|
|
@override
|
|
String get autoLocationTracking => 'Auto Location Tracking';
|
|
|
|
@override
|
|
String get automaticallyBroadcastPosition =>
|
|
'Automatically broadcast position updates';
|
|
|
|
@override
|
|
String get configureTracking => 'Configure Tracking';
|
|
|
|
@override
|
|
String get distanceAndTimeThresholds => 'Distance and time thresholds';
|
|
|
|
@override
|
|
String get locationTrackingConfiguration => 'Location Tracking Configuration';
|
|
|
|
@override
|
|
String get configureWhenLocationBroadcasts =>
|
|
'Configure when location broadcasts are sent to the mesh network';
|
|
|
|
@override
|
|
String get minimumDistance => 'Minimum Distance';
|
|
|
|
@override
|
|
String broadcastAfterMoving(String distance) {
|
|
return 'Broadcast only after moving $distance meters';
|
|
}
|
|
|
|
@override
|
|
String get maximumDistance => 'Maximum Distance';
|
|
|
|
@override
|
|
String alwaysBroadcastAfterMoving(String distance) {
|
|
return 'Always broadcast after moving $distance meters';
|
|
}
|
|
|
|
@override
|
|
String get minimumTimeInterval => 'Minimum Time Interval';
|
|
|
|
@override
|
|
String alwaysBroadcastEvery(String duration) {
|
|
return 'Always broadcast every $duration';
|
|
}
|
|
|
|
@override
|
|
String get save => 'Save';
|
|
|
|
@override
|
|
String get cancel => 'Cancel';
|
|
|
|
@override
|
|
String get close => 'Close';
|
|
|
|
@override
|
|
String get about => 'About';
|
|
|
|
@override
|
|
String get appVersion => 'App Version';
|
|
|
|
@override
|
|
String get appName => 'App Name';
|
|
|
|
@override
|
|
String get aboutMeshCoreSar => 'About MeshCore SAR';
|
|
|
|
@override
|
|
String get aboutDescription =>
|
|
'A Search & Rescue application designed for emergency response teams. Features include:\n\n• BLE mesh networking for device-to-device communication\n• Offline maps with multiple layer options\n• Real-time team member tracking\n• SAR tactical markers (found person, fire, staging)\n• Contact management and messaging\n• GPS tracking with compass heading\n• Map tile caching for offline use';
|
|
|
|
@override
|
|
String get technologiesUsed => 'Technologies Used:';
|
|
|
|
@override
|
|
String get technologiesList =>
|
|
'• Flutter for cross-platform development\n• BLE (Bluetooth Low Energy) for mesh networking\n• OpenStreetMap for mapping\n• Provider for state management\n• SharedPreferences for local storage';
|
|
|
|
@override
|
|
String get moreInfo => 'More Info';
|
|
|
|
@override
|
|
String get learnMoreAbout => 'Learn more about MeshCore SAR';
|
|
|
|
@override
|
|
String get developer => 'Developer';
|
|
|
|
@override
|
|
String get packageName => 'Package Name';
|
|
|
|
@override
|
|
String get sampleData => 'Sample Data';
|
|
|
|
@override
|
|
String get sampleDataDescription =>
|
|
'Load or clear sample contacts, channel messages, and SAR markers for testing';
|
|
|
|
@override
|
|
String get loadSampleData => 'Load Sample Data';
|
|
|
|
@override
|
|
String get clearAllData => 'Clear All Data';
|
|
|
|
@override
|
|
String get clearAllDataConfirmTitle => 'Clear All Data';
|
|
|
|
@override
|
|
String get clearAllDataConfirmMessage =>
|
|
'This will clear all contacts and SAR markers. Are you sure?';
|
|
|
|
@override
|
|
String get clear => 'Clear';
|
|
|
|
@override
|
|
String loadedSampleData(
|
|
int teamCount,
|
|
int channelCount,
|
|
int sarCount,
|
|
int messageCount,
|
|
) {
|
|
return 'Loaded $teamCount team members, $channelCount channels, $sarCount SAR markers, $messageCount messages';
|
|
}
|
|
|
|
@override
|
|
String failedToLoadSampleData(String error) {
|
|
return 'Failed to load sample data: $error';
|
|
}
|
|
|
|
@override
|
|
String get allDataCleared => 'All data cleared';
|
|
|
|
@override
|
|
String get failedToStartBackgroundTracking =>
|
|
'Failed to start background tracking. Check permissions and BLE connection.';
|
|
|
|
@override
|
|
String locationBroadcast(String latitude, String longitude) {
|
|
return 'Location broadcast: $latitude, $longitude';
|
|
}
|
|
|
|
@override
|
|
String get defaultPinInfo =>
|
|
'The default pin for devices without a screen is 123456. Trouble pairing? Forget the bluetooth device in system settings.';
|
|
|
|
@override
|
|
String get noMessagesYet => 'No messages yet';
|
|
|
|
@override
|
|
String get pullDownToSync => 'Pull down to sync messages';
|
|
|
|
@override
|
|
String get deleteContact => 'Delete Contact';
|
|
|
|
@override
|
|
String get delete => 'Delete';
|
|
|
|
@override
|
|
String get viewOnMap => 'View on Map';
|
|
|
|
@override
|
|
String get refresh => 'Refresh';
|
|
|
|
@override
|
|
String get sendDirectMessage => 'Send';
|
|
|
|
@override
|
|
String get resetPath => 'Reset Path (Re-route)';
|
|
|
|
@override
|
|
String get publicKeyCopied => 'Public key copied to clipboard';
|
|
|
|
@override
|
|
String copiedToClipboard(String label) {
|
|
return '$label copied to clipboard';
|
|
}
|
|
|
|
@override
|
|
String get pleaseEnterPassword => 'Please enter a password';
|
|
|
|
@override
|
|
String failedToSyncContacts(String error) {
|
|
return 'Failed to sync contacts: $error';
|
|
}
|
|
|
|
@override
|
|
String get loggedInSuccessfully =>
|
|
'Logged in successfully! Waiting for room messages...';
|
|
|
|
@override
|
|
String get loginFailed => 'Login failed - incorrect password';
|
|
|
|
@override
|
|
String loggingIn(String roomName) {
|
|
return 'Logging in to $roomName...';
|
|
}
|
|
|
|
@override
|
|
String failedToSendLogin(String error) {
|
|
return 'Failed to send login: $error';
|
|
}
|
|
|
|
@override
|
|
String get lowLocationAccuracy => 'Low Location Accuracy';
|
|
|
|
@override
|
|
String get continue_ => 'Continue';
|
|
|
|
@override
|
|
String get sendSarMarker => 'Send SAR marker';
|
|
|
|
@override
|
|
String get deleteDrawing => 'Delete Drawing';
|
|
|
|
@override
|
|
String get drawingTools => 'Drawing Tools';
|
|
|
|
@override
|
|
String get drawLine => 'Draw Line';
|
|
|
|
@override
|
|
String get drawLineDesc => 'Draw a freehand line on the map';
|
|
|
|
@override
|
|
String get drawRectangle => 'Draw Rectangle';
|
|
|
|
@override
|
|
String get drawRectangleDesc => 'Draw a rectangular area on the map';
|
|
|
|
@override
|
|
String get measureDistance => 'Measure Distance';
|
|
|
|
@override
|
|
String get measureDistanceDesc => 'Long press two points to measure';
|
|
|
|
@override
|
|
String get clearMeasurement => 'Clear Measurement';
|
|
|
|
@override
|
|
String distanceLabel(String distance) {
|
|
return 'Distance: $distance';
|
|
}
|
|
|
|
@override
|
|
String get longPressForSecondPoint => 'Long press for second point';
|
|
|
|
@override
|
|
String get longPressToStartMeasurement => 'Long press to set first point';
|
|
|
|
@override
|
|
String get longPressToStartNewMeasurement =>
|
|
'Long press to start new measurement';
|
|
|
|
@override
|
|
String get shareDrawings => 'Share Drawings';
|
|
|
|
@override
|
|
String get clearAllDrawings => 'Clear All Drawings';
|
|
|
|
@override
|
|
String get completeLine => 'Complete Line';
|
|
|
|
@override
|
|
String broadcastDrawingsToTeam(int count, String plural) {
|
|
return 'Broadcast $count drawing$plural to team';
|
|
}
|
|
|
|
@override
|
|
String removeAllDrawings(int count, String plural) {
|
|
return 'Remove all $count drawing$plural';
|
|
}
|
|
|
|
@override
|
|
String deleteAllDrawingsConfirm(int count, String plural) {
|
|
return 'Delete all $count drawing$plural from the map?';
|
|
}
|
|
|
|
@override
|
|
String get drawing => 'Drawing';
|
|
|
|
@override
|
|
String shareDrawingsCount(int count, String plural) {
|
|
return 'Share $count Drawing$plural';
|
|
}
|
|
|
|
@override
|
|
String sentDrawingsToRoom(int count, String plural, String roomName) {
|
|
return 'Sent $count map drawing$plural to $roomName';
|
|
}
|
|
|
|
@override
|
|
String sharedDrawingsToRoom(
|
|
int success,
|
|
int total,
|
|
String plural,
|
|
String roomName,
|
|
) {
|
|
return 'Shared $success/$total drawing$plural to $roomName';
|
|
}
|
|
|
|
@override
|
|
String get showReceivedDrawings => 'Show Received Drawings';
|
|
|
|
@override
|
|
String get showingAllDrawings => 'Showing all drawings';
|
|
|
|
@override
|
|
String get showingOnlyYourDrawings => 'Showing only your drawings';
|
|
|
|
@override
|
|
String get showSarMarkers => 'Show SAR Markers';
|
|
|
|
@override
|
|
String get showingSarMarkers => 'Showing SAR markers';
|
|
|
|
@override
|
|
String get hidingSarMarkers => 'Hiding SAR markers';
|
|
|
|
@override
|
|
String get clearAll => 'Clear All';
|
|
|
|
@override
|
|
String get noLocalDrawings => 'No local drawings to share';
|
|
|
|
@override
|
|
String get publicChannel => 'Public Channel';
|
|
|
|
@override
|
|
String get broadcastToAll => 'Broadcast to all nearby nodes (ephemeral)';
|
|
|
|
@override
|
|
String get storedPermanently => 'Stored permanently in room';
|
|
|
|
@override
|
|
String drawingsSentToPublicChannel(int count, String plural) {
|
|
return 'Sent $count map drawing$plural to Public Channel';
|
|
}
|
|
|
|
@override
|
|
String drawingsSharedToPublicChannel(int success, int total) {
|
|
return 'Shared $success/$total drawings to Public Channel';
|
|
}
|
|
|
|
@override
|
|
String get notConnectedToDevice => 'Not connected to device';
|
|
|
|
@override
|
|
String get directMessage => 'Direct Message';
|
|
|
|
@override
|
|
String directMessageSentTo(String contactName) {
|
|
return 'Direct message sent to $contactName';
|
|
}
|
|
|
|
@override
|
|
String failedToSend(String error) {
|
|
return 'Failed to send: $error';
|
|
}
|
|
|
|
@override
|
|
String directMessageInfo(String contactName) {
|
|
return 'This message will be sent directly to $contactName. It will also appear in the main messages feed.';
|
|
}
|
|
|
|
@override
|
|
String get typeYourMessage => 'Type your message...';
|
|
|
|
@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 myLocation => 'My 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 bearing => 'Bearing';
|
|
|
|
@override
|
|
String get direction => 'Direction';
|
|
|
|
@override
|
|
String get filterMarkers => 'Filter Markers';
|
|
|
|
@override
|
|
String get filterMarkersTooltip => 'Filter markers';
|
|
|
|
@override
|
|
String get contactsFilter => 'Contacts';
|
|
|
|
@override
|
|
String get repeatersFilter => 'Repeaters';
|
|
|
|
@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';
|
|
}
|
|
|
|
@override
|
|
String get noContactsYet => 'No contacts yet';
|
|
|
|
@override
|
|
String get connectToDeviceToLoadContacts =>
|
|
'Connect to a device to load contacts';
|
|
|
|
@override
|
|
String get teamMembers => 'Team Members';
|
|
|
|
@override
|
|
String get repeaters => 'Repeaters';
|
|
|
|
@override
|
|
String get rooms => 'Rooms';
|
|
|
|
@override
|
|
String get channels => 'Channels';
|
|
|
|
@override
|
|
String get cacheStatistics => 'Cache Statistics';
|
|
|
|
@override
|
|
String get totalTiles => 'Total Tiles';
|
|
|
|
@override
|
|
String get cacheSize => 'Cache Size';
|
|
|
|
@override
|
|
String get storeName => 'Store Name';
|
|
|
|
@override
|
|
String get noCacheStatistics => 'No cache statistics available';
|
|
|
|
@override
|
|
String get downloadRegion => 'Download Region';
|
|
|
|
@override
|
|
String get mapLayer => 'Map Layer';
|
|
|
|
@override
|
|
String get regionBounds => 'Region Bounds';
|
|
|
|
@override
|
|
String get north => 'North';
|
|
|
|
@override
|
|
String get south => 'South';
|
|
|
|
@override
|
|
String get east => 'East';
|
|
|
|
@override
|
|
String get west => 'West';
|
|
|
|
@override
|
|
String get zoomLevels => 'Zoom Levels';
|
|
|
|
@override
|
|
String minZoom(int zoom) {
|
|
return 'Min: $zoom';
|
|
}
|
|
|
|
@override
|
|
String maxZoom(int zoom) {
|
|
return 'Max: $zoom';
|
|
}
|
|
|
|
@override
|
|
String get downloadingDots => 'Downloading...';
|
|
|
|
@override
|
|
String get cancelDownload => 'Cancel Download';
|
|
|
|
@override
|
|
String get downloadRegionButton => 'Download Region';
|
|
|
|
@override
|
|
String get downloadNote =>
|
|
'Note: Large regions or high zoom levels may take significant time and storage.';
|
|
|
|
@override
|
|
String get cacheManagement => 'Cache Management';
|
|
|
|
@override
|
|
String get clearAllMaps => 'Clear All Maps';
|
|
|
|
@override
|
|
String get clearMapsConfirmTitle => 'Clear All Maps';
|
|
|
|
@override
|
|
String get clearMapsConfirmMessage =>
|
|
'Are you sure you want to delete all downloaded maps? This action cannot be undone.';
|
|
|
|
@override
|
|
String get mapDownloadCompleted => 'Map download completed!';
|
|
|
|
@override
|
|
String get cacheClearedSuccessfully => 'Cache cleared successfully!';
|
|
|
|
@override
|
|
String get downloadCancelled => 'Download cancelled';
|
|
|
|
@override
|
|
String get startingDownload => 'Starting download...';
|
|
|
|
@override
|
|
String get downloadingMapTiles => 'Downloading map tiles...';
|
|
|
|
@override
|
|
String get downloadCompletedSuccessfully =>
|
|
'Download completed successfully!';
|
|
|
|
@override
|
|
String get cancellingDownload => 'Cancelling download...';
|
|
|
|
@override
|
|
String errorLoadingStats(String error) {
|
|
return 'Error loading stats: $error';
|
|
}
|
|
|
|
@override
|
|
String downloadFailed(String error) {
|
|
return 'Download failed: $error';
|
|
}
|
|
|
|
@override
|
|
String cancelFailed(String error) {
|
|
return 'Cancel failed: $error';
|
|
}
|
|
|
|
@override
|
|
String clearCacheFailed(String error) {
|
|
return 'Clear cache failed: $error';
|
|
}
|
|
|
|
@override
|
|
String minZoomError(String error) {
|
|
return 'Min zoom: $error';
|
|
}
|
|
|
|
@override
|
|
String maxZoomError(String error) {
|
|
return 'Max zoom: $error';
|
|
}
|
|
|
|
@override
|
|
String get minZoomGreaterThanMax =>
|
|
'Minimum zoom must be less than or equal to maximum zoom';
|
|
|
|
@override
|
|
String get selectMapLayer => 'Select Map Layer';
|
|
|
|
@override
|
|
String get mapOptions => 'Map Options';
|
|
|
|
@override
|
|
String get showLegend => 'Show Legend';
|
|
|
|
@override
|
|
String get displayMarkerTypeCounts => 'Display marker type counts';
|
|
|
|
@override
|
|
String get rotateMapWithHeading => 'Rotate Map with Heading';
|
|
|
|
@override
|
|
String get mapFollowsDirection => 'Map follows your direction when moving';
|
|
|
|
@override
|
|
String get resetMapRotation => 'Reset Rotation';
|
|
|
|
@override
|
|
String get resetMapRotationTooltip => 'Reset map to north';
|
|
|
|
@override
|
|
String get showMapDebugInfo => 'Show Map Debug Info';
|
|
|
|
@override
|
|
String get displayZoomLevelBounds => 'Display zoom level and bounds';
|
|
|
|
@override
|
|
String get fullscreenMode => 'Fullscreen Mode';
|
|
|
|
@override
|
|
String get hideUiFullMapView => 'Hide all UI controls for full map view';
|
|
|
|
@override
|
|
String get openStreetMap => 'OpenStreetMap';
|
|
|
|
@override
|
|
String get openTopoMap => 'OpenTopoMap';
|
|
|
|
@override
|
|
String get esriSatellite => 'ESRI Satellite';
|
|
|
|
@override
|
|
String get googleHybrid => 'Google Hybrid';
|
|
|
|
@override
|
|
String get googleRoadmap => 'Google Roadmap';
|
|
|
|
@override
|
|
String get googleTerrain => 'Google Terrain';
|
|
|
|
@override
|
|
String get downloadVisibleArea => 'Download visible area';
|
|
|
|
@override
|
|
String get initializingMap => 'Initializing map...';
|
|
|
|
@override
|
|
String get dragToPosition => 'Drag to Position';
|
|
|
|
@override
|
|
String get createSarMarker => 'Create SAR Marker';
|
|
|
|
@override
|
|
String get compass => 'Compass';
|
|
|
|
@override
|
|
String get navigationAndContacts => 'Navigation & Contacts';
|
|
|
|
@override
|
|
String get sarAlert => 'SAR ALERT';
|
|
|
|
@override
|
|
String get messageSentToPublicChannel => 'Message sent to public channel';
|
|
|
|
@override
|
|
String get pleaseSelectRoomToSendSar =>
|
|
'Please select a room to send SAR marker';
|
|
|
|
@override
|
|
String failedToSendSarMarker(String error) {
|
|
return 'Failed to send SAR marker: $error';
|
|
}
|
|
|
|
@override
|
|
String sarMarkerSentTo(String roomName) {
|
|
return 'SAR marker sent to $roomName';
|
|
}
|
|
|
|
@override
|
|
String get notConnectedCannotSync => 'Not connected - cannot sync messages';
|
|
|
|
@override
|
|
String syncedMessageCount(int count) {
|
|
return 'Synced $count message(s)';
|
|
}
|
|
|
|
@override
|
|
String get noNewMessages => 'No new messages';
|
|
|
|
@override
|
|
String syncFailed(String error) {
|
|
return 'Sync failed: $error';
|
|
}
|
|
|
|
@override
|
|
String get failedToResendMessage => 'Failed to resend message';
|
|
|
|
@override
|
|
String get retryingMessage => 'Retrying message...';
|
|
|
|
@override
|
|
String retryFailed(String error) {
|
|
return 'Retry failed: $error';
|
|
}
|
|
|
|
@override
|
|
String get textCopiedToClipboard => 'Text copied to clipboard';
|
|
|
|
@override
|
|
String get cannotReplySenderMissing =>
|
|
'Cannot reply: sender information missing';
|
|
|
|
@override
|
|
String get cannotReplyContactNotFound => 'Cannot reply: contact not found';
|
|
|
|
@override
|
|
String get messageDeleted => 'Message deleted';
|
|
|
|
@override
|
|
String get copyText => 'Copy text';
|
|
|
|
@override
|
|
String get saveAsTemplate => 'Save as Template';
|
|
|
|
@override
|
|
String get templateSaved => 'Template saved successfully';
|
|
|
|
@override
|
|
String get templateAlreadyExists => 'Template with this emoji already exists';
|
|
|
|
@override
|
|
String get deleteMessage => 'Delete message';
|
|
|
|
@override
|
|
String get deleteMessageConfirmation =>
|
|
'Are you sure you want to delete this message?';
|
|
|
|
@override
|
|
String get shareLocation => 'Share location';
|
|
|
|
@override
|
|
String shareLocationText(
|
|
String markerInfo,
|
|
String lat,
|
|
String lon,
|
|
String url,
|
|
) {
|
|
return '$markerInfo\n\nCoordinates: $lat, $lon\n\nGoogle Maps: $url';
|
|
}
|
|
|
|
@override
|
|
String get sarLocationShare => 'SAR Location';
|
|
|
|
@override
|
|
String get locationShared => 'Location shared';
|
|
|
|
@override
|
|
String get refreshedContacts => 'Refreshed contacts';
|
|
|
|
@override
|
|
String get justNow => 'Just now';
|
|
|
|
@override
|
|
String minutesAgo(int minutes) {
|
|
return '${minutes}m ago';
|
|
}
|
|
|
|
@override
|
|
String hoursAgo(int hours) {
|
|
return '${hours}h ago';
|
|
}
|
|
|
|
@override
|
|
String daysAgo(int days) {
|
|
return '${days}d ago';
|
|
}
|
|
|
|
@override
|
|
String secondsAgo(int seconds) {
|
|
return '${seconds}s ago';
|
|
}
|
|
|
|
@override
|
|
String get sending => 'Sending...';
|
|
|
|
@override
|
|
String get sent => 'Sent';
|
|
|
|
@override
|
|
String get delivered => 'Delivered';
|
|
|
|
@override
|
|
String deliveredWithTime(int time) {
|
|
return 'Delivered (${time}ms)';
|
|
}
|
|
|
|
@override
|
|
String get failed => 'Failed';
|
|
|
|
@override
|
|
String get broadcast => 'Broadcast';
|
|
|
|
@override
|
|
String get sarMarkerFoundPerson => 'Found Person';
|
|
|
|
@override
|
|
String get sarMarkerFire => 'Fire Location';
|
|
|
|
@override
|
|
String get sarMarkerStagingArea => 'Staging Area';
|
|
|
|
@override
|
|
String get sarMarkerObject => 'Object Found';
|
|
|
|
@override
|
|
String get from => 'From';
|
|
|
|
@override
|
|
String get coordinates => 'Coordinates';
|
|
|
|
@override
|
|
String get tapToViewOnMap => 'Tap to view on map';
|
|
|
|
@override
|
|
String get radioSettings => 'Radio Settings';
|
|
|
|
@override
|
|
String get frequencyMHz => 'Frequency (MHz)';
|
|
|
|
@override
|
|
String get frequencyExample => 'e.g., 869.618';
|
|
|
|
@override
|
|
String get bandwidth => 'Bandwidth';
|
|
|
|
@override
|
|
String get spreadingFactor => 'Spreading Factor';
|
|
|
|
@override
|
|
String get codingRate => 'Coding Rate';
|
|
|
|
@override
|
|
String get txPowerDbm => 'TX Power (dBm)';
|
|
|
|
@override
|
|
String maxPowerDbm(int power) {
|
|
return 'Max: $power dBm';
|
|
}
|
|
|
|
@override
|
|
String get you => 'You';
|
|
|
|
@override
|
|
String get offlineVectorMaps => 'Offline Vector Maps';
|
|
|
|
@override
|
|
String get offlineVectorMapsDescription =>
|
|
'Import and manage offline vector map tiles (MBTiles format) for use without internet connection';
|
|
|
|
@override
|
|
String get importMbtiles => 'Import MBTiles File';
|
|
|
|
@override
|
|
String get importMbtilesNote =>
|
|
'Supports MBTiles files with vector tiles (PBF/MVT format). Geofabrik extracts work great!';
|
|
|
|
@override
|
|
String get noMbtilesFiles => 'No offline vector maps found';
|
|
|
|
@override
|
|
String get mbtilesImportedSuccessfully =>
|
|
'MBTiles file imported successfully';
|
|
|
|
@override
|
|
String get failedToImportMbtiles => 'Failed to import MBTiles file';
|
|
|
|
@override
|
|
String get deleteMbtilesConfirmTitle => 'Delete Offline Map';
|
|
|
|
@override
|
|
String deleteMbtilesConfirmMessage(String name) {
|
|
return 'Are you sure you want to delete \"$name\"? This will permanently remove the offline map.';
|
|
}
|
|
|
|
@override
|
|
String get mbtilesDeletedSuccessfully => 'Offline map deleted successfully';
|
|
|
|
@override
|
|
String get failedToDeleteMbtiles => 'Failed to delete offline map';
|
|
|
|
@override
|
|
String get importExportCachedTiles => 'Import/Export Cached Tiles';
|
|
|
|
@override
|
|
String get importExportDescription =>
|
|
'Backup, share, and restore downloaded map tiles between devices';
|
|
|
|
@override
|
|
String get exportTilesToFile => 'Export Tiles to File';
|
|
|
|
@override
|
|
String get importTilesFromFile => 'Import Tiles from File';
|
|
|
|
@override
|
|
String get selectExportLocation => 'Select Export Location';
|
|
|
|
@override
|
|
String get selectImportFile => 'Select Tile Archive';
|
|
|
|
@override
|
|
String get exportingTiles => 'Exporting tiles...';
|
|
|
|
@override
|
|
String get importingTiles => 'Importing tiles...';
|
|
|
|
@override
|
|
String exportSuccess(int count) {
|
|
return 'Exported $count tiles successfully';
|
|
}
|
|
|
|
@override
|
|
String importSuccess(int count) {
|
|
return 'Imported $count stores successfully';
|
|
}
|
|
|
|
@override
|
|
String exportFailed(String error) {
|
|
return 'Export failed: $error';
|
|
}
|
|
|
|
@override
|
|
String importFailed(String error) {
|
|
return 'Import failed: $error';
|
|
}
|
|
|
|
@override
|
|
String get exportNote =>
|
|
'Creates a compressed archive (.fmtc) file that can be shared and imported on other devices.';
|
|
|
|
@override
|
|
String get importNote =>
|
|
'Imports map tiles from a previously exported archive file. Tiles will be merged with existing cache.';
|
|
|
|
@override
|
|
String get noTilesToExport => 'No tiles available to export';
|
|
|
|
@override
|
|
String archiveContainsStores(int count) {
|
|
return 'Archive contains $count stores';
|
|
}
|
|
|
|
@override
|
|
String get vectorTiles => 'Vector Tiles';
|
|
|
|
@override
|
|
String get schema => 'Schema';
|
|
|
|
@override
|
|
String get unknown => 'Unknown';
|
|
|
|
@override
|
|
String get bounds => 'Bounds';
|
|
|
|
@override
|
|
String get onlineLayers => 'Online Layers';
|
|
|
|
@override
|
|
String get offlineLayers => 'Offline Layers';
|
|
|
|
@override
|
|
String get locationTrail => 'Location Trail';
|
|
|
|
@override
|
|
String get showTrailOnMap => 'Show Trail on Map';
|
|
|
|
@override
|
|
String get trailVisible => 'Trail is visible on the map';
|
|
|
|
@override
|
|
String get trailHiddenRecording => 'Trail is hidden (still recording)';
|
|
|
|
@override
|
|
String get duration => 'Duration';
|
|
|
|
@override
|
|
String get points => 'Points';
|
|
|
|
@override
|
|
String get clearTrail => 'Clear Trail';
|
|
|
|
@override
|
|
String get clearTrailQuestion => 'Clear Trail?';
|
|
|
|
@override
|
|
String get clearTrailConfirmation =>
|
|
'Are you sure you want to clear the current location trail? This action cannot be undone.';
|
|
|
|
@override
|
|
String get noTrailRecorded => 'No trail recorded yet';
|
|
|
|
@override
|
|
String get startTrackingToRecord =>
|
|
'Start location tracking to record your trail';
|
|
|
|
@override
|
|
String get trailControls => 'Trail Controls';
|
|
|
|
@override
|
|
String get exportTrailToGpx => 'Export Trail to GPX';
|
|
|
|
@override
|
|
String get importTrailFromGpx => 'Import Trail from GPX';
|
|
|
|
@override
|
|
String get trailExportedSuccessfully => 'Trail exported successfully!';
|
|
|
|
@override
|
|
String get failedToExportTrail => 'Failed to export trail';
|
|
|
|
@override
|
|
String failedToImportTrail(String error) {
|
|
return 'Failed to import trail: $error';
|
|
}
|
|
|
|
@override
|
|
String get importTrail => 'Import Trail';
|
|
|
|
@override
|
|
String importTrailQuestion(int pointCount) {
|
|
return 'Import trail with $pointCount points?\n\nYou can replace your current trail or view it alongside.';
|
|
}
|
|
|
|
@override
|
|
String get viewAlongside => 'View Alongside';
|
|
|
|
@override
|
|
String get replaceCurrent => 'Replace Current';
|
|
|
|
@override
|
|
String trailImported(int pointCount) {
|
|
return 'Trail imported! ($pointCount points)';
|
|
}
|
|
|
|
@override
|
|
String trailReplaced(int pointCount) {
|
|
return 'Trail replaced! ($pointCount points)';
|
|
}
|
|
|
|
@override
|
|
String get contactTrails => 'Contact Trails';
|
|
|
|
@override
|
|
String get showAllContactTrails => 'Show All Contact Trails';
|
|
|
|
@override
|
|
String get noContactsWithLocationHistory =>
|
|
'No contacts with location history';
|
|
|
|
@override
|
|
String showingTrailsForContacts(int count) {
|
|
return 'Showing trails for $count contacts';
|
|
}
|
|
|
|
@override
|
|
String get individualContactTrails => 'Individual Contact Trails';
|
|
|
|
@override
|
|
String get deviceInformation => 'Device Information';
|
|
|
|
@override
|
|
String get bleName => 'BLE Name';
|
|
|
|
@override
|
|
String get meshName => 'Mesh Name';
|
|
|
|
@override
|
|
String get notSet => 'Not set';
|
|
|
|
@override
|
|
String get model => 'Model';
|
|
|
|
@override
|
|
String get version => 'Version';
|
|
|
|
@override
|
|
String get buildDate => 'Build Date';
|
|
|
|
@override
|
|
String get firmware => 'Firmware';
|
|
|
|
@override
|
|
String get maxContacts => 'Max Contacts';
|
|
|
|
@override
|
|
String get maxChannels => 'Max Channels';
|
|
|
|
@override
|
|
String get publicInfo => 'Public Info';
|
|
|
|
@override
|
|
String get meshNetworkName => 'Mesh Network Name';
|
|
|
|
@override
|
|
String get nameBroadcastInMesh => 'Name broadcast in mesh advertisements';
|
|
|
|
@override
|
|
String get telemetryAndLocationSharing => 'Telemetry & Location Sharing';
|
|
|
|
@override
|
|
String get lat => 'Lat';
|
|
|
|
@override
|
|
String get lon => 'Lon';
|
|
|
|
@override
|
|
String get useCurrentLocation => 'Use current location';
|
|
|
|
@override
|
|
String get noneUnknown => 'None/Unknown';
|
|
|
|
@override
|
|
String get chatNode => 'Chat Node';
|
|
|
|
@override
|
|
String get repeater => 'Repeater';
|
|
|
|
@override
|
|
String get roomChannel => 'Room/Channel';
|
|
|
|
@override
|
|
String typeNumber(int number) {
|
|
return 'Type $number';
|
|
}
|
|
|
|
@override
|
|
String copiedToClipboardShort(String label) {
|
|
return 'Copied $label to clipboard';
|
|
}
|
|
|
|
@override
|
|
String failedToSave(String error) {
|
|
return 'Failed to save: $error';
|
|
}
|
|
|
|
@override
|
|
String failedToGetLocation(String error) {
|
|
return 'Failed to get location: $error';
|
|
}
|
|
|
|
@override
|
|
String get sarTemplates => 'SAR Templates';
|
|
|
|
@override
|
|
String get manageSarTemplates => 'Manage cursor on target templates';
|
|
|
|
@override
|
|
String get addTemplate => 'Add Template';
|
|
|
|
@override
|
|
String get editTemplate => 'Edit Template';
|
|
|
|
@override
|
|
String get deleteTemplate => 'Delete Template';
|
|
|
|
@override
|
|
String get templateName => 'Template Name';
|
|
|
|
@override
|
|
String get templateNameHint => 'e.g. Found Person';
|
|
|
|
@override
|
|
String get templateEmoji => 'Emoji';
|
|
|
|
@override
|
|
String get emojiRequired => 'Emoji is required';
|
|
|
|
@override
|
|
String get nameRequired => 'Name is required';
|
|
|
|
@override
|
|
String get templateDescription => 'Description (Optional)';
|
|
|
|
@override
|
|
String get templateDescriptionHint => 'Add additional context...';
|
|
|
|
@override
|
|
String get templateColor => 'Color';
|
|
|
|
@override
|
|
String get previewFormat => 'Preview (SAR Message Format)';
|
|
|
|
@override
|
|
String get importFromClipboard => 'Import';
|
|
|
|
@override
|
|
String get exportToClipboard => 'Export';
|
|
|
|
@override
|
|
String deleteTemplateConfirmation(String name) {
|
|
return 'Delete template \'$name\'?';
|
|
}
|
|
|
|
@override
|
|
String get templateAdded => 'Template added';
|
|
|
|
@override
|
|
String get templateUpdated => 'Template updated';
|
|
|
|
@override
|
|
String get templateDeleted => 'Template deleted';
|
|
|
|
@override
|
|
String templatesImported(int count) {
|
|
String _temp0 = intl.Intl.pluralLogic(
|
|
count,
|
|
locale: localeName,
|
|
other: 'Imported $count templates',
|
|
one: 'Imported 1 template',
|
|
zero: 'No templates imported',
|
|
);
|
|
return '$_temp0';
|
|
}
|
|
|
|
@override
|
|
String templatesExported(int count) {
|
|
String _temp0 = intl.Intl.pluralLogic(
|
|
count,
|
|
locale: localeName,
|
|
other: 'Exported $count templates to clipboard',
|
|
one: 'Exported 1 template to clipboard',
|
|
);
|
|
return '$_temp0';
|
|
}
|
|
|
|
@override
|
|
String get resetToDefaults => 'Reset to Defaults';
|
|
|
|
@override
|
|
String get resetToDefaultsConfirmation =>
|
|
'This will delete all custom templates and restore the 4 default templates. Continue?';
|
|
|
|
@override
|
|
String get reset => 'Reset';
|
|
|
|
@override
|
|
String get resetComplete => 'Templates reset to defaults';
|
|
|
|
@override
|
|
String get noTemplates => 'No templates available';
|
|
|
|
@override
|
|
String get tapAddToCreate => 'Tap + to create your first template';
|
|
|
|
@override
|
|
String get ok => 'OK';
|
|
|
|
@override
|
|
String get permissionsSection => 'Permissions';
|
|
|
|
@override
|
|
String get locationPermission => 'Location Permission';
|
|
|
|
@override
|
|
String get checking => 'Checking...';
|
|
|
|
@override
|
|
String get locationPermissionGrantedAlways => 'Granted (Always)';
|
|
|
|
@override
|
|
String get locationPermissionGrantedWhileInUse => 'Granted (While In Use)';
|
|
|
|
@override
|
|
String get locationPermissionDeniedTapToRequest => 'Denied - Tap to request';
|
|
|
|
@override
|
|
String get locationPermissionPermanentlyDeniedOpenSettings =>
|
|
'Permanently Denied - Open Settings';
|
|
|
|
@override
|
|
String get locationPermissionDialogContent =>
|
|
'Location permission is permanently denied. Please enable it in your device settings to use GPS tracking and location sharing features.';
|
|
|
|
@override
|
|
String get openSettings => 'Open Settings';
|
|
|
|
@override
|
|
String get locationPermissionGranted => 'Location permission granted!';
|
|
|
|
@override
|
|
String get locationPermissionRequiredForGps =>
|
|
'Location permission is required for GPS tracking and location sharing.';
|
|
|
|
@override
|
|
String get locationPermissionAlreadyGranted =>
|
|
'Location permission is already granted.';
|
|
|
|
@override
|
|
String get sarNavyBlue => 'SAR Navy Blue';
|
|
|
|
@override
|
|
String get sarNavyBlueDescription => 'Professional/Operations Mode';
|
|
|
|
@override
|
|
String get selectRecipient => 'Select Recipient';
|
|
|
|
@override
|
|
String get broadcastToAllNearby => 'Broadcast to all nearby';
|
|
|
|
@override
|
|
String get searchRecipients => 'Search recipients...';
|
|
|
|
@override
|
|
String get noContactsFound => 'No contacts found';
|
|
|
|
@override
|
|
String get noRoomsFound => 'No rooms found';
|
|
|
|
@override
|
|
String get noContactsOrRoomsAvailable => 'No contacts or rooms available';
|
|
|
|
@override
|
|
String get messagesWillBeSentToPublicChannel =>
|
|
'Messages will be sent to public channel';
|
|
|
|
@override
|
|
String get newMessage => 'New message';
|
|
|
|
@override
|
|
String get channel => 'Channel';
|
|
|
|
@override
|
|
String get samplePoliceLead => 'Police Lead';
|
|
|
|
@override
|
|
String get sampleDroneOperator => 'Drone Operator';
|
|
|
|
@override
|
|
String get sampleFirefighterAlpha => 'Firefighter';
|
|
|
|
@override
|
|
String get sampleMedicCharlie => 'Medic';
|
|
|
|
@override
|
|
String get sampleCommandDelta => 'Command';
|
|
|
|
@override
|
|
String get sampleFireEngine => 'Fire Engine';
|
|
|
|
@override
|
|
String get sampleAirSupport => 'Air Support';
|
|
|
|
@override
|
|
String get sampleBaseCoordinator => 'Base Coordinator';
|
|
|
|
@override
|
|
String get channelEmergency => 'Emergency';
|
|
|
|
@override
|
|
String get channelCoordination => 'Coordination';
|
|
|
|
@override
|
|
String get channelUpdates => 'Updates';
|
|
|
|
@override
|
|
String get sampleTeamMember => 'Sample Team Member';
|
|
|
|
@override
|
|
String get sampleScout => 'Sample Scout';
|
|
|
|
@override
|
|
String get sampleBase => 'Sample Base';
|
|
|
|
@override
|
|
String get sampleSearcher => 'Sample Searcher';
|
|
|
|
@override
|
|
String get sampleObjectBackpack => ' Backpack found - blue color';
|
|
|
|
@override
|
|
String get sampleObjectVehicle => ' Vehicle abandoned - check for owner';
|
|
|
|
@override
|
|
String get sampleObjectCamping => ' Camping equipment discovered';
|
|
|
|
@override
|
|
String get sampleObjectTrailMarker => ' Trail marker found off-path';
|
|
|
|
@override
|
|
String get sampleMsgAllTeamsCheckIn => 'All teams check in';
|
|
|
|
@override
|
|
String get sampleMsgWeatherUpdate => 'Weather update: Clear skies, temp 18°C';
|
|
|
|
@override
|
|
String get sampleMsgBaseCamp => 'Base camp established at staging area';
|
|
|
|
@override
|
|
String get sampleMsgTeamAlpha => 'Team moving to sector 2';
|
|
|
|
@override
|
|
String get sampleMsgRadioCheck => 'Radio check - all stations respond';
|
|
|
|
@override
|
|
String get sampleMsgWaterSupply => 'Water supply available at checkpoint 3';
|
|
|
|
@override
|
|
String get sampleMsgTeamBravo => 'Team reporting: sector 1 clear';
|
|
|
|
@override
|
|
String get sampleMsgEtaRallyPoint => 'ETA to rally point: 15 minutes';
|
|
|
|
@override
|
|
String get sampleMsgSupplyDrop => 'Supply drop confirmed for 14:00';
|
|
|
|
@override
|
|
String get sampleMsgDroneSurvey => 'Drone survey completed - no findings';
|
|
|
|
@override
|
|
String get sampleMsgTeamCharlie => 'Team requesting backup';
|
|
|
|
@override
|
|
String get sampleMsgRadioDiscipline => 'All units: maintain radio discipline';
|
|
|
|
@override
|
|
String get sampleMsgUrgentMedical =>
|
|
'URGENT: Medical assistance needed at sector 4';
|
|
|
|
@override
|
|
String get sampleMsgAdultMale => ' Adult male, conscious';
|
|
|
|
@override
|
|
String get sampleMsgFireSpotted => 'Fire spotted - coordinates incoming';
|
|
|
|
@override
|
|
String get sampleMsgSpreadingRapidly => ' Spreading rapidly!';
|
|
|
|
@override
|
|
String get sampleMsgPriorityHelicopter => 'PRIORITY: Need helicopter support';
|
|
|
|
@override
|
|
String get sampleMsgMedicalTeamEnRoute =>
|
|
'Medical team en route to your location';
|
|
|
|
@override
|
|
String get sampleMsgEvacHelicopter => 'Evac helicopter ETA 10 minutes';
|
|
|
|
@override
|
|
String get sampleMsgEmergencyResolved => 'Emergency resolved - all clear';
|
|
|
|
@override
|
|
String get sampleMsgEmergencyStagingArea => ' Emergency staging area';
|
|
|
|
@override
|
|
String get sampleMsgEmergencyServices =>
|
|
'Emergency services notified and responding';
|
|
|
|
@override
|
|
String get sampleAlphaTeamLead => 'Team Lead';
|
|
|
|
@override
|
|
String get sampleBravoScout => 'Scout';
|
|
|
|
@override
|
|
String get sampleCharlieMedic => 'Medic';
|
|
|
|
@override
|
|
String get sampleDeltaNavigator => 'Navigator';
|
|
|
|
@override
|
|
String get sampleEchoSupport => 'Support';
|
|
|
|
@override
|
|
String get sampleBaseCommand => 'Base Command';
|
|
|
|
@override
|
|
String get sampleFieldCoordinator => 'Field Coordinator';
|
|
|
|
@override
|
|
String get sampleMedicalTeam => 'Medical Team';
|
|
|
|
@override
|
|
String get mapDrawing => 'Map Drawing';
|
|
|
|
@override
|
|
String get navigateToDrawing => 'Navigate to Drawing';
|
|
|
|
@override
|
|
String get copyCoordinates => 'Copy Coordinates';
|
|
|
|
@override
|
|
String get hideFromMap => 'Hide from Map';
|
|
|
|
@override
|
|
String get lineDrawing => 'Line Drawing';
|
|
|
|
@override
|
|
String get rectangleDrawing => 'Rectangle Drawing';
|
|
|
|
@override
|
|
String get coordinatesCopiedToClipboard => 'Coordinates copied to clipboard';
|
|
|
|
@override
|
|
String get drawingShared => 'Map Drawing';
|
|
|
|
@override
|
|
String get drawingHidden => 'Drawing hidden from map';
|
|
|
|
@override
|
|
String alreadyShared(int count) {
|
|
String _temp0 = intl.Intl.pluralLogic(
|
|
count,
|
|
locale: localeName,
|
|
other: '$count already shared',
|
|
one: '1 already shared',
|
|
);
|
|
return '$_temp0';
|
|
}
|
|
|
|
@override
|
|
String newDrawingsShared(int count, String plural) {
|
|
return 'Shared $count new drawing$plural';
|
|
}
|
|
|
|
@override
|
|
String get shareDrawing => 'Share Drawing';
|
|
|
|
@override
|
|
String get shareWithAllNearbyDevices => 'Share with all nearby devices';
|
|
|
|
@override
|
|
String get shareToRoom => 'Share to Room';
|
|
|
|
@override
|
|
String get sendToPersistentStorage => 'Send to persistent room storage';
|
|
|
|
@override
|
|
String get deleteDrawingConfirm =>
|
|
'Are you sure you want to delete this drawing?';
|
|
|
|
@override
|
|
String get drawingDeleted => 'Drawing deleted';
|
|
|
|
@override
|
|
String yourDrawingsCount(int count) {
|
|
return 'Your Drawings ($count)';
|
|
}
|
|
|
|
@override
|
|
String get shared => 'Shared';
|
|
|
|
@override
|
|
String get line => 'Line';
|
|
|
|
@override
|
|
String get rectangle => 'Rectangle';
|
|
|
|
@override
|
|
String get updateAvailable => 'Update Available';
|
|
|
|
@override
|
|
String get currentVersion => 'Current';
|
|
|
|
@override
|
|
String get latestVersion => 'Latest';
|
|
|
|
@override
|
|
String get downloadUpdate => 'Download';
|
|
|
|
@override
|
|
String get updateLater => 'Later';
|
|
|
|
@override
|
|
String get cadastralParcels => 'Cadastral Parcels';
|
|
|
|
@override
|
|
String get forestRoads => 'Forest Roads';
|
|
|
|
@override
|
|
String get showCadastralParcels => 'Show Cadastral Parcels';
|
|
|
|
@override
|
|
String get showForestRoads => 'Show Forest Roads';
|
|
|
|
@override
|
|
String get wmsOverlays => 'WMS Overlays';
|
|
|
|
@override
|
|
String get hikingTrails => 'Hiking Trails';
|
|
|
|
@override
|
|
String get mainRoads => 'Main Roads';
|
|
|
|
@override
|
|
String get houseNumbers => 'House Numbers';
|
|
|
|
@override
|
|
String get fireHazardZones => 'Fire Hazard Zones';
|
|
|
|
@override
|
|
String get historicalFires => 'Historical Fires';
|
|
|
|
@override
|
|
String get firebreaks => 'Firebreaks';
|
|
|
|
@override
|
|
String get krasFireZones => 'Kras Fire Zones';
|
|
|
|
@override
|
|
String get placeNames => 'Place Names';
|
|
|
|
@override
|
|
String get municipalityBorders => 'Municipality Borders';
|
|
|
|
@override
|
|
String get topographicMap => 'Topographic Map 1:25000';
|
|
|
|
@override
|
|
String get recentMessages => 'Recent Messages';
|
|
|
|
@override
|
|
String get addChannel => 'Add Channel';
|
|
|
|
@override
|
|
String get channelName => 'Channel Name';
|
|
|
|
@override
|
|
String get channelNameHint => 'e.g., Rescue Team Alpha';
|
|
|
|
@override
|
|
String get channelSecret => 'Channel Secret';
|
|
|
|
@override
|
|
String get channelSecretHint => 'Shared password for this channel';
|
|
|
|
@override
|
|
String get channelSecretHelp =>
|
|
'This secret must be shared with all team members who need access to this channel';
|
|
|
|
@override
|
|
String get channelNameRequired => 'Channel name is required';
|
|
|
|
@override
|
|
String get channelNameTooLong => 'Channel name must be 31 characters or less';
|
|
|
|
@override
|
|
String get channelSecretRequired => 'Channel secret is required';
|
|
|
|
@override
|
|
String get channelSecretTooLong =>
|
|
'Channel secret must be 32 characters or less';
|
|
|
|
@override
|
|
String get invalidAsciiCharacters => 'Only ASCII characters are allowed';
|
|
|
|
@override
|
|
String get channelCreatedSuccessfully => 'Channel created successfully';
|
|
|
|
@override
|
|
String channelCreationFailed(String error) {
|
|
return 'Failed to create channel: $error';
|
|
}
|
|
|
|
@override
|
|
String get allChannelSlotsInUse =>
|
|
'All channel slots are in use (maximum 39 custom channels)';
|
|
|
|
@override
|
|
String get createChannel => 'Create Channel';
|
|
|
|
@override
|
|
String get wizardBack => 'Back';
|
|
|
|
@override
|
|
String get wizardSkip => 'Skip';
|
|
|
|
@override
|
|
String get wizardNext => 'Next';
|
|
|
|
@override
|
|
String get wizardGetStarted => 'Get Started';
|
|
|
|
@override
|
|
String get wizardWelcomeTitle => 'Welcome to MeshCore SAR';
|
|
|
|
@override
|
|
String get wizardWelcomeDescription =>
|
|
'A powerful off-grid communication tool for search and rescue operations. Connect with your team using mesh radio technology when traditional networks are unavailable.';
|
|
|
|
@override
|
|
String get wizardConnectingTitle => 'Connecting to Your Radio';
|
|
|
|
@override
|
|
String get wizardConnectingDescription =>
|
|
'Connect your smartphone to a MeshCore radio device via Bluetooth to start communicating off-grid.';
|
|
|
|
@override
|
|
String get wizardConnectingFeature1 => 'Scan for nearby MeshCore devices';
|
|
|
|
@override
|
|
String get wizardConnectingFeature2 => 'Pair with your radio via Bluetooth';
|
|
|
|
@override
|
|
String get wizardConnectingFeature3 =>
|
|
'Works completely offline - no internet required';
|
|
|
|
@override
|
|
String get wizardSimpleModeTitle => 'Simple Mode';
|
|
|
|
@override
|
|
String get wizardSimpleModeDescription =>
|
|
'New to mesh networking? Enable Simple Mode for a streamlined interface with essential features only.';
|
|
|
|
@override
|
|
String get wizardSimpleModeFeature1 =>
|
|
'Beginner-friendly interface with core functions';
|
|
|
|
@override
|
|
String get wizardSimpleModeFeature2 =>
|
|
'Switch to Advanced Mode anytime in Settings';
|
|
|
|
@override
|
|
String get wizardChannelTitle => 'Channels';
|
|
|
|
@override
|
|
String get wizardChannelDescription =>
|
|
'Broadcast messages to everyone on a channel, perfect for team-wide announcements and coordination.';
|
|
|
|
@override
|
|
String get wizardChannelFeature1 =>
|
|
'Public Channel for general team communication';
|
|
|
|
@override
|
|
String get wizardChannelFeature2 =>
|
|
'Create custom channels for specific groups';
|
|
|
|
@override
|
|
String get wizardChannelFeature3 =>
|
|
'Messages are automatically relayed by the mesh';
|
|
|
|
@override
|
|
String get wizardContactsTitle => 'Contacts';
|
|
|
|
@override
|
|
String get wizardContactsDescription =>
|
|
'Your team members appear automatically as they join the mesh network. Send them direct messages or view their location.';
|
|
|
|
@override
|
|
String get wizardContactsFeature1 => 'Contacts discovered automatically';
|
|
|
|
@override
|
|
String get wizardContactsFeature2 => 'Send private direct messages';
|
|
|
|
@override
|
|
String get wizardContactsFeature3 => 'View battery level and last seen time';
|
|
|
|
@override
|
|
String get wizardMapTitle => 'Map & Location';
|
|
|
|
@override
|
|
String get wizardMapDescription =>
|
|
'Track your team in real-time and mark important locations for search and rescue operations.';
|
|
|
|
@override
|
|
String get wizardMapFeature1 =>
|
|
'SAR markers for found persons, fires, and staging areas';
|
|
|
|
@override
|
|
String get wizardMapFeature2 => 'Real-time GPS tracking of team members';
|
|
|
|
@override
|
|
String get wizardMapFeature3 => 'Download offline maps for remote areas';
|
|
|
|
@override
|
|
String get wizardMapFeature4 => 'Draw shapes and share tactical information';
|
|
|
|
@override
|
|
String get viewWelcomeTutorial => 'View Welcome Tutorial';
|
|
}
|