mirror of
https://github.com/meshtastic/Meshtastic-Apple.git
synced 2026-04-20 22:13:56 +00:00
Delete more keys
This commit is contained in:
parent
c665026c37
commit
e068e660a5
9 changed files with 37 additions and 200 deletions
|
|
@ -25542,71 +25542,6 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"route.recorder" : {
|
||||
"extractionState" : "stale",
|
||||
"localizations" : {
|
||||
"de" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Route Recorder"
|
||||
}
|
||||
},
|
||||
"en" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Route Recorder"
|
||||
}
|
||||
},
|
||||
"fr" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Enregistreur de route"
|
||||
}
|
||||
},
|
||||
"he" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "מקליט מסלול"
|
||||
}
|
||||
},
|
||||
"pl" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Route Recorder"
|
||||
}
|
||||
},
|
||||
"pt-PT" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Gravador de Rotas"
|
||||
}
|
||||
},
|
||||
"se" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Ruttinspelare"
|
||||
}
|
||||
},
|
||||
"sr" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Снимач руте"
|
||||
}
|
||||
},
|
||||
"zh-Hans" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "路径记录器"
|
||||
}
|
||||
},
|
||||
"zh-Hant-TW" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "路線錄製"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"Router" : {
|
||||
"localizations" : {
|
||||
"sr" : {
|
||||
|
|
@ -25627,71 +25562,6 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"routes" : {
|
||||
"extractionState" : "stale",
|
||||
"localizations" : {
|
||||
"de" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Routen"
|
||||
}
|
||||
},
|
||||
"en" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Routes"
|
||||
}
|
||||
},
|
||||
"fr" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Routes"
|
||||
}
|
||||
},
|
||||
"he" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "מסלולים"
|
||||
}
|
||||
},
|
||||
"pl" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Routes"
|
||||
}
|
||||
},
|
||||
"pt-PT" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Rotas"
|
||||
}
|
||||
},
|
||||
"se" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Rutter"
|
||||
}
|
||||
},
|
||||
"sr" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Руте"
|
||||
}
|
||||
},
|
||||
"zh-Hans" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "路径"
|
||||
}
|
||||
},
|
||||
"zh-Hant-TW" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "路線"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"Routes" : {
|
||||
|
||||
},
|
||||
|
|
@ -30919,23 +30789,6 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"This determines the actual frequency you are transmitting on in the band. If set to 0 this value will be calculated automatically based on the primary channel name." : {
|
||||
"extractionState" : "stale",
|
||||
"localizations" : {
|
||||
"sr" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Ово одређује стварну фреквенцију на којој преносите у опсегу. Ако је постављено на 0, ова вредност ће се аутоматски израчунати на основу назива примарног канала."
|
||||
}
|
||||
},
|
||||
"zh-Hans" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "这决定了您在频段内的实际发射频率。如果设置为 0,该值将根据主频道名称自动计算。"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"This device will send out range test messages on the selected interval." : {
|
||||
"localizations" : {
|
||||
"sr" : {
|
||||
|
|
@ -31187,7 +31040,14 @@
|
|||
}
|
||||
},
|
||||
"Timestamp" : {
|
||||
|
||||
"localizations" : {
|
||||
"sr" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Временска ознака"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"Timing & Format" : {
|
||||
"localizations" : {
|
||||
|
|
@ -31902,29 +31762,6 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"Trace route received directly by %@ with a SNR of %@ dB" : {
|
||||
"extractionState" : "stale",
|
||||
"localizations" : {
|
||||
"en" : {
|
||||
"stringUnit" : {
|
||||
"state" : "new",
|
||||
"value" : "Trace route received directly by %1$@ with a SNR of %2$@ dB"
|
||||
}
|
||||
},
|
||||
"sr" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Захтев за праћење руте комуникације директно примљен од %1$@ са SNR од %2$@ dB."
|
||||
}
|
||||
},
|
||||
"zh-Hans" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "由 %1$@ 直接接收的跟踪路由,信噪比为 %2$@ dB"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"Trace Route Sent" : {
|
||||
"localizations" : {
|
||||
"sr" : {
|
||||
|
|
|
|||
|
|
@ -58,11 +58,11 @@ enum RoutingError: Int, CaseIterable, Identifiable {
|
|||
case .pkiFailed:
|
||||
return "routing.pkifailed".localized
|
||||
case .pkiUnknownPubkey:
|
||||
return "routing.pkiunknownpubkey".localized
|
||||
return "Unknown public key".localized
|
||||
case .adminBadSessionKey:
|
||||
return "routing.adminbadsessionkey".localized
|
||||
return "Bad admin session key".localized
|
||||
case .adminPublicKeyUnauthorized:
|
||||
return "routing.adminpublickeyunauthorized".localized
|
||||
return "Unauthorized admin public key".localized
|
||||
}
|
||||
}
|
||||
var color: Color {
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ func telemetryToCsvFile(telemetry: [TelemetryEntity], metricsType: Int) -> Strin
|
|||
let dateFormatString = (localeDateFormat ?? "MM/dd/YY j:mma").replacingOccurrences(of: ",", with: "")
|
||||
if metricsType == 0 {
|
||||
// Create Device Metrics Header
|
||||
csvString = "\("battery.level".localized), \("voltage".localized), \("channel.utilization".localized), \("airtime".localized), \("uptime".localized), \("timestamp".localized)"
|
||||
csvString = "\("battery.level".localized), \("voltage".localized), \("channel.utilization".localized), \("airtime".localized), \("uptime".localized), \("Timestamp".localized)"
|
||||
for dm in telemetry where dm.metricsType == 0 {
|
||||
csvString += "\n"
|
||||
csvString += String(dm.batteryLevel)
|
||||
|
|
@ -31,7 +31,7 @@ func telemetryToCsvFile(telemetry: [TelemetryEntity], metricsType: Int) -> Strin
|
|||
}
|
||||
} else if metricsType == 1 {
|
||||
// Create Environment Telemetry Header
|
||||
csvString = "Temperature, Relative Humidity, Barometric Pressure, Indoor Air Quality, Gas Resistance, \("timestamp".localized)"
|
||||
csvString = "Temperature, Relative Humidity, Barometric Pressure, Indoor Air Quality, Gas Resistance, \("Timestamp".localized)"
|
||||
for dm in telemetry where dm.metricsType == 1 {
|
||||
csvString += "\n"
|
||||
csvString += String(dm.temperature.localeTemperature())
|
||||
|
|
@ -48,7 +48,7 @@ func telemetryToCsvFile(telemetry: [TelemetryEntity], metricsType: Int) -> Strin
|
|||
}
|
||||
} else if metricsType == 2 {
|
||||
// Create Power Metrics Header
|
||||
csvString = "Channel 1 Voltage, Channel 1 Current, Channel 2 Voltage, Channel 2 Current, Channel 3 Voltage, Channel 3 Current, \("timestamp".localized)"
|
||||
csvString = "Channel 1 Voltage, Channel 1 Current, Channel 2 Voltage, Channel 2 Current, Channel 3 Voltage, Channel 3 Current, \("Timestamp".localized)"
|
||||
for dm in telemetry where dm.metricsType == 2 {
|
||||
csvString += "\n"
|
||||
csvString += String(dm.powerCh1Voltage)
|
||||
|
|
@ -74,7 +74,7 @@ func detectionsToCsv(detections: [MessageEntity]) -> String {
|
|||
let localeDateFormat = DateFormatter.dateFormat(fromTemplate: "yyMMddjmma", options: 0, locale: Locale.current)
|
||||
let dateFormatString = (localeDateFormat ?? "MM/dd/YY j:mma").replacingOccurrences(of: ",", with: "")
|
||||
// Create Header
|
||||
csvString = "Detection event, \("timestamp".localized)"
|
||||
csvString = "Detection event, \("Timestamp".localized)"
|
||||
for d in detections {
|
||||
csvString += "\n"
|
||||
csvString += d.messagePayload ?? "Detection"
|
||||
|
|
@ -89,7 +89,7 @@ func logToCsvFile(log: [OSLogEntryLog]) -> String {
|
|||
let localeDateFormat = DateFormatter.dateFormat(fromTemplate: "yyMMddjmma", options: 0, locale: Locale.current)
|
||||
let dateFormatString = (localeDateFormat ?? "MM/dd/YY j:mma").replacingOccurrences(of: ",", with: "")
|
||||
// Create PAX Header
|
||||
csvString = "Process, Category, Level, Message, \("timestamp".localized)"
|
||||
csvString = "Process, Category, Level, Message, \("Timestamp".localized)"
|
||||
for l in log {
|
||||
csvString += "\n"
|
||||
csvString += String(l.process)
|
||||
|
|
@ -110,7 +110,7 @@ func paxToCsvFile(pax: [PaxCounterEntity]) -> String {
|
|||
let localeDateFormat = DateFormatter.dateFormat(fromTemplate: "yyMMddjmma", options: 0, locale: Locale.current)
|
||||
let dateFormatString = (localeDateFormat ?? "MM/dd/YY j:mma").replacingOccurrences(of: ",", with: "")
|
||||
// Create PAX Header
|
||||
csvString = "BLE, WiFi, Total Pax, Uptime, \("timestamp".localized)"
|
||||
csvString = "BLE, WiFi, Total Pax, Uptime, \("Timestamp".localized)"
|
||||
for p in pax {
|
||||
csvString += "\n"
|
||||
csvString += String(p.ble)
|
||||
|
|
@ -131,7 +131,7 @@ func positionToCsvFile(positions: [PositionEntity]) -> String {
|
|||
let localeDateFormat = DateFormatter.dateFormat(fromTemplate: "yyMMddjmma", options: 0, locale: Locale.current)
|
||||
let dateFormatString = (localeDateFormat ?? "MM/dd/YY j:mma").replacingOccurrences(of: ",", with: "")
|
||||
// Create Position Header
|
||||
csvString = "SeqNo, Latitude, Longitude, Altitude, Sats, Speed, Heading, SNR, \("timestamp".localized)"
|
||||
csvString = "SeqNo, Latitude, Longitude, Altitude, Sats, Speed, Heading, SNR, \("Timestamp".localized)"
|
||||
for pos in positions {
|
||||
csvString += "\n"
|
||||
csvString += String(pos.seqNo)
|
||||
|
|
|
|||
|
|
@ -70,7 +70,7 @@ struct Connect: View {
|
|||
.font(.callout).foregroundColor(Color.gray)
|
||||
}
|
||||
if bleManager.isSubscribed {
|
||||
Text("subscribed").font(.callout)
|
||||
Text("Subscribed").font(.callout)
|
||||
.foregroundColor(.green)
|
||||
} else {
|
||||
HStack {
|
||||
|
|
@ -78,7 +78,7 @@ struct Connect: View {
|
|||
.symbolRenderingMode(.multicolor)
|
||||
.symbolEffect(.variableColor.reversing.cumulative, options: .repeat(20).speed(3))
|
||||
.foregroundColor(.orange)
|
||||
Text("communicating").font(.callout)
|
||||
Text("Communicating").font(.callout)
|
||||
.foregroundColor(.orange)
|
||||
}
|
||||
}
|
||||
|
|
@ -95,7 +95,7 @@ struct Connect: View {
|
|||
bleManager.disconnectPeripheral(reconnect: false)
|
||||
}
|
||||
} label: {
|
||||
Label("disconnect", systemImage: "antenna.radiowaves.left.and.right.slash")
|
||||
Label("Disconnect", systemImage: "antenna.radiowaves.left.and.right.slash")
|
||||
}
|
||||
}
|
||||
.contextMenu {
|
||||
|
|
|
|||
|
|
@ -71,7 +71,7 @@ struct DetectionSensorLog: View {
|
|||
Text(d.messagePayload ?? "Detected")
|
||||
}
|
||||
|
||||
TableColumn("timestamp") { d in
|
||||
TableColumn("Timestamp") { d in
|
||||
Text(d.timestamp.formattedDate(format: dateFormatString))
|
||||
}
|
||||
.width(min: 180)
|
||||
|
|
@ -87,7 +87,7 @@ struct DetectionSensorLog: View {
|
|||
Text("Detection")
|
||||
.font(.caption)
|
||||
.fontWeight(.bold)
|
||||
Text("timestamp")
|
||||
Text("Timestamp")
|
||||
.font(.caption)
|
||||
.fontWeight(.bold)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -73,7 +73,7 @@ struct EnvironmentMetricsLog: View {
|
|||
TableColumn("Wind Direction") { em in
|
||||
columnList.column(forAttribute: "windDirection")?.body(em)
|
||||
}
|
||||
TableColumn("timestamp") { em in
|
||||
TableColumn("Timestamp") { em in
|
||||
columnList.column(forAttribute: "time")?.body(em)
|
||||
}
|
||||
.width(min: 180)
|
||||
|
|
|
|||
|
|
@ -104,7 +104,7 @@ struct PaxCounterLog: View {
|
|||
let components = (now..<later).formatted(.components(style: .condensedAbbreviated))
|
||||
Text(components)
|
||||
}
|
||||
TableColumn("timestamp") { pc in
|
||||
TableColumn("Timestamp") { pc in
|
||||
Text(pc.time?.formattedDate(format: dateFormatString) ?? "unknown.age".localized)
|
||||
}
|
||||
.width(min: 180)
|
||||
|
|
@ -129,10 +129,10 @@ struct PaxCounterLog: View {
|
|||
Text("Total")
|
||||
.font(.caption)
|
||||
.fontWeight(.bold)
|
||||
Text("uptime")
|
||||
Text("Uptime")
|
||||
.font(.caption)
|
||||
.fontWeight(.bold)
|
||||
Text("timestamp")
|
||||
Text("Timestamp")
|
||||
.font(.caption)
|
||||
.fontWeight(.bold)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -91,7 +91,7 @@ struct PositionLog: View {
|
|||
Text("Alt")
|
||||
.font(.caption2)
|
||||
.fontWeight(.bold)
|
||||
Text("timestamp")
|
||||
Text("Timestamp")
|
||||
.font(.caption2)
|
||||
.fontWeight(.bold)
|
||||
}
|
||||
|
|
@ -120,7 +120,7 @@ struct PositionLog: View {
|
|||
Button(role: .destructive) {
|
||||
isPresentingClearLogConfirm = true
|
||||
} label: {
|
||||
Label("clear.log", systemImage: "trash.fill")
|
||||
Label("Clear Log", systemImage: "trash.fill")
|
||||
}
|
||||
.buttonStyle(.bordered)
|
||||
.buttonBorderShape(.capsule)
|
||||
|
|
@ -128,7 +128,7 @@ struct PositionLog: View {
|
|||
.padding(.bottom)
|
||||
.padding(.leading)
|
||||
.confirmationDialog(
|
||||
"are.you.sure",
|
||||
"Are you sure?",
|
||||
isPresented: $isPresentingClearLogConfirm,
|
||||
titleVisibility: .visible
|
||||
) {
|
||||
|
|
@ -144,7 +144,7 @@ struct PositionLog: View {
|
|||
exportString = positionToCsvFile(positions: node.positions!.array as? [PositionEntity] ?? [])
|
||||
isExporting = true
|
||||
} label: {
|
||||
Label("save", systemImage: "square.and.arrow.down")
|
||||
Label("Save", systemImage: "square.and.arrow.down")
|
||||
}
|
||||
.buttonStyle(.bordered)
|
||||
.buttonBorderShape(.capsule)
|
||||
|
|
|
|||
|
|
@ -208,7 +208,7 @@ struct PowerMetricsLog: View {
|
|||
Text("\(String(format: "%.2f", dm.powerCh3Current))mA")
|
||||
}
|
||||
.width(min: 75)
|
||||
TableColumn("timestamp") { dm in
|
||||
TableColumn("Timestamp") { dm in
|
||||
Text(dm.time?.formattedDate(format: dateFormatString) ?? "unknown.age".localized)
|
||||
}
|
||||
.width(min: 180)
|
||||
|
|
@ -225,7 +225,7 @@ struct PowerMetricsLog: View {
|
|||
Button(role: .destructive) {
|
||||
isPresentingClearLogConfirm = true
|
||||
} label: {
|
||||
Label("clear.log", systemImage: "trash.fill")
|
||||
Label("Clear Log", systemImage: "trash.fill")
|
||||
}
|
||||
.buttonStyle(.bordered)
|
||||
.buttonBorderShape(.capsule)
|
||||
|
|
@ -233,11 +233,11 @@ struct PowerMetricsLog: View {
|
|||
.padding(.bottom)
|
||||
.padding(.leading)
|
||||
.confirmationDialog(
|
||||
"are.you.sure",
|
||||
"Are you sure?",
|
||||
isPresented: $isPresentingClearLogConfirm,
|
||||
titleVisibility: .visible
|
||||
) {
|
||||
Button("power.metrics.delete", role: .destructive) {
|
||||
Button("Delete Power metrics?", role: .destructive) {
|
||||
if clearTelemetry(destNum: node.num, metricsType: 2, context: context) {
|
||||
Logger.data.notice("Cleared Power Metrics for \(node.num)")
|
||||
} else {
|
||||
|
|
@ -250,7 +250,7 @@ struct PowerMetricsLog: View {
|
|||
exportString = telemetryToCsvFile(telemetry: powerMetrics, metricsType: 2)
|
||||
isExporting = true
|
||||
} label: {
|
||||
Label("save", systemImage: "square.and.arrow.down")
|
||||
Label("Save", systemImage: "square.and.arrow.down")
|
||||
}
|
||||
.buttonStyle(.bordered)
|
||||
.buttonBorderShape(.capsule)
|
||||
|
|
@ -268,7 +268,7 @@ struct PowerMetricsLog: View {
|
|||
ContentUnavailableView("No Power Metrics", systemImage: "slash.circle")
|
||||
}
|
||||
}
|
||||
.navigationTitle("power.metrics.log")
|
||||
.navigationTitle("Power Metrics Log}")
|
||||
.navigationBarTitleDisplayMode(.inline)
|
||||
.navigationBarItems(trailing:
|
||||
ZStack {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue