More translation keys, delete unused file

This commit is contained in:
Garth Vander Houwen 2025-04-27 11:26:23 -07:00
parent 8a38f06d55
commit 00a7d83c4d
20 changed files with 259 additions and 584 deletions

View file

@ -4332,134 +4332,6 @@
}
}
},
"canned.messages.preset.manual" : {
"localizations" : {
"de" : {
"stringUnit" : {
"state" : "translated",
"value" : "Manuelle Konfiguration"
}
},
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Manual Configuration"
}
},
"fr" : {
"stringUnit" : {
"state" : "translated",
"value" : "Configuration manuelle"
}
},
"he" : {
"stringUnit" : {
"state" : "translated",
"value" : "הגדרה ידנית"
}
},
"it" : {
"stringUnit" : {
"state" : "translated",
"value" : "Configurazione manuale"
}
},
"pl" : {
"stringUnit" : {
"state" : "translated",
"value" : "Konfiguracja ręczna"
}
},
"se" : {
"stringUnit" : {
"state" : "translated",
"value" : "Manuell konfiguration"
}
},
"sr" : {
"stringUnit" : {
"state" : "translated",
"value" : "Ручна конфигурација"
}
},
"zh-Hans" : {
"stringUnit" : {
"state" : "translated",
"value" : "手动配置"
}
},
"zh-Hant-TW" : {
"stringUnit" : {
"state" : "translated",
"value" : "手動設定"
}
}
}
},
"canned.messages.preset.rakrotary" : {
"localizations" : {
"de" : {
"stringUnit" : {
"state" : "translated",
"value" : "RAK Drehimpulsgeber Modul"
}
},
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "RAK Rotary Encoder Module"
}
},
"fr" : {
"stringUnit" : {
"state" : "translated",
"value" : "Module d'encodage rotatif RAK"
}
},
"he" : {
"stringUnit" : {
"state" : "translated",
"value" : "RAK Rotary Encoder Module"
}
},
"it" : {
"stringUnit" : {
"state" : "translated",
"value" : "Modulo encoder rotativo RAK"
}
},
"pl" : {
"stringUnit" : {
"state" : "translated",
"value" : "Moduł kodera obrotowego RAK"
}
},
"se" : {
"stringUnit" : {
"state" : "translated",
"value" : "RAK Rotary Encoder-modul"
}
},
"sr" : {
"stringUnit" : {
"state" : "translated",
"value" : "RAK Rotary енкодер модул"
}
},
"zh-Hans" : {
"stringUnit" : {
"state" : "translated",
"value" : "RAK 编码器"
}
},
"zh-Hant-TW" : {
"stringUnit" : {
"state" : "translated",
"value" : "RAK 旋轉編碼器"
}
}
}
},
"Carousel Interval" : {
"localizations" : {
"it" : {
@ -5130,69 +5002,47 @@
}
}
},
"Channel Utilization %@%%" : {
"localizations" : {
"it" : {
"stringUnit" : {
"state" : "translated",
"value" : "Utilizzo del canale %@%%"
}
},
"zh-Hant-TW" : {
"stringUnit" : {
"state" : "translated",
"value" : "頻道利用率 %@%%"
}
}
}
},
"channel.utilization" : {
"Channel Utilization" : {
"localizations" : {
"de" : {
"stringUnit" : {
"state" : "translated",
"state" : "needs_review",
"value" : "Kanalbelegung"
}
},
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Channel Utilization"
}
},
"fr" : {
"stringUnit" : {
"state" : "translated",
"state" : "needs_review",
"value" : "Utilisation du canal"
}
},
"he" : {
"stringUnit" : {
"state" : "translated",
"state" : "needs_review",
"value" : "שימוש ערוץ"
}
},
"it" : {
"stringUnit" : {
"state" : "translated",
"state" : "needs_review",
"value" : "Utilizzo del canale"
}
},
"pl" : {
"stringUnit" : {
"state" : "translated",
"state" : "needs_review",
"value" : "Wykorzystanie kanału"
}
},
"se" : {
"stringUnit" : {
"state" : "translated",
"state" : "needs_review",
"value" : "Kanalutnyttjande"
}
},
"sr" : {
"stringUnit" : {
"state" : "translated",
"state" : "needs_review",
"value" : "Искоришћеност канала"
}
},
@ -5210,6 +5060,22 @@
}
}
},
"Channel Utilization %@%%" : {
"localizations" : {
"it" : {
"stringUnit" : {
"state" : "translated",
"value" : "Utilizzo del canale %@%%"
}
},
"zh-Hant-TW" : {
"stringUnit" : {
"state" : "translated",
"value" : "頻道利用率 %@%%"
}
}
}
},
"Channels" : {
"localizations" : {
"de" : {
@ -5396,6 +5262,64 @@
}
}
},
"Clear App Data" : {
"localizations" : {
"de" : {
"stringUnit" : {
"state" : "needs_review",
"value" : "App Daten löschen"
}
},
"fr" : {
"stringUnit" : {
"state" : "needs_review",
"value" : "Effacer les données de l'application"
}
},
"he" : {
"stringUnit" : {
"state" : "needs_review",
"value" : "אפס הגדרות אפליקציה"
}
},
"it" : {
"stringUnit" : {
"state" : "needs_review",
"value" : "Cancella i dati dell'app"
}
},
"pl" : {
"stringUnit" : {
"state" : "needs_review",
"value" : "Wyczyść dane aplikacji"
}
},
"se" : {
"stringUnit" : {
"state" : "needs_review",
"value" : "Rensa appdata"
}
},
"sr" : {
"stringUnit" : {
"state" : "needs_review",
"value" : "Очисти податке апликације"
}
},
"zh-Hans" : {
"stringUnit" : {
"state" : "translated",
"value" : "清除 App 数据"
}
},
"zh-Hant-TW" : {
"stringUnit" : {
"state" : "translated",
"value" : "清除 App 資料"
}
}
}
},
"Clear Log" : {
"localizations" : {
"it" : {
@ -5418,70 +5342,6 @@
}
}
},
"clear.app.data" : {
"localizations" : {
"de" : {
"stringUnit" : {
"state" : "translated",
"value" : "App Daten löschen"
}
},
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Clear App Data"
}
},
"fr" : {
"stringUnit" : {
"state" : "translated",
"value" : "Effacer les données de l'application"
}
},
"he" : {
"stringUnit" : {
"state" : "translated",
"value" : "אפס הגדרות אפליקציה"
}
},
"it" : {
"stringUnit" : {
"state" : "translated",
"value" : "Cancella i dati dell'app"
}
},
"pl" : {
"stringUnit" : {
"state" : "translated",
"value" : "Wyczyść dane aplikacji"
}
},
"se" : {
"stringUnit" : {
"state" : "translated",
"value" : "Rensa appdata"
}
},
"sr" : {
"stringUnit" : {
"state" : "translated",
"value" : "Очисти податке апликације"
}
},
"zh-Hans" : {
"stringUnit" : {
"state" : "translated",
"value" : "清除 App 数据"
}
},
"zh-Hant-TW" : {
"stringUnit" : {
"state" : "translated",
"value" : "清除 App 資料"
}
}
}
},
"Client" : {
"localizations" : {
"it" : {
@ -5622,65 +5482,59 @@
}
}
},
"close" : {
"Close" : {
"localizations" : {
"de" : {
"stringUnit" : {
"state" : "translated",
"state" : "needs_review",
"value" : "Schließen"
}
},
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Close"
}
},
"fr" : {
"stringUnit" : {
"state" : "translated",
"state" : "needs_review",
"value" : "Fermer"
}
},
"he" : {
"stringUnit" : {
"state" : "translated",
"state" : "needs_review",
"value" : "סגור"
}
},
"it" : {
"stringUnit" : {
"state" : "translated",
"state" : "needs_review",
"value" : "Chiudere"
}
},
"pl" : {
"stringUnit" : {
"state" : "translated",
"state" : "needs_review",
"value" : "Zamknij"
}
},
"se" : {
"stringUnit" : {
"state" : "translated",
"state" : "needs_review",
"value" : "Stäng"
}
},
"sr" : {
"stringUnit" : {
"state" : "translated",
"state" : "needs_review",
"value" : "Затвори"
}
},
"zh-Hans" : {
"stringUnit" : {
"state" : "translated",
"state" : "needs_review",
"value" : "关闭"
}
},
"zh-Hant-TW" : {
"stringUnit" : {
"state" : "translated",
"state" : "needs_review",
"value" : "關閉"
}
}
@ -11734,99 +11588,59 @@
}
}
},
"encrypted" : {
"Encrypted" : {
"localizations" : {
"de" : {
"stringUnit" : {
"state" : "translated",
"state" : "needs_review",
"value" : "Verschlüsselt"
}
},
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Encrypted"
}
},
"fr" : {
"stringUnit" : {
"state" : "translated",
"state" : "needs_review",
"value" : "Encrypté"
}
},
"he" : {
"stringUnit" : {
"state" : "translated",
"state" : "needs_review",
"value" : "מוצפן"
}
},
"it" : {
"stringUnit" : {
"state" : "translated",
"state" : "needs_review",
"value" : "Crittografato"
}
},
"pl" : {
"stringUnit" : {
"state" : "translated",
"state" : "needs_review",
"value" : "Zaszyfrowany"
}
},
"se" : {
"stringUnit" : {
"state" : "translated",
"state" : "needs_review",
"value" : "Krypterad"
}
},
"sr" : {
"stringUnit" : {
"state" : "translated",
"state" : "needs_review",
"value" : "Шифровано"
}
},
"zh-Hans" : {
"stringUnit" : {
"state" : "translated",
"state" : "needs_review",
"value" : "加密"
}
},
"zh-Hant-TW" : {
"stringUnit" : {
"state" : "translated",
"value" : "已加密"
}
}
}
},
"Encrypted" : {
"localizations" : {
"de" : {
"stringUnit" : {
"state" : "translated",
"value" : "Verschlüsselt"
}
},
"it" : {
"stringUnit" : {
"state" : "translated",
"value" : "Crittografato"
}
},
"sr" : {
"stringUnit" : {
"state" : "translated",
"value" : "Шифровано"
}
},
"zh-Hans" : {
"stringUnit" : {
"state" : "translated",
"value" : "加密"
}
},
"zh-Hant-TW" : {
"stringUnit" : {
"state" : "translated",
"state" : "needs_review",
"value" : "已加密"
}
}
@ -12874,7 +12688,7 @@
},
"zh-Hans" : {
"stringUnit" : {
"state" : "needs_review",
"state" : "translated",
"value" : "Finish"
}
},
@ -15608,65 +15422,59 @@
}
}
},
"include" : {
"Include" : {
"localizations" : {
"de" : {
"stringUnit" : {
"state" : "translated",
"value" : "Include"
}
},
"en" : {
"stringUnit" : {
"state" : "translated",
"state" : "needs_review",
"value" : "Include"
}
},
"fr" : {
"stringUnit" : {
"state" : "translated",
"state" : "needs_review",
"value" : "Inclure"
}
},
"he" : {
"stringUnit" : {
"state" : "translated",
"state" : "needs_review",
"value" : "כלול"
}
},
"it" : {
"stringUnit" : {
"state" : "translated",
"state" : "needs_review",
"value" : "Includere"
}
},
"pl" : {
"stringUnit" : {
"state" : "translated",
"state" : "needs_review",
"value" : "Dołącz"
}
},
"se" : {
"stringUnit" : {
"state" : "translated",
"state" : "needs_review",
"value" : "Inkludera"
}
},
"sr" : {
"stringUnit" : {
"state" : "translated",
"state" : "needs_review",
"value" : "Укључите"
}
},
"zh-Hans" : {
"stringUnit" : {
"state" : "translated",
"state" : "needs_review",
"value" : "包含"
}
},
"zh-Hant-TW" : {
"stringUnit" : {
"state" : "translated",
"state" : "needs_review",
"value" : "包含"
}
}
@ -15738,27 +15546,21 @@
},
"India" : {
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "India"
}
},
"it" : {
"stringUnit" : {
"state" : "translated",
"state" : "needs_review",
"value" : "India"
}
},
"sr" : {
"stringUnit" : {
"state" : "translated",
"state" : "needs_review",
"value" : "Индија"
}
},
"zh-Hant-TW" : {
"stringUnit" : {
"state" : "translated",
"state" : "needs_review",
"value" : "印度"
}
}
@ -18296,27 +18098,21 @@
},
"Korea" : {
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Korea"
}
},
"it" : {
"stringUnit" : {
"state" : "translated",
"state" : "needs_review",
"value" : "Corea"
}
},
"sr" : {
"stringUnit" : {
"state" : "translated",
"state" : "needs_review",
"value" : "Кореја"
}
},
"zh-Hant-TW" : {
"stringUnit" : {
"state" : "translated",
"state" : "needs_review",
"value" : "韓國"
}
}
@ -19862,6 +19658,64 @@
}
}
},
"Manual Configuration" : {
"localizations" : {
"de" : {
"stringUnit" : {
"state" : "needs_review",
"value" : "Manuelle Konfiguration"
}
},
"fr" : {
"stringUnit" : {
"state" : "needs_review",
"value" : "Configuration manuelle"
}
},
"he" : {
"stringUnit" : {
"state" : "needs_review",
"value" : "הגדרה ידנית"
}
},
"it" : {
"stringUnit" : {
"state" : "needs_review",
"value" : "Configurazione manuale"
}
},
"pl" : {
"stringUnit" : {
"state" : "needs_review",
"value" : "Konfiguracja ręczna"
}
},
"se" : {
"stringUnit" : {
"state" : "needs_review",
"value" : "Manuell konfiguration"
}
},
"sr" : {
"stringUnit" : {
"state" : "needs_review",
"value" : "Ручна конфигурација"
}
},
"zh-Hans" : {
"stringUnit" : {
"state" : "translated",
"value" : "手动配置"
}
},
"zh-Hant-TW" : {
"stringUnit" : {
"state" : "translated",
"value" : "手動設定"
}
}
}
},
"map" : {
"localizations" : {
"de" : {
@ -24576,7 +24430,7 @@
},
"zh-Hans" : {
"stringUnit" : {
"state" : "needs_review",
"state" : "translated",
"value" : "不存在"
}
},
@ -27340,6 +27194,64 @@
}
}
},
"RAK Rotary Encoder" : {
"localizations" : {
"de" : {
"stringUnit" : {
"state" : "needs_review",
"value" : "RAK Drehimpulsgeber Modul"
}
},
"fr" : {
"stringUnit" : {
"state" : "needs_review",
"value" : "Module d'encodage rotatif RAK"
}
},
"he" : {
"stringUnit" : {
"state" : "needs_review",
"value" : "RAK Rotary Encoder Module"
}
},
"it" : {
"stringUnit" : {
"state" : "needs_review",
"value" : "Modulo encoder rotativo RAK"
}
},
"pl" : {
"stringUnit" : {
"state" : "needs_review",
"value" : "Moduł kodera obrotowego RAK"
}
},
"se" : {
"stringUnit" : {
"state" : "needs_review",
"value" : "RAK Rotary Encoder-modul"
}
},
"sr" : {
"stringUnit" : {
"state" : "needs_review",
"value" : "RAK Rotary енкодер модул"
}
},
"zh-Hans" : {
"stringUnit" : {
"state" : "translated",
"value" : "RAK 编码器"
}
},
"zh-Hant-TW" : {
"stringUnit" : {
"state" : "translated",
"value" : "RAK 旋轉編碼器"
}
}
}
},
"range.test" : {
"localizations" : {
"de" : {
@ -35938,7 +35850,7 @@
},
"zh-Hans" : {
"stringUnit" : {
"state" : "needs_review",
"state" : "translated",
"value" : "超时"
}
},
@ -37104,7 +37016,7 @@
},
"zh-Hans" : {
"stringUnit" : {
"state" : "needs_review",
"state" : "translated",
"value" : "未知"
}
},
@ -37934,7 +37846,7 @@
},
"zh-Hans" : {
"stringUnit" : {
"state" : "needs_review",
"state" : "translated",
"value" : "用户名称"
}
},
@ -38262,7 +38174,7 @@
},
"zh-Hans" : {
"stringUnit" : {
"state" : "needs_review",
"state" : "translated",
"value" : "电压"
}
},

