diff --git a/Meshtastic/Views/Nodes/DeviceMetricsLog.swift b/Meshtastic/Views/Nodes/DeviceMetricsLog.swift index 70ea6137..198f1f72 100644 --- a/Meshtastic/Views/Nodes/DeviceMetricsLog.swift +++ b/Meshtastic/Views/Nodes/DeviceMetricsLog.swift @@ -132,7 +132,7 @@ struct DeviceMetricsLog: View { .controlSize(.large) .padding() .confirmationDialog( - "Are you sure?", + "are.you.sure", isPresented: $isPresentingClearLogConfirm, titleVisibility: .visible ) { diff --git a/Meshtastic/Views/Nodes/EnvironmentMetricsLog.swift b/Meshtastic/Views/Nodes/EnvironmentMetricsLog.swift index d9795950..9b8c803a 100644 --- a/Meshtastic/Views/Nodes/EnvironmentMetricsLog.swift +++ b/Meshtastic/Views/Nodes/EnvironmentMetricsLog.swift @@ -135,7 +135,7 @@ struct EnvironmentMetricsLog: View { .controlSize(.large) .padding() .confirmationDialog( - "Are you sure?", + "are.you.sure", isPresented: $isPresentingClearLogConfirm, titleVisibility: .visible ) { diff --git a/Meshtastic/Views/Nodes/NodeDetail.swift b/Meshtastic/Views/Nodes/NodeDetail.swift index 6ab47349..b5efc6df 100644 --- a/Meshtastic/Views/Nodes/NodeDetail.swift +++ b/Meshtastic/Views/Nodes/NodeDetail.swift @@ -358,7 +358,7 @@ struct NodeDetail: View { .controlSize(.large) .padding() .confirmationDialog( - "Are you sure?", + "are.you.sure", isPresented: $showingShutdownConfirm ) { Button("Shutdown Node?", role: .destructive) { @@ -385,7 +385,7 @@ struct NodeDetail: View { .padding() .confirmationDialog( - "Are you sure?", + "are.you.sure", isPresented: $showingRebootConfirm ) { diff --git a/Meshtastic/Views/Nodes/PositionLog.swift b/Meshtastic/Views/Nodes/PositionLog.swift index b4de4ad2..46333fe1 100644 --- a/Meshtastic/Views/Nodes/PositionLog.swift +++ b/Meshtastic/Views/Nodes/PositionLog.swift @@ -114,7 +114,7 @@ struct PositionLog: View { .controlSize(.large) .padding() .confirmationDialog( - "Are you sure?", + "are.you.sure", isPresented: $isPresentingClearLogConfirm, titleVisibility: .visible ) { diff --git a/Meshtastic/Views/Settings/About.swift b/Meshtastic/Views/Settings/About.swift index 8cc59d3c..32745f11 100644 --- a/Meshtastic/Views/Settings/About.swift +++ b/Meshtastic/Views/Settings/About.swift @@ -50,7 +50,7 @@ struct AboutMeshtastic: View { .font(.caption) } } - .navigationTitle("About") + .navigationTitle("about") .navigationBarTitleDisplayMode(.inline) } } diff --git a/Meshtastic/Views/Settings/AppSettings.swift b/Meshtastic/Views/Settings/AppSettings.swift index 9fdd60ad..7a1cd178 100644 --- a/Meshtastic/Views/Settings/AppSettings.swift +++ b/Meshtastic/Views/Settings/AppSettings.swift @@ -17,15 +17,15 @@ enum KeyboardType: Int, CaseIterable, Identifiable { get { switch self { case .defaultKeyboard: - return String(format: NSLocalizedString("default", comment: "Default Keyboard")) + return NSLocalizedString("default", comment: "Default Keyboard") case .asciiCapable: - return String(format: NSLocalizedString("ascii.capable", comment: "ASCII Capable Keyboard")) + return NSLocalizedString("ascii.capable", comment: "ASCII Capable Keyboard") case .twitter: - return String(format: NSLocalizedString("twitter", comment: "Twitter Keyboard")) + return NSLocalizedString("twitter", comment: "Twitter Keyboard") case .emailAddress: - return String(format: NSLocalizedString("email.address", comment: "Email Address Keyboard")) + return NSLocalizedString("email.address", comment: "Email Address Keyboard") case .numbersAndPunctuation: - return String(format: NSLocalizedString("numbers.punctuation", comment: "Numbers and Punctuation Keyboard")) + return NSLocalizedString("numbers.punctuation", comment: "Numbers and Punctuation Keyboard") } } } @@ -43,11 +43,11 @@ enum MeshMapType: String, CaseIterable, Identifiable { get { switch self { case .satellite: - return "Satellite" + return NSLocalizedString("satellite", comment: "Satellite Map Type") case .standard: - return "Standard" + return NSLocalizedString("standard", comment: "Standard Map Type") case .hybrid: - return "Hybrid" + return NSLocalizedString("hybrid", comment: "Hybrid Map Type") } } } @@ -69,21 +69,21 @@ enum LocationUpdateInterval: Int, CaseIterable, Identifiable { get { switch self { case .fiveSeconds: - return "Five Seconds" + return NSLocalizedString("interval.five.seconds", comment: "Five Seconds") case .tenSeconds: - return "Ten Seconds" + return NSLocalizedString("interval.ten.seconds", comment: "Ten Seconds") case .fifteenSeconds: - return "Fifteen Seconds" + return NSLocalizedString("interval.fifteen.seconds", comment: "Fifteen Seconds") case .thirtySeconds: - return "Thirty Seconds" + return NSLocalizedString("interval.thirty.seconds", comment: "Thirty Seconds") case .oneMinute: - return "One Minute" + return NSLocalizedString("interval.one.minute", comment: "One Minute") case .fiveMinutes: - return "Five Minutes" + return NSLocalizedString("interval.five.minutes", comment: "Five Minutes") case .tenMinutes: - return "Ten Minutes" + return NSLocalizedString("interval.ten.minutes", comment: "Ten Minutes") case .fifteenMinutes: - return "Fifteen Minutes" + return NSLocalizedString("interval.fifteen.minutes", comment: "Fifteen Minutes") } } } @@ -105,7 +105,7 @@ struct AppSettings: View { var body: some View { VStack { Form { - Section(header: Text("USER DETAILS")) { + Section(header: Text("user.details")) { HStack { Label("Name", systemImage: "person.crop.rectangle.fill") @@ -116,16 +116,16 @@ struct AppSettings: View { .disableAutocorrection(true) .listRowSeparator(.visible) } - Section(header: Text("Options")) { + Section(header: Text("options")) { - Picker("Keyboard Type", selection: $userSettings.keyboardType) { + Picker("keyboard.type", selection: $userSettings.keyboardType) { ForEach(KeyboardType.allCases) { kb in Text(kb.description) } } .pickerStyle(DefaultPickerStyle()) - Picker("Map Type", selection: $userSettings.meshMapType) { + Picker("map.type", selection: $userSettings.meshMapType) { ForEach(MeshMapType.allCases) { map in Text(map.description) } @@ -134,23 +134,23 @@ struct AppSettings: View { } - Section(header: Text("Phone GPS")) { + Section(header: Text("phone.gps")) { Toggle(isOn: $userSettings.provideLocation) { - Label("Provide location to mesh", systemImage: "location.circle.fill") + Label("provide.location", systemImage: "location.circle.fill") } .toggleStyle(SwitchToggleStyle(tint: .accentColor)) if userSettings.provideLocation { - Picker(" Update Interval", selection: $userSettings.provideLocationInterval) { + Picker("update.interval", selection: $userSettings.provideLocationInterval) { ForEach(LocationUpdateInterval.allCases) { lu in Text(lu.description) } } .pickerStyle(DefaultPickerStyle()) - Text("How frequently your phone will send your location to the device, location updates to the mesh are managed by the device.") + Text("phone.gps.interval.description") .font(.caption) .listRowSeparator(.visible) } @@ -160,7 +160,7 @@ struct AppSettings: View { Button { isPresentingCoreDataResetConfirm = true } label: { - Label("Clear App Data", systemImage: "trash") + Label("clear.app.data", systemImage: "trash") .foregroundColor(.red) } .buttonStyle(.bordered) @@ -168,7 +168,7 @@ struct AppSettings: View { .controlSize(.large) .padding() .confirmationDialog( - "Are you sure?", + "are.you.sure", isPresented: $isPresentingCoreDataResetConfirm, titleVisibility: .visible ) { diff --git a/Meshtastic/Views/Settings/Config/BluetoothConfig.swift b/Meshtastic/Views/Settings/Config/BluetoothConfig.swift index 7173a0f2..1516a5a9 100644 --- a/Meshtastic/Views/Settings/Config/BluetoothConfig.swift +++ b/Meshtastic/Views/Settings/Config/BluetoothConfig.swift @@ -37,11 +37,11 @@ struct BluetoothConfig: View { Form { - Section(header: Text("Options")) { + Section(header: Text("options")) { Toggle(isOn: $enabled) { - Label("Enabled", systemImage: "antenna.radiowaves.left.and.right") + Label("enabled", systemImage: "antenna.radiowaves.left.and.right") } .toggleStyle(SwitchToggleStyle(tint: .accentColor)) diff --git a/Meshtastic/Views/Settings/Config/DeviceConfig.swift b/Meshtastic/Views/Settings/Config/DeviceConfig.swift index 31d02c42..1abc2cdf 100644 --- a/Meshtastic/Views/Settings/Config/DeviceConfig.swift +++ b/Meshtastic/Views/Settings/Config/DeviceConfig.swift @@ -31,7 +31,7 @@ struct DeviceConfig: View { Form { - Section(header: Text("Options")) { + Section(header: Text("options")) { Picker("Device Role", selection: $deviceRole ) { ForEach(DeviceRoles.allCases) { dr in @@ -96,7 +96,7 @@ struct DeviceConfig: View { .controlSize(.large) .padding() .confirmationDialog( - "Are you sure?", + "are.you.sure", isPresented: $isPresentingNodeDBResetConfirm, titleVisibility: .visible ) { diff --git a/Meshtastic/Views/Settings/Config/DisplayConfig.swift b/Meshtastic/Views/Settings/Config/DisplayConfig.swift index 696c978e..13b12138 100644 --- a/Meshtastic/Views/Settings/Config/DisplayConfig.swift +++ b/Meshtastic/Views/Settings/Config/DisplayConfig.swift @@ -106,7 +106,7 @@ struct DisplayConfig: View { .padding() .confirmationDialog( - "Are you sure?", + "are.you.sure", isPresented: $isPresentingSaveConfirm ) { Button("Save Display Config to \(bleManager.connectedPeripheral != nil ? bleManager.connectedPeripheral.longName : "Unknown")?") { diff --git a/Meshtastic/Views/Settings/Config/Module/CannedMessagesConfig.swift b/Meshtastic/Views/Settings/Config/Module/CannedMessagesConfig.swift index d36ee83e..a7b16b39 100644 --- a/Meshtastic/Views/Settings/Config/Module/CannedMessagesConfig.swift +++ b/Meshtastic/Views/Settings/Config/Module/CannedMessagesConfig.swift @@ -47,11 +47,11 @@ struct CannedMessagesConfig: View { Form { - Section(header: Text("Options")) { + Section(header: Text("options")) { Toggle(isOn: $enabled) { - Label("Enabled", systemImage: "list.bullet.rectangle.fill") + Label("enabled", systemImage: "list.bullet.rectangle.fill") } .toggleStyle(SwitchToggleStyle(tint: .accentColor)) @@ -220,7 +220,7 @@ struct CannedMessagesConfig: View { .controlSize(.large) .padding() .confirmationDialog( - "Are you sure?", + "are.you.sure", isPresented: $isPresentingSaveConfirm, titleVisibility: .visible ) { diff --git a/Meshtastic/Views/Settings/Config/Module/ExternalNotificationConfig.swift b/Meshtastic/Views/Settings/Config/Module/ExternalNotificationConfig.swift index 19616a20..69896e77 100644 --- a/Meshtastic/Views/Settings/Config/Module/ExternalNotificationConfig.swift +++ b/Meshtastic/Views/Settings/Config/Module/ExternalNotificationConfig.swift @@ -68,9 +68,9 @@ struct ExternalNotificationConfig: View { VStack { Form { - Section(header: Text("Options")) { + Section(header: Text("options")) { Toggle(isOn: $enabled) { - Label("Enabled", systemImage: "megaphone") + Label("enabled", systemImage: "megaphone") } .toggleStyle(SwitchToggleStyle(tint: .accentColor)) Toggle(isOn: $alertBell) { @@ -131,7 +131,7 @@ struct ExternalNotificationConfig: View { .controlSize(.large) .padding() .confirmationDialog( - "Are you sure?", + "are.you.sure", isPresented: $isPresentingSaveConfirm, titleVisibility: .visible ) { diff --git a/Meshtastic/Views/Settings/Config/Module/MQTTConfig.swift b/Meshtastic/Views/Settings/Config/Module/MQTTConfig.swift index 796741b0..27b1e11f 100644 --- a/Meshtastic/Views/Settings/Config/Module/MQTTConfig.swift +++ b/Meshtastic/Views/Settings/Config/Module/MQTTConfig.swift @@ -26,11 +26,11 @@ struct MQTTConfig: View { VStack { Form { - Section(header: Text("Options")) { + Section(header: Text("options")) { Toggle(isOn: $enabled) { - Label("Enabled", systemImage: "dot.radiowaves.right") + Label("enabled", systemImage: "dot.radiowaves.right") } .toggleStyle(SwitchToggleStyle(tint: .accentColor)) @@ -152,7 +152,7 @@ struct MQTTConfig: View { .controlSize(.large) .padding() .confirmationDialog( - "Are you sure?", + "are.you.sure", isPresented: $isPresentingSaveConfirm, titleVisibility: .visible ) { diff --git a/Meshtastic/Views/Settings/Config/Module/RangeTestConfig.swift b/Meshtastic/Views/Settings/Config/Module/RangeTestConfig.swift index 75993452..38ecae08 100644 --- a/Meshtastic/Views/Settings/Config/Module/RangeTestConfig.swift +++ b/Meshtastic/Views/Settings/Config/Module/RangeTestConfig.swift @@ -61,10 +61,10 @@ struct RangeTestConfig: View { var body: some View { VStack { Form { - Section(header: Text("Options")) { + Section(header: Text("options")) { Toggle(isOn: $enabled) { - Label("Enabled", systemImage: "figure.walk") + Label("enabled", systemImage: "figure.walk") } .toggleStyle(SwitchToggleStyle(tint: .accentColor)) Picker("Sender Interval", selection: $sender ) { @@ -96,7 +96,7 @@ struct RangeTestConfig: View { .controlSize(.large) .padding() .confirmationDialog( - "Are you sure?", + "are.you.sure", isPresented: $isPresentingSaveConfirm, titleVisibility: .visible ) { diff --git a/Meshtastic/Views/Settings/Config/Module/SerialConfig.swift b/Meshtastic/Views/Settings/Config/Module/SerialConfig.swift index 77399586..6e3f33a9 100644 --- a/Meshtastic/Views/Settings/Config/Module/SerialConfig.swift +++ b/Meshtastic/Views/Settings/Config/Module/SerialConfig.swift @@ -31,11 +31,11 @@ struct SerialConfig: View { Form { - Section(header: Text("Options")) { + Section(header: Text("options")) { Toggle(isOn: $enabled) { - Label("Enabled", systemImage: "terminal") + Label("enabled", systemImage: "terminal") } .toggleStyle(SwitchToggleStyle(tint: .accentColor)) @@ -122,7 +122,7 @@ struct SerialConfig: View { .padding() .confirmationDialog( - "Are you sure?", + "are.you.sure", isPresented: $isPresentingSaveConfirm, titleVisibility: .visible ) { diff --git a/Meshtastic/Views/Settings/Config/Module/TelemetryConfig.swift b/Meshtastic/Views/Settings/Config/Module/TelemetryConfig.swift index 8a6726d6..91d5d78c 100644 --- a/Meshtastic/Views/Settings/Config/Module/TelemetryConfig.swift +++ b/Meshtastic/Views/Settings/Config/Module/TelemetryConfig.swift @@ -108,7 +108,7 @@ struct TelemetryConfig: View { Text("Supported I2C Connected sensors will be detected automatically, sensors are BMP280, BME280, BME680, MCP9808, INA219, INA260, LPS22 and SHTC3.") .font(.caption) Toggle(isOn: $environmentMeasurementEnabled) { - Label("Enabled", systemImage: "chart.xyaxis.line") + Label("enabled", systemImage: "chart.xyaxis.line") } .toggleStyle(SwitchToggleStyle(tint: .accentColor)) Toggle(isOn: $environmentScreenEnabled) { @@ -133,7 +133,7 @@ struct TelemetryConfig: View { .controlSize(.large) .padding() .confirmationDialog( - "Are you sure?", + "are.you.sure", isPresented: $isPresentingSaveConfirm, titleVisibility: .visible ) { diff --git a/Meshtastic/Views/Settings/Config/NetworkConfig.swift b/Meshtastic/Views/Settings/Config/NetworkConfig.swift index b1d31ea0..20d354d0 100644 --- a/Meshtastic/Views/Settings/Config/NetworkConfig.swift +++ b/Meshtastic/Views/Settings/Config/NetworkConfig.swift @@ -33,7 +33,7 @@ struct NetworkConfig: View { Section(header: Text("WiFi Options (ESP32 Only)")) { Toggle(isOn: $wifiEnabled) { - Label("Enabled", systemImage: "wifi") + Label("enabled", systemImage: "wifi") } .toggleStyle(SwitchToggleStyle(tint: .accentColor)) HStack { @@ -84,7 +84,7 @@ struct NetworkConfig: View { .disabled(!(node != nil && node!.myInfo?.hasWifi ?? false)) Section(header: Text("Ethernet Options")) { Toggle(isOn: $ethEnabled) { - Label("Enabled", systemImage: "network") + Label("enabled", systemImage: "network") } .toggleStyle(SwitchToggleStyle(tint: .accentColor)) Text("Enabling Ethernet will disable the bluetooth connection to the app.") diff --git a/Meshtastic/Views/Settings/Config/PositionConfig.swift b/Meshtastic/Views/Settings/Config/PositionConfig.swift index de98fe9b..4aa567f8 100644 --- a/Meshtastic/Views/Settings/Config/PositionConfig.swift +++ b/Meshtastic/Views/Settings/Config/PositionConfig.swift @@ -201,7 +201,7 @@ struct PositionConfig: View { .controlSize(.large) .padding() .confirmationDialog( - "Are you sure?", + "are.you.sure", isPresented: $isPresentingSaveConfirm, titleVisibility: .visible ) { diff --git a/en.lproj/Localizable.strings b/en.lproj/Localizable.strings index bb2a07ce..cdcc3a07 100644 --- a/en.lproj/Localizable.strings +++ b/en.lproj/Localizable.strings @@ -11,6 +11,7 @@ "admin.log"="Admin Message Log"; "ago"="ago"; "app.settings"="App Settings"; +"are.you.sure"="Are you sure?"; "ascii.capable"="ASCII Capable"; "available.radios"="Available Radios"; "ble.name"="BLE Name"; @@ -20,6 +21,7 @@ "canned.messages"="Canned Messages"; "canned.messages.config"="Canned Messages Config"; "channels"="Channels (groups)"; +"clear.app.data"="Clear App Data"; "connected.radio"="Connected Radio"; "communicating"="Communicating with device. ."; "connected"="Currently Connected"; @@ -36,14 +38,26 @@ "distance"="Distance"; "disconnect"="Disconnect"; "email.address"="Email Address"; +"enabled"="Enabled"; "external.notification"="External Notification"; "external.notification.config"="External Notification Config"; "firmware.version"="Firmware Version"; -"heard"="Heard"; +"heard"="Heard"; +"hybrid"="Hybrid"; +"interval.five.seconds"="Five Seconds"; +"interval.ten.seconds"="Ten Seconds"; +"interval.fifteen.seconds"="Fifteen Seconds"; +"interval.thirty.seconds"="Thirty Seconds"; +"interval.one.minute"="One Minute"; +"interval.five.minutes"="Five Minutes"; +"interval.ten.minutes"="Ten Minutes"; +"interval.fifteen.minutes"="Fifteen Minutes"; +"keyboard.type"="Keyboard Type"; "logging"="Logging"; "lora"="LoRa"; "lora.config"="LoRa Config"; "map"="Mesh Map"; +"map.type"="Map Type"; "mesh.log"="Mesh Log"; "messages"="Messages"; "module.configuration"="Module Configuration"; @@ -55,12 +69,17 @@ "no.nodes"="No Meshtastic Nodes Found"; "not.connected"="No device connected"; "numbers.punctuation"="Numbers and Punctuation"; +"options"="Options"; +"phone.gps"="Phone GPS"; +"phone.gps.interval.description"="How frequently your phone will send your location to the device, location updates to the mesh are managed by the device."; "position"="Position"; "position.config"="Position Config"; "preferred.radio"="Preferred Radio"; +"provide.location"="Provide location to mesh"; "radio.configuration"="Radio Configuration"; "range.test"="Range Test"; "range.test.config"="Range Test Config"; +"satellite"="Satellite"; "save"="Save"; "serial"="Serial"; "serial.config"="Serial Config"; @@ -72,8 +91,11 @@ "select.node"="Select a Node"; "select.menu.item"="Select an item from the menu"; "set.region"="Set LoRa Region"; +"standard"="Standard"; "telemetry"="Telemetry (Sensors)"; "telemetry.config"="Telemetry Config"; "twitter"="Twitter"; "unknown.age"="Unknown Age"; +"update.interval"="Update Interval"; "user"="User"; +"user.details"="User Details";