From 0f7ac9bc59bc3346091e569df7975bc71dcec7b3 Mon Sep 17 00:00:00 2001 From: Garth Vander Houwen Date: Sat, 3 May 2025 08:58:33 -0700 Subject: [PATCH] Translation key updates --- Localizable.xcstrings | 785 +++++++----------- Meshtastic/Enums/LoraConfigEnums.swift | 4 +- Meshtastic/Export/WriteCsvFile.swift | 10 +- Meshtastic/Extensions/Date.swift | 4 +- Meshtastic/Views/ContentView.swift | 2 +- Meshtastic/Views/Helpers/DateTimeText.swift | 2 +- .../TextMessageField/TextMessageField.swift | 2 +- Meshtastic/Views/Nodes/DeviceMetricsLog.swift | 4 +- .../EnvironmentDefaultColumns.swift | 2 +- .../Views/Nodes/Helpers/NodeDetail.swift | 2 +- .../Views/Nodes/Helpers/NodeListItem.swift | 2 +- Meshtastic/Views/Nodes/PaxCounterLog.swift | 4 +- Meshtastic/Views/Nodes/PositionLog.swift | 4 +- Meshtastic/Views/Nodes/PowerMetricsLog.swift | 4 +- Meshtastic/Views/Settings/AppLog.swift | 4 +- .../Views/Settings/Config/DisplayConfig.swift | 2 +- .../Config/Module/PaxCounterConfig.swift | 2 +- .../Views/Settings/Config/PowerConfig.swift | 2 +- .../Views/Settings/Logs/LogDetail.swift | 2 +- Meshtastic/Views/Settings/Settings.swift | 8 +- 20 files changed, 321 insertions(+), 530 deletions(-) diff --git a/Localizable.xcstrings b/Localizable.xcstrings index e233c048..7c5569dd 100644 --- a/Localizable.xcstrings +++ b/Localizable.xcstrings @@ -2226,6 +2226,52 @@ } } }, + "After" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "needs_review", + "value" : "Nach" + } + }, + "he" : { + "stringUnit" : { + "state" : "needs_review", + "value" : "After" + } + }, + "it" : { + "stringUnit" : { + "state" : "needs_review", + "value" : "Dopo" + } + }, + "pl" : { + "stringUnit" : { + "state" : "needs_review", + "value" : "After" + } + }, + "se" : { + "stringUnit" : { + "state" : "needs_review", + "value" : "Efter" + } + }, + "sr" : { + "stringUnit" : { + "state" : "needs_review", + "value" : "Након" + } + }, + "zh-Hant-TW" : { + "stringUnit" : { + "state" : "translated", + "value" : "之後" + } + } + } + }, "Airtime" : { "localizations" : { "de" : { @@ -5674,122 +5720,6 @@ } } }, - "config.module.paxcounter.enabled.description" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "When enabled the PAX Counter module counts the number of people passing by using WiFi and Bluetooth. Both WiFI and Bluetooth must be disabled for PAX counter to work." - } - }, - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "When enabled the PAX Counter module counts the number of people passing by using WiFi and Bluetooth. Both WiFI and Bluetooth must be disabled for PAX counter to work." - } - }, - "he" : { - "stringUnit" : { - "state" : "translated", - "value" : "When enabled the PAX Counter module counts the number of people passing by using WiFi and Bluetooth. Both WiFI and Bluetooth must be disabled for PAX counter to work." - } - }, - "it" : { - "stringUnit" : { - "state" : "translated", - "value" : "Quando è abilitato, il modulo PAX Counter conta il numero di persone che passano utilizzando il WiFi e il Bluetooth. Per il funzionamento del contatore PAX, sia il WiFI che il Bluetooth devono essere disattivati." - } - }, - "pl" : { - "stringUnit" : { - "state" : "translated", - "value" : "When enabled the PAX Counter module counts the number of people passing by using WiFi and Bluetooth. Both WiFI and Bluetooth must be disabled for PAX counter to work." - } - }, - "se" : { - "stringUnit" : { - "state" : "translated", - "value" : "När aktiverad räknar PAX-räknarmodulen antalet personer som passerar med WiFi och Bluetooth. Både WiFi och Bluetooth måste vara aktiverade för att PAX-räknaren ska fungera." - } - }, - "sr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Када је омогућен, модул бројача пролазника броји број људи који пролазе користећи ВајФај и Блутут. И ВајФај и Блутут морају бити онемогућени да би бројач пролазника радио." - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "启用 PAX 计数器模块时,通过使用 WiFi 和蓝牙来计算经过的人数。为了使 PAX 计数器正常工作,必须将 WiFi 和蓝牙都禁用。" - } - }, - "zh-Hant-TW" : { - "stringUnit" : { - "state" : "translated", - "value" : "啟用後,人流計數器模組將透過 WiFi 和藍牙計算經過的人數。必須停用 WiFi 和藍牙才能讓 PAX 計數器正常工作。" - } - } - } - }, - "config.module.paxcounter.settings" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "PAX Counter" - } - }, - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "PAX Counter" - } - }, - "he" : { - "stringUnit" : { - "state" : "translated", - "value" : "PAX Counter" - } - }, - "it" : { - "stringUnit" : { - "state" : "translated", - "value" : "Contatore PAX" - } - }, - "pl" : { - "stringUnit" : { - "state" : "translated", - "value" : "PAX Counter" - } - }, - "se" : { - "stringUnit" : { - "state" : "translated", - "value" : "PAX Räknare" - } - }, - "sr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Бројач пролазника" - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "PAX 计数器" - } - }, - "zh-Hant-TW" : { - "stringUnit" : { - "state" : "translated", - "value" : "PAX 計數器" - } - } - } - }, "config.module.paxcounter.title" : { "localizations" : { "de" : { @@ -6178,58 +6108,6 @@ } } }, - "config.power.shutdown.after.secs" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Nach" - } - }, - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "After" - } - }, - "he" : { - "stringUnit" : { - "state" : "translated", - "value" : "After" - } - }, - "it" : { - "stringUnit" : { - "state" : "translated", - "value" : "Dopo" - } - }, - "pl" : { - "stringUnit" : { - "state" : "translated", - "value" : "After" - } - }, - "se" : { - "stringUnit" : { - "state" : "translated", - "value" : "Efter" - } - }, - "sr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Након" - } - }, - "zh-Hant-TW" : { - "stringUnit" : { - "state" : "translated", - "value" : "之後" - } - } - } - }, "config.power.shutdown.on.power.loss" : { "localizations" : { "de" : { @@ -10588,6 +10466,58 @@ } } }, + "Display Config" : { + "localizations" : { + "fr" : { + "stringUnit" : { + "state" : "needs_review", + "value" : "Configuration de l'écran" + } + }, + "he" : { + "stringUnit" : { + "state" : "needs_review", + "value" : "הגדרות צג" + } + }, + "it" : { + "stringUnit" : { + "state" : "needs_review", + "value" : "Configurazione del display" + } + }, + "pl" : { + "stringUnit" : { + "state" : "needs_review", + "value" : "Konfiguracja Wyświetlacza" + } + }, + "se" : { + "stringUnit" : { + "state" : "needs_review", + "value" : "Skärmkonfiguration" + } + }, + "sr" : { + "stringUnit" : { + "state" : "needs_review", + "value" : "Подешавања приказа" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "屏幕配置" + } + }, + "zh-Hant-TW" : { + "stringUnit" : { + "state" : "translated", + "value" : "螢幕設定" + } + } + } + }, "Display Fahrenheit" : { "localizations" : { "it" : { @@ -10672,64 +10602,6 @@ } } }, - "display.config" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Display Config" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Configuration de l'écran" - } - }, - "he" : { - "stringUnit" : { - "state" : "translated", - "value" : "הגדרות צג" - } - }, - "it" : { - "stringUnit" : { - "state" : "translated", - "value" : "Configurazione del display" - } - }, - "pl" : { - "stringUnit" : { - "state" : "translated", - "value" : "Konfiguracja Wyświetlacza" - } - }, - "se" : { - "stringUnit" : { - "state" : "translated", - "value" : "Skärmkonfiguration" - } - }, - "sr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Подешавања приказа" - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "屏幕配置" - } - }, - "zh-Hant-TW" : { - "stringUnit" : { - "state" : "translated", - "value" : "螢幕設定" - } - } - } - }, "Distance" : { "localizations" : { "de" : { @@ -11000,7 +10872,7 @@ }, "zh-Hans" : { "stringUnit" : { - "state" : "needs_review", + "state" : "translated", "value" : "回声" } }, @@ -11760,21 +11632,15 @@ }, "European Union 433MHz" : { "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "European Union 433MHz" - } - }, "it" : { "stringUnit" : { - "state" : "translated", + "state" : "needs_review", "value" : "Unione Europea 433MHz" } }, "sr" : { "stringUnit" : { - "state" : "translated", + "state" : "needs_review", "value" : "Европска унија 433MHz" } }, @@ -11788,21 +11654,15 @@ }, "European Union 868MHz" : { "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "European Union 868MHz" - } - }, "it" : { "stringUnit" : { - "state" : "translated", + "state" : "needs_review", "value" : "Unione Europea 868MHz" } }, "sr" : { "stringUnit" : { - "state" : "translated", + "state" : "needs_review", "value" : "Европска унија 868MHz" } }, @@ -18420,70 +18280,6 @@ } } }, - "log.message" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Nachricht" - } - }, - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Message" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Message" - } - }, - "he" : { - "stringUnit" : { - "state" : "translated", - "value" : "Message" - } - }, - "it" : { - "stringUnit" : { - "state" : "translated", - "value" : "Messaggio" - } - }, - "pl" : { - "stringUnit" : { - "state" : "translated", - "value" : "Message" - } - }, - "se" : { - "stringUnit" : { - "state" : "translated", - "value" : "Message" - } - }, - "sr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Порука" - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "Message" - } - }, - "zh-Hant-TW" : { - "stringUnit" : { - "state" : "translated", - "value" : "Message" - } - } - } - }, "log.process" : { "localizations" : { "de" : { @@ -18796,6 +18592,28 @@ } } }, + "Lomg Range - Fast" : { + "localizations" : { + "it" : { + "stringUnit" : { + "state" : "needs_review", + "value" : "A lungo raggio - Veloce" + } + }, + "sr" : { + "stringUnit" : { + "state" : "needs_review", + "value" : "Дугачки домет - Брзо" + } + }, + "zh-Hant-TW" : { + "stringUnit" : { + "state" : "translated", + "value" : "Long Range - Fast" + } + } + } + }, "Long Name" : { "localizations" : { "de" : { @@ -18892,30 +18710,24 @@ } } }, - "long.range.fast" : { + "Long Range - Slow" : { "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Long Range - Fast" - } - }, "it" : { "stringUnit" : { - "state" : "translated", - "value" : "A lungo raggio - Veloce" + "state" : "needs_review", + "value" : "Lungo raggio - Lento" } }, "sr" : { "stringUnit" : { - "state" : "translated", - "value" : "Дугачки домет - Брзо" + "state" : "needs_review", + "value" : "Дугачки домет - Споро" } }, "zh-Hant-TW" : { "stringUnit" : { "state" : "translated", - "value" : "Long Range - Fast" + "value" : "Long Range - Slow" } } } @@ -18948,34 +18760,6 @@ } } }, - "long.range.slow" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Long Range - Slow" - } - }, - "it" : { - "stringUnit" : { - "state" : "translated", - "value" : "Lungo raggio - Lento" - } - }, - "sr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Дугачки домет - Споро" - } - }, - "zh-Hant-TW" : { - "stringUnit" : { - "state" : "translated", - "value" : "Long Range - Slow" - } - } - } - }, "Longitude" : { "localizations" : { "de" : { @@ -22352,70 +22136,6 @@ } } }, - "message" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Nachricht" - } - }, - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Message" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Message" - } - }, - "he" : { - "stringUnit" : { - "state" : "translated", - "value" : "הודעה" - } - }, - "it" : { - "stringUnit" : { - "state" : "translated", - "value" : "Messaggio" - } - }, - "pl" : { - "stringUnit" : { - "state" : "translated", - "value" : "Wiadomość" - } - }, - "se" : { - "stringUnit" : { - "state" : "translated", - "value" : "Meddelande" - } - }, - "sr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Порука" - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "消息" - } - }, - "zh-Hant-TW" : { - "stringUnit" : { - "state" : "translated", - "value" : "訊息" - } - } - } - }, "Message" : { "localizations" : { "de" : { @@ -22846,7 +22566,7 @@ }, "zh-Hans" : { "stringUnit" : { - "state" : "needs_review", + "state" : "translated", "value" : "模式" } }, @@ -25258,13 +24978,13 @@ }, "zh-Hans" : { "stringUnit" : { - "state" : "needs_review", + "state" : "translated", "value" : "密码" } }, "zh-Hant-TW" : { "stringUnit" : { - "state" : "needs_review", + "state" : "translated", "value" : "密碼" } } @@ -25334,6 +25054,58 @@ } } }, + "PAX Counter" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "needs_review", + "value" : "PAX Counter" + } + }, + "he" : { + "stringUnit" : { + "state" : "needs_review", + "value" : "PAX Counter" + } + }, + "it" : { + "stringUnit" : { + "state" : "needs_review", + "value" : "Contatore PAX" + } + }, + "pl" : { + "stringUnit" : { + "state" : "needs_review", + "value" : "PAX Counter" + } + }, + "se" : { + "stringUnit" : { + "state" : "needs_review", + "value" : "PAX Räknare" + } + }, + "sr" : { + "stringUnit" : { + "state" : "needs_review", + "value" : "Бројач пролазника" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "PAX 计数器" + } + }, + "zh-Hant-TW" : { + "stringUnit" : { + "state" : "translated", + "value" : "PAX 計數器" + } + } + } + }, "paxcounter.ble" : { "localizations" : { "en" : { @@ -26326,13 +26098,13 @@ }, "zh-Hans" : { "stringUnit" : { - "state" : "needs_review", + "state" : "translated", "value" : "电源" } }, "zh-Hant-TW" : { "stringUnit" : { - "state" : "needs_review", + "state" : "translated", "value" : "休眠" } } @@ -28297,52 +28069,49 @@ } }, "ringtone" : { + + }, + "Ringtone" : { "localizations" : { "de" : { "stringUnit" : { - "state" : "translated", + "state" : "needs_review", "value" : "Klingelton" } }, - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Ringtone" - } - }, "fr" : { "stringUnit" : { - "state" : "translated", + "state" : "needs_review", "value" : "Sonnerie" } }, "he" : { "stringUnit" : { - "state" : "translated", + "state" : "needs_review", "value" : "רינגטון" } }, "it" : { "stringUnit" : { - "state" : "translated", + "state" : "needs_review", "value" : "Suoneria" } }, "pl" : { "stringUnit" : { - "state" : "translated", + "state" : "needs_review", "value" : "Dzwonek" } }, "se" : { "stringUnit" : { - "state" : "translated", + "state" : "needs_review", "value" : "Ringsignal" } }, "sr" : { "stringUnit" : { - "state" : "translated", + "state" : "needs_review", "value" : "Мелодија звона" } }, @@ -31462,53 +31231,47 @@ } } }, - "serial" : { + "Serial" : { "localizations" : { "de" : { "stringUnit" : { - "state" : "translated", - "value" : "Serial" - } - }, - "en" : { - "stringUnit" : { - "state" : "translated", + "state" : "needs_review", "value" : "Serial" } }, "fr" : { "stringUnit" : { - "state" : "translated", + "state" : "needs_review", "value" : "Série" } }, "he" : { "stringUnit" : { - "state" : "translated", + "state" : "needs_review", "value" : "סיריאלי" } }, "it" : { "stringUnit" : { - "state" : "translated", + "state" : "needs_review", "value" : "Seriale" } }, "pl" : { "stringUnit" : { - "state" : "translated", + "state" : "needs_review", "value" : "Seryjny" } }, "se" : { "stringUnit" : { - "state" : "translated", + "state" : "needs_review", "value" : "Serie" } }, "sr" : { "stringUnit" : { - "state" : "translated", + "state" : "needs_review", "value" : "Серијска веза" } }, @@ -32130,49 +31893,43 @@ "localizations" : { "de" : { "stringUnit" : { - "state" : "translated", + "state" : "needs_review", "value" : "Einstellungen" } }, - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Settings" - } - }, "fr" : { "stringUnit" : { - "state" : "translated", + "state" : "needs_review", "value" : "Réglages" } }, "he" : { "stringUnit" : { - "state" : "translated", + "state" : "needs_review", "value" : "הגדרות" } }, "it" : { "stringUnit" : { - "state" : "translated", + "state" : "needs_review", "value" : "Impostazioni" } }, "pl" : { "stringUnit" : { - "state" : "translated", + "state" : "needs_review", "value" : "Ustawienia" } }, "se" : { "stringUnit" : { - "state" : "translated", + "state" : "needs_review", "value" : "Inställningar" } }, "sr" : { "stringUnit" : { - "state" : "translated", + "state" : "needs_review", "value" : "Подешавања" } }, @@ -36736,53 +36493,47 @@ } } }, - "unknown.age" : { + "Unknown Age" : { "localizations" : { "de" : { "stringUnit" : { - "state" : "translated", + "state" : "needs_review", "value" : "Unbekanntes alter" } }, - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Unknown Age" - } - }, "fr" : { "stringUnit" : { - "state" : "translated", + "state" : "needs_review", "value" : "Age inconnu" } }, "he" : { "stringUnit" : { - "state" : "translated", + "state" : "needs_review", "value" : "גיל לא ידוע" } }, "it" : { "stringUnit" : { - "state" : "translated", + "state" : "needs_review", "value" : "Età sconosciuta" } }, "pl" : { "stringUnit" : { - "state" : "translated", + "state" : "needs_review", "value" : "Nieznany wiek" } }, "se" : { "stringUnit" : { - "state" : "translated", + "state" : "needs_review", "value" : "Okänd ålder" } }, "sr" : { "stringUnit" : { - "state" : "translated", + "state" : "needs_review", "value" : "Непозната старост" } }, @@ -37304,53 +37055,47 @@ } } }, - "user" : { + "User" : { "localizations" : { "de" : { "stringUnit" : { - "state" : "translated", + "state" : "needs_review", "value" : "Benutzer" } }, - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "User" - } - }, "fr" : { "stringUnit" : { - "state" : "translated", + "state" : "needs_review", "value" : "Utilisateur" } }, "he" : { "stringUnit" : { - "state" : "translated", + "state" : "needs_review", "value" : "משתמש" } }, "it" : { "stringUnit" : { - "state" : "translated", + "state" : "needs_review", "value" : "Utente" } }, "pl" : { "stringUnit" : { - "state" : "translated", + "state" : "needs_review", "value" : "Użytkownik" } }, "se" : { "stringUnit" : { - "state" : "translated", + "state" : "needs_review", "value" : "Användare" } }, "sr" : { "stringUnit" : { - "state" : "translated", + "state" : "needs_review", "value" : "Корисник" } }, @@ -37886,49 +37631,43 @@ "localizations" : { "de" : { "stringUnit" : { - "state" : "translated", + "state" : "needs_review", "value" : "Warte..." } }, - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Waiting. . ." - } - }, "fr" : { "stringUnit" : { - "state" : "translated", + "state" : "needs_review", "value" : "En attente . . ." } }, "he" : { "stringUnit" : { - "state" : "translated", + "state" : "needs_review", "value" : "ממתין. . ." } }, "it" : { "stringUnit" : { - "state" : "translated", + "state" : "needs_review", "value" : "In attesa. . ." } }, "pl" : { "stringUnit" : { - "state" : "translated", + "state" : "needs_review", "value" : "Czekam. . ." } }, "se" : { "stringUnit" : { - "state" : "translated", + "state" : "needs_review", "value" : "Väntar..." } }, "sr" : { "stringUnit" : { - "state" : "translated", + "state" : "needs_review", "value" : "Чекам. . ." } }, @@ -38214,6 +37953,58 @@ } } }, + "When enabled the PAX Counter module counts the number of people passing by using WiFi and Bluetooth. Both WiFI and Bluetooth must be disabled for PAX counter to work." : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "needs_review", + "value" : "When enabled the PAX Counter module counts the number of people passing by using WiFi and Bluetooth. Both WiFI and Bluetooth must be disabled for PAX counter to work." + } + }, + "he" : { + "stringUnit" : { + "state" : "needs_review", + "value" : "When enabled the PAX Counter module counts the number of people passing by using WiFi and Bluetooth. Both WiFI and Bluetooth must be disabled for PAX counter to work." + } + }, + "it" : { + "stringUnit" : { + "state" : "needs_review", + "value" : "Quando è abilitato, il modulo PAX Counter conta il numero di persone che passano utilizzando il WiFi e il Bluetooth. Per il funzionamento del contatore PAX, sia il WiFI che il Bluetooth devono essere disattivati." + } + }, + "pl" : { + "stringUnit" : { + "state" : "needs_review", + "value" : "When enabled the PAX Counter module counts the number of people passing by using WiFi and Bluetooth. Both WiFI and Bluetooth must be disabled for PAX counter to work." + } + }, + "se" : { + "stringUnit" : { + "state" : "needs_review", + "value" : "När aktiverad räknar PAX-räknarmodulen antalet personer som passerar med WiFi och Bluetooth. Både WiFi och Bluetooth måste vara aktiverade för att PAX-räknaren ska fungera." + } + }, + "sr" : { + "stringUnit" : { + "state" : "needs_review", + "value" : "Када је омогућен, модул бројача пролазника броји број људи који пролазе користећи ВајФај и Блутут. И ВајФај и Блутут морају бити онемогућени да би бројач пролазника радио." + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "启用 PAX 计数器模块时,通过使用 WiFi 和蓝牙来计算经过的人数。为了使 PAX 计数器正常工作,必须将 WiFi 和蓝牙都禁用。" + } + }, + "zh-Hant-TW" : { + "stringUnit" : { + "state" : "translated", + "value" : "啟用後,人流計數器模組將透過 WiFi 和藍牙計算經過的人數。必須停用 WiFi 和藍牙才能讓 PAX 計數器正常工作。" + } + } + } + }, "When using in GPIO mode, keep the output on for this long. " : { "localizations" : { "it" : { diff --git a/Meshtastic/Enums/LoraConfigEnums.swift b/Meshtastic/Enums/LoraConfigEnums.swift index e6cd4dae..55837dd3 100644 --- a/Meshtastic/Enums/LoraConfigEnums.swift +++ b/Meshtastic/Enums/LoraConfigEnums.swift @@ -291,9 +291,9 @@ enum ModemPresets: Int, CaseIterable, Identifiable { var description: String { switch self { case .longFast: - return "long.range.fast".localized + return "Lomg Range - Fast".localized case .longSlow: - return "long.range.slow".localized + return "Long Range - Slow".localized case .longModerate: return "long.range.moderate".localized case .vLongSlow: diff --git a/Meshtastic/Export/WriteCsvFile.swift b/Meshtastic/Export/WriteCsvFile.swift index af3472b2..badc6f9b 100644 --- a/Meshtastic/Export/WriteCsvFile.swift +++ b/Meshtastic/Export/WriteCsvFile.swift @@ -27,7 +27,7 @@ func telemetryToCsvFile(telemetry: [TelemetryEntity], metricsType: Int) -> Strin csvString += ", " csvString += dm.uptimeSeconds?.formatted(.number.grouping(.never)) ?? "" csvString += ", " - csvString += dm.time?.formattedDate(format: dateFormatString) ?? "unknown.age".localized + csvString += dm.time?.formattedDate(format: dateFormatString) ?? "Unknown Age".localized } } else if metricsType == 1 { // Create Environment Telemetry Header @@ -44,7 +44,7 @@ func telemetryToCsvFile(telemetry: [TelemetryEntity], metricsType: Int) -> Strin csvString += ", " csvString += dm.gasResistance?.formatted(.number.grouping(.never)) ?? "" csvString += ", " - csvString += dm.time?.formattedDate(format: dateFormatString) ?? "unknown.age".localized + csvString += dm.time?.formattedDate(format: dateFormatString) ?? "Unknown Age".localized } } else if metricsType == 2 { // Create Power Metrics Header @@ -63,7 +63,7 @@ func telemetryToCsvFile(telemetry: [TelemetryEntity], metricsType: Int) -> Strin csvString += ", " csvString += dm.powerCh3Current?.formatted(.number.grouping(.never)) ?? "" csvString += ", " - csvString += dm.time?.formattedDate(format: dateFormatString) ?? "unknown.age".localized + csvString += dm.time?.formattedDate(format: dateFormatString) ?? "Unknown Age".localized } } return csvString @@ -121,7 +121,7 @@ func paxToCsvFile(pax: [PaxCounterEntity]) -> String { csvString += ", " csvString += String(p.uptime) csvString += ", " - csvString += p.time?.formattedDate(format: dateFormatString) ?? "unknown.age".localized + csvString += p.time?.formattedDate(format: dateFormatString) ?? "Unknown Age".localized } return csvString } @@ -150,7 +150,7 @@ func positionToCsvFile(positions: [PositionEntity]) -> String { csvString += ", " csvString += String(pos.snr) csvString += ", " - csvString += pos.time?.formattedDate(format: dateFormatString) ?? "unknown.age".localized + csvString += pos.time?.formattedDate(format: dateFormatString) ?? "Unknown Age".localized } return csvString } diff --git a/Meshtastic/Extensions/Date.swift b/Meshtastic/Extensions/Date.swift index d8cdd30f..25bf034d 100644 --- a/Meshtastic/Extensions/Date.swift +++ b/Meshtastic/Extensions/Date.swift @@ -13,7 +13,7 @@ extension Date { if self.timeIntervalSince1970 > 0 && self < Calendar.current.date(byAdding: .year, value: 1, to: Date())! { formatted() } else { - "unknown.age".localized + "Unknown Age".localized } } @@ -23,7 +23,7 @@ extension Date { if self.timeIntervalSince1970 > 0 && self < Calendar.current.date(byAdding: .year, value: 1, to: Date())! { return dateformat.string(from: self) } else { - return "unknown.age".localized + return "Unknown Age".localized } } func relativeTimeOfDay() -> String { diff --git a/Meshtastic/Views/ContentView.swift b/Meshtastic/Views/ContentView.swift index 692b1749..1c8a395d 100644 --- a/Meshtastic/Views/ContentView.swift +++ b/Meshtastic/Views/ContentView.swift @@ -25,7 +25,7 @@ struct ContentView: View { unreadDirectMessages: $appState.unreadDirectMessages ) .tabItem { - Label("messages", systemImage: "message") + Label("Messages", systemImage: "message") } .tag(NavigationState.Tab.messages) .badge(appState.totalUnreadMessages) diff --git a/Meshtastic/Views/Helpers/DateTimeText.swift b/Meshtastic/Views/Helpers/DateTimeText.swift index 517772fe..38e386f3 100644 --- a/Meshtastic/Views/Helpers/DateTimeText.swift +++ b/Meshtastic/Views/Helpers/DateTimeText.swift @@ -24,7 +24,7 @@ struct DateTimeText: View { if dateTime != nil && dateTime! >= sixMonthsAgo! { Text(" \(dateTime!.formattedDate(format: dateFormatString))") } else { - Text("unknown.age") + Text("Unknown Age") } } } diff --git a/Meshtastic/Views/Messages/TextMessageField/TextMessageField.swift b/Meshtastic/Views/Messages/TextMessageField/TextMessageField.swift index c8def69b..180ec7cd 100644 --- a/Meshtastic/Views/Messages/TextMessageField/TextMessageField.swift +++ b/Meshtastic/Views/Messages/TextMessageField/TextMessageField.swift @@ -29,7 +29,7 @@ struct TextMessageField: View { HStack(alignment: .top) { ZStack { - TextField("message", text: $typingMessage, axis: .vertical) + TextField("Message", text: $typingMessage, axis: .vertical) .onChange(of: typingMessage) { _, value in totalBytes = value.utf8.count // Only mess with the value if it is too big diff --git a/Meshtastic/Views/Nodes/DeviceMetricsLog.swift b/Meshtastic/Views/Nodes/DeviceMetricsLog.swift index 6b2570d2..0d739c49 100644 --- a/Meshtastic/Views/Nodes/DeviceMetricsLog.swift +++ b/Meshtastic/Views/Nodes/DeviceMetricsLog.swift @@ -121,7 +121,7 @@ struct DeviceMetricsLog: View { Table(deviceMetrics, selection: $selection, sortOrder: $sortOrder) { TableColumn("Battery Level") { dm in HStack { - Text(dm.time?.formattedDate(format: dateFormatString) ?? "unknown.age".localized) + Text(dm.time?.formattedDate(format: dateFormatString) ?? "Unknown Age".localized) .font(.caption) .fontWeight(.semibold) Spacer() @@ -188,7 +188,7 @@ struct DeviceMetricsLog: View { } .width(min: 100) TableColumn("Timestamp") { dm in - Text(dm.time?.formattedDate(format: dateFormatString) ?? "unknown.age".localized) + Text(dm.time?.formattedDate(format: dateFormatString) ?? "Unknown Age".localized) } .width(min: 180) } diff --git a/Meshtastic/Views/Nodes/Helpers/Metrics Columns/EnvironmentDefaultColumns.swift b/Meshtastic/Views/Nodes/Helpers/Metrics Columns/EnvironmentDefaultColumns.swift index 42cf8663..0f14331d 100644 --- a/Meshtastic/Views/Nodes/Helpers/Metrics Columns/EnvironmentDefaultColumns.swift +++ b/Meshtastic/Views/Nodes/Helpers/Metrics Columns/EnvironmentDefaultColumns.swift @@ -333,7 +333,7 @@ extension MetricsColumnList { .replacingOccurrences(of: ",", with: "") Text( time?.formattedDate(format: dateFormatString) - ?? "unknown.age".localized + ?? "Unknown Age".localized ) }) ]) diff --git a/Meshtastic/Views/Nodes/Helpers/NodeDetail.swift b/Meshtastic/Views/Nodes/Helpers/NodeDetail.swift index bd913d10..43cb0d5a 100644 --- a/Meshtastic/Views/Nodes/Helpers/NodeDetail.swift +++ b/Meshtastic/Views/Nodes/Helpers/NodeDetail.swift @@ -195,7 +195,7 @@ struct NodeDetail: View { Spacer() if dateFormatRelative, let text = Self.relativeFormatter.string(for: lastHeard) { - if lastHeard.formatted() != "unknown.age".localized { + if lastHeard.formatted() != "Unknown Age".localized { Text(text) .textSelection(.enabled) } diff --git a/Meshtastic/Views/Nodes/Helpers/NodeListItem.swift b/Meshtastic/Views/Nodes/Helpers/NodeListItem.swift index 9c7201e1..c01d86de 100644 --- a/Meshtastic/Views/Nodes/Helpers/NodeListItem.swift +++ b/Meshtastic/Views/Nodes/Helpers/NodeListItem.swift @@ -80,7 +80,7 @@ struct NodeListItem: View { if node.lastHeard?.timeIntervalSince1970 ?? 0 > 0 && node.lastHeard! < Calendar.current.date(byAdding: .year, value: 1, to: Date())! { IconAndText(systemName: node.isOnline ? "checkmark.circle.fill" : "moon.circle.fill", imageColor: node.isOnline ? .green : .orange, - text: node.lastHeard?.formatted() ?? "unknown.age".localized) + text: node.lastHeard?.formatted() ?? "Unknown Age".localized) } let role = DeviceRoles(rawValue: Int(node.user?.role ?? 0)) IconAndText(systemName: role?.systemName ?? "figure", diff --git a/Meshtastic/Views/Nodes/PaxCounterLog.swift b/Meshtastic/Views/Nodes/PaxCounterLog.swift index bcc0dd60..ff579eca 100644 --- a/Meshtastic/Views/Nodes/PaxCounterLog.swift +++ b/Meshtastic/Views/Nodes/PaxCounterLog.swift @@ -105,7 +105,7 @@ struct PaxCounterLog: View { Text(components) } TableColumn("Timestamp") { pc in - Text(pc.time?.formattedDate(format: dateFormatString) ?? "unknown.age".localized) + Text(pc.time?.formattedDate(format: dateFormatString) ?? "Unknown Age".localized) } .width(min: 180) } @@ -149,7 +149,7 @@ struct PaxCounterLog: View { let components = (now..