mirror of
https://github.com/meshtastic/Meshtastic-Apple.git
synced 2026-04-20 22:13:56 +00:00
Merge branch '2.6.2'
#Conflicts: # Localizable.xcstrings
This commit is contained in:
commit
cee9fd46ec
15 changed files with 2676 additions and 4128 deletions
File diff suppressed because it is too large
Load diff
|
|
@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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")
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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!,
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue