mirror of
https://github.com/meshtastic/Meshtastic-Apple.git
synced 2026-04-20 22:13:56 +00:00
More strings
This commit is contained in:
parent
30a2898776
commit
5da522b911
18 changed files with 80 additions and 58 deletions
|
|
@ -132,7 +132,7 @@ struct DeviceMetricsLog: View {
|
|||
.controlSize(.large)
|
||||
.padding()
|
||||
.confirmationDialog(
|
||||
"Are you sure?",
|
||||
"are.you.sure",
|
||||
isPresented: $isPresentingClearLogConfirm,
|
||||
titleVisibility: .visible
|
||||
) {
|
||||
|
|
|
|||
|
|
@ -135,7 +135,7 @@ struct EnvironmentMetricsLog: View {
|
|||
.controlSize(.large)
|
||||
.padding()
|
||||
.confirmationDialog(
|
||||
"Are you sure?",
|
||||
"are.you.sure",
|
||||
isPresented: $isPresentingClearLogConfirm,
|
||||
titleVisibility: .visible
|
||||
) {
|
||||
|
|
|
|||
|
|
@ -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
|
||||
) {
|
||||
|
||||
|
|
|
|||
|
|
@ -114,7 +114,7 @@ struct PositionLog: View {
|
|||
.controlSize(.large)
|
||||
.padding()
|
||||
.confirmationDialog(
|
||||
"Are you sure?",
|
||||
"are.you.sure",
|
||||
isPresented: $isPresentingClearLogConfirm,
|
||||
titleVisibility: .visible
|
||||
) {
|
||||
|
|
|
|||
|
|
@ -50,7 +50,7 @@ struct AboutMeshtastic: View {
|
|||
.font(.caption)
|
||||
}
|
||||
}
|
||||
.navigationTitle("About")
|
||||
.navigationTitle("about")
|
||||
.navigationBarTitleDisplayMode(.inline)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
) {
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
) {
|
||||
|
|
|
|||
|
|
@ -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")?") {
|
||||
|
|
|
|||
|
|
@ -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
|
||||
) {
|
||||
|
|
|
|||
|
|
@ -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
|
||||
) {
|
||||
|
|
|
|||
|
|
@ -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
|
||||
) {
|
||||
|
|
|
|||
|
|
@ -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
|
||||
) {
|
||||
|
|
|
|||
|
|
@ -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
|
||||
) {
|
||||
|
|
|
|||
|
|
@ -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
|
||||
) {
|
||||
|
|
|
|||
|
|
@ -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.")
|
||||
|
|
|
|||
|
|
@ -201,7 +201,7 @@ struct PositionConfig: View {
|
|||
.controlSize(.large)
|
||||
.padding()
|
||||
.confirmationDialog(
|
||||
"Are you sure?",
|
||||
"are.you.sure",
|
||||
isPresented: $isPresentingSaveConfirm,
|
||||
titleVisibility: .visible
|
||||
) {
|
||||
|
|
|
|||
|
|
@ -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";
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue