Files
meshcore-open/lib/l10n/app_localizations_en.dart
T
Seth Golub ccd23c4b81 Remove channel subtitles from UI
Per issue #418, this commmit removes channel subtitles from the channel
list and from the map screen (deep in the marker sharing). This reduces
visual clutter and allows for more compact lists, and the type of
channel is already indicated by the leading icon.

The subtitles simply said "Public channel", "Hashtag channel", or
"Private channel".

We also remove the relevant localization strings.
2026-05-06 14:06:12 -07:00

3738 lines
90 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 Open';
@override
String get nav_contacts => 'Contacts';
@override
String get nav_channels => 'Channels';
@override
String get nav_map => 'Map';
@override
String get common_cancel => 'Cancel';
@override
String get common_ok => 'OK';
@override
String get common_connect => 'Connect';
@override
String get common_unknownDevice => 'Unknown Device';
@override
String get common_save => 'Save';
@override
String get common_delete => 'Delete';
@override
String get common_deleteAll => 'Delete All';
@override
String get common_close => 'Close';
@override
String get common_done => 'Done';
@override
String get common_edit => 'Edit';
@override
String get common_add => 'Add';
@override
String get common_settings => 'Settings';
@override
String get common_disconnect => 'Disconnect';
@override
String get common_connected => 'Connected';
@override
String get common_disconnected => 'Disconnected';
@override
String get common_create => 'Create';
@override
String get common_continue => 'Continue';
@override
String get common_share => 'Share';
@override
String get common_copy => 'Copy';
@override
String get common_retry => 'Retry';
@override
String get common_hide => 'Hide';
@override
String get common_remove => 'Remove';
@override
String get common_enable => 'Enable';
@override
String get common_disable => 'Disable';
@override
String get common_reboot => 'Reboot';
@override
String get common_loading => 'Loading...';
@override
String get common_notAvailable => '';
@override
String common_voltageValue(String volts) {
return '$volts V';
}
@override
String common_percentValue(int percent) {
return '$percent%';
}
@override
String get scanner_title => 'MeshCore Open';
@override
String get connectionChoiceUsbLabel => 'USB';
@override
String get connectionChoiceBluetoothLabel => 'Bluetooth';
@override
String get connectionChoiceTcpLabel => 'TCP';
@override
String get tcpScreenTitle => 'Connect over TCP';
@override
String get tcpHostLabel => 'IP Address';
@override
String get tcpHostHint => '192.168.40.10';
@override
String get tcpPortLabel => 'Port';
@override
String get tcpPortHint => '5000';
@override
String get tcpStatus_notConnected => 'Enter endpoint and connect';
@override
String tcpStatus_connectingTo(String endpoint) {
return 'Connecting to $endpoint...';
}
@override
String get tcpErrorHostRequired => 'IP address is required.';
@override
String get tcpErrorPortInvalid => 'Port must be between 1 and 65535.';
@override
String get tcpErrorUnsupported =>
'TCP transport is not supported on this platform.';
@override
String get tcpErrorTimedOut => 'TCP connection timed out.';
@override
String tcpConnectionFailed(String error) {
return 'TCP connection failed: $error';
}
@override
String get usbScreenTitle => 'Connect over USB';
@override
String get usbScreenSubtitle =>
'Choose a detected serial device and connect directly to your MeshCore node.';
@override
String get usbScreenStatus => 'Select a USB device';
@override
String get usbScreenNote =>
'USB serial is active on supported Android devices and desktop platforms.';
@override
String get usbScreenEmptyState =>
'No USB devices found. Plug one in and refresh.';
@override
String get usbErrorPermissionDenied => 'USB permission was denied.';
@override
String get usbErrorDeviceMissing =>
'The selected USB device is no longer available.';
@override
String get usbErrorInvalidPort => 'Select a valid USB device.';
@override
String get usbErrorBusy =>
'Another USB connection request is already in progress.';
@override
String get usbErrorNotConnected => 'No USB device is connected.';
@override
String get usbErrorOpenFailed => 'Failed to open the selected USB device.';
@override
String get usbErrorConnectFailed =>
'Failed to connect to the selected USB device.';
@override
String get usbErrorUnsupported =>
'USB serial is not supported on this platform.';
@override
String get usbErrorAlreadyActive => 'A USB connection is already active.';
@override
String get usbErrorNoDeviceSelected => 'No USB device was selected.';
@override
String get usbErrorPortClosed => 'The USB connection is not open.';
@override
String get usbErrorConnectTimedOut =>
'Connection timed out. Make sure the device has USB Companion firmware.';
@override
String get usbFallbackDeviceName => 'Web Serial Device';
@override
String get usbStatus_notConnected => 'Select a USB device';
@override
String get usbStatus_connecting => 'Connecting to USB device...';
@override
String get usbStatus_searching => 'Searching for USB devices...';
@override
String usbConnectionFailed(String error) {
return 'USB connection failed: $error';
}
@override
String get scanner_scanning => 'Scanning for devices...';
@override
String get scanner_connecting => 'Connecting...';
@override
String get scanner_disconnecting => 'Disconnecting...';
@override
String get scanner_notConnected => 'Not connected';
@override
String scanner_connectedTo(String deviceName) {
return 'Connected to $deviceName';
}
@override
String get scanner_searchingDevices => 'Searching for MeshCore devices...';
@override
String get scanner_tapToScan => 'Tap Scan to find MeshCore devices';
@override
String scanner_connectionFailed(String error) {
return 'Connection failed: $error';
}
@override
String get scanner_stop => 'Stop';
@override
String get scanner_scan => 'Scan';
@override
String get scanner_bluetoothOff => 'Bluetooth is off';
@override
String get scanner_bluetoothOffMessage =>
'Please turn on Bluetooth to scan for devices';
@override
String get scanner_chromeRequired => 'Chrome Browser Required';
@override
String get scanner_chromeRequiredMessage =>
'This web application requires Google Chrome or a Chromium-based browser for Bluetooth support.';
@override
String get scanner_enableBluetooth => 'Enable Bluetooth';
@override
String get device_quickSwitch => 'Quick switch';
@override
String get device_meshcore => 'MeshCore';
@override
String get settings_title => 'Settings';
@override
String get settings_deviceInfo => 'Device Info';
@override
String get settings_appSettings => 'App Settings';
@override
String get settings_appSettingsSubtitle =>
'Notifications, messaging, and map preferences';
@override
String get settings_nodeSettings => 'Node Settings';
@override
String get settings_nodeName => 'Node Name';
@override
String get settings_nodeNameNotSet => 'Not set';
@override
String get settings_nodeNameHint => 'Enter node name';
@override
String get settings_nodeNameUpdated => 'Name updated';
@override
String get settings_radioSettings => 'Radio Settings';
@override
String get settings_radioSettingsSubtitle =>
'Frequency, power, spreading factor';
@override
String get settings_radioSettingsUpdated => 'Radio settings updated';
@override
String get settings_location => 'Location';
@override
String get settings_locationSubtitle => 'GPS coordinates';
@override
String get settings_locationUpdated => 'Location and GPS settings updated';
@override
String get settings_locationBothRequired =>
'Enter both latitude and longitude.';
@override
String get settings_locationInvalid => 'Invalid latitude or longitude.';
@override
String get settings_locationGPSEnable => 'GPS Enable';
@override
String get settings_locationGPSEnableSubtitle =>
'Enables GPS to automatically update location.';
@override
String get settings_locationIntervalSec => 'Interval for GPS (Seconds)';
@override
String get settings_locationIntervalInvalid =>
'Interval must be at least 60 seconds, and less than 86400 seconds.';
@override
String get settings_latitude => 'Latitude';
@override
String get settings_longitude => 'Longitude';
@override
String get settings_contactSettings => 'Contact Settings';
@override
String get settings_contactSettingsSubtitle =>
'Settings for how contacts are added.';
@override
String get settings_privacyMode => 'Privacy Mode';
@override
String get settings_privacyModeSubtitle =>
'Hide name/location in advertisements';
@override
String get settings_privacyModeToggle =>
'Toggle privacy mode to hide your name and location in advertisements.';
@override
String get settings_privacyModeEnabled => 'Privacy mode enabled';
@override
String get settings_privacyModeDisabled => 'Privacy mode disabled';
@override
String get settings_privacy => 'Privacy Settings';
@override
String get settings_privacySubtitle => 'Control what information is shared.';
@override
String get settings_privacySettingsDescription =>
'Choose what information your device shares with others.';
@override
String get settings_denyAll => 'Deny all';
@override
String get settings_allowByContact => 'Allow by contact flags';
@override
String get settings_allowAll => 'Allow all';
@override
String get settings_telemetryBaseMode => 'Telemetry Base Mode';
@override
String get settings_telemetryLocationMode => 'Telemetry Location Mode';
@override
String get settings_telemetryEnvironmentMode => 'Telemetry Environment Mode';
@override
String get settings_advertLocation => 'Advert Location';
@override
String get settings_advertLocationSubtitle => 'Include location in advert.';
@override
String get settings_multiAck => 'Multi-ACKs';
@override
String get settings_telemetryModeUpdated => 'Telemetry mode updated';
@override
String get settings_actions => 'Actions';
@override
String get settings_deleteAllPaths => 'Delete All Paths';
@override
String get settings_deleteAllPathsSubtitle =>
'Clear all path data from contacts.';
@override
String get settings_sendAdvertisement => 'Send Advertisement';
@override
String get settings_sendAdvertisementSubtitle => 'Broadcast presence now';
@override
String get settings_advertisementSent => 'Advertisement sent';
@override
String get settings_syncTime => 'Sync Time';
@override
String get settings_syncTimeSubtitle => 'Set device clock to phone time';
@override
String get settings_timeSynchronized => 'Time synchronized';
@override
String get settings_refreshContacts => 'Refresh Contacts';
@override
String get settings_refreshContactsSubtitle =>
'Reload contact list from device';
@override
String get settings_rebootDevice => 'Reboot Device';
@override
String get settings_rebootDeviceSubtitle => 'Restart the MeshCore device';
@override
String get settings_rebootDeviceConfirm =>
'Are you sure you want to reboot the device? You will be disconnected.';
@override
String get settings_debug => 'Debug';
@override
String get settings_bleDebugLog => 'BLE Debug Log';
@override
String get settings_bleDebugLogSubtitle =>
'BLE commands, responses, and raw data';
@override
String get settings_appDebugLog => 'App Debug Log';
@override
String get settings_appDebugLogSubtitle => 'Application debug messages';
@override
String get settings_about => 'About';
@override
String settings_aboutVersion(String version) {
return 'MeshCore Open v$version';
}
@override
String get settings_aboutLegalese => '2026 MeshCore Open Source Project';
@override
String get settings_aboutDescription =>
'An open-source Flutter client for MeshCore LoRa mesh networking devices.';
@override
String get settings_aboutOpenMeteoAttribution =>
'LOS elevation data: Open-Meteo (CC BY 4.0)';
@override
String get settings_infoName => 'Name';
@override
String get settings_infoId => 'ID';
@override
String get settings_infoStatus => 'Status';
@override
String get settings_infoBattery => 'Battery';
@override
String get settings_infoPublicKey => 'Public Key';
@override
String get settings_infoContactsCount => 'Contacts Count';
@override
String get settings_infoChannelCount => 'Channel Count';
@override
String get settings_presets => 'Presets';
@override
String get settings_frequency => 'Frequency (MHz)';
@override
String get settings_frequencyHelper => '300.0 - 2500.0';
@override
String get settings_frequencyInvalid => 'Invalid frequency (300-2500 MHz)';
@override
String get settings_bandwidth => 'Bandwidth';
@override
String get settings_spreadingFactor => 'Spreading Factor';
@override
String get settings_codingRate => 'Coding Rate';
@override
String get settings_txPower => 'TX Power (dBm)';
@override
String get settings_txPowerHelper => '0 - 22';
@override
String get settings_txPowerInvalid => 'Invalid TX power (0-22 dBm)';
@override
String get settings_clientRepeat => 'Off-Grid Repeat';
@override
String get settings_clientRepeatSubtitle =>
'Allow this device to repeat mesh packets for others';
@override
String get settings_clientRepeatFreqWarning =>
'Off-grid repeat requires 433, 869, or 918 MHz frequency';
@override
String settings_error(String message) {
return 'Error: $message';
}
@override
String get appSettings_title => 'App Settings';
@override
String get appSettings_appearance => 'Appearance';
@override
String get appSettings_theme => 'Theme';
@override
String get appSettings_themeSystem => 'System default';
@override
String get appSettings_themeLight => 'Light';
@override
String get appSettings_themeDark => 'Dark';
@override
String get appSettings_language => 'Language';
@override
String get appSettings_languageSystem => 'System default';
@override
String get appSettings_languageEn => 'English';
@override
String get appSettings_languageFr => 'Français';
@override
String get appSettings_languageEs => 'Español';
@override
String get appSettings_languageDe => 'Deutsch';
@override
String get appSettings_languagePl => 'Polski';
@override
String get appSettings_languageSl => 'Slovenščina';
@override
String get appSettings_languagePt => 'Português';
@override
String get appSettings_languageIt => 'Italiano';
@override
String get appSettings_languageZh => '中文';
@override
String get appSettings_languageSv => 'Svenska';
@override
String get appSettings_languageNl => 'Nederlands';
@override
String get appSettings_languageSk => 'Slovenčina';
@override
String get appSettings_languageBg => 'Български';
@override
String get appSettings_languageRu => 'Русский';
@override
String get appSettings_languageUk => 'Українська';
@override
String get appSettings_enableMessageTracing => 'Enable Message Tracing';
@override
String get appSettings_enableMessageTracingSubtitle =>
'Show detailed routing and timing metadata for messages';
@override
String get appSettings_notifications => 'Notifications';
@override
String get appSettings_enableNotifications => 'Enable Notifications';
@override
String get appSettings_enableNotificationsSubtitle =>
'Receive notifications for messages and adverts';
@override
String get appSettings_notificationPermissionDenied =>
'Notification permission denied';
@override
String get appSettings_notificationsEnabled => 'Notifications enabled';
@override
String get appSettings_notificationsDisabled => 'Notifications disabled';
@override
String get appSettings_messageNotifications => 'Message Notifications';
@override
String get appSettings_messageNotificationsSubtitle =>
'Show notification when receiving new messages';
@override
String get appSettings_channelMessageNotifications =>
'Channel Message Notifications';
@override
String get appSettings_channelMessageNotificationsSubtitle =>
'Show notification when receiving channel messages';
@override
String get appSettings_advertisementNotifications =>
'Advertisement Notifications';
@override
String get appSettings_advertisementNotificationsSubtitle =>
'Show notification when new nodes are discovered';
@override
String get appSettings_messaging => 'Messaging';
@override
String get appSettings_clearPathOnMaxRetry => 'Clear Path on Max Retry';
@override
String get appSettings_clearPathOnMaxRetrySubtitle =>
'Reset contact path after 5 failed send attempts';
@override
String get appSettings_pathsWillBeCleared =>
'Paths will be cleared after 5 failed retries';
@override
String get appSettings_pathsWillNotBeCleared =>
'Paths will not be auto-cleared';
@override
String get appSettings_autoRouteRotation => 'Auto Route Rotation';
@override
String get appSettings_autoRouteRotationSubtitle =>
'Cycle between best paths and flood mode';
@override
String get appSettings_autoRouteRotationEnabled =>
'Auto route rotation enabled';
@override
String get appSettings_autoRouteRotationDisabled =>
'Auto route rotation disabled';
@override
String get appSettings_maxRouteWeight => 'Max Route Weight';
@override
String get appSettings_maxRouteWeightSubtitle =>
'Maximum weight a path can accumulate from successful deliveries';
@override
String get appSettings_initialRouteWeight => 'Initial Route Weight';
@override
String get appSettings_initialRouteWeightSubtitle =>
'Starting weight for newly discovered paths';
@override
String get appSettings_routeWeightSuccessIncrement =>
'Success Weight Increment';
@override
String get appSettings_routeWeightSuccessIncrementSubtitle =>
'Weight added to a path after successful delivery';
@override
String get appSettings_routeWeightFailureDecrement =>
'Failure Weight Decrement';
@override
String get appSettings_routeWeightFailureDecrementSubtitle =>
'Weight removed from a path after failed delivery';
@override
String get appSettings_maxMessageRetries => 'Max Message Retries';
@override
String get appSettings_maxMessageRetriesSubtitle =>
'Number of retry attempts before marking a message as failed';
@override
String path_routeWeight(String weight, String max) {
return '$weight/$max';
}
@override
String get appSettings_battery => 'Battery';
@override
String get appSettings_batteryChemistry => 'Battery Chemistry';
@override
String appSettings_batteryChemistryPerDevice(String deviceName) {
return 'Set per device ($deviceName)';
}
@override
String get appSettings_batteryChemistryConnectFirst =>
'Connect to a device to choose';
@override
String get appSettings_batteryNmc => '18650 NMC (3.0-4.2V)';
@override
String get appSettings_batteryLifepo4 => 'LiFePO4 (2.6-3.65V)';
@override
String get appSettings_batteryLipo => 'LiPo (3.0-4.2V)';
@override
String get appSettings_mapDisplay => 'Map Display';
@override
String get appSettings_showRepeaters => 'Show Repeaters';
@override
String get appSettings_showRepeatersSubtitle =>
'Display repeater nodes on the map';
@override
String get appSettings_showChatNodes => 'Show Chat Nodes';
@override
String get appSettings_showChatNodesSubtitle =>
'Display chat nodes on the map';
@override
String get appSettings_showOtherNodes => 'Show Other Nodes';
@override
String get appSettings_showOtherNodesSubtitle =>
'Display other node types on the map';
@override
String get appSettings_timeFilter => 'Time Filter';
@override
String get appSettings_timeFilterShowAll => 'Show all nodes';
@override
String appSettings_timeFilterShowLast(int hours) {
return 'Show nodes from last $hours hours';
}
@override
String get appSettings_mapTimeFilter => 'Map Time Filter';
@override
String get appSettings_showNodesDiscoveredWithin =>
'Show nodes discovered within:';
@override
String get appSettings_allTime => 'All time';
@override
String get appSettings_lastHour => 'Last hour';
@override
String get appSettings_last6Hours => 'Last 6 hours';
@override
String get appSettings_last24Hours => 'Last 24 hours';
@override
String get appSettings_lastWeek => 'Last week';
@override
String get appSettings_offlineMapCache => 'Offline Map Cache';
@override
String get appSettings_unitsTitle => 'Units';
@override
String get appSettings_unitsMetric => 'Metric (m / km)';
@override
String get appSettings_unitsImperial => 'Imperial (ft / mi)';
@override
String get appSettings_noAreaSelected => 'No area selected';
@override
String appSettings_areaSelectedZoom(int minZoom, int maxZoom) {
return 'Area selected (zoom $minZoom-$maxZoom)';
}
@override
String get appSettings_debugCard => 'Debug';
@override
String get appSettings_appDebugLogging => 'App Debug Logging';
@override
String get appSettings_appDebugLoggingSubtitle =>
'Log app debug messages for troubleshooting';
@override
String get appSettings_appDebugLoggingEnabled => 'App debug logging enabled';
@override
String get appSettings_appDebugLoggingDisabled =>
'App debug logging disabled';
@override
String get contacts_title => 'Contacts';
@override
String get contacts_noContacts => 'No contacts yet';
@override
String get contacts_contactsWillAppear =>
'Contacts will appear when devices advertise';
@override
String get contacts_unread => 'Unread';
@override
String get contacts_searchContactsNoNumber => 'Search Contacts...';
@override
String contacts_searchContacts(int number, String str) {
return 'Search $number$str Contacts...';
}
@override
String contacts_searchFavorites(int number, String str) {
return 'Search $number$str Favorites...';
}
@override
String contacts_searchUsers(int number, String str) {
return 'Search $number$str Users...';
}
@override
String contacts_searchRepeaters(int number, String str) {
return 'Search $number$str Repeaters...';
}
@override
String contacts_searchRoomServers(int number, String str) {
return 'Search $number$str Room servers...';
}
@override
String get contacts_noUnreadContacts => 'No unread contacts';
@override
String get contacts_noContactsFound => 'No contacts or groups found';
@override
String get contacts_deleteContact => 'Delete Contact';
@override
String contacts_removeConfirm(String contactName) {
return 'Remove $contactName from contacts?';
}
@override
String get contacts_manageRepeater => 'Manage Repeater';
@override
String get contacts_manageRoom => 'Manage Room Server';
@override
String get contacts_roomLogin => 'Room Server Login';
@override
String get contacts_openChat => 'Open Chat';
@override
String get contacts_editGroup => 'Edit Group';
@override
String get contacts_deleteGroup => 'Delete Group';
@override
String contacts_deleteGroupConfirm(String groupName) {
return 'Remove \"$groupName\"?';
}
@override
String get contacts_newGroup => 'New Group';
@override
String get contacts_groupName => 'Group name';
@override
String get contacts_groupNameRequired => 'Group name is required';
@override
String get contacts_groupNameReserved => 'This group name is reserved';
@override
String contacts_groupAlreadyExists(String name) {
return 'Group \"$name\" already exists';
}
@override
String get contacts_filterContacts => 'Filter contacts...';
@override
String get contacts_noContactsMatchFilter => 'No contacts match your filter';
@override
String get contacts_noMembers => 'No members';
@override
String get contacts_lastSeenNow => 'recently';
@override
String contacts_lastSeenMinsAgo(int minutes) {
return '~ $minutes min.';
}
@override
String get contacts_lastSeenHourAgo => '~ 1 hour';
@override
String contacts_lastSeenHoursAgo(int hours) {
return '~ $hours hours';
}
@override
String get contacts_lastSeenDayAgo => '~ 1 day';
@override
String contacts_lastSeenDaysAgo(int days) {
return '~ $days days';
}
@override
String get contact_info => 'Contact Info';
@override
String get contact_settings => 'Contact Settings';
@override
String get contact_telemetry => 'Telemetry';
@override
String get contact_lastSeen => 'Last seen';
@override
String get contact_clearChat => 'Clear Chat';
@override
String get contact_teleBase => 'Telemetry Base';
@override
String get contact_teleBaseSubtitle =>
'Allow sharing battery level and basic telemetry';
@override
String get contact_teleLoc => 'Telemetry Location';
@override
String get contact_teleLocSubtitle => 'Allow sharing location data';
@override
String get contact_teleEnv => 'Telemetry Environment';
@override
String get contact_teleEnvSubtitle => 'Allow sharing environment sensor data';
@override
String get channels_title => 'Channels';
@override
String get channels_noChannelsConfigured => 'No channels configured';
@override
String get channels_addPublicChannel => 'Add Public Channel';
@override
String get channels_searchChannels => 'Search channels...';
@override
String get channels_noChannelsFound => 'No channels found';
@override
String channels_channelIndex(int index) {
return 'Channel $index';
}
@override
String get channels_public => 'Public';
@override
String channels_via(String path) {
return 'via $path';
}
@override
String get channels_private => 'Private';
@override
String get channels_editChannel => 'Edit channel';
@override
String get channels_muteChannel => 'Mute channel';
@override
String get channels_unmuteChannel => 'Unmute channel';
@override
String get channels_deleteChannel => 'Delete channel';
@override
String channels_deleteChannelConfirm(String name) {
return 'Delete \"$name\"? This cannot be undone.';
}
@override
String channels_channelDeleteFailed(String name) {
return 'Failed to delete channel \"$name\"';
}
@override
String channels_channelDeleted(String name) {
return 'Channel \"$name\" deleted';
}
@override
String get channels_addChannel => 'Add Channel';
@override
String get channels_channelIndexLabel => 'Channel Index';
@override
String get channels_channelName => 'Channel Name';
@override
String get channels_usePublicChannel => 'Use Public Channel';
@override
String get channels_standardPublicPsk => 'Standard public PSK';
@override
String get channels_pskHex => 'PSK (Hex)';
@override
String get channels_generateRandomPsk => 'Generate random PSK';
@override
String get channels_enterChannelName => 'Please enter a channel name';
@override
String get channels_pskMustBe32Hex => 'PSK must be 32 hex characters';
@override
String channels_channelAdded(String name) {
return 'Channel \"$name\" added';
}
@override
String channels_editChannelTitle(int index) {
return 'Edit Channel $index';
}
@override
String get channels_smazCompression => 'SMAZ compression';
@override
String channels_channelUpdated(String name) {
return 'Channel \"$name\" updated';
}
@override
String get channels_publicChannelAdded => 'Public channel added';
@override
String get channels_sortBy => 'Sort by';
@override
String get channels_sortManual => 'Manual';
@override
String get channels_sortAZ => 'A-Z';
@override
String get channels_sortLatestMessages => 'Latest messages';
@override
String get channels_sortUnread => 'Unread';
@override
String get channels_createPrivateChannel => 'Create a Private Channel';
@override
String get channels_createPrivateChannelDesc => 'Secured with a secret key.';
@override
String get channels_joinPrivateChannel => 'Join a Private Channel';
@override
String get channels_joinPrivateChannelDesc => 'Manually enter a secret key.';
@override
String get channels_joinPublicChannel => 'Join the Public Channel';
@override
String get channels_joinPublicChannelDesc => 'Anyone can join this channel.';
@override
String get channels_joinHashtagChannel => 'Join a Hashtag Channel';
@override
String get channels_joinHashtagChannelDesc =>
'Anyone can join hashtag channels.';
@override
String get channels_scanQrCode => 'Scan a QR Code';
@override
String get channels_scanQrCodeComingSoon => 'Coming soon';
@override
String get channels_enterHashtag => 'Enter hashtag';
@override
String get channels_hashtagHint => 'e.g. #team';
@override
String get chat_noMessages => 'No messages yet';
@override
String get chat_sendMessage => 'Send message';
@override
String chat_sendMessageTo(String contactName) {
return 'Send a message to $contactName';
}
@override
String get chat_sendMessageToStart => 'Send a message to get started';
@override
String get chat_originalMessageNotFound => 'Original message not found';
@override
String chat_replyingTo(String name) {
return 'Replying to $name';
}
@override
String chat_replyTo(String name) {
return 'Reply to $name';
}
@override
String get chat_location => 'Location';
@override
String get chat_typeMessage => 'Type a message...';
@override
String chat_messageTooLong(int maxBytes) {
return 'Message too long (max $maxBytes bytes).';
}
@override
String get chat_messageCopied => 'Message copied';
@override
String get chat_messageDeleted => 'Message deleted';
@override
String get chat_retryingMessage => 'Retrying message';
@override
String chat_retryCount(int current, int max) {
return 'Retry $current/$max';
}
@override
String get chat_sendGif => 'Send GIF';
@override
String get chat_reply => 'Reply';
@override
String get chat_addReaction => 'Add Reaction';
@override
String get chat_me => 'Me';
@override
String get emojiCategorySmileys => 'Smileys';
@override
String get emojiCategoryGestures => 'Gestures';
@override
String get emojiCategoryHearts => 'Hearts';
@override
String get emojiCategoryObjects => 'Objects';
@override
String get gifPicker_title => 'Choose a GIF';
@override
String get gifPicker_searchHint => 'Search GIFs...';
@override
String get gifPicker_poweredBy => 'Powered by GIPHY';
@override
String get gifPicker_noGifsFound => 'No GIFs found';
@override
String get gifPicker_failedLoad => 'Failed to load GIFs';
@override
String get gifPicker_failedSearch => 'Failed to search GIFs';
@override
String get gifPicker_noInternet => 'No internet connection';
@override
String get debugLog_appTitle => 'App Debug Log';
@override
String get debugLog_bleTitle => 'BLE Debug Log';
@override
String get debugLog_copyLog => 'Copy log';
@override
String get debugLog_clearLog => 'Clear log';
@override
String get debugLog_copied => 'Debug log copied';
@override
String get debugLog_bleCopied => 'BLE log copied';
@override
String get debugLog_noEntries => 'No debug logs yet';
@override
String get debugLog_enableInSettings =>
'Enable app debug logging in settings';
@override
String get debugLog_frames => 'Frames';
@override
String get debugLog_rawLogRx => 'Raw Log-RX';
@override
String get debugLog_noBleActivity => 'No BLE activity yet';
@override
String debugFrame_length(int count) {
return 'Frame Length: $count bytes';
}
@override
String debugFrame_command(String value) {
return 'Command: 0x$value';
}
@override
String get debugFrame_textMessageHeader => 'Text Message Frame:';
@override
String debugFrame_destinationPubKey(String pubKey) {
return '- Destination PubKey: $pubKey';
}
@override
String debugFrame_timestamp(int timestamp) {
return '- Timestamp: $timestamp';
}
@override
String debugFrame_flags(String value) {
return '- Flags: 0x$value';
}
@override
String debugFrame_textType(int type, String label) {
return '- Text Type: $type ($label)';
}
@override
String get debugFrame_textTypeCli => 'CLI';
@override
String get debugFrame_textTypePlain => 'Plain';
@override
String debugFrame_text(String text) {
return '- Text: \"$text\"';
}
@override
String get debugFrame_hexDump => 'Hex Dump:';
@override
String get chat_pathManagement => 'Path Management';
@override
String get chat_ShowAllPaths => 'Show all paths';
@override
String get chat_routingMode => 'Routing mode';
@override
String get chat_autoUseSavedPath => 'Auto (use saved path)';
@override
String get chat_forceFloodMode => 'Force Flood Mode';
@override
String get chat_recentAckPaths => 'Recent ACK Paths (tap to use):';
@override
String get chat_pathHistoryFull =>
'Path history is full. Remove entries to add new ones.';
@override
String get chat_hopSingular => 'hop';
@override
String get chat_hopPlural => 'hops';
@override
String chat_hopsCount(int count) {
String _temp0 = intl.Intl.pluralLogic(
count,
locale: localeName,
other: 'hops',
one: 'hop',
);
return '$count $_temp0';
}
@override
String get chat_successes => 'successes';
@override
String get chat_score => 'Score';
@override
String get chat_removePath => 'Remove path';
@override
String get chat_noPathHistoryYet =>
'No path history yet.\nSend a message to discover paths.';
@override
String get chat_pathActions => 'Path Actions:';
@override
String get chat_setCustomPath => 'Set Custom Path';
@override
String get chat_setCustomPathSubtitle => 'Manually specify routing path';
@override
String get chat_clearPath => 'Clear Path';
@override
String get chat_clearPathSubtitle => 'Force rediscovery on next send';
@override
String get chat_pathCleared =>
'Path cleared. Next message will rediscover route.';
@override
String get chat_floodModeSubtitle => 'Use routing toggle in app bar';
@override
String get chat_floodModeEnabled =>
'Flood mode enabled. Toggle back via routing icon in app bar.';
@override
String get chat_fullPath => 'Full Path';
@override
String get chat_pathDetailsNotAvailable =>
'Path details not available yet. Try sending a message to refresh.';
@override
String chat_pathSetHops(int hopCount, String status) {
String _temp0 = intl.Intl.pluralLogic(
hopCount,
locale: localeName,
other: 'hops',
one: 'hop',
);
return 'Path set: $hopCount $_temp0 - $status';
}
@override
String get chat_pathSavedLocally => 'Saved locally. Connect to sync.';
@override
String get chat_pathDeviceConfirmed => 'Device confirmed.';
@override
String get chat_pathDeviceNotConfirmed => 'Device not confirmed yet.';
@override
String get chat_type => 'Type';
@override
String get chat_path => 'Path';
@override
String get chat_publicKey => 'Public Key';
@override
String get chat_compressOutgoingMessages => 'Compress outgoing messages';
@override
String get chat_floodForced => 'Flood (forced)';
@override
String get chat_directForced => 'Direct (forced)';
@override
String chat_hopsForced(int count) {
return '$count hops (forced)';
}
@override
String get chat_floodAuto => 'Flood (auto)';
@override
String get chat_direct => 'Direct';
@override
String get chat_poiShared => 'POI Shared';
@override
String chat_unread(int count) {
return 'Unread: $count';
}
@override
String get chat_markAsUnread => 'Mark as Unread';
@override
String get chat_newMessages => 'New messages';
@override
String get chat_openLink => 'Open Link?';
@override
String get chat_openLinkConfirmation =>
'Do you want to open this link in your browser?';
@override
String get chat_open => 'Open';
@override
String chat_couldNotOpenLink(String url) {
return 'Could not open link: $url';
}
@override
String get chat_invalidLink => 'Invalid link format';
@override
String get map_title => 'Node Map';
@override
String get map_lineOfSight => 'Line of Sight';
@override
String get map_losScreenTitle => 'Line of Sight';
@override
String get map_noNodesWithLocation => 'No nodes with location data';
@override
String get map_nodesNeedGps =>
'Nodes need to share their GPS coordinates\nto appear on the map';
@override
String map_nodesCount(int count) {
return 'Nodes: $count';
}
@override
String map_pinsCount(int count) {
return 'Pins: $count';
}
@override
String get map_chat => 'Chat';
@override
String get map_repeater => 'Repeater';
@override
String get map_room => 'Room';
@override
String get map_sensor => 'Sensor';
@override
String get map_pinDm => 'Pin (DM)';
@override
String get map_pinPrivate => 'Pin (Private)';
@override
String get map_pinPublic => 'Pin (Public)';
@override
String get map_lastSeen => 'Last Seen';
@override
String get map_disconnectConfirm =>
'Are you sure you want to disconnect from this device?';
@override
String get map_from => 'From';
@override
String get map_source => 'Source';
@override
String get map_flags => 'Flags';
@override
String get map_type => 'Type';
@override
String get map_path => 'Path';
@override
String get map_location => 'Location';
@override
String get map_estLocation => 'Est. Location';
@override
String get map_publicKey => 'Public Key';
@override
String get map_publicKeyPrefixHint => 'e.g. ab12';
@override
String get map_shareMarkerHere => 'Share marker here';
@override
String get map_setAsMyLocation => 'Set as my location';
@override
String get map_pinLabel => 'Pin label';
@override
String get map_label => 'Label';
@override
String get map_pointOfInterest => 'Point of interest';
@override
String get map_sendToContact => 'Send to contact';
@override
String get map_sendToChannel => 'Send to channel';
@override
String get map_noChannelsAvailable => 'No channels available';
@override
String get map_publicLocationShare => 'Public location share';
@override
String map_publicLocationShareConfirm(String channelLabel) {
return 'You are about to share a location in $channelLabel. This channel is public and anyone with the PSK can see it.';
}
@override
String get map_connectToShareMarkers =>
'Connect to a device to share markers';
@override
String get map_filterNodes => 'Filter Nodes';
@override
String get map_nodeTypes => 'Node Types';
@override
String get map_chatNodes => 'Chat Nodes';
@override
String get map_repeaters => 'Repeaters';
@override
String get map_otherNodes => 'Other Nodes';
@override
String get map_showOverlaps => 'Repeater Key Overlaps';
@override
String get map_keyPrefix => 'Key Prefix';
@override
String get map_filterByKeyPrefix => 'Filter by key prefix';
@override
String get map_publicKeyPrefix => 'Public key prefix';
@override
String get map_markers => 'Markers';
@override
String get map_showSharedMarkers => 'Show shared markers';
@override
String get map_showGuessedLocations => 'Show guessed node locations';
@override
String get map_showDiscoveryContacts => 'Show Discovery Contacts';
@override
String get map_guessedLocation => 'Guessed location';
@override
String get map_lastSeenTime => 'Last Seen Time';
@override
String get map_sharedPin => 'Shared pin';
@override
String get map_sharedAt => 'Shared';
@override
String get map_joinRoom => 'Join Room';
@override
String get map_manageRepeater => 'Manage Repeater';
@override
String get map_tapToAdd => 'Tap on nodes to add them to the path.';
@override
String get map_runTrace => 'Run path trace';
@override
String get map_runTraceWithReturnPath => 'Return back on the same path.';
@override
String get map_removeLast => 'Remove Last';
@override
String get map_pathTraceCancelled => 'Path trace cancelled.';
@override
String get mapCache_title => 'Offline Map Cache';
@override
String get mapCache_selectAreaFirst => 'Select an area to cache first';
@override
String get mapCache_noTilesToDownload => 'No tiles to download for this area';
@override
String get mapCache_downloadTilesTitle => 'Download tiles';
@override
String mapCache_downloadTilesPrompt(int count) {
return 'Download $count tiles for offline use?';
}
@override
String get mapCache_downloadAction => 'Download';
@override
String mapCache_cachedTiles(int count) {
return 'Cached $count tiles';
}
@override
String mapCache_cachedTilesWithFailed(int downloaded, int failed) {
return 'Cached $downloaded tiles ($failed failed)';
}
@override
String get mapCache_clearOfflineCacheTitle => 'Clear offline cache';
@override
String get mapCache_clearOfflineCachePrompt => 'Remove all cached map tiles?';
@override
String get mapCache_offlineCacheCleared => 'Offline cache cleared';
@override
String get mapCache_noAreaSelected => 'No area selected';
@override
String get mapCache_cacheArea => 'Cache Area';
@override
String get mapCache_useCurrentView => 'Use Current View';
@override
String get mapCache_zoomRange => 'Zoom Range';
@override
String mapCache_estimatedTiles(int count) {
return 'Estimated tiles: $count';
}
@override
String mapCache_downloadedTiles(int completed, int total) {
return 'Downloaded $completed / $total';
}
@override
String get mapCache_downloadTilesButton => 'Download Tiles';
@override
String get mapCache_clearCacheButton => 'Clear Cache';
@override
String mapCache_failedDownloads(int count) {
return 'Failed downloads: $count';
}
@override
String mapCache_boundsLabel(
String north,
String south,
String east,
String west,
) {
return 'N $north, S $south, E $east, W $west';
}
@override
String get time_justNow => 'Just now';
@override
String time_minutesAgo(int minutes) {
return '${minutes}m ago';
}
@override
String time_hoursAgo(int hours) {
return '${hours}h ago';
}
@override
String time_daysAgo(int days) {
return '${days}d ago';
}
@override
String get time_hour => 'hour';
@override
String get time_hours => 'hours';
@override
String get time_day => 'day';
@override
String get time_days => 'days';
@override
String get time_week => 'week';
@override
String get time_weeks => 'weeks';
@override
String get time_month => 'month';
@override
String get time_months => 'months';
@override
String get time_minutes => 'minutes';
@override
String get time_allTime => 'All Time';
@override
String get dialog_disconnect => 'Disconnect';
@override
String get dialog_disconnectConfirm =>
'Are you sure you want to disconnect from this device?';
@override
String get login_repeaterLogin => 'Repeater Login';
@override
String get login_roomLogin => 'Room Server Login';
@override
String get login_password => 'Password';
@override
String get login_enterPassword => 'Enter password';
@override
String get login_savePassword => 'Save password';
@override
String get login_savePasswordSubtitle =>
'Password will be stored securely on this device';
@override
String get login_repeaterDescription =>
'Enter the repeater password for guest or admin access.';
@override
String get login_roomDescription =>
'Enter the room password for guest or admin access.';
@override
String get login_routing => 'Routing';
@override
String get login_routingMode => 'Routing mode';
@override
String get login_autoUseSavedPath => 'Auto (use saved path)';
@override
String get login_forceFloodMode => 'Force Flood Mode';
@override
String get login_managePaths => 'Manage Paths';
@override
String get login_login => 'Login';
@override
String login_attempt(int current, int max) {
return 'Attempt $current/$max';
}
@override
String login_failed(String error) {
return 'Login failed: $error';
}
@override
String get login_failedMessage =>
'Login failed. Either the password is incorrect or the repeater is unreachable.';
@override
String get common_reload => 'Reload';
@override
String get common_clear => 'Clear';
@override
String path_currentPath(String path) {
return 'Current path: $path';
}
@override
String path_usingHopsPath(int count) {
String _temp0 = intl.Intl.pluralLogic(
count,
locale: localeName,
other: 'hops',
one: 'hop',
);
return 'Using $count $_temp0 path';
}
@override
String get path_enterCustomPath => 'Enter Custom Path';
@override
String get path_currentPathLabel => 'Current path';
@override
String get path_hexPrefixInstructions =>
'Enter 2-character hex prefixes for each hop, separated by commas.';
@override
String get path_hexPrefixExample =>
'Example: A1,F2,3C (each node uses first byte of its public key)';
@override
String get path_labelHexPrefixes => 'Path (hex prefixes)';
@override
String get path_helperMaxHops =>
'Max 64 hops. Each prefix is 2 hex characters (1 byte)';
@override
String get path_selectFromContacts => 'Or select from contacts:';
@override
String get path_noRepeatersFound => 'No repeaters or room servers found.';
@override
String get path_customPathsRequire =>
'Custom paths require intermediate hops that can relay messages.';
@override
String path_invalidHexPrefixes(String prefixes) {
return 'Invalid hex prefixes: $prefixes';
}
@override
String get path_tooLong => 'Path too long. Maximum 64 hops allowed.';
@override
String get path_setPath => 'Set Path';
@override
String get repeater_management => 'Repeater Management';
@override
String get room_management => 'Room Server Management';
@override
String get repeater_guest => 'Repeater Information';
@override
String get room_guest => 'Room Server Information';
@override
String get repeater_managementTools => 'Management Tools';
@override
String get repeater_guestTools => 'Guest Tools';
@override
String get repeater_status => 'Status';
@override
String get repeater_statusSubtitle =>
'View repeater status, stats, and neighbors';
@override
String get repeater_telemetry => 'Telemetry';
@override
String get repeater_telemetrySubtitle =>
'View telemetry of sensors and system stats';
@override
String get repeater_cli => 'CLI';
@override
String get repeater_cliSubtitle => 'Send commands to the repeater';
@override
String get repeater_neighbors => 'Neighbors';
@override
String get repeater_neighborsSubtitle => 'View zero hop neighbors.';
@override
String get repeater_settings => 'Settings';
@override
String get repeater_settingsSubtitle => 'Configure repeater parameters';
@override
String get repeater_clockSyncAfterLogin => 'Clock sync after login';
@override
String get repeater_clockSyncAfterLoginSubtitle =>
'Automatically send \"clock sync\" after a successful login';
@override
String get repeater_statusTitle => 'Repeater Status';
@override
String get repeater_routingMode => 'Routing mode';
@override
String get repeater_autoUseSavedPath => 'Auto (use saved path)';
@override
String get repeater_forceFloodMode => 'Force Flood Mode';
@override
String get repeater_pathManagement => 'Path management';
@override
String get repeater_refresh => 'Refresh';
@override
String get repeater_statusRequestTimeout => 'Status request timed out.';
@override
String repeater_errorLoadingStatus(String error) {
return 'Error loading status: $error';
}
@override
String get repeater_systemInformation => 'System Information';
@override
String get repeater_battery => 'Battery';
@override
String get repeater_clockAtLogin => 'Clock (at login)';
@override
String get repeater_uptime => 'Uptime';
@override
String get repeater_queueLength => 'Queue Length';
@override
String get repeater_debugFlags => 'Debug Flags';
@override
String get repeater_radioStatistics => 'Radio Statistics';
@override
String get repeater_lastRssi => 'Last RSSI';
@override
String get repeater_lastSnr => 'Last SNR';
@override
String get repeater_noiseFloor => 'Noise Floor';
@override
String get repeater_txAirtime => 'TX Airtime';
@override
String get repeater_rxAirtime => 'RX Airtime';
@override
String get repeater_packetStatistics => 'Packet Statistics';
@override
String get repeater_sent => 'Sent';
@override
String get repeater_received => 'Received';
@override
String get repeater_duplicates => 'Duplicates';
@override
String repeater_daysHoursMinsSecs(
int days,
int hours,
int minutes,
int seconds,
) {
return '$days days ${hours}h ${minutes}m ${seconds}s';
}
@override
String repeater_packetTxTotal(int total, String flood, String direct) {
return 'Total: $total, Flood: $flood, Direct: $direct';
}
@override
String repeater_packetRxTotal(int total, String flood, String direct) {
return 'Total: $total, Flood: $flood, Direct: $direct';
}
@override
String repeater_duplicatesFloodDirect(String flood, String direct) {
return 'Flood: $flood, Direct: $direct';
}
@override
String repeater_duplicatesTotal(int total) {
return 'Total: $total';
}
@override
String get repeater_settingsTitle => 'Repeater Settings';
@override
String get repeater_basicSettings => 'Basic Settings';
@override
String get repeater_repeaterName => 'Repeater Name';
@override
String get repeater_repeaterNameHelper => 'Display name for this repeater';
@override
String get repeater_adminPassword => 'Admin Password';
@override
String get repeater_adminPasswordHelper => 'Full access password';
@override
String get repeater_guestPassword => 'Guest Password';
@override
String get repeater_guestPasswordHelper => 'Read-only access password';
@override
String get repeater_radioSettings => 'Radio Settings';
@override
String get repeater_frequencyMhz => 'Frequency (MHz)';
@override
String get repeater_frequencyHelper => '300-2500 MHz';
@override
String get repeater_txPower => 'TX Power';
@override
String get repeater_txPowerHelper => '1-30 dBm';
@override
String get repeater_bandwidth => 'Bandwidth';
@override
String get repeater_spreadingFactor => 'Spreading Factor';
@override
String get repeater_codingRate => 'Coding Rate';
@override
String get repeater_locationSettings => 'Location Settings';
@override
String get repeater_latitude => 'Latitude';
@override
String get repeater_latitudeHelper => 'Decimal degrees (e.g., 37.7749)';
@override
String get repeater_longitude => 'Longitude';
@override
String get repeater_longitudeHelper => 'Decimal degrees (e.g., -122.4194)';
@override
String get repeater_features => 'Features';
@override
String get repeater_packetForwarding => 'Packet Forwarding';
@override
String get repeater_packetForwardingSubtitle =>
'Enable repeater to forward packets';
@override
String get repeater_guestAccess => 'Guest Access';
@override
String get repeater_guestAccessSubtitle => 'Allow read-only guest access';
@override
String get repeater_privacyMode => 'Privacy Mode';
@override
String get repeater_privacyModeSubtitle =>
'Hide name/location in advertisements';
@override
String get repeater_advertisementSettings => 'Advertisement Settings';
@override
String get repeater_localAdvertInterval => 'Local Advertisement Interval';
@override
String repeater_localAdvertIntervalMinutes(int minutes) {
return '$minutes minutes';
}
@override
String get repeater_floodAdvertInterval => 'Flood Advertisement Interval';
@override
String repeater_floodAdvertIntervalHours(int hours) {
return '$hours hours';
}
@override
String get repeater_encryptedAdvertInterval =>
'Encrypted Advertisement Interval';
@override
String get repeater_dangerZone => 'Danger Zone';
@override
String get repeater_rebootRepeater => 'Reboot Repeater';
@override
String get repeater_rebootRepeaterSubtitle => 'Restart the repeater device';
@override
String get repeater_rebootRepeaterConfirm =>
'Are you sure you want to reboot this repeater?';
@override
String get repeater_regenerateIdentityKey => 'Regenerate Identity Key';
@override
String get repeater_regenerateIdentityKeySubtitle =>
'Generate new public/private key pair';
@override
String get repeater_regenerateIdentityKeyConfirm =>
'This will generate a new identity for the repeater. Continue?';
@override
String get repeater_eraseFileSystem => 'Erase File System';
@override
String get repeater_eraseFileSystemSubtitle =>
'Format the repeater file system';
@override
String get repeater_eraseFileSystemConfirm =>
'WARNING: This will erase all data on the repeater. This cannot be undone!';
@override
String get repeater_eraseSerialOnly =>
'Erase is only available over serial console.';
@override
String repeater_commandSent(String command) {
return 'Command sent: $command';
}
@override
String repeater_errorSendingCommand(String error) {
return 'Error sending command: $error';
}
@override
String get repeater_confirm => 'Confirm';
@override
String get repeater_settingsSaved => 'Settings saved successfully';
@override
String repeater_errorSavingSettings(String error) {
return 'Error saving settings: $error';
}
@override
String get repeater_refreshBasicSettings => 'Refresh Basic Settings';
@override
String get repeater_refreshRadioSettings => 'Refresh Radio Settings';
@override
String get repeater_refreshTxPower => 'Refresh TX power';
@override
String get repeater_refreshLocationSettings => 'Refresh Location Settings';
@override
String get repeater_refreshPacketForwarding => 'Refresh Packet Forwarding';
@override
String get repeater_refreshGuestAccess => 'Refresh Guest Access';
@override
String get repeater_refreshPrivacyMode => 'Refresh Privacy Mode';
@override
String get repeater_refreshAdvertisementSettings =>
'Refresh Advertisement Settings';
@override
String repeater_refreshed(String label) {
return '$label refreshed';
}
@override
String repeater_errorRefreshing(String label) {
return 'Error refreshing $label';
}
@override
String get repeater_cliTitle => 'Repeater CLI';
@override
String get repeater_debugNextCommand => 'Debug Next Command';
@override
String get repeater_commandHelp => 'Command Help';
@override
String get repeater_clearHistory => 'Clear History';
@override
String get repeater_noCommandsSent => 'No commands sent yet';
@override
String get repeater_typeCommandOrUseQuick =>
'Type a command below or use quick commands';
@override
String get repeater_enterCommandHint => 'Enter command...';
@override
String get repeater_previousCommand => 'Previous command';
@override
String get repeater_nextCommand => 'Next command';
@override
String get repeater_enterCommandFirst => 'Enter a command first';
@override
String get repeater_cliCommandFrameTitle => 'CLI Command Frame';
@override
String repeater_cliCommandError(String error) {
return 'Error: $error';
}
@override
String get repeater_cliQuickGetName => 'Get Name';
@override
String get repeater_cliQuickGetRadio => 'Get Radio';
@override
String get repeater_cliQuickGetTx => 'Get TX';
@override
String get repeater_cliQuickNeighbors => 'Neighbors';
@override
String get repeater_cliQuickVersion => 'Version';
@override
String get repeater_cliQuickAdvertise => 'Advertise';
@override
String get repeater_cliQuickClock => 'Clock';
@override
String get repeater_cliQuickClockSync => 'Clock Sync';
@override
String get repeater_cliQuickDiscovery => 'Discover Neighbors';
@override
String get repeater_cliHelpAdvert => 'Sends an advertisement packet';
@override
String get repeater_cliHelpReboot =>
'Reboots the device. (note, you\'ll prob get \'Timeout\' which is normal)';
@override
String get repeater_cliHelpClock =>
'Displays current time per device\'s clock.';
@override
String get repeater_cliHelpPassword =>
'Sets a new admin password for the device.';
@override
String get repeater_cliHelpVersion =>
'Shows the device version and firmware build date.';
@override
String get repeater_cliHelpClearStats =>
'Resets various stats counters to zero.';
@override
String get repeater_cliHelpSetAf => 'Sets the air-time-factor.';
@override
String get repeater_cliHelpSetTx =>
'Sets LoRa transmit power in dBm. (reboot to apply)';
@override
String get repeater_cliHelpSetRepeat =>
'Enables or disables the repeater role for this node.';
@override
String get repeater_cliHelpSetAllowReadOnly =>
'(Room server) If \'on\', then login in blank password will be allowed, but cannot Post to room. (just read only)';
@override
String get repeater_cliHelpSetFloodMax =>
'Sets the maximum number of hops of inbound flood packet (if >= max, packet is not forwarded)';
@override
String get repeater_cliHelpSetIntThresh =>
'Sets the Interference Threshold (in DB). Default is 14. Set to 0 to disable channel interference detection.';
@override
String get repeater_cliHelpSetAgcResetInterval =>
'Sets the interval to reset the Auto Gain Controller. Set to 0 to disable.';
@override
String get repeater_cliHelpSetMultiAcks =>
'Enables or disables the \'double ACKs\' feature.';
@override
String get repeater_cliHelpSetAdvertInterval =>
'Sets the timer interval in minutes to send a local (zero-hop) advertisement packet. Set to 0 to disable.';
@override
String get repeater_cliHelpSetFloodAdvertInterval =>
'Sets the timer interval in hours to send a flood advertisement packet. Set to 0 to disable.';
@override
String get repeater_cliHelpSetGuestPassword =>
'Sets/updates the guest password. (for repeaters, guest logins can send the \"Get Stats\" request)';
@override
String get repeater_cliHelpSetName => 'Sets the advertisement name.';
@override
String get repeater_cliHelpSetLat =>
'Sets the advertisement map latitude. (decimal degrees)';
@override
String get repeater_cliHelpSetLon =>
'Sets the advertisement map longitude. (decimal degrees)';
@override
String get repeater_cliHelpSetRadio =>
'Sets completely new radio params, and saves to preferences. Requires a \"reboot\" command to apply.';
@override
String get repeater_cliHelpSetRxDelay =>
'Sets (experimental) base (must be > 1 for effect) for applying slight delay to received packets, based on signal strength/score. Set to 0 to disable.';
@override
String get repeater_cliHelpSetTxDelay =>
'Sets a factor multiplied with time-on-air for a flood-mode packet and with a randomized slot system, to delay its forwarding. (to decrease likelihood of collisions)';
@override
String get repeater_cliHelpSetDirectTxDelay =>
'Same as txdelay, but for applying a random delay to the forwarding of direct-mode packets.';
@override
String get repeater_cliHelpSetBridgeEnabled => 'Enable/Disable bridge.';
@override
String get repeater_cliHelpSetBridgeDelay =>
'Set delay before retransmitting packets.';
@override
String get repeater_cliHelpSetBridgeSource =>
'Choose wether the bridge will retransmit received packets or transmitted packets.';
@override
String get repeater_cliHelpSetBridgeBaud =>
'Set serial link baudrate for rs232 bridges.';
@override
String get repeater_cliHelpSetBridgeSecret =>
'Set bridge secret for espnow bridges.';
@override
String get repeater_cliHelpSetAdcMultiplier =>
'Sets custom factor to adjust reported battery voltage (only supported on select boards).';
@override
String get repeater_cliHelpTempRadio =>
'Sets temporary radio params for the given number of minutes, reverting to original radio params afterward. (does NOT save to preferences).';
@override
String get repeater_cliHelpSetPerm =>
'Modifies the ACL. Removes matching entry (by pubkey prefix) if \"permissions\" is zero. Adds new entry if pubkey-hex is full length and is not currently in ACL. Updates entry by matching pubkey prefix. Permission bits vary per firmware role, but low 2 bits are: 0 (Guest), 1 (Read only), 2 (Read write), 3 (Admin)';
@override
String get repeater_cliHelpGetBridgeType =>
'Gets bridge type none, rs232, espnow';
@override
String get repeater_cliHelpLogStart =>
'Starts packet logging to file system.';
@override
String get repeater_cliHelpLogStop => 'Stops packet logging to file system.';
@override
String get repeater_cliHelpLogErase =>
'Erases the packet logs from file system.';
@override
String get repeater_cliHelpNeighbors =>
'Shows a list of other repeater nodes heard via zero-hop adverts. Each line is id-prefix-hex:timestamp:snr-times-4';
@override
String get repeater_cliHelpNeighborRemove =>
'Removes first matching entry (by pubkey prefix (hex)), from neighbors list.';
@override
String get repeater_cliHelpRegion =>
'(serial only) Lists all defined regions and current flood permissions.';
@override
String get repeater_cliHelpRegionLoad =>
'NOTE: this is a special multi-command invocation. Each subsequent command is a region name (indented with spaces to indicate parent hierarchy, with one space at minimum). Terminated by sending a blank line/command.';
@override
String get repeater_cliHelpRegionGet =>
'Searches for region with given name prefix (or \"*\" for the global scope). Replies with \"-> region-name (parent-name) \'F\'\"';
@override
String get repeater_cliHelpRegionPut =>
'Adds or updates a region definition with given name.';
@override
String get repeater_cliHelpRegionRemove =>
'Removes a region definition with given name. (must match exactly, and have no child regions)';
@override
String get repeater_cliHelpRegionAllowf =>
'Sets the \'F\'lood permission for the given region. (\'*\' for the global/legacy scope)';
@override
String get repeater_cliHelpRegionDenyf =>
'Removes the \'F\'lood permission for the given region. (NOTE: at this stage NOT advised to use this on the global/legacy scope!!)';
@override
String get repeater_cliHelpRegionHome =>
'Replies with the current \'home\' region. (Note applied anywhere yet, reserved for future)';
@override
String get repeater_cliHelpRegionHomeSet => 'Sets the \'home\' region.';
@override
String get repeater_cliHelpRegionSave =>
'Persists the region list/map to storage.';
@override
String get repeater_cliHelpGps =>
'Gives status of gps. When gps is off, it replies only off, if on it replies with on, status, fix, sat count';
@override
String get repeater_cliHelpGpsOnOff => 'Toggles gps power state.';
@override
String get repeater_cliHelpGpsSync => 'Syncs node time with gps clock.';
@override
String get repeater_cliHelpGpsSetLoc =>
'Sets node\'s position to gps coordinates and save preferences.';
@override
String get repeater_cliHelpGpsAdvert =>
'Gives location advert configuration of the node:\n- none: don\'t include location in adverts\n- share: share gps location (from SensorManager)\n- prefs: advert the location stored in preferences';
@override
String get repeater_cliHelpGpsAdvertSet =>
'Sets location advert configuration.';
@override
String get repeater_commandsListTitle => 'Commands List';
@override
String get repeater_commandsListNote =>
'NOTE: for the various \"set ...\" commands, there is also a \"get ...\" command.';
@override
String get repeater_general => 'General';
@override
String get repeater_settingsCategory => 'Settings';
@override
String get repeater_bridge => 'Bridge';
@override
String get repeater_logging => 'Logging';
@override
String get repeater_neighborsRepeaterOnly => 'Neighbors (Repeater only)';
@override
String get repeater_regionManagementRepeaterOnly =>
'Region Management (Repeater only)';
@override
String get repeater_regionNote =>
'Region commands have been introduced to manage region definitions and permissions.';
@override
String get repeater_gpsManagement => 'GPS Management';
@override
String get repeater_gpsNote =>
'gps command has been introduced to manage location related topics.';
@override
String get telemetry_receivedData => 'Received Telemetry Data';
@override
String get telemetry_requestTimeout => 'Telemetry request timed out.';
@override
String telemetry_errorLoading(String error) {
return 'Error loading telemetry: $error';
}
@override
String get telemetry_noData => 'No telemetry data available.';
@override
String telemetry_channelTitle(int channel) {
return 'Channel $channel';
}
@override
String get telemetry_batteryLabel => 'Battery';
@override
String get telemetry_voltageLabel => 'Voltage';
@override
String get telemetry_mcuTemperatureLabel => 'MCU Temperature';
@override
String get telemetry_temperatureLabel => 'Temperature';
@override
String get telemetry_currentLabel => 'Current';
@override
String telemetry_batteryValue(int percent, String volts) {
return '$percent% / ${volts}V';
}
@override
String telemetry_voltageValue(String volts) {
return '${volts}V';
}
@override
String telemetry_currentValue(String amps) {
return '${amps}A';
}
@override
String telemetry_temperatureValue(String celsius, String fahrenheit) {
return '$celsius°C / $fahrenheit°F';
}
@override
String get neighbors_receivedData => 'Received Neighbors Data';
@override
String get neighbors_requestTimedOut => 'Neighbors request timed out.';
@override
String neighbors_errorLoading(String error) {
return 'Error loading neighbors: $error';
}
@override
String get neighbors_repeatersNeighbors => 'Repeaters Neighbors';
@override
String get neighbors_noData => 'No neighbors data available.';
@override
String neighbors_unknownContact(String pubkey) {
return 'Unknown $pubkey';
}
@override
String neighbors_heardAgo(String time) {
return 'Heard: $time ago';
}
@override
String get channelPath_title => 'Packet Path';
@override
String get channelPath_viewMap => 'View map';
@override
String get channelPath_otherObservedPaths => 'Other Observed Paths';
@override
String get channelPath_repeaterHops => 'Repeater Hops';
@override
String get channelPath_noHopDetails =>
'Hop details are not provided for this packet.';
@override
String get channelPath_messageDetails => 'Message Details';
@override
String get channelPath_senderLabel => 'Sender';
@override
String get channelPath_timeLabel => 'Time';
@override
String get channelPath_repeatsLabel => 'Repeats';
@override
String channelPath_pathLabel(int index) {
return 'Path $index';
}
@override
String get channelPath_observedLabel => 'Observed';
@override
String channelPath_observedPathTitle(int index, String hops) {
return 'Observed path $index$hops';
}
@override
String get channelPath_noLocationData => 'No location data';
@override
String channelPath_timeWithDate(int day, int month, String time) {
return '$day/$month $time';
}
@override
String channelPath_timeOnly(String time) {
return '$time';
}
@override
String get channelPath_unknownPath => 'Unknown';
@override
String get channelPath_floodPath => 'Flood';
@override
String get channelPath_directPath => 'Direct';
@override
String channelPath_observedZeroOf(int total) {
return '0 of $total hops';
}
@override
String channelPath_observedSomeOf(int observed, int total) {
return '$observed of $total hops';
}
@override
String get channelPath_mapTitle => 'Path Map';
@override
String get channelPath_noRepeaterLocations =>
'No repeater locations available for this path.';
@override
String channelPath_primaryPath(int index) {
return 'Path $index (Primary)';
}
@override
String get channelPath_pathLabelTitle => 'Path';
@override
String get channelPath_observedPathHeader => 'Observed Path';
@override
String channelPath_selectedPathLabel(String label, String prefixes) {
return '$label$prefixes';
}
@override
String get channelPath_noHopDetailsAvailable =>
'No hop details available for this packet.';
@override
String get channelPath_unknownRepeater => 'Unknown Repeater';
@override
String get community_title => 'Community';
@override
String get community_create => 'Create Community';
@override
String get community_createDesc =>
'Create a new community and share via QR code.';
@override
String get community_join => 'Join';
@override
String get community_joinTitle => 'Join Community';
@override
String community_joinConfirmation(String name) {
return 'Do you want to join the community \"$name\"?';
}
@override
String get community_scanQr => 'Scan Community QR';
@override
String get community_scanInstructions =>
'Point the camera at a community QR code';
@override
String get community_showQr => 'Show QR Code';
@override
String get community_publicChannel => 'Community Public';
@override
String get community_hashtagChannel => 'Community Hashtag';
@override
String get community_name => 'Community Name';
@override
String get community_enterName => 'Enter community name';
@override
String community_created(String name) {
return 'Community \"$name\" created';
}
@override
String community_joined(String name) {
return 'Joined community \"$name\"';
}
@override
String get community_qrTitle => 'Share Community';
@override
String community_qrInstructions(String name) {
return 'Scan this QR code to join \"$name\"';
}
@override
String get community_hashtagPrivacyHint =>
'Community hashtag channels are only joinable by members of the community';
@override
String get community_invalidQrCode => 'Invalid community QR code';
@override
String get community_alreadyMember => 'Already a Member';
@override
String community_alreadyMemberMessage(String name) {
return 'You are already a member of \"$name\".';
}
@override
String get community_addPublicChannel => 'Add Community Public Channel';
@override
String get community_addPublicChannelHint =>
'Automatically add the public channel for this community';
@override
String get community_noCommunities => 'No communities joined yet';
@override
String get community_scanOrCreate =>
'Scan a QR code or create a community to get started';
@override
String get community_manageCommunities => 'Manage Communities';
@override
String get community_delete => 'Leave Community';
@override
String community_deleteConfirm(String name) {
return 'Leave \"$name\"?';
}
@override
String community_deleteChannelsWarning(int count) {
return 'This will also delete $count channel(s) and their messages.';
}
@override
String community_deleted(String name) {
return 'Left community \"$name\"';
}
@override
String get community_regenerateSecret => 'Regenerate Secret';
@override
String community_regenerateSecretConfirm(String name) {
return 'Regenerate the secret key for \"$name\"? All members will need to scan the new QR code to continue communicating.';
}
@override
String get community_regenerate => 'Regenerate';
@override
String community_secretRegenerated(String name) {
return 'Secret regenerated for \"$name\"';
}
@override
String get community_updateSecret => 'Update Secret';
@override
String community_secretUpdated(String name) {
return 'Secret updated for \"$name\"';
}
@override
String community_scanToUpdateSecret(String name) {
return 'Scan the new QR code to update the secret for \"$name\"';
}
@override
String get community_addHashtagChannel => 'Add Community Hashtag';
@override
String get community_addHashtagChannelDesc =>
'Add a hashtag channel for this community';
@override
String get community_selectCommunity => 'Select Community';
@override
String get community_regularHashtag => 'Regular Hashtag';
@override
String get community_regularHashtagDesc => 'Public hashtag (anyone can join)';
@override
String get community_communityHashtag => 'Community Hashtag';
@override
String get community_communityHashtagDesc => 'Private to community members';
@override
String community_forCommunity(String name) {
return 'For $name';
}
@override
String get listFilter_tooltip => 'Filter and sort';
@override
String get listFilter_sortBy => 'Sort by';
@override
String get listFilter_latestMessages => 'Latest messages';
@override
String get listFilter_heardRecently => 'Heard recently';
@override
String get listFilter_az => 'A-Z';
@override
String get listFilter_filters => 'Filters';
@override
String get listFilter_all => 'All';
@override
String get listFilter_favorites => 'Favorites';
@override
String get listFilter_addToFavorites => 'Add to favorites';
@override
String get listFilter_removeFromFavorites => 'Remove from favorites';
@override
String get listFilter_users => 'Users';
@override
String get listFilter_repeaters => 'Repeaters';
@override
String get listFilter_roomServers => 'Room servers';
@override
String get listFilter_unreadOnly => 'Unread only';
@override
String get listFilter_newGroup => 'New group';
@override
String get pathTrace_you => 'You';
@override
String get pathTrace_failed => 'Path trace failed.';
@override
String get pathTrace_notAvailable => 'Path trace not available.';
@override
String get pathTrace_refreshTooltip => 'Refresh Path Trace.';
@override
String get pathTrace_someHopsNoLocation =>
'One or more of the hops is missing a location!';
@override
String get pathTrace_clearTooltip => 'Clear path.';
@override
String get losSelectStartEnd => 'Select start and end nodes for LOS.';
@override
String losRunFailed(String error) {
return 'Line-of-sight check failed: $error';
}
@override
String get losClearAllPoints => 'Clear all points';
@override
String get losRunToViewElevationProfile =>
'Run LOS to view elevation profile';
@override
String get losMenuTitle => 'LOS Menu';
@override
String get losMenuSubtitle => 'Tap nodes or long-press map for custom points';
@override
String get losShowDisplayNodes => 'Show display nodes';
@override
String get losCustomPoints => 'Custom points';
@override
String losCustomPointLabel(int index) {
return 'Custom $index';
}
@override
String get losPointA => 'Point A';
@override
String get losPointB => 'Point B';
@override
String losAntennaA(String value, String unit) {
return 'Antenna A: $value $unit';
}
@override
String losAntennaB(String value, String unit) {
return 'Antenna B: $value $unit';
}
@override
String get losRun => 'Run LOS';
@override
String get losNoElevationData => 'No elevation data';
@override
String losProfileClear(
String distance,
String distanceUnit,
String clearance,
String heightUnit,
) {
return '$distance $distanceUnit, clear LOS, min clearance $clearance $heightUnit';
}
@override
String losProfileBlocked(
String distance,
String distanceUnit,
String obstruction,
String heightUnit,
) {
return '$distance $distanceUnit, blocked by $obstruction $heightUnit';
}
@override
String get losStatusChecking => 'LOS: checking...';
@override
String get losStatusNoData => 'LOS: no data';
@override
String losStatusSummary(int clear, int total, int blocked, int unknown) {
return 'LOS: $clear/$total clear, $blocked blocked, $unknown unknown';
}
@override
String get losErrorElevationUnavailable =>
'Elevation data unavailable for one or more samples.';
@override
String get losErrorInvalidInput =>
'Invalid points/elevation data for LOS calculation.';
@override
String get losRenameCustomPoint => 'Rename custom point';
@override
String get losPointName => 'Point name';
@override
String get losShowPanelTooltip => 'Show LOS panel';
@override
String get losHidePanelTooltip => 'Hide LOS panel';
@override
String get losElevationAttribution =>
'Elevation data: Open-Meteo (CC BY 4.0)';
@override
String get losLegendRadioHorizon => 'Radio horizon';
@override
String get losLegendLosBeam => 'LOS beam';
@override
String get losLegendTerrain => 'Terrain';
@override
String get losBlockedSpotsTitle => 'Blocked spots';
@override
String get losBlockedSpotsHint =>
'Tap a blocked spot to highlight it on the map.';
@override
String losBlockedSpotChip(
String distance,
String distanceUnit,
String obstruction,
String heightUnit,
) {
return '$distance $distanceUnit$obstruction $heightUnit';
}
@override
String get losSelectedObstructionTitle => 'Selected obstruction';
@override
String losSelectedObstructionDetails(
String obstruction,
String heightUnit,
String distanceFromA,
String distanceUnit,
String distanceFromB,
) {
return 'Blocked by $obstruction $heightUnit, $distanceFromA from A and $distanceFromB from B ($distanceUnit).';
}
@override
String get losFrequencyLabel => 'Frequency';
@override
String get losFrequencyInfoTooltip => 'View calculation details';
@override
String get losFrequencyDialogTitle => 'Radio horizon calculation';
@override
String losFrequencyDialogDescription(
double baselineK,
double baselineFreq,
double frequencyMHz,
double kFactor,
) {
return 'Starting from k=$baselineK at $baselineFreq MHz, the calculation adjusts the k-factor for the current $frequencyMHz MHz band, which defines the curved radio horizon cap.';
}
@override
String get contacts_pathTrace => 'Path Trace';
@override
String get contacts_ping => 'Ping';
@override
String get contacts_repeaterPathTrace => 'Path trace to repeater';
@override
String get contacts_repeaterPing => 'Ping repeater';
@override
String get contacts_roomPathTrace => 'Path trace to room server';
@override
String get contacts_roomPing => 'Ping room server';
@override
String get contacts_chatTraceRoute => 'Path trace route';
@override
String contacts_pathTraceTo(String name) {
return 'Trace route to $name';
}
@override
String get contacts_clipboardEmpty => 'Clipboard is empty.';
@override
String get contacts_invalidAdvertFormat => 'Invalid contact data';
@override
String get contacts_contactImported => 'Contact has been imported.';
@override
String get contacts_contactImportFailed => 'Failed to import contact.';
@override
String get contacts_zeroHopAdvert => 'Zero Hop Advert';
@override
String get contacts_floodAdvert => 'Flood Advert';
@override
String get contacts_copyAdvertToClipboard => 'Copy Advert to Clipboard';
@override
String get contacts_addContactFromClipboard => 'Add Contact from Clipboard';
@override
String get contacts_ShareContact => 'Copy contact to Clipboard';
@override
String get contacts_ShareContactZeroHop => 'Share contact by advert';
@override
String get contacts_zeroHopContactAdvertSent => 'Sent contact by advert.';
@override
String get contacts_zeroHopContactAdvertFailed => 'Failed to send contact.';
@override
String get contacts_contactAdvertCopied => 'Advert copied to Clipboard.';
@override
String get contacts_contactAdvertCopyFailed =>
'Copying advert to Clipboard failed.';
@override
String get notification_activityTitle => 'MeshCore Activity';
@override
String notification_messagesCount(int count) {
String _temp0 = intl.Intl.pluralLogic(
count,
locale: localeName,
other: 'messages',
one: 'message',
);
return '$count $_temp0';
}
@override
String notification_channelMessagesCount(int count) {
String _temp0 = intl.Intl.pluralLogic(
count,
locale: localeName,
other: 'channel messages',
one: 'channel message',
);
return '$count $_temp0';
}
@override
String notification_newNodesCount(int count) {
String _temp0 = intl.Intl.pluralLogic(
count,
locale: localeName,
other: 'new nodes',
one: 'new node',
);
return '$count $_temp0';
}
@override
String notification_newTypeDiscovered(String contactType) {
return 'New $contactType discovered';
}
@override
String get notification_receivedNewMessage => 'Received new message';
@override
String get settings_gpxExportRepeaters =>
'Export repeaters / room server to GPX';
@override
String get settings_gpxExportRepeatersSubtitle =>
'Exports repeaters / roomserver with a location to GPX file.';
@override
String get settings_gpxExportContacts => 'Export companions to GPX';
@override
String get settings_gpxExportContactsSubtitle =>
'Exports companions with a location to GPX file.';
@override
String get settings_gpxExportAll => 'Export all contacts to GPX';
@override
String get settings_gpxExportAllSubtitle =>
'Exports all contacts with a location to GPX file.';
@override
String get settings_gpxExportSuccess => 'Successfully exported GPX file.';
@override
String get settings_gpxExportNoContacts => 'No contacts to export.';
@override
String get settings_gpxExportNotAvailable =>
'Not supported on your device/OS';
@override
String get settings_gpxExportError => 'There was an error when exporting.';
@override
String get settings_gpxExportRepeatersRoom =>
'Repeater & room server locations';
@override
String get settings_gpxExportChat => 'Companion locations';
@override
String get settings_gpxExportAllContacts => 'All contacts locations';
@override
String get settings_gpxExportShareText =>
'Map data exported from meshcore-open';
@override
String get settings_gpxExportShareSubject =>
'meshcore-open GPX map data export';
@override
String get snrIndicator_nearByRepeaters => 'Nearby Repeaters';
@override
String get snrIndicator_lastSeen => 'Last seen';
@override
String get contactsSettings_title => 'Contacts settings';
@override
String get contactsSettings_autoAddTitle => 'Automatic Discovery';
@override
String get contactsSettings_otherTitle => 'Other contact related settings';
@override
String get contactsSettings_autoAddUsersTitle => 'Auto-add users';
@override
String get contactsSettings_autoAddUsersSubtitle =>
'Allow the companion to automatically add discovered users.';
@override
String get contactsSettings_autoAddRepeatersTitle => 'Auto-add repeaters';
@override
String get contactsSettings_autoAddRepeatersSubtitle =>
'Allow the companion to automatically add discovered repeaters.';
@override
String get contactsSettings_autoAddRoomServersTitle =>
'Auto-add room servers';
@override
String get contactsSettings_autoAddRoomServersSubtitle =>
'Allow the companion to automatically add discovered room servers.';
@override
String get contactsSettings_autoAddSensorsTitle => 'Auto-add sensors';
@override
String get contactsSettings_autoAddSensorsSubtitle =>
'Allow the companion to automatically add discovered sensors.';
@override
String get contactsSettings_overwriteOldestTitle => 'Overwrite Oldest';
@override
String get contactsSettings_overwriteOldestSubtitle =>
'When the contact list is full, the oldest non-favorited contact will be replaced.';
@override
String get discoveredContacts_Title => 'Discovered Contacts';
@override
String get discoveredContacts_noMatching => 'No matching contacts';
@override
String get discoveredContacts_searchHint => 'Search discovered contacts';
@override
String get discoveredContacts_contactAdded => 'Contact added';
@override
String get discoveredContacts_addContact => 'Add Contact';
@override
String get discoveredContacts_copyContact => 'Copy Contact to clipboard';
@override
String get discoveredContacts_deleteContact => 'Delete Discovered Contact';
@override
String get discoveredContacts_deleteContactAll =>
'Delete All Discovered Contacts';
@override
String get discoveredContacts_deleteContactAllContent =>
'Are you sure you want to delete all discovered contacts?';
@override
String get chat_sendCooldown => 'Please wait a moment before sending again.';
@override
String get appSettings_jumpToOldestUnread => 'Jump to oldest unread';
@override
String get appSettings_jumpToOldestUnreadSubtitle =>
'When opening a chat with unread messages, scroll to the first unread instead of the latest.';
@override
String get appSettings_languageHu => 'Hungarian';
@override
String get appSettings_languageJa => 'Japanese';
@override
String get appSettings_languageKo => 'Korean';
@override
String get radioStats_tooltip => 'Radio & mesh stats';
@override
String get radioStats_screenTitle => 'Radio stats';
@override
String get radioStats_notConnected =>
'Connect to a device to view radio statistics.';
@override
String get radioStats_firmwareTooOld =>
'Radio statistics require companion firmware v8 or newer.';
@override
String get radioStats_waiting => 'Waiting for data…';
@override
String radioStats_noiseFloor(int noiseDbm) {
return 'Noise floor: $noiseDbm dBm';
}
@override
String radioStats_lastRssi(int rssiDbm) {
return 'Last RSSI: $rssiDbm dBm';
}
@override
String radioStats_lastSnr(String snr) {
return 'Last SNR: $snr dB';
}
@override
String radioStats_txAir(int seconds) {
return 'TX airtime (total): $seconds s';
}
@override
String radioStats_rxAir(int seconds) {
return 'RX airtime (total): $seconds s';
}
@override
String get radioStats_chartCaption =>
'Noise floor (dBm) over recent samples.';
@override
String radioStats_stripNoise(int noiseDbm) {
return 'Noise floor: $noiseDbm dBm';
}
@override
String get radioStats_stripWaiting => 'Fetching radio stats…';
@override
String get radioStats_settingsTile => 'Radio stats';
@override
String get radioStats_settingsSubtitle =>
'Noise floor, RSSI, SNR, and airtime';
@override
String get translation_title => 'Translation';
@override
String get translation_enableTitle => 'Enable translation';
@override
String get translation_enableSubtitle =>
'Translate incoming messages and allow pre-send translation.';
@override
String get translation_composerTitle => 'Translate before sending';
@override
String get translation_composerSubtitle =>
'Controls the default state of the composer translation icon.';
@override
String get translation_targetLanguage => 'Target language';
@override
String get translation_useAppLanguage => 'Use app language';
@override
String get translation_downloadedModelLabel => 'Downloaded model';
@override
String get translation_presetModelLabel => 'Preset Hugging Face model';
@override
String get translation_manualUrlLabel => 'Manual model URL';
@override
String get translation_downloadModel => 'Download model';
@override
String get translation_downloading => 'Downloading...';
@override
String get translation_working => 'Working...';
@override
String get translation_stop => 'Stop';
@override
String get translation_mergingChunks =>
'Merging downloaded chunks into final file...';
@override
String get translation_downloadedModels => 'Downloaded models';
@override
String get translation_deleteModel => 'Delete model';
@override
String get translation_modelDownloaded => 'Translation model downloaded.';
@override
String get translation_downloadStopped => 'Download stopped.';
@override
String translation_downloadFailed(String error) {
return 'Download failed: $error';
}
@override
String get translation_enterUrlFirst => 'Enter a model URL first.';
@override
String get scanner_linuxPairingShowPin => 'Show PIN';
@override
String get scanner_linuxPairingHidePin => 'Hide PIN';
@override
String get scanner_linuxPairingPinTitle => 'Bluetooth Pairing PIN';
@override
String scanner_linuxPairingPinPrompt(String deviceName) {
return 'Enter PIN for $deviceName (leave blank if none).';
}
@override
String get translation_messageTranslation => 'Message translation';
@override
String get translation_translateBeforeSending => 'Translate before sending';
@override
String get translation_composerEnabledHint =>
'Messages will be translated before send.';
@override
String get translation_composerDisabledHint =>
'Send messages in the original typed language.';
@override
String translation_translateTo(String language) {
return 'Translate to $language';
}
@override
String get translation_translationOptions => 'Translation options';
@override
String get translation_systemLanguage => 'System language';
@override
String get background_serviceTitle => 'MeshCore running';
@override
String get background_serviceText => 'Keeping BLE connected';
@override
String appSettings_translationModelDeleted(String name) {
return 'Deleted $name';
}
@override
String appSettings_translationModelDeleteFailed(String error) {
return 'Failed to delete: $error';
}
@override
String channels_channelUpdateFailed(String error) {
return 'Failed to update channel: $error';
}
@override
String get contact_typeChat => 'Chat';
@override
String get contact_typeRepeater => 'Repeater';
@override
String get contact_typeRoom => 'Room';
@override
String get contact_typeSensor => 'Sensor';
@override
String get contact_typeUnknown => 'Unknown';
}