View file

@ -146,7 +146,6 @@
DD8EBF43285058FA00426DCA /* DisplayConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD8EBF42285058FA00426DCA /* DisplayConfig.swift */; };
DD8ED9C52898D51F00B3B0AB /* NetworkConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD8ED9C42898D51F00B3B0AB /* NetworkConfig.swift */; };
DD8ED9C8289CE4B900B3B0AB /* RoutingError.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD8ED9C7289CE4B900B3B0AB /* RoutingError.swift */; };
DD90860E26F69BAE00DC5189 /* NodeMap.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD90860D26F69BAE00DC5189 /* NodeMap.swift */; };
DD913639270DFF4C00D7ACF3 /* LocalNotificationManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD913638270DFF4C00D7ACF3 /* LocalNotificationManager.swift */; };
DD93800B2BA3F968008BEC06 /* NodeMapContent.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD93800A2BA3F968008BEC06 /* NodeMapContent.swift */; };
DD93800E2BA74D0C008BEC06 /* ChannelForm.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD93800D2BA74D0C008BEC06 /* ChannelForm.swift */; };
@ -437,7 +436,6 @@
DD8ED9C42898D51F00B3B0AB /* NetworkConfig.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetworkConfig.swift; sourceTree = "<group>"; };
DD8ED9C7289CE4B900B3B0AB /* RoutingError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoutingError.swift; sourceTree = "<group>"; };
DD90860A26F645B700DC5189 /* Meshtastic.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Meshtastic.entitlements; sourceTree = "<group>"; };
DD90860D26F69BAE00DC5189 /* NodeMap.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NodeMap.swift; sourceTree = "<group>"; };
DD913638270DFF4C00D7ACF3 /* LocalNotificationManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocalNotificationManager.swift; sourceTree = "<group>"; };
DD93800A2BA3F968008BEC06 /* NodeMapContent.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NodeMapContent.swift; sourceTree = "<group>"; };
DD93800D2BA74D0C008BEC06 /* ChannelForm.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChannelForm.swift; sourceTree = "<group>"; };
@ -731,7 +729,6 @@
DDDB263E2AABEE20003AFCB7 /* NodeList.swift */,
DD769E0228D18BF0001A3F05 /* DeviceMetricsLog.swift */,
DDAD49EC2AFB39DC00B4425D /* MeshMap.swift */,
DD90860D26F69BAE00DC5189 /* NodeMap.swift */,
DD73FD1028750779000852D6 /* PositionLog.swift */,
DD4F23CC28779A3C001D37CB /* EnvironmentMetricsLog.swift */,
6DEDA5592A957B8E00321D2E /* DetectionSensorLog.swift */,
@ -1404,7 +1401,6 @@
DDC4D568275499A500A4208E /* Persistence.swift in Sources */,
DDD6EEAF29BC024700383354 /* Firmware.swift in Sources */,
DD77093B2AA1ABB8007A8BF0 /* BluetoothTips.swift in Sources */,
DD90860E26F69BAE00DC5189 /* NodeMap.swift in Sources */,
D9C9839D2B79CFD700BDBE6A /* TextMessageSize.swift in Sources */,
DDC94FCE29CF55310082EA6E /* RtttlConfig.swift in Sources */,
DD964FBD296E6B01007C176F /* EmojiOnlyTextField.swift in Sources */,

