mirror of
https://github.com/dz0ny/meshcore-sar.git
synced 2026-08-11 16:30:28 +00:00
Resolve localization and name bugs
This commit is contained in:
@@ -2301,5 +2301,246 @@
|
||||
},
|
||||
"requestingVoice": "Requesting voice",
|
||||
"@requestingVoice": {
|
||||
},
|
||||
"device": "device",
|
||||
"@device": {
|
||||
"description": "Generic device label"
|
||||
},
|
||||
"change": "Change",
|
||||
"@change": {
|
||||
"description": "Generic change action"
|
||||
},
|
||||
"wizardOverviewDescription": "This app combines MeshCore messaging, SAR field updates, mapping, and device tools in one place.",
|
||||
"@wizardOverviewDescription": {
|
||||
"description": "Updated onboarding overview description"
|
||||
},
|
||||
"wizardOverviewFeature1": "Send direct, room, and channel messages from the main Messages tab.",
|
||||
"@wizardOverviewFeature1": {
|
||||
"description": "Updated onboarding overview feature 1"
|
||||
},
|
||||
"wizardOverviewFeature2": "Share SAR markers, map drawings, voice clips, and images over the mesh.",
|
||||
"@wizardOverviewFeature2": {
|
||||
"description": "Updated onboarding overview feature 2"
|
||||
},
|
||||
"wizardOverviewFeature3": "Connect over BLE or TCP, then manage the companion radio from inside the app.",
|
||||
"@wizardOverviewFeature3": {
|
||||
"description": "Updated onboarding overview feature 3"
|
||||
},
|
||||
"wizardMessagingTitle": "Messaging and Field Reports",
|
||||
"@wizardMessagingTitle": {
|
||||
"description": "Updated onboarding messaging page title"
|
||||
},
|
||||
"wizardMessagingDescription": "Messages are more than plain text here. The app already supports several operational payloads and transfer workflows.",
|
||||
"@wizardMessagingDescription": {
|
||||
"description": "Updated onboarding messaging page description"
|
||||
},
|
||||
"wizardMessagingFeature1": "Send direct messages, room posts, and channel traffic from one composer.",
|
||||
"@wizardMessagingFeature1": {
|
||||
"description": "Updated onboarding messaging feature 1"
|
||||
},
|
||||
"wizardMessagingFeature2": "Create SAR updates and reusable SAR templates for common field reports.",
|
||||
"@wizardMessagingFeature2": {
|
||||
"description": "Updated onboarding messaging feature 2"
|
||||
},
|
||||
"wizardMessagingFeature3": "Transfer voice sessions and images, with progress and airtime estimates in the UI.",
|
||||
"@wizardMessagingFeature3": {
|
||||
"description": "Updated onboarding messaging feature 3"
|
||||
},
|
||||
"wizardConnectDeviceTitle": "Connect device",
|
||||
"@wizardConnectDeviceTitle": {
|
||||
"description": "Onboarding connect device page title"
|
||||
},
|
||||
"wizardConnectDeviceDescription": "Connect your MeshCore radio, choose a name, and apply a radio preset before continuing.",
|
||||
"@wizardConnectDeviceDescription": {
|
||||
"description": "Onboarding connect device page description"
|
||||
},
|
||||
"wizardSetupBadge": "Setup",
|
||||
"@wizardSetupBadge": {
|
||||
"description": "Onboarding setup badge label"
|
||||
},
|
||||
"wizardOverviewBadge": "Overview",
|
||||
"@wizardOverviewBadge": {
|
||||
"description": "Onboarding overview badge label"
|
||||
},
|
||||
"wizardConnectedToDevice": "Connected to {deviceName}",
|
||||
"@wizardConnectedToDevice": {
|
||||
"description": "Onboarding connection status when connected",
|
||||
"placeholders": {
|
||||
"deviceName": {
|
||||
"type": "String"
|
||||
}
|
||||
}
|
||||
},
|
||||
"wizardNoDeviceConnected": "No device connected yet",
|
||||
"@wizardNoDeviceConnected": {
|
||||
"description": "Onboarding connection status when disconnected"
|
||||
},
|
||||
"wizardSkipForNow": "Skip for now",
|
||||
"@wizardSkipForNow": {
|
||||
"description": "Onboarding skip current setup step action"
|
||||
},
|
||||
"wizardDeviceNameLabel": "Device name",
|
||||
"@wizardDeviceNameLabel": {
|
||||
"description": "Onboarding device name field label"
|
||||
},
|
||||
"wizardDeviceNameHelp": "This name is advertised to other MeshCore users.",
|
||||
"@wizardDeviceNameHelp": {
|
||||
"description": "Onboarding device name field helper text"
|
||||
},
|
||||
"wizardConfigRegionLabel": "Config region",
|
||||
"@wizardConfigRegionLabel": {
|
||||
"description": "Onboarding config region field label"
|
||||
},
|
||||
"wizardConfigRegionHelp": "Uses the full official MeshCore preset list. Default is EU/UK (Narrow).",
|
||||
"@wizardConfigRegionHelp": {
|
||||
"description": "Onboarding config region helper text"
|
||||
},
|
||||
"wizardPresetNote1": "Make sure the selected preset matches your local radio regulations.",
|
||||
"@wizardPresetNote1": {
|
||||
"description": "Onboarding preset note 1"
|
||||
},
|
||||
"wizardPresetNote2": "The list matches the official MeshCore config tool preset feed.",
|
||||
"@wizardPresetNote2": {
|
||||
"description": "Onboarding preset note 2"
|
||||
},
|
||||
"wizardPresetNote3": "EU/UK (Narrow) stays selected by default for onboarding.",
|
||||
"@wizardPresetNote3": {
|
||||
"description": "Onboarding preset note 3"
|
||||
},
|
||||
"wizardSaving": "Saving...",
|
||||
"@wizardSaving": {
|
||||
"description": "Onboarding saving button label"
|
||||
},
|
||||
"wizardSaveAndContinue": "Save and continue",
|
||||
"@wizardSaveAndContinue": {
|
||||
"description": "Onboarding save and continue button label"
|
||||
},
|
||||
"wizardEnterDeviceName": "Enter a device name before continuing.",
|
||||
"@wizardEnterDeviceName": {
|
||||
"description": "Onboarding validation when device name is missing"
|
||||
},
|
||||
"wizardDeviceSetupSaved": "Saved {deviceName} with {presetName}.",
|
||||
"@wizardDeviceSetupSaved": {
|
||||
"description": "Onboarding success message after saving device setup",
|
||||
"placeholders": {
|
||||
"deviceName": {
|
||||
"type": "String"
|
||||
},
|
||||
"presetName": {
|
||||
"type": "String"
|
||||
}
|
||||
}
|
||||
},
|
||||
"wizardNetworkTitle": "Contacts, Rooms, and Repeaters",
|
||||
"@wizardNetworkTitle": {
|
||||
"description": "Updated onboarding network page title"
|
||||
},
|
||||
"wizardNetworkDescription": "The Contacts tab organizes the network you discover and the routes you learn over time.",
|
||||
"@wizardNetworkDescription": {
|
||||
"description": "Updated onboarding network page description"
|
||||
},
|
||||
"wizardNetworkFeature1": "Review team members, repeaters, rooms, channels, and pending adverts in one list.",
|
||||
"@wizardNetworkFeature1": {
|
||||
"description": "Updated onboarding network feature 1"
|
||||
},
|
||||
"wizardNetworkFeature2": "Use smart ping, room login, learned paths, and route reset tools when connectivity gets messy.",
|
||||
"@wizardNetworkFeature2": {
|
||||
"description": "Updated onboarding network feature 2"
|
||||
},
|
||||
"wizardNetworkFeature3": "Create channels and manage network destinations without leaving the app.",
|
||||
"@wizardNetworkFeature3": {
|
||||
"description": "Updated onboarding network feature 3"
|
||||
},
|
||||
"wizardMapOpsTitle": "Map, Trails, and Shared Geometry",
|
||||
"@wizardMapOpsTitle": {
|
||||
"description": "Updated onboarding map page title"
|
||||
},
|
||||
"wizardMapOpsDescription": "The app map is tied directly into messaging, tracking, and SAR overlays instead of being a separate viewer.",
|
||||
"@wizardMapOpsDescription": {
|
||||
"description": "Updated onboarding map page description"
|
||||
},
|
||||
"wizardMapOpsFeature1": "Track your own position, teammate locations, and movement trails on the map.",
|
||||
"@wizardMapOpsFeature1": {
|
||||
"description": "Updated onboarding map feature 1"
|
||||
},
|
||||
"wizardMapOpsFeature2": "Open drawings from messages, preview them inline, and remove them from the map when needed.",
|
||||
"@wizardMapOpsFeature2": {
|
||||
"description": "Updated onboarding map feature 2"
|
||||
},
|
||||
"wizardMapOpsFeature3": "Use repeater map views and shared overlays to understand network reach in the field.",
|
||||
"@wizardMapOpsFeature3": {
|
||||
"description": "Updated onboarding map feature 3"
|
||||
},
|
||||
"wizardToolsTitle": "Tools Beyond Messaging",
|
||||
"@wizardToolsTitle": {
|
||||
"description": "Updated onboarding tools page title"
|
||||
},
|
||||
"wizardToolsDescription": "There is more here than the four main tabs. The app also includes configuration, diagnostics, and optional sensor workflows.",
|
||||
"@wizardToolsDescription": {
|
||||
"description": "Updated onboarding tools page description"
|
||||
},
|
||||
"wizardToolsFeature1": "Open device config to change radio settings, telemetry, TX power, and companion details.",
|
||||
"@wizardToolsFeature1": {
|
||||
"description": "Updated onboarding tools feature 1"
|
||||
},
|
||||
"wizardToolsFeature2": "Enable the Sensors tab when you want watched sensor dashboards and quick refresh actions.",
|
||||
"@wizardToolsFeature2": {
|
||||
"description": "Updated onboarding tools feature 2"
|
||||
},
|
||||
"wizardToolsFeature3": "Use packet logs, spectrum scan, and developer diagnostics when troubleshooting the mesh.",
|
||||
"@wizardToolsFeature3": {
|
||||
"description": "Updated onboarding tools feature 3"
|
||||
},
|
||||
"contactInSensors": "In Sensors",
|
||||
"@contactInSensors": {
|
||||
"description": "Contact actions label when already in sensors"
|
||||
},
|
||||
"contactAddToSensors": "Add to Sensors",
|
||||
"@contactAddToSensors": {
|
||||
"description": "Contact actions label to add to sensors"
|
||||
},
|
||||
"contactSetPath": "Set path",
|
||||
"@contactSetPath": {
|
||||
"description": "Contact actions label to set route path"
|
||||
},
|
||||
"contactAddedToSensors": "{contactName} added to Sensors",
|
||||
"@contactAddedToSensors": {
|
||||
"description": "Snackbar after adding contact to sensors",
|
||||
"placeholders": {
|
||||
"contactName": {
|
||||
"type": "String"
|
||||
}
|
||||
}
|
||||
},
|
||||
"contactFailedToClearRoute": "Failed to clear route: {error}",
|
||||
"@contactFailedToClearRoute": {
|
||||
"description": "Error when clearing a contact route fails",
|
||||
"placeholders": {
|
||||
"error": {
|
||||
"type": "String"
|
||||
}
|
||||
}
|
||||
},
|
||||
"contactRouteCleared": "Route cleared",
|
||||
"@contactRouteCleared": {
|
||||
"description": "Snackbar after route is cleared"
|
||||
},
|
||||
"contactRouteSet": "Route set: {route}",
|
||||
"@contactRouteSet": {
|
||||
"description": "Snackbar after route is set",
|
||||
"placeholders": {
|
||||
"route": {
|
||||
"type": "String"
|
||||
}
|
||||
}
|
||||
},
|
||||
"contactFailedToSetRoute": "Failed to set route: {error}",
|
||||
"@contactFailedToSetRoute": {
|
||||
"description": "Error when setting a contact route fails",
|
||||
"placeholders": {
|
||||
"error": {
|
||||
"type": "String"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3203,6 +3203,318 @@ abstract class AppLocalizations {
|
||||
/// In en, this message translates to:
|
||||
/// **'Requesting voice'**
|
||||
String get requestingVoice;
|
||||
|
||||
/// Generic device label
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'device'**
|
||||
String get device;
|
||||
|
||||
/// Generic change action
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Change'**
|
||||
String get change;
|
||||
|
||||
/// Updated onboarding overview description
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'This app combines MeshCore messaging, SAR field updates, mapping, and device tools in one place.'**
|
||||
String get wizardOverviewDescription;
|
||||
|
||||
/// Updated onboarding overview feature 1
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Send direct, room, and channel messages from the main Messages tab.'**
|
||||
String get wizardOverviewFeature1;
|
||||
|
||||
/// Updated onboarding overview feature 2
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Share SAR markers, map drawings, voice clips, and images over the mesh.'**
|
||||
String get wizardOverviewFeature2;
|
||||
|
||||
/// Updated onboarding overview feature 3
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Connect over BLE or TCP, then manage the companion radio from inside the app.'**
|
||||
String get wizardOverviewFeature3;
|
||||
|
||||
/// Updated onboarding messaging page title
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Messaging and Field Reports'**
|
||||
String get wizardMessagingTitle;
|
||||
|
||||
/// Updated onboarding messaging page description
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Messages are more than plain text here. The app already supports several operational payloads and transfer workflows.'**
|
||||
String get wizardMessagingDescription;
|
||||
|
||||
/// Updated onboarding messaging feature 1
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Send direct messages, room posts, and channel traffic from one composer.'**
|
||||
String get wizardMessagingFeature1;
|
||||
|
||||
/// Updated onboarding messaging feature 2
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Create SAR updates and reusable SAR templates for common field reports.'**
|
||||
String get wizardMessagingFeature2;
|
||||
|
||||
/// Updated onboarding messaging feature 3
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Transfer voice sessions and images, with progress and airtime estimates in the UI.'**
|
||||
String get wizardMessagingFeature3;
|
||||
|
||||
/// Onboarding connect device page title
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Connect device'**
|
||||
String get wizardConnectDeviceTitle;
|
||||
|
||||
/// Onboarding connect device page description
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Connect your MeshCore radio, choose a name, and apply a radio preset before continuing.'**
|
||||
String get wizardConnectDeviceDescription;
|
||||
|
||||
/// Onboarding setup badge label
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Setup'**
|
||||
String get wizardSetupBadge;
|
||||
|
||||
/// Onboarding overview badge label
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Overview'**
|
||||
String get wizardOverviewBadge;
|
||||
|
||||
/// Onboarding connection status when connected
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Connected to {deviceName}'**
|
||||
String wizardConnectedToDevice(String deviceName);
|
||||
|
||||
/// Onboarding connection status when disconnected
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'No device connected yet'**
|
||||
String get wizardNoDeviceConnected;
|
||||
|
||||
/// Onboarding skip current setup step action
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Skip for now'**
|
||||
String get wizardSkipForNow;
|
||||
|
||||
/// Onboarding device name field label
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Device name'**
|
||||
String get wizardDeviceNameLabel;
|
||||
|
||||
/// Onboarding device name field helper text
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'This name is advertised to other MeshCore users.'**
|
||||
String get wizardDeviceNameHelp;
|
||||
|
||||
/// Onboarding config region field label
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Config region'**
|
||||
String get wizardConfigRegionLabel;
|
||||
|
||||
/// Onboarding config region helper text
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Uses the full official MeshCore preset list. Default is EU/UK (Narrow).'**
|
||||
String get wizardConfigRegionHelp;
|
||||
|
||||
/// Onboarding preset note 1
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Make sure the selected preset matches your local radio regulations.'**
|
||||
String get wizardPresetNote1;
|
||||
|
||||
/// Onboarding preset note 2
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'The list matches the official MeshCore config tool preset feed.'**
|
||||
String get wizardPresetNote2;
|
||||
|
||||
/// Onboarding preset note 3
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'EU/UK (Narrow) stays selected by default for onboarding.'**
|
||||
String get wizardPresetNote3;
|
||||
|
||||
/// Onboarding saving button label
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Saving...'**
|
||||
String get wizardSaving;
|
||||
|
||||
/// Onboarding save and continue button label
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Save and continue'**
|
||||
String get wizardSaveAndContinue;
|
||||
|
||||
/// Onboarding validation when device name is missing
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Enter a device name before continuing.'**
|
||||
String get wizardEnterDeviceName;
|
||||
|
||||
/// Onboarding success message after saving device setup
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Saved {deviceName} with {presetName}.'**
|
||||
String wizardDeviceSetupSaved(String deviceName, String presetName);
|
||||
|
||||
/// Updated onboarding network page title
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Contacts, Rooms, and Repeaters'**
|
||||
String get wizardNetworkTitle;
|
||||
|
||||
/// Updated onboarding network page description
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'The Contacts tab organizes the network you discover and the routes you learn over time.'**
|
||||
String get wizardNetworkDescription;
|
||||
|
||||
/// Updated onboarding network feature 1
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Review team members, repeaters, rooms, channels, and pending adverts in one list.'**
|
||||
String get wizardNetworkFeature1;
|
||||
|
||||
/// Updated onboarding network feature 2
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Use smart ping, room login, learned paths, and route reset tools when connectivity gets messy.'**
|
||||
String get wizardNetworkFeature2;
|
||||
|
||||
/// Updated onboarding network feature 3
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Create channels and manage network destinations without leaving the app.'**
|
||||
String get wizardNetworkFeature3;
|
||||
|
||||
/// Updated onboarding map page title
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Map, Trails, and Shared Geometry'**
|
||||
String get wizardMapOpsTitle;
|
||||
|
||||
/// Updated onboarding map page description
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'The app map is tied directly into messaging, tracking, and SAR overlays instead of being a separate viewer.'**
|
||||
String get wizardMapOpsDescription;
|
||||
|
||||
/// Updated onboarding map feature 1
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Track your own position, teammate locations, and movement trails on the map.'**
|
||||
String get wizardMapOpsFeature1;
|
||||
|
||||
/// Updated onboarding map feature 2
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Open drawings from messages, preview them inline, and remove them from the map when needed.'**
|
||||
String get wizardMapOpsFeature2;
|
||||
|
||||
/// Updated onboarding map feature 3
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Use repeater map views and shared overlays to understand network reach in the field.'**
|
||||
String get wizardMapOpsFeature3;
|
||||
|
||||
/// Updated onboarding tools page title
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Tools Beyond Messaging'**
|
||||
String get wizardToolsTitle;
|
||||
|
||||
/// Updated onboarding tools page description
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'There is more here than the four main tabs. The app also includes configuration, diagnostics, and optional sensor workflows.'**
|
||||
String get wizardToolsDescription;
|
||||
|
||||
/// Updated onboarding tools feature 1
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Open device config to change radio settings, telemetry, TX power, and companion details.'**
|
||||
String get wizardToolsFeature1;
|
||||
|
||||
/// Updated onboarding tools feature 2
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Enable the Sensors tab when you want watched sensor dashboards and quick refresh actions.'**
|
||||
String get wizardToolsFeature2;
|
||||
|
||||
/// Updated onboarding tools feature 3
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Use packet logs, spectrum scan, and developer diagnostics when troubleshooting the mesh.'**
|
||||
String get wizardToolsFeature3;
|
||||
|
||||
/// Contact actions label when already in sensors
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'In Sensors'**
|
||||
String get contactInSensors;
|
||||
|
||||
/// Contact actions label to add to sensors
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Add to Sensors'**
|
||||
String get contactAddToSensors;
|
||||
|
||||
/// Contact actions label to set route path
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Set path'**
|
||||
String get contactSetPath;
|
||||
|
||||
/// Snackbar after adding contact to sensors
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'{contactName} added to Sensors'**
|
||||
String contactAddedToSensors(String contactName);
|
||||
|
||||
/// Error when clearing a contact route fails
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Failed to clear route: {error}'**
|
||||
String contactFailedToClearRoute(String error);
|
||||
|
||||
/// Snackbar after route is cleared
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Route cleared'**
|
||||
String get contactRouteCleared;
|
||||
|
||||
/// Snackbar after route is set
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Route set: {route}'**
|
||||
String contactRouteSet(String route);
|
||||
|
||||
/// Error when setting a contact route fails
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Failed to set route: {error}'**
|
||||
String contactFailedToSetRoute(String error);
|
||||
}
|
||||
|
||||
class _AppLocalizationsDelegate
|
||||
|
||||
@@ -1734,4 +1734,198 @@ class AppLocalizationsDe extends AppLocalizations {
|
||||
|
||||
@override
|
||||
String get requestingVoice => 'Sprachnachricht wird angefordert';
|
||||
|
||||
@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';
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1741,4 +1741,198 @@ class AppLocalizationsEl extends AppLocalizations {
|
||||
|
||||
@override
|
||||
String get requestingVoice => 'Αίτηση φωνής';
|
||||
|
||||
@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';
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1708,4 +1708,198 @@ class AppLocalizationsEn extends AppLocalizations {
|
||||
|
||||
@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';
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1736,4 +1736,198 @@ class AppLocalizationsEs extends AppLocalizations {
|
||||
|
||||
@override
|
||||
String get requestingVoice => 'Solicitando voz';
|
||||
|
||||
@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';
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1740,4 +1740,198 @@ class AppLocalizationsFr extends AppLocalizations {
|
||||
|
||||
@override
|
||||
String get requestingVoice => 'Demande de voix';
|
||||
|
||||
@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';
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1718,4 +1718,198 @@ class AppLocalizationsHr extends AppLocalizations {
|
||||
|
||||
@override
|
||||
String get requestingVoice => 'Zahtjev za glasom';
|
||||
|
||||
@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';
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1732,4 +1732,198 @@ class AppLocalizationsIt extends AppLocalizations {
|
||||
|
||||
@override
|
||||
String get requestingVoice => 'Richiesta voce';
|
||||
|
||||
@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';
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1729,4 +1729,198 @@ class AppLocalizationsPl extends AppLocalizations {
|
||||
|
||||
@override
|
||||
String get requestingVoice => 'Pobieranie głosu';
|
||||
|
||||
@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';
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1736,4 +1736,198 @@ class AppLocalizationsPt extends AppLocalizations {
|
||||
|
||||
@override
|
||||
String get requestingVoice => 'Solicitando voz';
|
||||
|
||||
@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';
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1726,4 +1726,198 @@ class AppLocalizationsRu extends AppLocalizations {
|
||||
|
||||
@override
|
||||
String get requestingVoice => 'Запрос голоса';
|
||||
|
||||
@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';
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1718,4 +1718,198 @@ class AppLocalizationsSl extends AppLocalizations {
|
||||
|
||||
@override
|
||||
String get requestingVoice => 'Zahteva za glasom';
|
||||
|
||||
@override
|
||||
String get device => 'naprava';
|
||||
|
||||
@override
|
||||
String get change => 'Spremeni';
|
||||
|
||||
@override
|
||||
String get wizardOverviewDescription =>
|
||||
'Ta aplikacija združuje sporočanje MeshCore, terenske SAR posodobitve, zemljevide in orodja za napravo na enem mestu.';
|
||||
|
||||
@override
|
||||
String get wizardOverviewFeature1 =>
|
||||
'Pošiljajte neposredna sporočila, objave v sobah in sporočila na kanalih iz glavnega zavihka Sporočila.';
|
||||
|
||||
@override
|
||||
String get wizardOverviewFeature2 =>
|
||||
'Delite SAR označevalce, risbe zemljevida, glasovne posnetke in slike prek mesh omrežja.';
|
||||
|
||||
@override
|
||||
String get wizardOverviewFeature3 =>
|
||||
'Povežite se prek BLE ali TCP in nato upravljajte spremljevalni radio kar iz aplikacije.';
|
||||
|
||||
@override
|
||||
String get wizardMessagingTitle => 'Sporočanje in terenska poročila';
|
||||
|
||||
@override
|
||||
String get wizardMessagingDescription =>
|
||||
'Sporočila tukaj niso le navadno besedilo. Aplikacija že podpira več operativnih vrst vsebin in prenosnih tokov.';
|
||||
|
||||
@override
|
||||
String get wizardMessagingFeature1 =>
|
||||
'Pošiljajte neposredna sporočila, objave v sobah in promet na kanalih iz enega urejevalnika.';
|
||||
|
||||
@override
|
||||
String get wizardMessagingFeature2 =>
|
||||
'Ustvarjajte SAR posodobitve in večkrat uporabne SAR predloge za pogosta terenska poročila.';
|
||||
|
||||
@override
|
||||
String get wizardMessagingFeature3 =>
|
||||
'Prenašajte glasovne seje in slike, vmesnik pa prikazuje napredek in oceno časa prenosa.';
|
||||
|
||||
@override
|
||||
String get wizardConnectDeviceTitle => 'Poveži napravo';
|
||||
|
||||
@override
|
||||
String get wizardConnectDeviceDescription =>
|
||||
'Povežite svoj MeshCore radio, izberite ime in uporabite radijski prednastavljeni profil, preden nadaljujete.';
|
||||
|
||||
@override
|
||||
String get wizardSetupBadge => 'Nastavitev';
|
||||
|
||||
@override
|
||||
String get wizardOverviewBadge => 'Pregled';
|
||||
|
||||
@override
|
||||
String wizardConnectedToDevice(String deviceName) {
|
||||
return 'Povezano z: $deviceName';
|
||||
}
|
||||
|
||||
@override
|
||||
String get wizardNoDeviceConnected => 'Nobena naprava še ni povezana';
|
||||
|
||||
@override
|
||||
String get wizardSkipForNow => 'Za zdaj preskoči';
|
||||
|
||||
@override
|
||||
String get wizardDeviceNameLabel => 'Ime naprave';
|
||||
|
||||
@override
|
||||
String get wizardDeviceNameHelp =>
|
||||
'To ime se oglašuje drugim uporabnikom MeshCore.';
|
||||
|
||||
@override
|
||||
String get wizardConfigRegionLabel => 'Konfiguracijska regija';
|
||||
|
||||
@override
|
||||
String get wizardConfigRegionHelp =>
|
||||
'Uporabi celoten uradni seznam prednastavitev MeshCore. Privzeto je izbran EU/UK (Narrow).';
|
||||
|
||||
@override
|
||||
String get wizardPresetNote1 =>
|
||||
'Prepričajte se, da izbrana prednastavitev ustreza lokalnim radijskim predpisom.';
|
||||
|
||||
@override
|
||||
String get wizardPresetNote2 =>
|
||||
'Seznam ustreza uradnemu viru prednastavitev orodja MeshCore config.';
|
||||
|
||||
@override
|
||||
String get wizardPresetNote3 =>
|
||||
'Za uvajanje ostane privzeto izbran EU/UK (Narrow).';
|
||||
|
||||
@override
|
||||
String get wizardSaving => 'Shranjujem...';
|
||||
|
||||
@override
|
||||
String get wizardSaveAndContinue => 'Shrani in nadaljuj';
|
||||
|
||||
@override
|
||||
String get wizardEnterDeviceName => 'Pred nadaljevanjem vnesite ime naprave.';
|
||||
|
||||
@override
|
||||
String wizardDeviceSetupSaved(String deviceName, String presetName) {
|
||||
return 'Shranjeno $deviceName z nastavitvijo $presetName.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get wizardNetworkTitle => 'Stiki, sobe in repetitorji';
|
||||
|
||||
@override
|
||||
String get wizardNetworkDescription =>
|
||||
'Zavihek Stiki organizira omrežje, ki ga odkrijete, in poti, ki se jih aplikacija nauči skozi čas.';
|
||||
|
||||
@override
|
||||
String get wizardNetworkFeature1 =>
|
||||
'Na enem seznamu preglejte člane ekipe, repetitorje, sobe, kanale in čakajoče oglase.';
|
||||
|
||||
@override
|
||||
String get wizardNetworkFeature2 =>
|
||||
'Uporabite smart ping, prijavo v sobe, naučene poti in ponastavitev poti, ko povezljivost postane neurejena.';
|
||||
|
||||
@override
|
||||
String get wizardNetworkFeature3 =>
|
||||
'Ustvarjajte kanale in upravljajte omrežne cilje, ne da bi zapustili aplikacijo.';
|
||||
|
||||
@override
|
||||
String get wizardMapOpsTitle => 'Zemljevid, sledi in deljena geometrija';
|
||||
|
||||
@override
|
||||
String get wizardMapOpsDescription =>
|
||||
'Zemljevid v aplikaciji je neposredno povezan s sporočanjem, sledenjem in SAR prekrivanji, namesto da bi bil le ločen pregledovalnik.';
|
||||
|
||||
@override
|
||||
String get wizardMapOpsFeature1 =>
|
||||
'Spremljajte svoj položaj, lokacije sotekmovalcev in gibanje sledi na zemljevidu.';
|
||||
|
||||
@override
|
||||
String get wizardMapOpsFeature2 =>
|
||||
'Odprite risbe iz sporočil, jih predoglejte v vrstici in jih po potrebi odstranite z zemljevida.';
|
||||
|
||||
@override
|
||||
String get wizardMapOpsFeature3 =>
|
||||
'Uporabite poglede repetitorjev in deljena prekrivanja za razumevanje dosega omrežja na terenu.';
|
||||
|
||||
@override
|
||||
String get wizardToolsTitle => 'Orodja onkraj sporočanja';
|
||||
|
||||
@override
|
||||
String get wizardToolsDescription =>
|
||||
'Tu je več kot le štirje glavni zavihki. Aplikacija vključuje tudi konfiguracijo, diagnostiko in neobvezne senzorske poteke.';
|
||||
|
||||
@override
|
||||
String get wizardToolsFeature1 =>
|
||||
'Odprite nastavitve naprave za spremembo radijskih nastavitev, telemetrije, oddajne moči in podatkov spremljevalne naprave.';
|
||||
|
||||
@override
|
||||
String get wizardToolsFeature2 =>
|
||||
'Omogočite zavihek Senzorji, kadar želite nadzorne plošče in hitra osveževanja spremljanih senzorjev.';
|
||||
|
||||
@override
|
||||
String get wizardToolsFeature3 =>
|
||||
'Uporabite dnevnik paketov, pregled spektra in razvojno diagnostiko pri odpravljanju težav v mesh omrežju.';
|
||||
|
||||
@override
|
||||
String get contactInSensors => 'V senzorjih';
|
||||
|
||||
@override
|
||||
String get contactAddToSensors => 'Dodaj v senzorje';
|
||||
|
||||
@override
|
||||
String get contactSetPath => 'Nastavi pot';
|
||||
|
||||
@override
|
||||
String contactAddedToSensors(String contactName) {
|
||||
return '$contactName dodan v senzorje';
|
||||
}
|
||||
|
||||
@override
|
||||
String contactFailedToClearRoute(String error) {
|
||||
return 'Brisanje poti ni uspelo: $error';
|
||||
}
|
||||
|
||||
@override
|
||||
String get contactRouteCleared => 'Pot izbrisana';
|
||||
|
||||
@override
|
||||
String contactRouteSet(String route) {
|
||||
return 'Pot nastavljena: $route';
|
||||
}
|
||||
|
||||
@override
|
||||
String contactFailedToSetRoute(String error) {
|
||||
return 'Nastavitev poti ni uspela: $error';
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1720,4 +1720,198 @@ class AppLocalizationsTr extends AppLocalizations {
|
||||
|
||||
@override
|
||||
String get requestingVoice => 'Ses isteniyor';
|
||||
|
||||
@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';
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1732,4 +1732,198 @@ class AppLocalizationsUk extends AppLocalizations {
|
||||
|
||||
@override
|
||||
String get requestingVoice => 'Запит голосу';
|
||||
|
||||
@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';
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1656,4 +1656,198 @@ class AppLocalizationsZh extends AppLocalizations {
|
||||
|
||||
@override
|
||||
String get requestingVoice => '正在请求语音';
|
||||
|
||||
@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';
|
||||
}
|
||||
}
|
||||
|
||||
@@ -512,4 +512,57 @@
|
||||
"cannotRetryMissingRecipient": "Ponovnega pošiljanja ni mogoče: informacije o prejemniku manjkajo",
|
||||
"voiceUnavailable": "Glas trenutno ni na voljo",
|
||||
"requestingVoice": "Zahteva za glasom"
|
||||
,
|
||||
"device": "naprava",
|
||||
"change": "Spremeni",
|
||||
"wizardOverviewDescription": "Ta aplikacija združuje sporočanje MeshCore, terenske SAR posodobitve, zemljevide in orodja za napravo na enem mestu.",
|
||||
"wizardOverviewFeature1": "Pošiljajte neposredna sporočila, objave v sobah in sporočila na kanalih iz glavnega zavihka Sporočila.",
|
||||
"wizardOverviewFeature2": "Delite SAR označevalce, risbe zemljevida, glasovne posnetke in slike prek mesh omrežja.",
|
||||
"wizardOverviewFeature3": "Povežite se prek BLE ali TCP in nato upravljajte spremljevalni radio kar iz aplikacije.",
|
||||
"wizardMessagingTitle": "Sporočanje in terenska poročila",
|
||||
"wizardMessagingDescription": "Sporočila tukaj niso le navadno besedilo. Aplikacija že podpira več operativnih vrst vsebin in prenosnih tokov.",
|
||||
"wizardMessagingFeature1": "Pošiljajte neposredna sporočila, objave v sobah in promet na kanalih iz enega urejevalnika.",
|
||||
"wizardMessagingFeature2": "Ustvarjajte SAR posodobitve in večkrat uporabne SAR predloge za pogosta terenska poročila.",
|
||||
"wizardMessagingFeature3": "Prenašajte glasovne seje in slike, vmesnik pa prikazuje napredek in oceno časa prenosa.",
|
||||
"wizardConnectDeviceTitle": "Poveži napravo",
|
||||
"wizardConnectDeviceDescription": "Povežite svoj MeshCore radio, izberite ime in uporabite radijski prednastavljeni profil, preden nadaljujete.",
|
||||
"wizardSetupBadge": "Nastavitev",
|
||||
"wizardOverviewBadge": "Pregled",
|
||||
"wizardConnectedToDevice": "Povezano z: {deviceName}",
|
||||
"wizardNoDeviceConnected": "Nobena naprava še ni povezana",
|
||||
"wizardSkipForNow": "Za zdaj preskoči",
|
||||
"wizardDeviceNameLabel": "Ime naprave",
|
||||
"wizardDeviceNameHelp": "To ime se oglašuje drugim uporabnikom MeshCore.",
|
||||
"wizardConfigRegionLabel": "Konfiguracijska regija",
|
||||
"wizardConfigRegionHelp": "Uporabi celoten uradni seznam prednastavitev MeshCore. Privzeto je izbran EU/UK (Narrow).",
|
||||
"wizardPresetNote1": "Prepričajte se, da izbrana prednastavitev ustreza lokalnim radijskim predpisom.",
|
||||
"wizardPresetNote2": "Seznam ustreza uradnemu viru prednastavitev orodja MeshCore config.",
|
||||
"wizardPresetNote3": "Za uvajanje ostane privzeto izbran EU/UK (Narrow).",
|
||||
"wizardSaving": "Shranjujem...",
|
||||
"wizardSaveAndContinue": "Shrani in nadaljuj",
|
||||
"wizardEnterDeviceName": "Pred nadaljevanjem vnesite ime naprave.",
|
||||
"wizardDeviceSetupSaved": "Shranjeno {deviceName} z nastavitvijo {presetName}.",
|
||||
"wizardNetworkTitle": "Stiki, sobe in repetitorji",
|
||||
"wizardNetworkDescription": "Zavihek Stiki organizira omrežje, ki ga odkrijete, in poti, ki se jih aplikacija nauči skozi čas.",
|
||||
"wizardNetworkFeature1": "Na enem seznamu preglejte člane ekipe, repetitorje, sobe, kanale in čakajoče oglase.",
|
||||
"wizardNetworkFeature2": "Uporabite smart ping, prijavo v sobe, naučene poti in ponastavitev poti, ko povezljivost postane neurejena.",
|
||||
"wizardNetworkFeature3": "Ustvarjajte kanale in upravljajte omrežne cilje, ne da bi zapustili aplikacijo.",
|
||||
"wizardMapOpsTitle": "Zemljevid, sledi in deljena geometrija",
|
||||
"wizardMapOpsDescription": "Zemljevid v aplikaciji je neposredno povezan s sporočanjem, sledenjem in SAR prekrivanji, namesto da bi bil le ločen pregledovalnik.",
|
||||
"wizardMapOpsFeature1": "Spremljajte svoj položaj, lokacije sotekmovalcev in gibanje sledi na zemljevidu.",
|
||||
"wizardMapOpsFeature2": "Odprite risbe iz sporočil, jih predoglejte v vrstici in jih po potrebi odstranite z zemljevida.",
|
||||
"wizardMapOpsFeature3": "Uporabite poglede repetitorjev in deljena prekrivanja za razumevanje dosega omrežja na terenu.",
|
||||
"wizardToolsTitle": "Orodja onkraj sporočanja",
|
||||
"wizardToolsDescription": "Tu je več kot le štirje glavni zavihki. Aplikacija vključuje tudi konfiguracijo, diagnostiko in neobvezne senzorske poteke.",
|
||||
"wizardToolsFeature1": "Odprite nastavitve naprave za spremembo radijskih nastavitev, telemetrije, oddajne moči in podatkov spremljevalne naprave.",
|
||||
"wizardToolsFeature2": "Omogočite zavihek Senzorji, kadar želite nadzorne plošče in hitra osveževanja spremljanih senzorjev.",
|
||||
"wizardToolsFeature3": "Uporabite dnevnik paketov, pregled spektra in razvojno diagnostiko pri odpravljanju težav v mesh omrežju.",
|
||||
"contactInSensors": "V senzorjih",
|
||||
"contactAddToSensors": "Dodaj v senzorje",
|
||||
"contactSetPath": "Nastavi pot",
|
||||
"contactAddedToSensors": "{contactName} dodan v senzorje",
|
||||
"contactFailedToClearRoute": "Brisanje poti ni uspelo: {error}",
|
||||
"contactRouteCleared": "Pot izbrisana",
|
||||
"contactRouteSet": "Pot nastavljena: {route}",
|
||||
"contactFailedToSetRoute": "Nastavitev poti ni uspela: {error}"
|
||||
}
|
||||
|
||||
@@ -1 +1,661 @@
|
||||
{}
|
||||
{
|
||||
"de": [
|
||||
"device",
|
||||
"change",
|
||||
"wizardOverviewDescription",
|
||||
"wizardOverviewFeature1",
|
||||
"wizardOverviewFeature2",
|
||||
"wizardOverviewFeature3",
|
||||
"wizardMessagingTitle",
|
||||
"wizardMessagingDescription",
|
||||
"wizardMessagingFeature1",
|
||||
"wizardMessagingFeature2",
|
||||
"wizardMessagingFeature3",
|
||||
"wizardConnectDeviceTitle",
|
||||
"wizardConnectDeviceDescription",
|
||||
"wizardSetupBadge",
|
||||
"wizardOverviewBadge",
|
||||
"wizardConnectedToDevice",
|
||||
"wizardNoDeviceConnected",
|
||||
"wizardSkipForNow",
|
||||
"wizardDeviceNameLabel",
|
||||
"wizardDeviceNameHelp",
|
||||
"wizardConfigRegionLabel",
|
||||
"wizardConfigRegionHelp",
|
||||
"wizardPresetNote1",
|
||||
"wizardPresetNote2",
|
||||
"wizardPresetNote3",
|
||||
"wizardSaving",
|
||||
"wizardSaveAndContinue",
|
||||
"wizardEnterDeviceName",
|
||||
"wizardDeviceSetupSaved",
|
||||
"wizardNetworkTitle",
|
||||
"wizardNetworkDescription",
|
||||
"wizardNetworkFeature1",
|
||||
"wizardNetworkFeature2",
|
||||
"wizardNetworkFeature3",
|
||||
"wizardMapOpsTitle",
|
||||
"wizardMapOpsDescription",
|
||||
"wizardMapOpsFeature1",
|
||||
"wizardMapOpsFeature2",
|
||||
"wizardMapOpsFeature3",
|
||||
"wizardToolsTitle",
|
||||
"wizardToolsDescription",
|
||||
"wizardToolsFeature1",
|
||||
"wizardToolsFeature2",
|
||||
"wizardToolsFeature3",
|
||||
"contactInSensors",
|
||||
"contactAddToSensors",
|
||||
"contactSetPath",
|
||||
"contactAddedToSensors",
|
||||
"contactFailedToClearRoute",
|
||||
"contactRouteCleared",
|
||||
"contactRouteSet",
|
||||
"contactFailedToSetRoute"
|
||||
],
|
||||
|
||||
"el": [
|
||||
"device",
|
||||
"change",
|
||||
"wizardOverviewDescription",
|
||||
"wizardOverviewFeature1",
|
||||
"wizardOverviewFeature2",
|
||||
"wizardOverviewFeature3",
|
||||
"wizardMessagingTitle",
|
||||
"wizardMessagingDescription",
|
||||
"wizardMessagingFeature1",
|
||||
"wizardMessagingFeature2",
|
||||
"wizardMessagingFeature3",
|
||||
"wizardConnectDeviceTitle",
|
||||
"wizardConnectDeviceDescription",
|
||||
"wizardSetupBadge",
|
||||
"wizardOverviewBadge",
|
||||
"wizardConnectedToDevice",
|
||||
"wizardNoDeviceConnected",
|
||||
"wizardSkipForNow",
|
||||
"wizardDeviceNameLabel",
|
||||
"wizardDeviceNameHelp",
|
||||
"wizardConfigRegionLabel",
|
||||
"wizardConfigRegionHelp",
|
||||
"wizardPresetNote1",
|
||||
"wizardPresetNote2",
|
||||
"wizardPresetNote3",
|
||||
"wizardSaving",
|
||||
"wizardSaveAndContinue",
|
||||
"wizardEnterDeviceName",
|
||||
"wizardDeviceSetupSaved",
|
||||
"wizardNetworkTitle",
|
||||
"wizardNetworkDescription",
|
||||
"wizardNetworkFeature1",
|
||||
"wizardNetworkFeature2",
|
||||
"wizardNetworkFeature3",
|
||||
"wizardMapOpsTitle",
|
||||
"wizardMapOpsDescription",
|
||||
"wizardMapOpsFeature1",
|
||||
"wizardMapOpsFeature2",
|
||||
"wizardMapOpsFeature3",
|
||||
"wizardToolsTitle",
|
||||
"wizardToolsDescription",
|
||||
"wizardToolsFeature1",
|
||||
"wizardToolsFeature2",
|
||||
"wizardToolsFeature3",
|
||||
"contactInSensors",
|
||||
"contactAddToSensors",
|
||||
"contactSetPath",
|
||||
"contactAddedToSensors",
|
||||
"contactFailedToClearRoute",
|
||||
"contactRouteCleared",
|
||||
"contactRouteSet",
|
||||
"contactFailedToSetRoute"
|
||||
],
|
||||
|
||||
"es": [
|
||||
"device",
|
||||
"change",
|
||||
"wizardOverviewDescription",
|
||||
"wizardOverviewFeature1",
|
||||
"wizardOverviewFeature2",
|
||||
"wizardOverviewFeature3",
|
||||
"wizardMessagingTitle",
|
||||
"wizardMessagingDescription",
|
||||
"wizardMessagingFeature1",
|
||||
"wizardMessagingFeature2",
|
||||
"wizardMessagingFeature3",
|
||||
"wizardConnectDeviceTitle",
|
||||
"wizardConnectDeviceDescription",
|
||||
"wizardSetupBadge",
|
||||
"wizardOverviewBadge",
|
||||
"wizardConnectedToDevice",
|
||||
"wizardNoDeviceConnected",
|
||||
"wizardSkipForNow",
|
||||
"wizardDeviceNameLabel",
|
||||
"wizardDeviceNameHelp",
|
||||
"wizardConfigRegionLabel",
|
||||
"wizardConfigRegionHelp",
|
||||
"wizardPresetNote1",
|
||||
"wizardPresetNote2",
|
||||
"wizardPresetNote3",
|
||||
"wizardSaving",
|
||||
"wizardSaveAndContinue",
|
||||
"wizardEnterDeviceName",
|
||||
"wizardDeviceSetupSaved",
|
||||
"wizardNetworkTitle",
|
||||
"wizardNetworkDescription",
|
||||
"wizardNetworkFeature1",
|
||||
"wizardNetworkFeature2",
|
||||
"wizardNetworkFeature3",
|
||||
"wizardMapOpsTitle",
|
||||
"wizardMapOpsDescription",
|
||||
"wizardMapOpsFeature1",
|
||||
"wizardMapOpsFeature2",
|
||||
"wizardMapOpsFeature3",
|
||||
"wizardToolsTitle",
|
||||
"wizardToolsDescription",
|
||||
"wizardToolsFeature1",
|
||||
"wizardToolsFeature2",
|
||||
"wizardToolsFeature3",
|
||||
"contactInSensors",
|
||||
"contactAddToSensors",
|
||||
"contactSetPath",
|
||||
"contactAddedToSensors",
|
||||
"contactFailedToClearRoute",
|
||||
"contactRouteCleared",
|
||||
"contactRouteSet",
|
||||
"contactFailedToSetRoute"
|
||||
],
|
||||
|
||||
"fr": [
|
||||
"device",
|
||||
"change",
|
||||
"wizardOverviewDescription",
|
||||
"wizardOverviewFeature1",
|
||||
"wizardOverviewFeature2",
|
||||
"wizardOverviewFeature3",
|
||||
"wizardMessagingTitle",
|
||||
"wizardMessagingDescription",
|
||||
"wizardMessagingFeature1",
|
||||
"wizardMessagingFeature2",
|
||||
"wizardMessagingFeature3",
|
||||
"wizardConnectDeviceTitle",
|
||||
"wizardConnectDeviceDescription",
|
||||
"wizardSetupBadge",
|
||||
"wizardOverviewBadge",
|
||||
"wizardConnectedToDevice",
|
||||
"wizardNoDeviceConnected",
|
||||
"wizardSkipForNow",
|
||||
"wizardDeviceNameLabel",
|
||||
"wizardDeviceNameHelp",
|
||||
"wizardConfigRegionLabel",
|
||||
"wizardConfigRegionHelp",
|
||||
"wizardPresetNote1",
|
||||
"wizardPresetNote2",
|
||||
"wizardPresetNote3",
|
||||
"wizardSaving",
|
||||
"wizardSaveAndContinue",
|
||||
"wizardEnterDeviceName",
|
||||
"wizardDeviceSetupSaved",
|
||||
"wizardNetworkTitle",
|
||||
"wizardNetworkDescription",
|
||||
"wizardNetworkFeature1",
|
||||
"wizardNetworkFeature2",
|
||||
"wizardNetworkFeature3",
|
||||
"wizardMapOpsTitle",
|
||||
"wizardMapOpsDescription",
|
||||
"wizardMapOpsFeature1",
|
||||
"wizardMapOpsFeature2",
|
||||
"wizardMapOpsFeature3",
|
||||
"wizardToolsTitle",
|
||||
"wizardToolsDescription",
|
||||
"wizardToolsFeature1",
|
||||
"wizardToolsFeature2",
|
||||
"wizardToolsFeature3",
|
||||
"contactInSensors",
|
||||
"contactAddToSensors",
|
||||
"contactSetPath",
|
||||
"contactAddedToSensors",
|
||||
"contactFailedToClearRoute",
|
||||
"contactRouteCleared",
|
||||
"contactRouteSet",
|
||||
"contactFailedToSetRoute"
|
||||
],
|
||||
|
||||
"hr": [
|
||||
"device",
|
||||
"change",
|
||||
"wizardOverviewDescription",
|
||||
"wizardOverviewFeature1",
|
||||
"wizardOverviewFeature2",
|
||||
"wizardOverviewFeature3",
|
||||
"wizardMessagingTitle",
|
||||
"wizardMessagingDescription",
|
||||
"wizardMessagingFeature1",
|
||||
"wizardMessagingFeature2",
|
||||
"wizardMessagingFeature3",
|
||||
"wizardConnectDeviceTitle",
|
||||
"wizardConnectDeviceDescription",
|
||||
"wizardSetupBadge",
|
||||
"wizardOverviewBadge",
|
||||
"wizardConnectedToDevice",
|
||||
"wizardNoDeviceConnected",
|
||||
"wizardSkipForNow",
|
||||
"wizardDeviceNameLabel",
|
||||
"wizardDeviceNameHelp",
|
||||
"wizardConfigRegionLabel",
|
||||
"wizardConfigRegionHelp",
|
||||
"wizardPresetNote1",
|
||||
"wizardPresetNote2",
|
||||
"wizardPresetNote3",
|
||||
"wizardSaving",
|
||||
"wizardSaveAndContinue",
|
||||
"wizardEnterDeviceName",
|
||||
"wizardDeviceSetupSaved",
|
||||
"wizardNetworkTitle",
|
||||
"wizardNetworkDescription",
|
||||
"wizardNetworkFeature1",
|
||||
"wizardNetworkFeature2",
|
||||
"wizardNetworkFeature3",
|
||||
"wizardMapOpsTitle",
|
||||
"wizardMapOpsDescription",
|
||||
"wizardMapOpsFeature1",
|
||||
"wizardMapOpsFeature2",
|
||||
"wizardMapOpsFeature3",
|
||||
"wizardToolsTitle",
|
||||
"wizardToolsDescription",
|
||||
"wizardToolsFeature1",
|
||||
"wizardToolsFeature2",
|
||||
"wizardToolsFeature3",
|
||||
"contactInSensors",
|
||||
"contactAddToSensors",
|
||||
"contactSetPath",
|
||||
"contactAddedToSensors",
|
||||
"contactFailedToClearRoute",
|
||||
"contactRouteCleared",
|
||||
"contactRouteSet",
|
||||
"contactFailedToSetRoute"
|
||||
],
|
||||
|
||||
"it": [
|
||||
"device",
|
||||
"change",
|
||||
"wizardOverviewDescription",
|
||||
"wizardOverviewFeature1",
|
||||
"wizardOverviewFeature2",
|
||||
"wizardOverviewFeature3",
|
||||
"wizardMessagingTitle",
|
||||
"wizardMessagingDescription",
|
||||
"wizardMessagingFeature1",
|
||||
"wizardMessagingFeature2",
|
||||
"wizardMessagingFeature3",
|
||||
"wizardConnectDeviceTitle",
|
||||
"wizardConnectDeviceDescription",
|
||||
"wizardSetupBadge",
|
||||
"wizardOverviewBadge",
|
||||
"wizardConnectedToDevice",
|
||||
"wizardNoDeviceConnected",
|
||||
"wizardSkipForNow",
|
||||
"wizardDeviceNameLabel",
|
||||
"wizardDeviceNameHelp",
|
||||
"wizardConfigRegionLabel",
|
||||
"wizardConfigRegionHelp",
|
||||
"wizardPresetNote1",
|
||||
"wizardPresetNote2",
|
||||
"wizardPresetNote3",
|
||||
"wizardSaving",
|
||||
"wizardSaveAndContinue",
|
||||
"wizardEnterDeviceName",
|
||||
"wizardDeviceSetupSaved",
|
||||
"wizardNetworkTitle",
|
||||
"wizardNetworkDescription",
|
||||
"wizardNetworkFeature1",
|
||||
"wizardNetworkFeature2",
|
||||
"wizardNetworkFeature3",
|
||||
"wizardMapOpsTitle",
|
||||
"wizardMapOpsDescription",
|
||||
"wizardMapOpsFeature1",
|
||||
"wizardMapOpsFeature2",
|
||||
"wizardMapOpsFeature3",
|
||||
"wizardToolsTitle",
|
||||
"wizardToolsDescription",
|
||||
"wizardToolsFeature1",
|
||||
"wizardToolsFeature2",
|
||||
"wizardToolsFeature3",
|
||||
"contactInSensors",
|
||||
"contactAddToSensors",
|
||||
"contactSetPath",
|
||||
"contactAddedToSensors",
|
||||
"contactFailedToClearRoute",
|
||||
"contactRouteCleared",
|
||||
"contactRouteSet",
|
||||
"contactFailedToSetRoute"
|
||||
],
|
||||
|
||||
"pl": [
|
||||
"device",
|
||||
"change",
|
||||
"wizardOverviewDescription",
|
||||
"wizardOverviewFeature1",
|
||||
"wizardOverviewFeature2",
|
||||
"wizardOverviewFeature3",
|
||||
"wizardMessagingTitle",
|
||||
"wizardMessagingDescription",
|
||||
"wizardMessagingFeature1",
|
||||
"wizardMessagingFeature2",
|
||||
"wizardMessagingFeature3",
|
||||
"wizardConnectDeviceTitle",
|
||||
"wizardConnectDeviceDescription",
|
||||
"wizardSetupBadge",
|
||||
"wizardOverviewBadge",
|
||||
"wizardConnectedToDevice",
|
||||
"wizardNoDeviceConnected",
|
||||
"wizardSkipForNow",
|
||||
"wizardDeviceNameLabel",
|
||||
"wizardDeviceNameHelp",
|
||||
"wizardConfigRegionLabel",
|
||||
"wizardConfigRegionHelp",
|
||||
"wizardPresetNote1",
|
||||
"wizardPresetNote2",
|
||||
"wizardPresetNote3",
|
||||
"wizardSaving",
|
||||
"wizardSaveAndContinue",
|
||||
"wizardEnterDeviceName",
|
||||
"wizardDeviceSetupSaved",
|
||||
"wizardNetworkTitle",
|
||||
"wizardNetworkDescription",
|
||||
"wizardNetworkFeature1",
|
||||
"wizardNetworkFeature2",
|
||||
"wizardNetworkFeature3",
|
||||
"wizardMapOpsTitle",
|
||||
"wizardMapOpsDescription",
|
||||
"wizardMapOpsFeature1",
|
||||
"wizardMapOpsFeature2",
|
||||
"wizardMapOpsFeature3",
|
||||
"wizardToolsTitle",
|
||||
"wizardToolsDescription",
|
||||
"wizardToolsFeature1",
|
||||
"wizardToolsFeature2",
|
||||
"wizardToolsFeature3",
|
||||
"contactInSensors",
|
||||
"contactAddToSensors",
|
||||
"contactSetPath",
|
||||
"contactAddedToSensors",
|
||||
"contactFailedToClearRoute",
|
||||
"contactRouteCleared",
|
||||
"contactRouteSet",
|
||||
"contactFailedToSetRoute"
|
||||
],
|
||||
|
||||
"pt": [
|
||||
"device",
|
||||
"change",
|
||||
"wizardOverviewDescription",
|
||||
"wizardOverviewFeature1",
|
||||
"wizardOverviewFeature2",
|
||||
"wizardOverviewFeature3",
|
||||
"wizardMessagingTitle",
|
||||
"wizardMessagingDescription",
|
||||
"wizardMessagingFeature1",
|
||||
"wizardMessagingFeature2",
|
||||
"wizardMessagingFeature3",
|
||||
"wizardConnectDeviceTitle",
|
||||
"wizardConnectDeviceDescription",
|
||||
"wizardSetupBadge",
|
||||
"wizardOverviewBadge",
|
||||
"wizardConnectedToDevice",
|
||||
"wizardNoDeviceConnected",
|
||||
"wizardSkipForNow",
|
||||
"wizardDeviceNameLabel",
|
||||
"wizardDeviceNameHelp",
|
||||
"wizardConfigRegionLabel",
|
||||
"wizardConfigRegionHelp",
|
||||
"wizardPresetNote1",
|
||||
"wizardPresetNote2",
|
||||
"wizardPresetNote3",
|
||||
"wizardSaving",
|
||||
"wizardSaveAndContinue",
|
||||
"wizardEnterDeviceName",
|
||||
"wizardDeviceSetupSaved",
|
||||
"wizardNetworkTitle",
|
||||
"wizardNetworkDescription",
|
||||
"wizardNetworkFeature1",
|
||||
"wizardNetworkFeature2",
|
||||
"wizardNetworkFeature3",
|
||||
"wizardMapOpsTitle",
|
||||
"wizardMapOpsDescription",
|
||||
"wizardMapOpsFeature1",
|
||||
"wizardMapOpsFeature2",
|
||||
"wizardMapOpsFeature3",
|
||||
"wizardToolsTitle",
|
||||
"wizardToolsDescription",
|
||||
"wizardToolsFeature1",
|
||||
"wizardToolsFeature2",
|
||||
"wizardToolsFeature3",
|
||||
"contactInSensors",
|
||||
"contactAddToSensors",
|
||||
"contactSetPath",
|
||||
"contactAddedToSensors",
|
||||
"contactFailedToClearRoute",
|
||||
"contactRouteCleared",
|
||||
"contactRouteSet",
|
||||
"contactFailedToSetRoute"
|
||||
],
|
||||
|
||||
"ru": [
|
||||
"device",
|
||||
"change",
|
||||
"wizardOverviewDescription",
|
||||
"wizardOverviewFeature1",
|
||||
"wizardOverviewFeature2",
|
||||
"wizardOverviewFeature3",
|
||||
"wizardMessagingTitle",
|
||||
"wizardMessagingDescription",
|
||||
"wizardMessagingFeature1",
|
||||
"wizardMessagingFeature2",
|
||||
"wizardMessagingFeature3",
|
||||
"wizardConnectDeviceTitle",
|
||||
"wizardConnectDeviceDescription",
|
||||
"wizardSetupBadge",
|
||||
"wizardOverviewBadge",
|
||||
"wizardConnectedToDevice",
|
||||
"wizardNoDeviceConnected",
|
||||
"wizardSkipForNow",
|
||||
"wizardDeviceNameLabel",
|
||||
"wizardDeviceNameHelp",
|
||||
"wizardConfigRegionLabel",
|
||||
"wizardConfigRegionHelp",
|
||||
"wizardPresetNote1",
|
||||
"wizardPresetNote2",
|
||||
"wizardPresetNote3",
|
||||
"wizardSaving",
|
||||
"wizardSaveAndContinue",
|
||||
"wizardEnterDeviceName",
|
||||
"wizardDeviceSetupSaved",
|
||||
"wizardNetworkTitle",
|
||||
"wizardNetworkDescription",
|
||||
"wizardNetworkFeature1",
|
||||
"wizardNetworkFeature2",
|
||||
"wizardNetworkFeature3",
|
||||
"wizardMapOpsTitle",
|
||||
"wizardMapOpsDescription",
|
||||
"wizardMapOpsFeature1",
|
||||
"wizardMapOpsFeature2",
|
||||
"wizardMapOpsFeature3",
|
||||
"wizardToolsTitle",
|
||||
"wizardToolsDescription",
|
||||
"wizardToolsFeature1",
|
||||
"wizardToolsFeature2",
|
||||
"wizardToolsFeature3",
|
||||
"contactInSensors",
|
||||
"contactAddToSensors",
|
||||
"contactSetPath",
|
||||
"contactAddedToSensors",
|
||||
"contactFailedToClearRoute",
|
||||
"contactRouteCleared",
|
||||
"contactRouteSet",
|
||||
"contactFailedToSetRoute"
|
||||
],
|
||||
|
||||
"tr": [
|
||||
"device",
|
||||
"change",
|
||||
"wizardOverviewDescription",
|
||||
"wizardOverviewFeature1",
|
||||
"wizardOverviewFeature2",
|
||||
"wizardOverviewFeature3",
|
||||
"wizardMessagingTitle",
|
||||
"wizardMessagingDescription",
|
||||
"wizardMessagingFeature1",
|
||||
"wizardMessagingFeature2",
|
||||
"wizardMessagingFeature3",
|
||||
"wizardConnectDeviceTitle",
|
||||
"wizardConnectDeviceDescription",
|
||||
"wizardSetupBadge",
|
||||
"wizardOverviewBadge",
|
||||
"wizardConnectedToDevice",
|
||||
"wizardNoDeviceConnected",
|
||||
"wizardSkipForNow",
|
||||
"wizardDeviceNameLabel",
|
||||
"wizardDeviceNameHelp",
|
||||
"wizardConfigRegionLabel",
|
||||
"wizardConfigRegionHelp",
|
||||
"wizardPresetNote1",
|
||||
"wizardPresetNote2",
|
||||
"wizardPresetNote3",
|
||||
"wizardSaving",
|
||||
"wizardSaveAndContinue",
|
||||
"wizardEnterDeviceName",
|
||||
"wizardDeviceSetupSaved",
|
||||
"wizardNetworkTitle",
|
||||
"wizardNetworkDescription",
|
||||
"wizardNetworkFeature1",
|
||||
"wizardNetworkFeature2",
|
||||
"wizardNetworkFeature3",
|
||||
"wizardMapOpsTitle",
|
||||
"wizardMapOpsDescription",
|
||||
"wizardMapOpsFeature1",
|
||||
"wizardMapOpsFeature2",
|
||||
"wizardMapOpsFeature3",
|
||||
"wizardToolsTitle",
|
||||
"wizardToolsDescription",
|
||||
"wizardToolsFeature1",
|
||||
"wizardToolsFeature2",
|
||||
"wizardToolsFeature3",
|
||||
"contactInSensors",
|
||||
"contactAddToSensors",
|
||||
"contactSetPath",
|
||||
"contactAddedToSensors",
|
||||
"contactFailedToClearRoute",
|
||||
"contactRouteCleared",
|
||||
"contactRouteSet",
|
||||
"contactFailedToSetRoute"
|
||||
],
|
||||
|
||||
"uk": [
|
||||
"device",
|
||||
"change",
|
||||
"wizardOverviewDescription",
|
||||
"wizardOverviewFeature1",
|
||||
"wizardOverviewFeature2",
|
||||
"wizardOverviewFeature3",
|
||||
"wizardMessagingTitle",
|
||||
"wizardMessagingDescription",
|
||||
"wizardMessagingFeature1",
|
||||
"wizardMessagingFeature2",
|
||||
"wizardMessagingFeature3",
|
||||
"wizardConnectDeviceTitle",
|
||||
"wizardConnectDeviceDescription",
|
||||
"wizardSetupBadge",
|
||||
"wizardOverviewBadge",
|
||||
"wizardConnectedToDevice",
|
||||
"wizardNoDeviceConnected",
|
||||
"wizardSkipForNow",
|
||||
"wizardDeviceNameLabel",
|
||||
"wizardDeviceNameHelp",
|
||||
"wizardConfigRegionLabel",
|
||||
"wizardConfigRegionHelp",
|
||||
"wizardPresetNote1",
|
||||
"wizardPresetNote2",
|
||||
"wizardPresetNote3",
|
||||
"wizardSaving",
|
||||
"wizardSaveAndContinue",
|
||||
"wizardEnterDeviceName",
|
||||
"wizardDeviceSetupSaved",
|
||||
"wizardNetworkTitle",
|
||||
"wizardNetworkDescription",
|
||||
"wizardNetworkFeature1",
|
||||
"wizardNetworkFeature2",
|
||||
"wizardNetworkFeature3",
|
||||
"wizardMapOpsTitle",
|
||||
"wizardMapOpsDescription",
|
||||
"wizardMapOpsFeature1",
|
||||
"wizardMapOpsFeature2",
|
||||
"wizardMapOpsFeature3",
|
||||
"wizardToolsTitle",
|
||||
"wizardToolsDescription",
|
||||
"wizardToolsFeature1",
|
||||
"wizardToolsFeature2",
|
||||
"wizardToolsFeature3",
|
||||
"contactInSensors",
|
||||
"contactAddToSensors",
|
||||
"contactSetPath",
|
||||
"contactAddedToSensors",
|
||||
"contactFailedToClearRoute",
|
||||
"contactRouteCleared",
|
||||
"contactRouteSet",
|
||||
"contactFailedToSetRoute"
|
||||
],
|
||||
|
||||
"zh": [
|
||||
"device",
|
||||
"change",
|
||||
"wizardOverviewDescription",
|
||||
"wizardOverviewFeature1",
|
||||
"wizardOverviewFeature2",
|
||||
"wizardOverviewFeature3",
|
||||
"wizardMessagingTitle",
|
||||
"wizardMessagingDescription",
|
||||
"wizardMessagingFeature1",
|
||||
"wizardMessagingFeature2",
|
||||
"wizardMessagingFeature3",
|
||||
"wizardConnectDeviceTitle",
|
||||
"wizardConnectDeviceDescription",
|
||||
"wizardSetupBadge",
|
||||
"wizardOverviewBadge",
|
||||
"wizardConnectedToDevice",
|
||||
"wizardNoDeviceConnected",
|
||||
"wizardSkipForNow",
|
||||
"wizardDeviceNameLabel",
|
||||
"wizardDeviceNameHelp",
|
||||
"wizardConfigRegionLabel",
|
||||
"wizardConfigRegionHelp",
|
||||
"wizardPresetNote1",
|
||||
"wizardPresetNote2",
|
||||
"wizardPresetNote3",
|
||||
"wizardSaving",
|
||||
"wizardSaveAndContinue",
|
||||
"wizardEnterDeviceName",
|
||||
"wizardDeviceSetupSaved",
|
||||
"wizardNetworkTitle",
|
||||
"wizardNetworkDescription",
|
||||
"wizardNetworkFeature1",
|
||||
"wizardNetworkFeature2",
|
||||
"wizardNetworkFeature3",
|
||||
"wizardMapOpsTitle",
|
||||
"wizardMapOpsDescription",
|
||||
"wizardMapOpsFeature1",
|
||||
"wizardMapOpsFeature2",
|
||||
"wizardMapOpsFeature3",
|
||||
"wizardToolsTitle",
|
||||
"wizardToolsDescription",
|
||||
"wizardToolsFeature1",
|
||||
"wizardToolsFeature2",
|
||||
"wizardToolsFeature3",
|
||||
"contactInSensors",
|
||||
"contactAddToSensors",
|
||||
"contactSetPath",
|
||||
"contactAddedToSensors",
|
||||
"contactFailedToClearRoute",
|
||||
"contactRouteCleared",
|
||||
"contactRouteSet",
|
||||
"contactFailedToSetRoute"
|
||||
]
|
||||
}
|
||||
|
||||
@@ -574,8 +574,20 @@ class AppProvider with ChangeNotifier {
|
||||
connectionProvider.addListener(_handleConnectionStateChange);
|
||||
messagesProvider.resolveContactNameCallback =
|
||||
_resolveContactNameForNotification;
|
||||
messagesProvider.resolveChannelNameCallback =
|
||||
channelsProvider.getChannelDisplayName;
|
||||
messagesProvider.resolveChannelNameCallback = (channelIdx) {
|
||||
if (channelIdx == 0) {
|
||||
return 'Public';
|
||||
}
|
||||
|
||||
for (final channel in contactsProvider.channels) {
|
||||
if (channel.publicKey.length > 1 &&
|
||||
channel.publicKey[1] == channelIdx) {
|
||||
return channel.displayName;
|
||||
}
|
||||
}
|
||||
|
||||
return channelsProvider.getChannelDisplayName(channelIdx);
|
||||
};
|
||||
|
||||
voiceProvider.sendRawPacketCallback =
|
||||
({
|
||||
|
||||
@@ -765,9 +765,17 @@ class MessagesProvider with ChangeNotifier {
|
||||
final idx = channelIdx ?? 0;
|
||||
final resolved = resolveChannelNameCallback?.call(idx).trim();
|
||||
if (resolved != null && resolved.isNotEmpty) {
|
||||
if (idx == 0 && resolved == 'Public') {
|
||||
return _localizations?.publicChannel ?? resolved;
|
||||
}
|
||||
return resolved;
|
||||
}
|
||||
return idx == 0 ? 'Public' : 'Channel $idx';
|
||||
if (idx == 0) {
|
||||
return _localizations?.publicChannel ?? 'Public';
|
||||
}
|
||||
return _localizations != null
|
||||
? '${_localizations!.channel} $idx'
|
||||
: 'Channel $idx';
|
||||
}
|
||||
|
||||
String _buildNotificationMessageText(
|
||||
|
||||
@@ -254,9 +254,9 @@ class _WelcomeWizardScreenState extends State<WelcomeWizardScreen> {
|
||||
|
||||
final trimmedName = _deviceNameController.text.trim();
|
||||
if (trimmedName.isEmpty) {
|
||||
ScaffoldMessenger.of(context).showSnackBar(
|
||||
const SnackBar(content: Text('Enter a device name before continuing.')),
|
||||
);
|
||||
ScaffoldMessenger.of(
|
||||
context,
|
||||
).showSnackBar(SnackBar(content: Text(l10n.wizardEnterDeviceName)));
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -277,7 +277,9 @@ class _WelcomeWizardScreenState extends State<WelcomeWizardScreen> {
|
||||
if (!mounted) return;
|
||||
ScaffoldMessenger.of(context).showSnackBar(
|
||||
SnackBar(
|
||||
content: Text('Saved $trimmedName with ${_selectedPreset.label}.'),
|
||||
content: Text(
|
||||
l10n.wizardDeviceSetupSaved(trimmedName, _selectedPreset.label),
|
||||
),
|
||||
backgroundColor: Colors.green,
|
||||
),
|
||||
);
|
||||
@@ -422,24 +424,20 @@ class _WelcomeWizardScreenState extends State<WelcomeWizardScreen> {
|
||||
return _buildPage(
|
||||
icon: Icons.waving_hand,
|
||||
iconColor: Colors.orange,
|
||||
title: 'Welcome to MeshCore SAR',
|
||||
description:
|
||||
'This app combines MeshCore messaging, SAR field updates, mapping, and device tools in one place.',
|
||||
title: l10n.wizardWelcomeTitle,
|
||||
description: l10n.wizardOverviewDescription,
|
||||
features: [
|
||||
_FeatureItem(
|
||||
icon: Icons.chat_bubble_outline,
|
||||
text:
|
||||
'Send direct, room, and channel messages from the main Messages tab.',
|
||||
text: l10n.wizardOverviewFeature1,
|
||||
),
|
||||
_FeatureItem(
|
||||
icon: Icons.emergency_share,
|
||||
text:
|
||||
'Share SAR markers, map drawings, voice clips, and images over the mesh.',
|
||||
text: l10n.wizardOverviewFeature2,
|
||||
),
|
||||
_FeatureItem(
|
||||
icon: Icons.settings_input_antenna,
|
||||
text:
|
||||
'Connect over BLE or TCP, then manage the companion radio from inside the app.',
|
||||
text: l10n.wizardOverviewFeature3,
|
||||
),
|
||||
],
|
||||
colorScheme: colorScheme,
|
||||
@@ -454,25 +452,12 @@ class _WelcomeWizardScreenState extends State<WelcomeWizardScreen> {
|
||||
return _buildPage(
|
||||
icon: Icons.forum_rounded,
|
||||
iconColor: Colors.blue,
|
||||
title: 'Messaging and Field Reports',
|
||||
description:
|
||||
'Messages are more than plain text here. The app already supports several operational payloads and transfer workflows.',
|
||||
title: l10n.wizardMessagingTitle,
|
||||
description: l10n.wizardMessagingDescription,
|
||||
features: [
|
||||
_FeatureItem(
|
||||
icon: Icons.chat,
|
||||
text:
|
||||
'Send direct messages, room posts, and channel traffic from one composer.',
|
||||
),
|
||||
_FeatureItem(
|
||||
icon: Icons.campaign,
|
||||
text:
|
||||
'Create SAR updates and reusable SAR templates for common field reports.',
|
||||
),
|
||||
_FeatureItem(
|
||||
icon: Icons.mic,
|
||||
text:
|
||||
'Transfer voice sessions and images, with progress and airtime estimates in the UI.',
|
||||
),
|
||||
_FeatureItem(icon: Icons.chat, text: l10n.wizardMessagingFeature1),
|
||||
_FeatureItem(icon: Icons.campaign, text: l10n.wizardMessagingFeature2),
|
||||
_FeatureItem(icon: Icons.mic, text: l10n.wizardMessagingFeature3),
|
||||
],
|
||||
colorScheme: colorScheme,
|
||||
);
|
||||
@@ -505,10 +490,9 @@ class _WelcomeWizardScreenState extends State<WelcomeWizardScreen> {
|
||||
colorScheme: colorScheme,
|
||||
icon: Icons.bluetooth_connected,
|
||||
iconColor: Colors.green,
|
||||
title: 'Connect device',
|
||||
description:
|
||||
'Connect your MeshCore radio, choose a name, and apply a radio preset before continuing.',
|
||||
badge: 'Setup',
|
||||
title: l10n.wizardConnectDeviceTitle,
|
||||
description: l10n.wizardConnectDeviceDescription,
|
||||
badge: l10n.wizardSetupBadge,
|
||||
),
|
||||
const SizedBox(height: 16),
|
||||
_buildContentCard(
|
||||
@@ -530,15 +514,19 @@ class _WelcomeWizardScreenState extends State<WelcomeWizardScreen> {
|
||||
Expanded(
|
||||
child: Text(
|
||||
isConnected
|
||||
? 'Connected to ${connectedName ?? "device"}'
|
||||
: 'No device connected yet',
|
||||
? l10n.wizardConnectedToDevice(
|
||||
connectedName ?? l10n.device,
|
||||
)
|
||||
: l10n.wizardNoDeviceConnected,
|
||||
style: Theme.of(context).textTheme.bodyMedium
|
||||
?.copyWith(fontWeight: FontWeight.w600),
|
||||
),
|
||||
),
|
||||
TextButton(
|
||||
onPressed: _openConnectionDialog,
|
||||
child: Text(isConnected ? 'Change' : l10n.connect),
|
||||
child: Text(
|
||||
isConnected ? l10n.change : l10n.connect,
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
@@ -546,7 +534,7 @@ class _WelcomeWizardScreenState extends State<WelcomeWizardScreen> {
|
||||
alignment: Alignment.centerRight,
|
||||
child: TextButton(
|
||||
onPressed: _skipDeviceSetupStep,
|
||||
child: const Text('Skip for now'),
|
||||
child: Text(l10n.wizardSkipForNow),
|
||||
),
|
||||
),
|
||||
],
|
||||
@@ -561,22 +549,20 @@ class _WelcomeWizardScreenState extends State<WelcomeWizardScreen> {
|
||||
TextField(
|
||||
controller: _deviceNameController,
|
||||
textInputAction: TextInputAction.done,
|
||||
decoration: const InputDecoration(
|
||||
labelText: 'Device name',
|
||||
decoration: InputDecoration(
|
||||
labelText: l10n.wizardDeviceNameLabel,
|
||||
border: OutlineInputBorder(),
|
||||
helperText:
|
||||
'This name is advertised to other MeshCore users.',
|
||||
helperText: l10n.wizardDeviceNameHelp,
|
||||
),
|
||||
),
|
||||
const SizedBox(height: 12),
|
||||
DropdownButtonFormField<_RadioPreset>(
|
||||
initialValue: _selectedPreset,
|
||||
isExpanded: true,
|
||||
decoration: const InputDecoration(
|
||||
labelText: 'Config region',
|
||||
decoration: InputDecoration(
|
||||
labelText: l10n.wizardConfigRegionLabel,
|
||||
border: OutlineInputBorder(),
|
||||
helperText:
|
||||
'Uses the full official MeshCore preset list. Default is EU/UK (Narrow).',
|
||||
helperText: l10n.wizardConfigRegionHelp,
|
||||
),
|
||||
items: _radioPresets
|
||||
.map(
|
||||
@@ -619,18 +605,15 @@ class _WelcomeWizardScreenState extends State<WelcomeWizardScreen> {
|
||||
...[
|
||||
_FeatureItem(
|
||||
icon: Icons.rule,
|
||||
text:
|
||||
'Make sure the selected preset matches your local radio regulations.',
|
||||
text: l10n.wizardPresetNote1,
|
||||
),
|
||||
_FeatureItem(
|
||||
icon: Icons.settings_input_antenna,
|
||||
text:
|
||||
'The list matches the official MeshCore config tool preset feed.',
|
||||
text: l10n.wizardPresetNote2,
|
||||
),
|
||||
_FeatureItem(
|
||||
icon: Icons.public,
|
||||
text:
|
||||
'EU/UK (Narrow) stays selected by default for onboarding.',
|
||||
text: l10n.wizardPresetNote3,
|
||||
),
|
||||
].map(
|
||||
(feature) => Padding(
|
||||
@@ -661,9 +644,12 @@ class _WelcomeWizardScreenState extends State<WelcomeWizardScreen> {
|
||||
.deviceInfo
|
||||
.isConnected;
|
||||
if (_isApplyingDeviceSetup) {
|
||||
return 'Saving...';
|
||||
return AppLocalizations.of(context)!.wizardSaving;
|
||||
}
|
||||
return isConnected ? 'Save and continue' : 'Connect device';
|
||||
final l10n = AppLocalizations.of(context)!;
|
||||
return isConnected
|
||||
? l10n.wizardSaveAndContinue
|
||||
: l10n.wizardConnectDeviceTitle;
|
||||
}
|
||||
|
||||
Widget _buildChannelPage(
|
||||
@@ -674,25 +660,15 @@ class _WelcomeWizardScreenState extends State<WelcomeWizardScreen> {
|
||||
return _buildPage(
|
||||
icon: Icons.groups_rounded,
|
||||
iconColor: Colors.purple,
|
||||
title: 'Contacts, Rooms, and Repeaters',
|
||||
description:
|
||||
'The Contacts tab organizes the network you discover and the routes you learn over time.',
|
||||
title: l10n.wizardNetworkTitle,
|
||||
description: l10n.wizardNetworkDescription,
|
||||
features: [
|
||||
_FeatureItem(
|
||||
icon: Icons.person_add_alt_1,
|
||||
text:
|
||||
'Review team members, repeaters, rooms, channels, and pending adverts in one list.',
|
||||
),
|
||||
_FeatureItem(
|
||||
icon: Icons.route,
|
||||
text:
|
||||
'Use smart ping, room login, learned paths, and route reset tools when connectivity gets messy.',
|
||||
),
|
||||
_FeatureItem(
|
||||
icon: Icons.hub,
|
||||
text:
|
||||
'Create channels and manage network destinations without leaving the app.',
|
||||
text: l10n.wizardNetworkFeature1,
|
||||
),
|
||||
_FeatureItem(icon: Icons.route, text: l10n.wizardNetworkFeature2),
|
||||
_FeatureItem(icon: Icons.hub, text: l10n.wizardNetworkFeature3),
|
||||
],
|
||||
colorScheme: colorScheme,
|
||||
);
|
||||
@@ -706,25 +682,12 @@ class _WelcomeWizardScreenState extends State<WelcomeWizardScreen> {
|
||||
return _buildPage(
|
||||
icon: Icons.map_rounded,
|
||||
iconColor: Colors.teal,
|
||||
title: 'Map, Trails, and Shared Geometry',
|
||||
description:
|
||||
'The app map is tied directly into messaging, tracking, and SAR overlays instead of being a separate viewer.',
|
||||
title: l10n.wizardMapOpsTitle,
|
||||
description: l10n.wizardMapOpsDescription,
|
||||
features: [
|
||||
_FeatureItem(
|
||||
icon: Icons.location_on,
|
||||
text:
|
||||
'Track your own position, teammate locations, and movement trails on the map.',
|
||||
),
|
||||
_FeatureItem(
|
||||
icon: Icons.draw,
|
||||
text:
|
||||
'Open drawings from messages, preview them inline, and remove them from the map when needed.',
|
||||
),
|
||||
_FeatureItem(
|
||||
icon: Icons.router,
|
||||
text:
|
||||
'Use repeater map views and shared overlays to understand network reach in the field.',
|
||||
),
|
||||
_FeatureItem(icon: Icons.location_on, text: l10n.wizardMapOpsFeature1),
|
||||
_FeatureItem(icon: Icons.draw, text: l10n.wizardMapOpsFeature2),
|
||||
_FeatureItem(icon: Icons.router, text: l10n.wizardMapOpsFeature3),
|
||||
],
|
||||
colorScheme: colorScheme,
|
||||
);
|
||||
@@ -738,24 +701,14 @@ class _WelcomeWizardScreenState extends State<WelcomeWizardScreen> {
|
||||
return _buildPage(
|
||||
icon: Icons.tune_rounded,
|
||||
iconColor: Colors.red,
|
||||
title: 'Tools Beyond Messaging',
|
||||
description:
|
||||
'There is more here than the four main tabs. The app also includes configuration, diagnostics, and optional sensor workflows.',
|
||||
title: l10n.wizardToolsTitle,
|
||||
description: l10n.wizardToolsDescription,
|
||||
features: [
|
||||
_FeatureItem(
|
||||
icon: Icons.settings,
|
||||
text:
|
||||
'Open device config to change radio settings, telemetry, TX power, and companion details.',
|
||||
),
|
||||
_FeatureItem(
|
||||
icon: Icons.sensors,
|
||||
text:
|
||||
'Enable the Sensors tab when you want watched sensor dashboards and quick refresh actions.',
|
||||
),
|
||||
_FeatureItem(icon: Icons.settings, text: l10n.wizardToolsFeature1),
|
||||
_FeatureItem(icon: Icons.sensors, text: l10n.wizardToolsFeature2),
|
||||
_FeatureItem(
|
||||
icon: Icons.analytics_outlined,
|
||||
text:
|
||||
'Use packet logs, spectrum scan, and developer diagnostics when troubleshooting the mesh.',
|
||||
text: l10n.wizardToolsFeature3,
|
||||
),
|
||||
],
|
||||
colorScheme: colorScheme,
|
||||
@@ -770,6 +723,7 @@ class _WelcomeWizardScreenState extends State<WelcomeWizardScreen> {
|
||||
List<_FeatureItem>? features,
|
||||
required ColorScheme colorScheme,
|
||||
}) {
|
||||
final l10n = AppLocalizations.of(context)!;
|
||||
return LayoutBuilder(
|
||||
builder: (context, constraints) => Center(
|
||||
child: ConstrainedBox(
|
||||
@@ -789,7 +743,7 @@ class _WelcomeWizardScreenState extends State<WelcomeWizardScreen> {
|
||||
iconColor: iconColor,
|
||||
title: title,
|
||||
description: description,
|
||||
badge: 'Overview',
|
||||
badge: l10n.wizardOverviewBadge,
|
||||
),
|
||||
if (features != null && features.isNotEmpty) ...[
|
||||
const SizedBox(height: 18),
|
||||
|
||||
@@ -402,10 +402,13 @@ class NotificationService {
|
||||
(DateTime.now().millisecondsSinceEpoch % 1000);
|
||||
|
||||
// Build notification title and body
|
||||
final resolvedChannelName = channelName?.trim().isNotEmpty == true
|
||||
? channelName!.trim()
|
||||
: (localizations?.publicChannel ?? 'Public');
|
||||
final title = isChannelMessage
|
||||
? (localizations != null
|
||||
? '${localizations.channel}: ${channelName ?? "Public"}'
|
||||
: 'Channel: ${channelName ?? "Public"}')
|
||||
? '${localizations.channel}: $resolvedChannelName'
|
||||
: 'Channel: $resolvedChannelName')
|
||||
: (localizations != null
|
||||
? '${localizations.newMessage} ${localizations.from} $senderName'
|
||||
: 'New message from $senderName');
|
||||
@@ -550,7 +553,7 @@ class NotificationService {
|
||||
final title = localizations?.updateAvailable ?? 'App Update Available';
|
||||
final body = localizations != null
|
||||
? '${localizations.currentVersion}: $currentVersion\n'
|
||||
'${localizations.latestVersion}: $latestVersion'
|
||||
'${localizations.latestVersion}: $latestVersion'
|
||||
: 'Current: $currentVersion\nLatest: $latestVersion';
|
||||
|
||||
// Android notification details
|
||||
|
||||
@@ -341,7 +341,11 @@ class ContactTile extends StatelessWidget {
|
||||
leading: Icon(
|
||||
isInSensors ? Icons.sensors : Icons.sensors_outlined,
|
||||
),
|
||||
title: Text(isInSensors ? 'In Sensors' : 'Add to Sensors'),
|
||||
title: Text(
|
||||
isInSensors
|
||||
? l10n.contactInSensors
|
||||
: l10n.contactAddToSensors,
|
||||
),
|
||||
enabled: !isInSensors,
|
||||
onTap: isInSensors
|
||||
? null
|
||||
@@ -353,7 +357,7 @@ class ContactTile extends StatelessWidget {
|
||||
if (canSetPath)
|
||||
ListTile(
|
||||
leading: const Icon(Icons.alt_route),
|
||||
title: const Text('Set path'),
|
||||
title: Text(l10n.contactSetPath),
|
||||
onTap: () {
|
||||
Navigator.pop(sheetContext);
|
||||
_showSetRouteDialog(context, contact);
|
||||
@@ -408,7 +412,13 @@ class ContactTile extends StatelessWidget {
|
||||
}
|
||||
|
||||
ScaffoldMessenger.of(context).showSnackBar(
|
||||
SnackBar(content: Text('${contact.displayName} added to Sensors')),
|
||||
SnackBar(
|
||||
content: Text(
|
||||
AppLocalizations.of(
|
||||
context,
|
||||
)!.contactAddedToSensors(contact.displayName),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -534,15 +544,22 @@ class ContactTile extends StatelessWidget {
|
||||
paddedPathBytes: previousPathBytes,
|
||||
);
|
||||
if (context.mounted) {
|
||||
ToastLogger.error(context, 'Failed to clear route: $error');
|
||||
ToastLogger.error(
|
||||
context,
|
||||
AppLocalizations.of(
|
||||
context,
|
||||
)!.contactFailedToClearRoute(error.toString()),
|
||||
);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if (context.mounted) {
|
||||
ScaffoldMessenger.of(
|
||||
context,
|
||||
).showSnackBar(const SnackBar(content: Text('Route cleared')));
|
||||
ScaffoldMessenger.of(context).showSnackBar(
|
||||
SnackBar(
|
||||
content: Text(AppLocalizations.of(context)!.contactRouteCleared),
|
||||
),
|
||||
);
|
||||
}
|
||||
return;
|
||||
}
|
||||
@@ -562,7 +579,13 @@ class ContactTile extends StatelessWidget {
|
||||
);
|
||||
if (context.mounted) {
|
||||
ScaffoldMessenger.of(context).showSnackBar(
|
||||
SnackBar(content: Text('Route set: ${parsedRoute.canonicalText}')),
|
||||
SnackBar(
|
||||
content: Text(
|
||||
AppLocalizations.of(
|
||||
context,
|
||||
)!.contactRouteSet(parsedRoute.canonicalText),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
} catch (error) {
|
||||
@@ -572,7 +595,12 @@ class ContactTile extends StatelessWidget {
|
||||
paddedPathBytes: previousPathBytes,
|
||||
);
|
||||
if (context.mounted) {
|
||||
ToastLogger.error(context, 'Failed to set route: $error');
|
||||
ToastLogger.error(
|
||||
context,
|
||||
AppLocalizations.of(
|
||||
context,
|
||||
)!.contactFailedToSetRoute(error.toString()),
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,7 +16,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev
|
||||
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
|
||||
# In Windows, build-name is used as the major, minor, and patch parts
|
||||
# of the product and file versions while build-number is used as the build suffix.
|
||||
version: 2026.0310.2+25
|
||||
version: 2026.0311.1+26
|
||||
|
||||
environment:
|
||||
sdk: ^3.9.2
|
||||
|
||||
Reference in New Issue
Block a user