Merge branch '2.6.2'

#Conflicts:
#	Localizable.xcstrings
This commit is contained in:
Garth Vander Houwen 2025-05-07 23:12:51 -07:00
commit cee9fd46ec
15 changed files with 2676 additions and 4128 deletions

File diff suppressed because it is too large Load diff

View file

@ -117,21 +117,21 @@ enum LocationUpdateInterval: Int, CaseIterable, Identifiable {
var description: String {
switch self {
case .tenSeconds:
return "interval.ten.seconds".localized
return "Ten Seconds".localized
case .fifteenSeconds:
return "interval.fifteen.seconds".localized
return "Fifteen Seconds".localized
case .thirtySeconds:
return "interval.thirty.seconds".localized
return "Thirty Seconds".localized
case .fortyFiveSeconds:
return "interval.fortyfive.seconds".localized
return "Forty Five Seconds".localized
case .oneMinute:
return "interval.one.minute".localized
return "One Minute".localized
case .fiveMinutes:
return "interval.five.minutes".localized
return "Five Minutes".localized
case .tenMinutes:
return "interval.ten.minutes".localized
return "Ten Minutes".localized
case .fifteenMinutes:
return "interval.fifteen.minutes".localized
return "Fifteen Minutes".localized
}
}
}

View file

@ -45,21 +45,21 @@ enum InputEventChars: Int, CaseIterable, Identifiable {
switch self {
case .none:
return "inputevent.none".localized
return "None".localized
case .up:
return "inputevent.up".localized
return "Up".localized
case .down:
return "inputevent.down".localized
return "Down".localized
case .left:
return "inputevent.left".localized
return "Left".localized
case .right:
return "inputevent.right".localized
return "Right".localized
case .select:
return "inputevent.select".localized
return "Select".localized
case .back:
return "inputevent.back".localized
return "Back".localized
case .cancel:
return "inputevent.cancel".localized
return "Cancel".localized
}
}
func protoEnumValue() -> ModuleConfig.CannedMessageConfig.InputEventChar {

View file

@ -28,7 +28,7 @@ enum DeviceRoles: Int, CaseIterable, Identifiable {
var name: String {
switch self {
case .client:
return "device.role.name.client".localized
return "Client".localized
case .clientMute:
return "device.role.name.clientMute".localized
case .router:
@ -152,17 +152,17 @@ enum RebroadcastModes: Int, CaseIterable, Identifiable {
var name: String {
switch self {
case .all:
return "All"
return "All".localized
case .allSkipDecoding:
return "All Skip Decoding"
return "All Skip Decoding".localized
case .localOnly:
return "Local Only"
return "Local Only".localized
case .knownOnly:
return "Known Only"
return "Known Only".localized
case .none:
return "None"
return "None".localized
case .corePortnums:
return "Core Portnums Only"
return "Core Portnums Only".localized
}
}
var description: String {

View file

@ -49,21 +49,21 @@ enum ScreenOnIntervals: Int, CaseIterable, Identifiable {
var description: String {
switch self {
case .fifteenSeconds:
return "interval.fifteen.seconds".localized
return "Fifteen Seconds".localized
case .thirtySeconds:
return "interval.thirty.seconds".localized
return "Thirty Seconds".localized
case .oneMinute:
return "interval.one.minute".localized
return "One Minute".localized
case .fiveMinutes:
return "interval.five.minutes".localized
return "Five Minutes".localized
case .tenMinutes:
return "interval.ten.minutes".localized
return "Ten Minutes".localized
case .fifteenMinutes:
return "interval.fifteen.minutes".localized
return "Fifteen Minutes".localized
case .thirtyMinutes:
return "interval.thirty.minutes".localized
return "Thirty Minutes".localized
case .oneHour:
return "interval.one.hour".localized
return "One Hour".localized
case .max:
return "Always On".localized
}
@ -87,17 +87,17 @@ enum ScreenCarouselIntervals: Int, CaseIterable, Identifiable {
case .off:
return "off".localized
case .fifteenSeconds:
return "interval.fifteen.seconds".localized
return "Fifteen Seconds".localized
case .thirtySeconds:
return "interval.thirty.seconds".localized
return "Thirty Seconds".localized
case .oneMinute:
return "interval.one.minute".localized
return "One Minute".localized
case .fiveMinutes:
return "interval.five.minutes".localized
return "Five Minutes".localized
case .tenMinutes:
return "interval.ten.minutes".localized
return "Ten Minutes".localized
case .fifteenMinutes:
return "interval.fifteen.minutes".localized
return "Fifteen Minutes".localized
}
}
}

View file

@ -24,19 +24,19 @@ enum NagIntervals: Int, CaseIterable, Identifiable {
case .unset:
return "Unset".localized
case .oneSecond:
return "interval.one.second".localized
return "One Second".localized
case .fiveSeconds:
return "interval.five.seconds".localized
return "Five Seconds".localized
case .tenSeconds:
return "interval.ten.seconds".localized
return "Ten Seconds".localized
case .fifteenSeconds:
return "interval.fifteen.seconds".localized
return "Fifteen Seconds".localized
case .thirtySeconds:
return "interval.thirty.seconds".localized
return "Thirty Seconds".localized
case .oneMinute:
return "interval.one.minute".localized
return "One Minute".localized
case .fiveMinutes:
return "interval.five.minutes".localized
return "Five Minutes".localized
}
}
}
@ -61,23 +61,23 @@ enum OutputIntervals: Int, CaseIterable, Identifiable {
case .unset:
return "Unset".localized
case .oneSecond:
return "interval.one.second".localized
return "One Second".localized
case .twoSeconds:
return "interval.two.seconds".localized
return "Two Seconds".localized
case .threeSeconds:
return "interval.three.seconds".localized
return "Three Seconds".localized
case .fourSeconds:
return "interval.four.seconds".localized
return "Four Seconds".localized
case .fiveSeconds:
return "interval.five.seconds".localized
return "Five Seconds".localized
case .tenSeconds:
return "interval.ten.seconds".localized
return "Ten Seconds".localized
case .fifteenSeconds:
return "interval.fifteen.seconds".localized
return "Fifteen Seconds".localized
case .thirtySeconds:
return "interval.thirty.seconds".localized
return "Thirty Seconds".localized
case .oneMinute:
return "interval.one.minute".localized
return "One Minute".localized
}
}
}
@ -100,25 +100,25 @@ enum SenderIntervals: Int, CaseIterable, Identifiable {
var description: String {
switch self {
case .off:
return "off".localized
return "Off".localized
case .fifteenSeconds:
return "interval.fifteen.seconds".localized
return "Fifteen Seconds".localized
case .thirtySeconds:
return "interval.thirty.seconds".localized
return "Thirty Seconds".localized
case .fortyFiveSeconds:
return "interval.fortyfive.seconds".localized
return "Forty Five Seconds".localized
case .oneMinute:
return "interval.one.minute".localized
return "One Minute".localized
case .fiveMinutes:
return "interval.five.minutes".localized
return "Five Minutes".localized
case .tenMinutes:
return "interval.ten.minutes".localized
return "Ten Minutes".localized
case .fifteenMinutes:
return "interval.fifteen.minutes".localized
return "Fifteen Minutes".localized
case .thirtyMinutes:
return "interval.thirty.minutes".localized
return "Thirty Minutes".localized
case .oneHour:
return "interval.one.hour".localized
return "One Hour".localized
}
}
}
@ -153,49 +153,49 @@ enum UpdateIntervals: Int, CaseIterable, Identifiable {
switch self {
case .tenSeconds:
return "interval.ten.seconds".localized
return "Ten Seconds".localized
case .fifteenSeconds:
return "interval.fifteen.seconds".localized
return "Fifteen Seconds".localized
case .thirtySeconds:
return "interval.thirty.seconds".localized
return "Thirty Seconds".localized
case .fortyFiveSeconds:
return "interval.fortyfive.seconds".localized
return "Forty Five Seconds".localized
case .oneMinute:
return "interval.one.minute".localized
return "One Minute".localized
case .twoMinutes:
return "interval.two.minutes".localized
return "Two Minutes".localized
case .fiveMinutes:
return "interval.five.minutes".localized
return "Five Minutes".localized
case .tenMinutes:
return "interval.ten.minutes".localized
return "Ten Minutes".localized
case .fifteenMinutes:
return "interval.fifteen.minutes".localized
return "Fifteen Minutes".localized
case .thirtyMinutes:
return "interval.thirty.minutes".localized
return "Thirty Minutes".localized
case .oneHour:
return "interval.one.hour".localized
return "One Hour".localized
case .twoHours:
return "interval.two.hours".localized
return "Two Hours".localized
case .threeHours:
return "interval.three.hours".localized
return "Three Hours".localized
case .fourHours:
return "interval.four.hours".localized
return "Four Hours".localized
case .fiveHours:
return "interval.five.hours".localized
return "Five Hours".localized
case .sixHours:
return "interval.six.hours".localized
return "Six Hours".localized
case .twelveHours:
return "interval.twelve.hours".localized
return "Twelve Hours".localized
case .eighteenHours:
return "interval.eighteen.hours".localized
return "Eighteen Hours".localized
case .twentyFourHours:
return "interval.twentyfour.hours".localized
return "Twenty Four Hours".localized
case .thirtySixHours:
return "interval.thirtysix.hours".localized
return "Thirty Six Hours".localized
case .fortyeightHours:
return "interval.fortyeight.hours".localized
return "Forty Eight Hours".localized
case .seventyTwoHours:
return "interval.seventytwo.hours".localized
return "Seventy Two Hours".localized
}
}
}

View file

@ -46,21 +46,21 @@ enum Tapbacks: Int, CaseIterable, Identifiable {
var description: String {
switch self {
case .wave:
return "tapback.wave".localized
return "Wave".localized
case .heart:
return "tapback.heart".localized
return "Heart".localized
case .thumbsUp:
return "tapback.thumbsup".localized
return "Thumbs Up".localized
case .thumbsDown:
return "tapback.thumbsdown".localized
return "Thumbs Down".localized
case .haHa:
return "tapback.haha".localized
return "HaHa".localized
case .exclamation:
return "tapback.exclamation".localized
return "Exclamation".localized
case .question:
return "tapback.question".localized
return "Question".localized
case .poop:
return "tapback.poop".localized
return "Poop".localized
}
}
}

View file

@ -73,29 +73,29 @@ enum GpsUpdateIntervals: Int, CaseIterable, Identifiable {
var description: String {
switch self {
case .thirtySeconds:
return "interval.thirty.seconds".localized
return "Thirty Seconds".localized
case .oneMinute:
return "interval.one.minute".localized
return "One Minute".localized
case .twoMinutes:
return "interval.two.minutes".localized
return "Two Minutes".localized
case .fiveMinutes:
return "interval.five.minutes".localized
return "Five Minutes".localized
case .tenMinutes:
return "interval.ten.minutes".localized
return "Ten Minutes".localized
case .fifteenMinutes:
return "interval.fifteen.minutes".localized
return "Fifteen Minutes".localized
case .thirtyMinutes:
return "interval.thirty.minutes".localized
return "Thirty Minutes".localized
case .oneHour:
return "interval.one.hour".localized
return "One Hour".localized
case .sixHours:
return "interval.six.hours".localized
return "Six Hours".localized
case .twelveHours:
return "interval.twelve.hours".localized
return "Twelve Hours".localized
case .twentyFourHours:
return "interval.twentyfour.hours".localized
return "Twenty Four Hours".localized
case .maxInt32:
return "on.boot".localized
return "On Boot Only".localized
}
}
}

View file

@ -168,19 +168,19 @@ enum SerialTimeoutIntervals: Int, CaseIterable, Identifiable {
case .unset:
return "Unset".localized
case .oneSecond:
return "interval.one.second".localized
return "One Second".localized
case .fiveSeconds:
return "interval.five.seconds".localized
return "Five Seconds".localized
case .tenSeconds:
return "interval.ten.seconds".localized
return "Ten Seconds".localized
case .fifteenSeconds:
return "interval.fifteen.seconds".localized
return "Thirty Seconds".localized
case .thirtySeconds:
return "interval.thirty.seconds".localized
return "Thirty Seconds".localized
case .oneMinute:
return "interval.one.minute".localized
return "One Minute".localized
case .fiveMinutes:
return "interval.five.minutes".localized
return "Five Minutes".localized
}
}
}