View file

@ -19,9 +19,9 @@ enum ConfigPresets: Int, CaseIterable, Identifiable {
switch self {
case .unset:
return "canned.messages.preset.manual".localized
return "Manual Configuration".localized
case .rakRotaryEncoder:
return "canned.messages.preset.rakrotary".localized
return "RAK Rotary Encoder".localized
case .cardKB:
return "M5 Stack Card KB / RAK Keypad".localized
}

View file

@ -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 += dm.batteryLevel?.formatted(.number.grouping(.never)) ?? ""

View file

@ -49,7 +49,7 @@ struct InvalidVersion: View {
Button {
dismiss()
} label: {
Label("close", systemImage: "xmark")
Label("Close", systemImage: "xmark")
}
.buttonStyle(.bordered)

View file

@ -50,7 +50,7 @@ struct DirectMessagesHelp: View {
Button {
dismiss()
} label: {
Label("close", systemImage: "xmark")
Label("Close", systemImage: "xmark")
}
.buttonStyle(.bordered)
.buttonBorderShape(.capsule)

View file

@ -29,7 +29,7 @@ struct MQTTIcon: View {
VStack(spacing: 0.5) {
Text("Topic: \(topic)".localized)
.padding(20)
Button("close", action: { self.isPopoverOpen = false }).padding([.bottom], 20)
Button("Close", action: { self.isPopoverOpen = false }).padding([.bottom], 20)
}
.presentationCompactAdaptation(.popover)
})

View file

@ -165,7 +165,7 @@ struct DeviceMetricsLog: View {
// dm.voltage.map { Text("\(String(format: "%.2f", $0))") } ?? Text("--")
Text("\(dm.voltage?.formatted(.number.precision(.fractionLength(2))) ?? Constants.nilValueIndicator)")
}
TableColumn("channel.utilization") { dm in
TableColumn("Channel Utilization") { dm in
dm.channelUtilization.map { channelUtilization in
// Text("\(String(format: "%.2f", channelUtilization))%")
Text("\(channelUtilization.formatted(.number.precision(.fractionLength(2))))%")

View file

@ -111,7 +111,7 @@ Spacer()
Button {
dismiss()
} label: {
Label("close", systemImage: "xmark")
Label("Close", systemImage: "xmark")
}
.buttonStyle(.bordered)
.buttonBorderShape(.capsule)

View file

@ -234,7 +234,7 @@ struct PositionPopover: View {
Button {
dismiss()
} label: {
Label("close", systemImage: "xmark")
Label("Close", systemImage: "xmark")
}
.buttonStyle(.bordered)
.buttonBorderShape(.capsule)

View file

@ -354,7 +354,7 @@ struct WaypointForm: View {
Button {
dismiss()
} label: {
Label("close", systemImage: "xmark")
Label("Close", systemImage: "xmark")
}
.buttonStyle(.bordered)
.buttonBorderShape(.capsule)

View file

@ -63,7 +63,7 @@ struct MetricsColumnDetail: View {
Button {
dismiss()
} label: {
Label("close", systemImage: "xmark")
Label("Close", systemImage: "xmark")
}
.buttonStyle(.bordered)
.buttonBorderShape(.capsule)

View file

@ -192,7 +192,7 @@ struct NodeListFilter: View {
Button {
dismiss()
} label: {
Label("close", systemImage: "xmark")
Label("Close", systemImage: "xmark")
}
.buttonStyle(.bordered)
.buttonBorderShape(.capsule)

View file

@ -1,233 +0,0 @@
////
//// NodeMap.swift
//// MeshtasticApple
////
//// Created by Garth Vander Houwen on 8/7/21.
////
//
//import SwiftUI
//import MapKit
//import CoreLocation
//import CoreData
//
//struct NodeMap: View {
// @Environment(\.managedObjectContext) var context
// @EnvironmentObject var bleManager: BLEManager
//
// @ObservedObject
// var router: Router
// @State var selectedMapLayer: MapLayer = UserDefaults.mapLayer
// @State var enableMapRecentering: Bool = UserDefaults.enableMapRecentering
// @State var enableMapRouteLines: Bool = UserDefaults.enableMapRouteLines
// @State var enableMapNodeHistoryPins: Bool = UserDefaults.enableMapNodeHistoryPins
// @State var enableOfflineMaps: Bool = UserDefaults.enableOfflineMaps
// @State var selectedTileServer: MapTileServer = UserDefaults.mapTileServer
// @State var enableOverlayServer: Bool = UserDefaults.enableOverlayServer
// @State var selectedOverlayServer: MapOverlayServer = UserDefaults.mapOverlayServer
// @State var mapTilesAboveLabels: Bool = UserDefaults.mapTilesAboveLabels
// let fromDate: NSDate = Calendar.current.date(byAdding: .month, value: -1, to: Date())! as NSDate
// @FetchRequest(sortDescriptors: [NSSortDescriptor(key: "time", ascending: true)],
// predicate: NSPredicate(format: "nodePosition != nil", Calendar.current.date(byAdding: .day, value: -7, to: Date())! as NSDate), animation: .none)
// private var positions: FetchedResults<PositionEntity>
// @FetchRequest(sortDescriptors: [NSSortDescriptor(key: "name", ascending: false)],
// predicate: NSPredicate(
// format: "expire == nil || expire >= %@", Date() as NSDate
// ), animation: .none)
// private var waypoints: FetchedResults<WaypointEntity>
// @State var waypointCoordinate: WaypointCoordinate?
// @State var selectedTracking: UserTrackingModes = .none
// @State var isPresentingInfoSheet: Bool = false
// @State private var customMapOverlay: MapViewSwiftUI.CustomMapOverlay? = MapViewSwiftUI.CustomMapOverlay(
// mapName: "offlinemap",
// tileType: "png",
// canReplaceMapContent: true
// )
// var body: some View {
// NavigationStack {
// ZStack {
// MapViewSwiftUI(
// onLongPress: { coord in
// waypointCoordinate = WaypointCoordinate(id: .init(), coordinate: coord, waypointId: 0)
// }, onWaypointEdit: { wpId in
// if wpId > 0 {
// waypointCoordinate = WaypointCoordinate(id: .init(), coordinate: nil, waypointId: Int64(wpId))
// }
// },
// selectedMapLayer: selectedMapLayer,
// positions: Array(positions),
// waypoints: Array(waypoints),
// userTrackingMode: selectedTracking.MKUserTrackingModeValue(),
// showNodeHistory: enableMapNodeHistoryPins,
// showRouteLines: enableMapRouteLines,
// customMapOverlay: self.customMapOverlay
// )
// VStack(alignment: .trailing) {
// HStack(alignment: .top) {
// Spacer()
// MapButtons(tracking: $selectedTracking, isPresentingInfoSheet: $isPresentingInfoSheet)
// .padding(.trailing, 8)
// .padding(.top, 16)
// }
// Spacer()
// TileDownloadStatus()
// .padding(.trailing, 16)
// .padding(.bottom, 20)
// }
// }
// .ignoresSafeArea(.all, edges: [.top, .leading, .trailing])
// .frame(maxHeight: .infinity)
// .sheet(item: $waypointCoordinate, content: { wpc in
// WaypointFormMapKit(coordinate: wpc)
// .presentationDetents([.medium, .large])
// .presentationDragIndicator(.automatic)
// })
// .sheet(isPresented: $isPresentingInfoSheet) {
// VStack {
// Form {
// Section(header: Text("Map Options")) {
// Picker(selection: $selectedMapLayer, label: Text("")) {
// ForEach(MapLayer.allCases, id: \.self) { layer in
// if layer == MapLayer.offline && enableOfflineMaps {
// Text(layer.localized)
// } else if layer != MapLayer.offline {
// Text(layer.localized)
// }
// }
// }
// .pickerStyle(SegmentedPickerStyle())
// .onChange(of: selectedMapLayer) { _, newMapLayer in
// UserDefaults.mapLayer = newMapLayer
// }
// .padding(.top, 5)
// .padding(.bottom, 5)
// Toggle(isOn: $enableMapRecentering) {
// Label("map.recentering", systemImage: "camera.metering.center.weighted")
// }
// .toggleStyle(SwitchToggleStyle(tint: .accentColor))
// .onTapGesture {
// self.enableMapRecentering.toggle()
// UserDefaults.enableMapRecentering = self.enableMapRecentering
// }
// Toggle(isOn: $enableMapNodeHistoryPins) {
// Label("Show Node History", systemImage: "building.columns.fill")
// }
// .toggleStyle(SwitchToggleStyle(tint: .accentColor))
// .onTapGesture {
// self.enableMapNodeHistoryPins.toggle()
// UserDefaults.enableMapNodeHistoryPins = self.enableMapNodeHistoryPins
// }
// Toggle(isOn: $enableMapRouteLines) {
// Label("Show Route Lines", systemImage: "road.lanes")
// }
// .toggleStyle(SwitchToggleStyle(tint: .accentColor))
// .onTapGesture {
// self.enableMapRouteLines.toggle()
// UserDefaults.enableMapRouteLines = self.enableMapRouteLines
// }
// let locale = Locale.current
// if locale.region?.identifier ?? "no locale" == "US" {
// Toggle(isOn: $enableOverlayServer) {
// Label("Show Weather", systemImage: "cloud.fill")
// }
// .toggleStyle(SwitchToggleStyle(tint: .accentColor))
// .onTapGesture {
// self.enableOverlayServer.toggle()
// UserDefaults.enableOverlayServer = self.enableOverlayServer
// }
// if enableOverlayServer {
// Picker(selection: $selectedOverlayServer,
// label: Text("Radar")) {
// ForEach(MapOverlayServer.allCases, id: \.self) { mos in
// Text(mos.description)
// .font(.footnote)
// }
// }
// .pickerStyle(DefaultPickerStyle())
// .onChange(of: (selectedOverlayServer)) { _, newSelectedOverlayServer in
// UserDefaults.mapOverlayServer = newSelectedOverlayServer
// }
// Text(LocalizedStringKey(selectedOverlayServer.attribution))
// .font(.footnote)
// .foregroundColor(.gray)
// .padding(0)
// }
// }
// }
// Section(header: Text("Offline Maps")) {
// Toggle(isOn: $enableOfflineMaps) {
// Text("Enable Offline Maps")
// }
// .toggleStyle(SwitchToggleStyle(tint: .accentColor))
// .onChange(of: enableOfflineMaps) { _, newEnableOfflineMaps in
// UserDefaults.enableOfflineMaps = newEnableOfflineMaps
// if !enableOfflineMaps {
// if self.selectedMapLayer == .offline {
// self.selectedMapLayer = .standard
// }
// }
// }
// if enableOfflineMaps {
// VStack(alignment: .leading) {
// Picker(selection: $selectedTileServer,
// label: Text("Tile Server")) {
// ForEach(MapTileServer.allCases, id: \.self) { tsl in
// Text(tsl.description)
// }
// }
// .pickerStyle(DefaultPickerStyle())
// .onChange(of: (selectedTileServer)) { _, newSelectedTileServer in
// UserDefaults.mapTileServer = newSelectedTileServer
// }
// Text("Attribution:")
// .fontWeight(.semibold)
// .font(.footnote)
// Text(LocalizedStringKey(selectedTileServer.attribution))
// .font(.footnote)
// .foregroundColor(.gray)
// .padding(0)
// Divider()
// Toggle(isOn: $mapTilesAboveLabels) {
// Text("Tiles above Labels")
// }
// .toggleStyle(SwitchToggleStyle(tint: .accentColor))
// .onTapGesture {
// self.mapTilesAboveLabels.toggle()
// UserDefaults.mapTilesAboveLabels = self.mapTilesAboveLabels
// }
// }
// }
// }
// }
// #if targetEnvironment(macCatalyst)
// Button {
// isPresentingInfoSheet = false
// } label: {
// Label("close", systemImage: "xmark")
// }
// .buttonStyle(.bordered)
// .buttonBorderShape(.capsule)
// .controlSize(.large)
// .padding(.bottom)
// #endif
// }
// .presentationDetents([enableOfflineMaps || enableOverlayServer ? .large : .medium])
// .presentationDragIndicator(.visible)
// }
// }
// .navigationBarItems(leading:
// MeshtasticLogo(), trailing:
// ZStack {
// ConnectedDevice(
// bluetoothOn: bleManager.isSwitchedOn,
// deviceConnected: bleManager.connectedPeripheral != nil,
// name: (bleManager.connectedPeripheral != nil) ? bleManager.connectedPeripheral.shortName :
// "?")
// })
// .onAppear(perform: {
// UIApplication.shared.isIdleTimerDisabled = true
// })
// .onDisappear(perform: {
// UIApplication.shared.isIdleTimerDisabled = false
// })
// }
//}

View file

@ -43,7 +43,7 @@ struct AppSettings: View {
Button {
isPresentingCoreDataResetConfirm = true
} label: {
Label("clear.app.data", systemImage: "trash")
Label("Clear App Data", systemImage: "trash")
.foregroundColor(.red)
}
.confirmationDialog(

View file

@ -230,7 +230,7 @@ struct Channels: View {
Button {
goBack()
} label: {
Label("close", systemImage: "xmark")
Label("Close", systemImage: "xmark")
}
.buttonStyle(.bordered)
.buttonBorderShape(.capsule)

View file

@ -136,7 +136,7 @@ struct AppLogFilter: View {
Button {
dismiss()
} label: {
Label("close", systemImage: "xmark")
Label("Close", systemImage: "xmark")
}
.buttonStyle(.bordered)
.buttonBorderShape(.capsule)

View file

@ -151,7 +151,7 @@ struct LogDetail: View {
Button {
dismiss()
} label: {
Label("close", systemImage: "xmark")
Label("Close", systemImage: "xmark")
}
.buttonStyle(.bordered)
.buttonBorderShape(.capsule)

View file

@ -261,7 +261,7 @@ struct RouteRecorder: View {
Button(role: .cancel) {
isShowingDetails = false
} label: {
Label("close", systemImage: "xmark")
Label("Close", systemImage: "xmark")
}
.buttonStyle(.bordered)
.buttonBorderShape(.capsule)

View file

@ -62,7 +62,7 @@ struct ShareChannels: View {
Grid {
GridRow {
Spacer()
Text("include")
Text("Include")
.font(.caption)
.fontWeight(.bold)
.padding(.trailing)
@ -70,7 +70,7 @@ struct ShareChannels: View {
.font(.caption)
.fontWeight(.bold)
.padding(.trailing)
Text("encrypted")
Text("Encrypted")
.font(.caption)
.fontWeight(.bold)
}