mirror of
https://github.com/dz0ny/meshcore-sar.git
synced 2026-08-11 16:30:28 +00:00
Replace hardcoded English strings in 32 Dart source files with l10n references. Covers settings labels, UI actions, map/SAR features, device config, notifications, profiles, spectrum scan, and status messages for sl, de, hr, pl, es, fr, it, el, ru, tr, uk, zh, pt.
2666 lines
60 KiB
Dart
2666 lines
60 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 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 failedToAdvertise(String error) {
|
|
return 'Failed to advertise: $error';
|
|
}
|
|
|
|
@override
|
|
String get cancelReconnection => 'Cancel reconnection';
|
|
|
|
@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 disableMap => 'Disable Map';
|
|
|
|
@override
|
|
String get disableMapDescription =>
|
|
'Hide the map tab to reduce battery usage';
|
|
|
|
@override
|
|
String get language => 'Language';
|
|
|
|
@override
|
|
String get chooseLanguage => 'Choose Language';
|
|
|
|
@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 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 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 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 publicChannel => 'Public Channel';
|
|
|
|
@override
|
|
String get broadcastToAll => 'Broadcast to all nearby nodes (ephemeral)';
|
|
|
|
@override
|
|
String get storedPermanently => 'Stored permanently in room';
|
|
|
|
@override
|
|
String get notConnectedToDevice => 'Not connected to device';
|
|
|
|
@override
|
|
String get typeYourMessage => 'Type your message...';
|
|
|
|
@override
|
|
String get quickLocationMarker => 'Quick location marker';
|
|
|
|
@override
|
|
String get markerType => 'Marker Type';
|
|
|
|
@override
|
|
String get sendTo => 'Send To';
|
|
|
|
@override
|
|
String get noDestinationsAvailable => 'No destinations available.';
|
|
|
|
@override
|
|
String get selectDestination => 'Select destination...';
|
|
|
|
@override
|
|
String get ephemeralBroadcastInfo =>
|
|
'Ephemeral: Broadcast over-the-air only. Not stored - nodes must be online.';
|
|
|
|
@override
|
|
String get persistentRoomInfo =>
|
|
'Persistent: Stored immutably in room. Synced automatically and preserved offline.';
|
|
|
|
@override
|
|
String get location => 'Location';
|
|
|
|
@override
|
|
String get fromMap => 'From Map';
|
|
|
|
@override
|
|
String get gettingLocation => 'Getting location...';
|
|
|
|
@override
|
|
String get locationError => 'Location Error';
|
|
|
|
@override
|
|
String get retry => 'Retry';
|
|
|
|
@override
|
|
String get refreshLocation => 'Refresh location';
|
|
|
|
@override
|
|
String accuracyMeters(int accuracy) {
|
|
return 'Accuracy: ±${accuracy}m';
|
|
}
|
|
|
|
@override
|
|
String get notesOptional => 'Notes (optional)';
|
|
|
|
@override
|
|
String get addAdditionalInformation => 'Add additional information...';
|
|
|
|
@override
|
|
String lowAccuracyWarning(int accuracy) {
|
|
return 'Location accuracy is ±${accuracy}m. This may not be accurate enough for SAR operations.\n\nContinue anyway?';
|
|
}
|
|
|
|
@override
|
|
String get loginToRoom => 'Login to Room';
|
|
|
|
@override
|
|
String get enterPasswordInfo =>
|
|
'Enter the password to access this room. The password will be saved for future use.';
|
|
|
|
@override
|
|
String get password => 'Password';
|
|
|
|
@override
|
|
String get enterRoomPassword => 'Enter room password';
|
|
|
|
@override
|
|
String get loggingInDots => 'Logging in...';
|
|
|
|
@override
|
|
String get login => 'Login';
|
|
|
|
@override
|
|
String failedToAddRoom(String error) {
|
|
return 'Failed to add room to device: $error\n\nThe room may not have advertised yet.\nTry waiting for the room to broadcast.';
|
|
}
|
|
|
|
@override
|
|
String get direct => 'Direct';
|
|
|
|
@override
|
|
String get flood => 'Flood';
|
|
|
|
@override
|
|
String get loggedIn => 'Logged In';
|
|
|
|
@override
|
|
String get noGpsData => 'No GPS data';
|
|
|
|
@override
|
|
String get distance => 'Distance';
|
|
|
|
@override
|
|
String directPingTimeout(String name) {
|
|
return 'Direct ping timeout - retrying $name with flooding...';
|
|
}
|
|
|
|
@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 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 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 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 selectMapLayer => 'Select Map Layer';
|
|
|
|
@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 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 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 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 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 deliveredToContacts(int delivered, int total) {
|
|
return 'Delivered to $delivered/$total contacts';
|
|
}
|
|
|
|
@override
|
|
String get allDelivered => 'All delivered';
|
|
|
|
@override
|
|
String get recipientDetails => 'Recipient Details';
|
|
|
|
@override
|
|
String get pending => 'Pending';
|
|
|
|
@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 exportFailed(String error) {
|
|
return 'Export failed: $error';
|
|
}
|
|
|
|
@override
|
|
String importFailed(String error) {
|
|
return 'Import failed: $error';
|
|
}
|
|
|
|
@override
|
|
String get unknown => 'Unknown';
|
|
|
|
@override
|
|
String get onlineLayers => 'Online 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 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 noRecipientsAvailable => 'No recipients available';
|
|
|
|
@override
|
|
String get noChannelsFound => 'No channels found';
|
|
|
|
@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 manualCoordinates => 'Manual Coordinates';
|
|
|
|
@override
|
|
String get enterCoordinatesManually => 'Enter coordinates manually';
|
|
|
|
@override
|
|
String get latitudeLabel => 'Latitude';
|
|
|
|
@override
|
|
String get longitudeLabel => 'Longitude';
|
|
|
|
@override
|
|
String get exampleCoordinates => 'Example: 46.0569, 14.5058';
|
|
|
|
@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 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 channelTypesInfo =>
|
|
'Hash channels (#team): Secret auto-generated from name. Same name = same channel across devices.\n\nPrivate channels: Use explicit secret. Only those with the secret can join.';
|
|
|
|
@override
|
|
String get hashChannelInfo =>
|
|
'Hash channel: Secret will be auto-generated from the channel name. Anyone using the same name will join the same 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 deleteChannel => 'Delete Channel';
|
|
|
|
@override
|
|
String deleteChannelConfirmation(String channelName) {
|
|
return 'Are you sure you want to delete channel \"$channelName\"? This action cannot be undone.';
|
|
}
|
|
|
|
@override
|
|
String get channelDeletedSuccessfully => 'Channel deleted successfully';
|
|
|
|
@override
|
|
String channelDeletionFailed(String error) {
|
|
return 'Failed to delete channel: $error';
|
|
}
|
|
|
|
@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 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';
|
|
|
|
@override
|
|
String get allTeamContacts => 'All Team Contacts';
|
|
|
|
@override
|
|
String directMessagesInfo(int count) {
|
|
return 'Direct messages with ACKs. Sent to $count team members.';
|
|
}
|
|
|
|
@override
|
|
String sarMarkerSentToContacts(int count) {
|
|
return 'SAR marker sent to $count contacts';
|
|
}
|
|
|
|
@override
|
|
String get noContactsAvailable => 'No team contacts available';
|
|
|
|
@override
|
|
String get reply => 'Reply';
|
|
|
|
@override
|
|
String get technicalDetails => 'Technical details';
|
|
|
|
@override
|
|
String get messageTechnicalDetails => 'Message technical details';
|
|
|
|
@override
|
|
String get linkQuality => 'Link quality';
|
|
|
|
@override
|
|
String get delivery => 'Delivery';
|
|
|
|
@override
|
|
String get status => 'Status';
|
|
|
|
@override
|
|
String get expectedAckTag => 'Expected ACK tag';
|
|
|
|
@override
|
|
String get roundTrip => 'Round-trip';
|
|
|
|
@override
|
|
String get retryAttempt => 'Retry attempt';
|
|
|
|
@override
|
|
String get floodFallback => 'Flood fallback';
|
|
|
|
@override
|
|
String get identity => 'Identity';
|
|
|
|
@override
|
|
String get messageId => 'Message ID';
|
|
|
|
@override
|
|
String get sender => 'Sender';
|
|
|
|
@override
|
|
String get senderKey => 'Sender key';
|
|
|
|
@override
|
|
String get recipient => 'Recipient';
|
|
|
|
@override
|
|
String get recipientKey => 'Recipient key';
|
|
|
|
@override
|
|
String get voice => 'Voice';
|
|
|
|
@override
|
|
String get voiceId => 'Voice ID';
|
|
|
|
@override
|
|
String get envelope => 'Envelope';
|
|
|
|
@override
|
|
String get sessionProgress => 'Session progress';
|
|
|
|
@override
|
|
String get complete => 'Complete';
|
|
|
|
@override
|
|
String get rawDump => 'Raw dump';
|
|
|
|
@override
|
|
String get cannotRetryMissingRecipient =>
|
|
'Cannot retry: recipient information missing';
|
|
|
|
@override
|
|
String get voiceUnavailable => 'Voice unavailable right now';
|
|
|
|
@override
|
|
String get requestingVoice => 'Requesting voice';
|
|
|
|
@override
|
|
String get device => 'device';
|
|
|
|
@override
|
|
String get change => 'Change';
|
|
|
|
@override
|
|
String get wizardOverviewDescription =>
|
|
'This app combines MeshCore messaging, SAR field updates, mapping, and device tools in one place.';
|
|
|
|
@override
|
|
String get wizardOverviewFeature1 =>
|
|
'Send direct, room, and channel messages from the main Messages tab.';
|
|
|
|
@override
|
|
String get wizardOverviewFeature2 =>
|
|
'Share SAR markers, map drawings, voice clips, and images over the mesh.';
|
|
|
|
@override
|
|
String get wizardOverviewFeature3 =>
|
|
'Connect over BLE or TCP, then manage the companion radio from inside the app.';
|
|
|
|
@override
|
|
String get wizardMessagingTitle => 'Messaging and Field Reports';
|
|
|
|
@override
|
|
String get wizardMessagingDescription =>
|
|
'Messages are more than plain text here. The app already supports several operational payloads and transfer workflows.';
|
|
|
|
@override
|
|
String get wizardMessagingFeature1 =>
|
|
'Send direct messages, room posts, and channel traffic from one composer.';
|
|
|
|
@override
|
|
String get wizardMessagingFeature2 =>
|
|
'Create SAR updates and reusable SAR templates for common field reports.';
|
|
|
|
@override
|
|
String get wizardMessagingFeature3 =>
|
|
'Transfer voice sessions and images, with progress and airtime estimates in the UI.';
|
|
|
|
@override
|
|
String get wizardConnectDeviceTitle => 'Connect device';
|
|
|
|
@override
|
|
String get wizardConnectDeviceDescription =>
|
|
'Connect your MeshCore radio, choose a name, and apply a radio preset before continuing.';
|
|
|
|
@override
|
|
String get wizardSetupBadge => 'Setup';
|
|
|
|
@override
|
|
String get wizardOverviewBadge => 'Overview';
|
|
|
|
@override
|
|
String wizardConnectedToDevice(String deviceName) {
|
|
return 'Connected to $deviceName';
|
|
}
|
|
|
|
@override
|
|
String get wizardNoDeviceConnected => 'No device connected yet';
|
|
|
|
@override
|
|
String get wizardSkipForNow => 'Skip for now';
|
|
|
|
@override
|
|
String get wizardDeviceNameLabel => 'Device name';
|
|
|
|
@override
|
|
String get wizardDeviceNameHelp =>
|
|
'This name is advertised to other MeshCore users.';
|
|
|
|
@override
|
|
String get wizardConfigRegionLabel => 'Config region';
|
|
|
|
@override
|
|
String get wizardConfigRegionHelp =>
|
|
'Uses the full official MeshCore preset list. Default is EU/UK (Narrow).';
|
|
|
|
@override
|
|
String get wizardPresetNote1 =>
|
|
'Make sure the selected preset matches your local radio regulations.';
|
|
|
|
@override
|
|
String get wizardPresetNote2 =>
|
|
'The list matches the official MeshCore config tool preset feed.';
|
|
|
|
@override
|
|
String get wizardPresetNote3 =>
|
|
'EU/UK (Narrow) stays selected by default for onboarding.';
|
|
|
|
@override
|
|
String get wizardSaving => 'Saving...';
|
|
|
|
@override
|
|
String get wizardSaveAndContinue => 'Save and continue';
|
|
|
|
@override
|
|
String get wizardEnterDeviceName => 'Enter a device name before continuing.';
|
|
|
|
@override
|
|
String wizardDeviceSetupSaved(String deviceName, String presetName) {
|
|
return 'Saved $deviceName with $presetName.';
|
|
}
|
|
|
|
@override
|
|
String get wizardNetworkTitle => 'Contacts, Rooms, and Repeaters';
|
|
|
|
@override
|
|
String get wizardNetworkDescription =>
|
|
'The Contacts tab organizes the network you discover and the routes you learn over time.';
|
|
|
|
@override
|
|
String get wizardNetworkFeature1 =>
|
|
'Review team members, repeaters, rooms, channels, and pending adverts in one list.';
|
|
|
|
@override
|
|
String get wizardNetworkFeature2 =>
|
|
'Use smart ping, room login, learned paths, and route reset tools when connectivity gets messy.';
|
|
|
|
@override
|
|
String get wizardNetworkFeature3 =>
|
|
'Create channels and manage network destinations without leaving the app.';
|
|
|
|
@override
|
|
String get wizardMapOpsTitle => 'Map, Trails, and Shared Geometry';
|
|
|
|
@override
|
|
String get wizardMapOpsDescription =>
|
|
'The app map is tied directly into messaging, tracking, and SAR overlays instead of being a separate viewer.';
|
|
|
|
@override
|
|
String get wizardMapOpsFeature1 =>
|
|
'Track your own position, teammate locations, and movement trails on the map.';
|
|
|
|
@override
|
|
String get wizardMapOpsFeature2 =>
|
|
'Open drawings from messages, preview them inline, and remove them from the map when needed.';
|
|
|
|
@override
|
|
String get wizardMapOpsFeature3 =>
|
|
'Use repeater map views and shared overlays to understand network reach in the field.';
|
|
|
|
@override
|
|
String get wizardToolsTitle => 'Tools Beyond Messaging';
|
|
|
|
@override
|
|
String get wizardToolsDescription =>
|
|
'There is more here than the four main tabs. The app also includes configuration, diagnostics, and optional sensor workflows.';
|
|
|
|
@override
|
|
String get wizardToolsFeature1 =>
|
|
'Open device config to change radio settings, telemetry, TX power, and companion details.';
|
|
|
|
@override
|
|
String get wizardToolsFeature2 =>
|
|
'Enable the Sensors tab when you want watched sensor dashboards and quick refresh actions.';
|
|
|
|
@override
|
|
String get wizardToolsFeature3 =>
|
|
'Use packet logs, spectrum scan, and developer diagnostics when troubleshooting the mesh.';
|
|
|
|
@override
|
|
String get contactInSensors => 'In Sensors';
|
|
|
|
@override
|
|
String get contactAddToSensors => 'Add to Sensors';
|
|
|
|
@override
|
|
String get contactSetPath => 'Set path';
|
|
|
|
@override
|
|
String contactAddedToSensors(String contactName) {
|
|
return '$contactName added to Sensors';
|
|
}
|
|
|
|
@override
|
|
String contactFailedToClearRoute(String error) {
|
|
return 'Failed to clear route: $error';
|
|
}
|
|
|
|
@override
|
|
String get contactRouteCleared => 'Route cleared';
|
|
|
|
@override
|
|
String contactRouteSet(String route) {
|
|
return 'Route set: $route';
|
|
}
|
|
|
|
@override
|
|
String contactFailedToSetRoute(String error) {
|
|
return 'Failed to set route: $error';
|
|
}
|
|
|
|
@override
|
|
String get rssi => 'RSSI';
|
|
|
|
@override
|
|
String get snr => 'SNR';
|
|
|
|
@override
|
|
String get ackTimeout => 'ACK timeout';
|
|
|
|
@override
|
|
String get opcode => 'Opcode';
|
|
|
|
@override
|
|
String get payload => 'Payload';
|
|
|
|
@override
|
|
String get hops => 'Hops';
|
|
|
|
@override
|
|
String get hashSize => 'Hash size';
|
|
|
|
@override
|
|
String get pathBytes => 'Path bytes';
|
|
|
|
@override
|
|
String get selectedPath => 'Selected path';
|
|
|
|
@override
|
|
String get estimatedTx => 'Estimated tx';
|
|
|
|
@override
|
|
String get senderToReceipt => 'Sender to receipt';
|
|
|
|
@override
|
|
String get receivedCopies => 'Received copies';
|
|
|
|
@override
|
|
String get retryCause => 'Retry cause';
|
|
|
|
@override
|
|
String get retryMode => 'Retry mode';
|
|
|
|
@override
|
|
String get retryResult => 'Retry result';
|
|
|
|
@override
|
|
String get lastRetry => 'Last retry';
|
|
|
|
@override
|
|
String get rxPackets => 'RX packets';
|
|
|
|
@override
|
|
String get mesh => 'Mesh';
|
|
|
|
@override
|
|
String get rate => 'Rate';
|
|
|
|
@override
|
|
String get window => 'Window';
|
|
|
|
@override
|
|
String get posttxDelay => 'Post-tx delay';
|
|
|
|
@override
|
|
String get bandpass => 'Band-pass';
|
|
|
|
@override
|
|
String get bandpassFilterVoice => 'Band-pass filter voice';
|
|
|
|
@override
|
|
String get frequency => 'Frequency';
|
|
|
|
@override
|
|
String get australia => 'Australia';
|
|
|
|
@override
|
|
String get australiaNarrow => 'Australia (Narrow)';
|
|
|
|
@override
|
|
String get australiaQld => 'Australia: QLD';
|
|
|
|
@override
|
|
String get australiaSaWa => 'Australia: SA, WA';
|
|
|
|
@override
|
|
String get newZealand => 'New Zealand';
|
|
|
|
@override
|
|
String get newZealandNarrow => 'New Zealand (Narrow)';
|
|
|
|
@override
|
|
String get switzerland => 'Switzerland';
|
|
|
|
@override
|
|
String get portugal433 => 'Portugal 433';
|
|
|
|
@override
|
|
String get portugal868 => 'Portugal 868';
|
|
|
|
@override
|
|
String get czechRepublicNarrow => 'Czech Republic (Narrow)';
|
|
|
|
@override
|
|
String get eu433mhzLongRange => 'EU 433MHz (Long Range)';
|
|
|
|
@override
|
|
String get euukDeprecated => 'EU/UK (Deprecated)';
|
|
|
|
@override
|
|
String get euukNarrow => 'EU/UK (Narrow)';
|
|
|
|
@override
|
|
String get usacanadaRecommended => 'USA/Canada (Recommended)';
|
|
|
|
@override
|
|
String get vietnamDeprecated => 'Vietnam (Deprecated)';
|
|
|
|
@override
|
|
String get vietnamNarrow => 'Vietnam (Narrow)';
|
|
|
|
@override
|
|
String get active => 'Active';
|
|
|
|
@override
|
|
String get addContact => 'Add Contact';
|
|
|
|
@override
|
|
String get all => 'All';
|
|
|
|
@override
|
|
String get autoResolve => 'Auto resolve';
|
|
|
|
@override
|
|
String get clearAllLabel => 'Clear all';
|
|
|
|
@override
|
|
String get clearRelays => 'Clear relays';
|
|
|
|
@override
|
|
String get clearFilters => 'Clear filters';
|
|
|
|
@override
|
|
String get clearRoute => 'Clear Route';
|
|
|
|
@override
|
|
String get clearMessages => 'Clear Messages';
|
|
|
|
@override
|
|
String get clearScale => 'Clear scale';
|
|
|
|
@override
|
|
String get clearDiscoveries => 'Clear discoveries';
|
|
|
|
@override
|
|
String get clearOnlineTraceDatabase => 'Clear online trace database';
|
|
|
|
@override
|
|
String get clearAllChannels => 'Clear all channels';
|
|
|
|
@override
|
|
String get clearAllContacts => 'Clear all contacts';
|
|
|
|
@override
|
|
String get clearChannels => 'Clear channels';
|
|
|
|
@override
|
|
String get clearContacts => 'Clear contacts';
|
|
|
|
@override
|
|
String get clearPathOnMaxRetry => 'Clear path on max retry';
|
|
|
|
@override
|
|
String get create => 'Create';
|
|
|
|
@override
|
|
String get custom => 'Custom';
|
|
|
|
@override
|
|
String get defaultValue => 'Default';
|
|
|
|
@override
|
|
String get duplicate => 'Duplicate';
|
|
|
|
@override
|
|
String get editName => 'Edit name';
|
|
|
|
@override
|
|
String get open => 'Open';
|
|
|
|
@override
|
|
String get paste => 'Paste';
|
|
|
|
@override
|
|
String get preview => 'Preview';
|
|
|
|
@override
|
|
String get remove => 'Remove';
|
|
|
|
@override
|
|
String get rename => 'Rename';
|
|
|
|
@override
|
|
String get resolveAll => 'Resolve all';
|
|
|
|
@override
|
|
String get send => 'Send';
|
|
|
|
@override
|
|
String get sendAnyway => 'Send anyway';
|
|
|
|
@override
|
|
String get share => 'Share';
|
|
|
|
@override
|
|
String get shareContact => 'Share Contact';
|
|
|
|
@override
|
|
String get trace => 'Trace';
|
|
|
|
@override
|
|
String get use => 'Use';
|
|
|
|
@override
|
|
String get useSelectedFrequency => 'Use selected frequency';
|
|
|
|
@override
|
|
String get discovery => 'Discovery';
|
|
|
|
@override
|
|
String get discoverRepeaters => 'Discover repeaters';
|
|
|
|
@override
|
|
String get discoverSensors => 'Discover sensors';
|
|
|
|
@override
|
|
String get repeaterDiscoverySent => 'Repeater discovery sent';
|
|
|
|
@override
|
|
String get sensorDiscoverySent => 'Sensor discovery sent';
|
|
|
|
@override
|
|
String get clearedPendingDiscoveries => 'Cleared pending discoveries.';
|
|
|
|
@override
|
|
String get autoDiscovery => 'Auto discovery';
|
|
|
|
@override
|
|
String get enableAutomaticAdding => 'Enable automatic adding';
|
|
|
|
@override
|
|
String get autoaddRepeaters => 'Auto-add repeaters';
|
|
|
|
@override
|
|
String get autoaddRoomServers => 'Auto-add room servers';
|
|
|
|
@override
|
|
String get autoaddSensors => 'Auto-add sensors';
|
|
|
|
@override
|
|
String get autoaddUsers => 'Auto-add users';
|
|
|
|
@override
|
|
String get overwriteOldestWhenFull => 'Overwrite oldest when full';
|
|
|
|
@override
|
|
String get storage => 'Storage';
|
|
|
|
@override
|
|
String get dangerZone => 'Danger zone';
|
|
|
|
@override
|
|
String get profiles => 'Profiles';
|
|
|
|
@override
|
|
String get favourites => 'Favourites';
|
|
|
|
@override
|
|
String get sensors => 'Sensors';
|
|
|
|
@override
|
|
String get others => 'Others';
|
|
|
|
@override
|
|
String get gpsModule => 'GPS Module';
|
|
|
|
@override
|
|
String get liveTraffic => 'Live Traffic';
|
|
|
|
@override
|
|
String get repeatersMap => 'Repeaters Map';
|
|
|
|
@override
|
|
String get spectrumScan => 'Spectrum Scan';
|
|
|
|
@override
|
|
String get blePacketLogs => 'BLE Packet Logs';
|
|
|
|
@override
|
|
String get onlineTraceDatabase => 'Online trace database';
|
|
|
|
@override
|
|
String get routePathByteSize => 'Route path byte size';
|
|
|
|
@override
|
|
String get messageNotifications => 'Message notifications';
|
|
|
|
@override
|
|
String get sarAlerts => 'SAR alerts';
|
|
|
|
@override
|
|
String get discoveryNotifications => 'Discovery notifications';
|
|
|
|
@override
|
|
String get updateNotifications => 'Update notifications';
|
|
|
|
@override
|
|
String get muteWhileAppIsOpen => 'Mute while app is open';
|
|
|
|
@override
|
|
String get disableContacts => 'Disable Contacts';
|
|
|
|
@override
|
|
String get enableSensorsTab => 'Enable Sensors tab';
|
|
|
|
@override
|
|
String get enableProfiles => 'Enable Profiles';
|
|
|
|
@override
|
|
String get autoRouteRotation => 'Auto route rotation';
|
|
|
|
@override
|
|
String get nearestRepeaterFallback => 'Nearest repeater fallback';
|
|
|
|
@override
|
|
String get deleteAllStoredMessageHistory =>
|
|
'Delete all stored message history';
|
|
|
|
@override
|
|
String get messageFontSize => 'Message font size';
|
|
|
|
@override
|
|
String get rotateMapWithHeading => 'Rotate map with heading';
|
|
|
|
@override
|
|
String get showMapDebugInfo => 'Show map debug info';
|
|
|
|
@override
|
|
String get openMapInFullscreen => 'Open map in fullscreen';
|
|
|
|
@override
|
|
String get showSarMarkersLabel => 'Show SAR markers';
|
|
|
|
@override
|
|
String get displaySarMarkersOnTheMainMap =>
|
|
'Display SAR markers on the main map';
|
|
|
|
@override
|
|
String get showAllContactTrailsLabel => 'Show all contact trails';
|
|
|
|
@override
|
|
String get hideRepeatersOnMap => 'Hide repeaters on map';
|
|
|
|
@override
|
|
String get setMapScale => 'Set map scale';
|
|
|
|
@override
|
|
String get customMapScaleSaved => 'Custom map scale saved';
|
|
|
|
@override
|
|
String get voiceBitrate => 'Voice bitrate';
|
|
|
|
@override
|
|
String get voiceCompressor => 'Voice compressor';
|
|
|
|
@override
|
|
String get balancesQuietAndLoudSpeechLevels =>
|
|
'Balances quiet and loud speech levels';
|
|
|
|
@override
|
|
String get voiceLimiter => 'Voice limiter';
|
|
|
|
@override
|
|
String get preventsClippingPeaksBeforeEncoding =>
|
|
'Prevents clipping peaks before encoding';
|
|
|
|
@override
|
|
String get micAutoGain => 'Mic auto gain';
|
|
|
|
@override
|
|
String get letsTheRecorderAdjustInputLevel =>
|
|
'Lets the recorder adjust input level';
|
|
|
|
@override
|
|
String get echoCancellation => 'Echo cancellation';
|
|
|
|
@override
|
|
String get noiseSuppression => 'Noise suppression';
|
|
|
|
@override
|
|
String get trimSilenceInVoiceMessages => 'Trim silence in voice messages';
|
|
|
|
@override
|
|
String get compressor => 'Compressor';
|
|
|
|
@override
|
|
String get limiter => 'Limiter';
|
|
|
|
@override
|
|
String get autoGain => 'Auto gain';
|
|
|
|
@override
|
|
String get echoCancel => 'Echo cancel';
|
|
|
|
@override
|
|
String get noiseSuppress => 'Noise suppress';
|
|
|
|
@override
|
|
String get silenceTrim => 'Silence trim';
|
|
|
|
@override
|
|
String get maxImageSize => 'Max image size';
|
|
|
|
@override
|
|
String get imageCompression => 'Image compression';
|
|
|
|
@override
|
|
String get grayscale => 'Grayscale';
|
|
|
|
@override
|
|
String get ultraMode => 'Ultra mode';
|
|
|
|
@override
|
|
String get fastPrivateGpsUpdates => 'Fast private GPS updates';
|
|
|
|
@override
|
|
String get movementThreshold => 'Movement threshold';
|
|
|
|
@override
|
|
String get fastGpsMovementThreshold => 'Fast GPS movement threshold';
|
|
|
|
@override
|
|
String get fastGpsActiveuseInterval => 'Fast GPS active-use interval';
|
|
|
|
@override
|
|
String get activeuseUpdateInterval => 'Active-use update interval';
|
|
|
|
@override
|
|
String get repeatNearbyTraffic => 'Repeat nearby traffic';
|
|
|
|
@override
|
|
String get relayThroughRepeatersAcrossTheMesh =>
|
|
'Relay through repeaters across the mesh';
|
|
|
|
@override
|
|
String get nearbyOnlyWithoutRepeaterFlooding =>
|
|
'Nearby only, without repeater flooding';
|
|
|
|
@override
|
|
String get multihop => 'Multi-hop';
|
|
|
|
@override
|
|
String get createProfile => 'Create Profile';
|
|
|
|
@override
|
|
String get renameProfile => 'Rename Profile';
|
|
|
|
@override
|
|
String get newProfile => 'New Profile';
|
|
|
|
@override
|
|
String get manageProfiles => 'Manage profiles';
|
|
|
|
@override
|
|
String get enableProfilesToStartManagingThem =>
|
|
'Enable profiles to start managing them.';
|
|
|
|
@override
|
|
String get openMessage => 'Open message';
|
|
|
|
@override
|
|
String get jumpToTheRelatedSarMessage => 'Jump to the related SAR message';
|
|
|
|
@override
|
|
String get removeSarMarker => 'Remove SAR marker';
|
|
|
|
@override
|
|
String get pleaseSelectADestinationToSendSarMarker =>
|
|
'Please select a destination to send SAR marker';
|
|
|
|
@override
|
|
String get sarMarkerBroadcastToPublicChannel =>
|
|
'SAR marker broadcast to public channel';
|
|
|
|
@override
|
|
String get sarMarkerSentToRoom => 'SAR marker sent to room';
|
|
|
|
@override
|
|
String get loadFromGallery => 'Load from gallery';
|
|
|
|
@override
|
|
String get replaceImage => 'Replace image';
|
|
|
|
@override
|
|
String get selectFromGallery => 'Select from gallery';
|
|
|
|
@override
|
|
String get team => 'Team';
|
|
|
|
@override
|
|
String get found => 'Found';
|
|
|
|
@override
|
|
String get staging => 'Staging';
|
|
|
|
@override
|
|
String get object => 'Object';
|
|
|
|
@override
|
|
String get quiet => 'Quiet';
|
|
|
|
@override
|
|
String get moderate => 'Moderate';
|
|
|
|
@override
|
|
String get busy => 'Busy';
|
|
|
|
@override
|
|
String get spectrumScanReturnedNoCandidateFrequencies =>
|
|
'Spectrum scan returned no candidate frequencies';
|
|
|
|
@override
|
|
String get searchMessages => 'Search messages';
|
|
|
|
@override
|
|
String get sendImageFromGallery => 'Send image from gallery';
|
|
|
|
@override
|
|
String get takePhoto => 'Take photo';
|
|
|
|
@override
|
|
String get dmOnly => 'DM only';
|
|
|
|
@override
|
|
String get allMessages => 'All messages';
|
|
|
|
@override
|
|
String get sendToPublicChannel => 'Send to Public Channel?';
|
|
|
|
@override
|
|
String get selectMarkerTypeAndDestination =>
|
|
'Select marker type and destination';
|
|
|
|
@override
|
|
String get noDestinationsAvailableLabel => 'No destinations available';
|
|
|
|
@override
|
|
String get image => 'Image';
|
|
|
|
@override
|
|
String get format => 'Format';
|
|
|
|
@override
|
|
String get dimensions => 'Dimensions';
|
|
|
|
@override
|
|
String get segments => 'Segments';
|
|
|
|
@override
|
|
String get transfers => 'Transfers';
|
|
|
|
@override
|
|
String get downloadedBy => 'Downloaded by';
|
|
|
|
@override
|
|
String get saveDiscoverySettings => 'Save discovery settings';
|
|
|
|
@override
|
|
String get savePublicInfo => 'Save public info';
|
|
|
|
@override
|
|
String get saveRadioSettings => 'Save radio settings';
|
|
|
|
@override
|
|
String get savePath => 'Save Path';
|
|
|
|
@override
|
|
String get wipeDeviceData => 'Wipe device data';
|
|
|
|
@override
|
|
String get wipeDevice => 'Wipe device';
|
|
|
|
@override
|
|
String get destructiveDeviceActions => 'Destructive device actions.';
|
|
|
|
@override
|
|
String get chooseAPresetOrFinetuneCustomRadioSettings =>
|
|
'Choose a preset or fine-tune custom radio settings.';
|
|
|
|
@override
|
|
String get chooseTheNameAndLocationThisDeviceShares =>
|
|
'Choose the name and location this device shares.';
|
|
|
|
@override
|
|
String get availableSpaceOnThisDevice => 'Available space on this device.';
|
|
|
|
@override
|
|
String get used => 'Used';
|
|
|
|
@override
|
|
String get total => 'Total';
|
|
|
|
@override
|
|
String get renameValue => 'Rename value';
|
|
|
|
@override
|
|
String get customizeFields => 'Customize fields';
|
|
|
|
@override
|
|
String get livePreview => 'Live preview';
|
|
|
|
@override
|
|
String get refreshSchedule => 'Refresh schedule';
|
|
|
|
@override
|
|
String get noResponse => 'No response';
|
|
|
|
@override
|
|
String get refreshing => 'Refreshing';
|
|
|
|
@override
|
|
String get unavailable => 'Unavailable';
|
|
|
|
@override
|
|
String get pickARelayOrNodeToWatchInSensors =>
|
|
'Pick a relay or node to watch in Sensors.';
|
|
|
|
@override
|
|
String get publicKeyLabel => 'Public key';
|
|
|
|
@override
|
|
String get alreadyInContacts => 'Already in contacts';
|
|
|
|
@override
|
|
String get connectToADeviceBeforeAddingContacts =>
|
|
'Connect to a device before adding contacts';
|
|
|
|
@override
|
|
String get fromContacts => 'From contacts';
|
|
|
|
@override
|
|
String get onlineOnly => 'Online only';
|
|
|
|
@override
|
|
String get inBoth => 'In both';
|
|
|
|
@override
|
|
String get source => 'Source';
|
|
|
|
@override
|
|
String get manualRouteEdit => 'Manual route edit';
|
|
|
|
@override
|
|
String get observedMeshRoute => 'Observed mesh route';
|
|
|
|
@override
|
|
String get allMessagesCleared => 'All messages cleared';
|
|
|
|
@override
|
|
String get onlineTraceDatabaseCleared => 'Online trace database cleared';
|
|
|
|
@override
|
|
String get packetLogsCleared => 'Packet logs cleared';
|
|
|
|
@override
|
|
String get hexDataCopiedToClipboard => 'Hex data copied to clipboard';
|
|
|
|
@override
|
|
String get developerModeEnabled => 'Developer mode enabled';
|
|
|
|
@override
|
|
String get developerModeDisabled => 'Developer mode disabled';
|
|
|
|
@override
|
|
String get clipboardIsEmpty => 'Clipboard is empty';
|
|
|
|
@override
|
|
String get contactImported => 'Contact imported';
|
|
|
|
@override
|
|
String get contactLinkCopiedToClipboard => 'Contact link copied to clipboard';
|
|
|
|
@override
|
|
String get failedToExportContact => 'Failed to export contact';
|
|
|
|
@override
|
|
String get noLogsToExport => 'No logs to export';
|
|
|
|
@override
|
|
String get exportAsCsv => 'Export as CSV';
|
|
|
|
@override
|
|
String get exportAsText => 'Export as Text';
|
|
|
|
@override
|
|
String get receivedRfc3339 => 'Received (RFC3339)';
|
|
|
|
@override
|
|
String get buildTime => 'Build Time';
|
|
|
|
@override
|
|
String get downloadUrlNotAvailable => 'Download URL not available';
|
|
|
|
@override
|
|
String get cannotOpenDownloadUrl => 'Cannot open download URL';
|
|
|
|
@override
|
|
String get updateCheckIsOnlyAvailableOnAndroid =>
|
|
'Update check is only available on Android';
|
|
|
|
@override
|
|
String get youAreRunningTheLatestVersion =>
|
|
'You are running the latest version';
|
|
|
|
@override
|
|
String get updateAvailableButDownloadUrlNotFound =>
|
|
'Update available but download URL not found';
|
|
|
|
@override
|
|
String get startTictactoe => 'Start Tic-Tac-Toe';
|
|
|
|
@override
|
|
String get tictactoeUnavailable => 'Tic-Tac-Toe unavailable';
|
|
|
|
@override
|
|
String get tictactoeOpponentUnknown => 'Tic-Tac-Toe: opponent unknown';
|
|
|
|
@override
|
|
String get tictactoeWaitingForStart => 'Tic-Tac-Toe: waiting for start';
|
|
|
|
@override
|
|
String get acceptsShareLinks => 'Accepts share links';
|
|
|
|
@override
|
|
String get supportsRawHex => 'Supports raw hex';
|
|
|
|
@override
|
|
String get clipboardfriendly => 'Clipboard-friendly';
|
|
|
|
@override
|
|
String get captured => 'Captured';
|
|
|
|
@override
|
|
String get size => 'Size';
|
|
|
|
@override
|
|
String get noCustomChannelsToClear => 'No custom channels to clear.';
|
|
|
|
@override
|
|
String get noDeviceContactsToClear => 'No device contacts to clear.';
|
|
}
|