View file

@ -20,17 +20,17 @@ enum Aqi: Int, CaseIterable, Identifiable {
var description: String {
switch self {
case .good:
return "telemetry.good".localized
return "Good".localized
case .moderate:
return "telemetry.moderate".localized
return "Moderate".localized
case .sensitive:
return "telemetry.sensitive".localized
return "Unhealthy for Sensitive Groups".localized
case .unhealthy:
return "telementry.unhealthy".localized
return "Unhealthy".localized
case .veryUnhealthy:
return "telementry.veryUnhealthy".localized
return "Very Unhealthy".localized
case .hazardous:
return "telementry.hazardous".localized
return "Hazardous".localized
}
}
var color: Color {

View file

@ -45,10 +45,10 @@ struct AdminChannelTip: Tip {
return "tip.channel.admin"
}
var title: Text {
Text("tip.channel.admin.title")
Text("Administration Enabled")
}
var message: Text? {
Text("tip.channel.admin.message")
Text("Select a node from the drop down to manage connected or remote devices.")
}
var image: Image? {
Image(systemName: "fibrechannel")

View file

@ -47,13 +47,13 @@ enum LoRaSignalStrength: Int {
var description: String {
switch self {
case .none:
return "lora.signal.strength.none".localized
return "None".localized
case .bad:
return "lora.signal.strength.bad".localized
return "Bad".localized
case .fair:
return "lora.signal.strength.fair".localized
return "Fair".localized
case .good:
return "lora.signal.strength.good".localized
return "Good".localized
}
}
}

View file

@ -499,14 +499,14 @@ struct NodeDetail: View {
showingRebootConfirm = true
} label: {
Label(
"reboot",
"Reboot",
systemImage: "arrow.triangle.2.circlepath"
)
}.confirmationDialog(
"Are you sure?",
isPresented: $showingRebootConfirm
) {
Button("reboot.node", role: .destructive) {
Button("Reboot node?", role: .destructive) {
if !bleManager.sendReboot(
fromUser: connectedNode.user!,
toUser: node.user!,

View file

@ -75,11 +75,11 @@ struct AppLog: View {
}
} else {
Table(logs, selection: $selection, sortOrder: $sortOrder) {
TableColumn("log.time") { value in
TableColumn("Time") { value in
Text(value.date.formatted(dateFormatStyle))
}
.width(min: 125, max: 150)
TableColumn("log.level") { value in
TableColumn("Level") { value in
Text(value.level.description)
.foregroundStyle(value.level.color)
}

View file

@ -38,7 +38,7 @@ struct LogDetail: View {
/// Time
Label {
HStack {
Text("log.time".localized + ":")
Text("Time".localized + ":")
.font(idiom == .phone ? .caption : .title)
.frame(width: idiom == .phone ? 115 : 190, alignment: .trailing)
Text(log.date.formatted(dateFormatStyle))
@ -56,7 +56,7 @@ struct LogDetail: View {
/// Subsystem
Label {
HStack {
Text("log.subsystem".localized + ":")
Text("Subsystem".localized + ":")
.font(idiom == .phone ? .caption : .title)
.frame(width: idiom == .phone ? 115 : 190, alignment: .trailing)
Text(log.subsystem)
@ -73,7 +73,7 @@ struct LogDetail: View {
/// Process
Label {
HStack {
Text("log.process".localized + ":")
Text("Process".localized + ":")
.font(idiom == .phone ? .caption : .title)
.frame(width: idiom == .phone ? 115 : 190, alignment: .trailing)
Text(log.process)
@ -90,7 +90,7 @@ struct LogDetail: View {
/// Level
Label {
HStack {
Text("log.level".localized + ":")
Text("Level".localized + ":")
.font(idiom == .phone ? .caption : .title)
.frame(width: idiom == .phone ? 115 : 190, alignment: .trailing)
Text(log.level.description)