From 9ecf7f7fbf9fd25614b9aa484f8168cda41955c2 Mon Sep 17 00:00:00 2001 From: Garth Vander Houwen Date: Thu, 8 May 2025 14:42:11 -0700 Subject: [PATCH] Additional localization key fixes --- Localizable.xcstrings | 3317 +++++++---------- Meshtastic/Enums/AppSettingsEnums.swift | 4 +- Meshtastic/Enums/LoraConfigEnums.swift | 39 +- Meshtastic/Enums/PositionConfigEnums.swift | 12 +- Meshtastic/Enums/RouteEnums.swift | 24 +- Meshtastic/Helpers/BLEManager.swift | 2 +- Meshtastic/Persistence/UpdateCoreData.swift | 2 +- Meshtastic/Tips/ChannelTips.swift | 8 +- Meshtastic/Views/Bluetooth/Connect.swift | 6 +- .../Views/Bluetooth/InvalidVersion.swift | 2 +- Meshtastic/Views/Nodes/DeviceMetricsLog.swift | 2 +- .../Views/Nodes/Helpers/NodeListItem.swift | 2 +- Meshtastic/Views/Settings/Channels.swift | 2 +- .../Views/Settings/Config/LoRaConfig.swift | 3 + .../Config/Module/DetectionSensorConfig.swift | 2 +- .../Config/Module/TelemetryConfig.swift | 2 +- .../Views/Settings/Config/NetworkConfig.swift | 4 +- .../Views/Settings/Config/PowerConfig.swift | 4 +- 18 files changed, 1496 insertions(+), 1941 deletions(-) diff --git a/Localizable.xcstrings b/Localizable.xcstrings index d167f561..9061d29d 100644 --- a/Localizable.xcstrings +++ b/Localizable.xcstrings @@ -1681,6 +1681,64 @@ } } }, + "A Meshtastic QR code contains the LoRa config and channel values needed for radios to communicate. You can share a complete channel configuration using the Replace Channels option, if you choose Add Channels your shared channels will be added to the channels on the receiving radio." : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "In a Meshtastic LoRa Mesh there are up to 8 channels. The first one is the Primary channel where most activity happens and is required. If you don't share your primary channel your first shared channel becomes the primary channel on the other network. It talks on its primary and your secondary channel. A channel with the name 'admin' controls nodes remotely. Other channels are for private groups, each with its own key." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Un code QR Meshtastic contient la configuration LoRa et les valeurs de canal nécessaires pour communiquer. La plupart des activités du maillage ont lieu sur le canal principal requis. Si vous ne partagez pas votre canal principal, votre premier canal partagé devient le canal principal de l’autre réseau. Les autres canaux sont pour les groupes privés, chacun avec sa propre clé." + } + }, + "he" : { + "stringUnit" : { + "state" : "translated", + "value" : "במשטסטיק יש עד 8 ערוצים. הראשון הינו הראשי והינו היכן שרוב הפעילות מתבצעת והכרחי. אם לא תשתף את הערוץ הראשי שלך הערוץ הראשון שלך נהיה הערוץ הראשי ברשת השניה. הוא מדבר בערוץ הראשי שלו במשני שלך. ערוץ בעל השם 'admin' הינו לשליטה מרחוק. ערוצים נוספים הינם לקבוצות פרטיות, כל אחת עם מפתח הצפנה משלה." + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Un codice QR Meshtastic contiene la configurazione LoRa e i valori dei canali necessari alle radio per comunicare. È possibile condividere una configurazione completa dei canali utilizzando l'opzione Sostituisci canali; se si sceglie Aggiungi canali, i canali condivisi verranno aggiunti ai canali della radio ricevente." + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "In a Meshtastic LoRa Mesh there are up to 8 channels. The first one is the Primary channel where most activity happens and is required. If you don't share your primary channel your first shared channel becomes the primary channel on the other network. It talks on its primary and your secondary channel. A channel with the name 'admin' controls nodes remotely. Other channels are for private groups, each with its own key." + } + }, + "se" : { + "stringUnit" : { + "state" : "translated", + "value" : "En Meshtastic QR-kod innehåller LoRa-konfigurationen och kanalvärden som behövs för kommunikation. De flesta aktiviteter i mesh-nätverket sker på den obligatoriska primärkanalen. Om du inte delar din primärkanal blir din första delade kanal primärkanalen på det andra nätverket. Andra kanaler är för privata grupper, varje med sin egen nyckel." + } + }, + "sr" : { + "stringUnit" : { + "state" : "translated", + "value" : "QR код за Мештастик садржи LoRA конфигурацију и вредности канала које су потребне радијима за комуникацију. Можете поделити потпуну конфигурацију канала користећи опцију „Замени канале“, а ако изаберете „Додај канале“, ваши делени канали ће бити додати каналима на примајућем радију." + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "在 Meshtastic 网络中最多有 8 个频道。第一个频道是主频道,大多数活动都发生在这里,也是必需的。如果您不共享主频道,您的第一个共享频道就会成为其他网络的主频道。它会在其主频道和您的辅助频道上对话。名称为 admin 的频道可远程控制节点。其他频道用于私人群组,每个群组都有自己的密钥。" + } + }, + "zh-Hant-TW" : { + "stringUnit" : { + "state" : "translated", + "value" : "Meshtastic QR Code 包含 LoRa 設定與頻道資訊。選擇「取代頻道」可分享完整設定,「新增頻道」則會將分享的頻道新增到接收設備中。" + } + } + } + }, "A Trace Route was sent, no response has been received." : { "localizations" : { "it" : { @@ -3114,6 +3172,58 @@ } } }, + "Ambient Lighting module config received: %@" : { + "localizations" : { + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Configuration du module lumière ambiante reçue : %@" + } + }, + "he" : { + "stringUnit" : { + "state" : "translated", + "value" : "הגדרות מודולת תאורת סביבה התקבלו: %@" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Configurazione del modulo di illuminazione ambientale ricevuta: %@" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ambient Lighting module config received: %@" + } + }, + "se" : { + "stringUnit" : { + "state" : "translated", + "value" : "Konfiguration för omgivningsbelysningsmodulen mottagen: %@" + } + }, + "sr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Примљена конфигурација модула амбијенталног осветљења: %@" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ambient Lighting module config received: %@" + } + }, + "zh-Hant-TW" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ambient Lighting module config received: %@" + } + } + } + }, "An open source, off-grid, decentralized, mesh network that runs on affordable, low-power radios." : { "localizations" : { "de" : { @@ -4046,6 +4156,74 @@ } } }, + "biking" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "biken" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "tour in bicicletta" + } + }, + "sr" : { + "stringUnit" : { + "state" : "translated", + "value" : "тура бициклом" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "自行车旅行" + } + }, + "zh-Hant-TW" : { + "stringUnit" : { + "state" : "translated", + "value" : "自行車" + } + } + } + }, + "Biking" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Biken" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "In bicicletta" + } + }, + "sr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Вожња бицикле" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "自行车" + } + }, + "zh-Hant-TW" : { + "stringUnit" : { + "state" : "translated", + "value" : "自行車" + } + } + } + }, "BLE" : { "localizations" : { "it" : { @@ -6497,116 +6675,6 @@ } } }, - "config.power.saving" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Stromsparen" - } - }, - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Power Saving" - } - }, - "he" : { - "stringUnit" : { - "state" : "translated", - "value" : "Power Saving" - } - }, - "it" : { - "stringUnit" : { - "state" : "translated", - "value" : "Risparmio energetico" - } - }, - "pl" : { - "stringUnit" : { - "state" : "translated", - "value" : "Power Saving" - } - }, - "se" : { - "stringUnit" : { - "state" : "translated", - "value" : "Strömsparläge" - } - }, - "sr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Уштеда енергије" - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "省电模式" - } - }, - "zh-Hant-TW" : { - "stringUnit" : { - "state" : "translated", - "value" : "省電模式" - } - } - } - }, - "config.power.saving.description" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Will sleep everything as much as possible, for the tracker and sensor role this will also include the lora radio. Don't use this setting if you want to use your device with the phone apps or are using a device without a user button." - } - }, - "he" : { - "stringUnit" : { - "state" : "translated", - "value" : "Will sleep everything as much as possible, for the tracker and sensor role this will also include the lora radio. Don't use this setting if you want to use your device with the phone apps or are using a device without a user button." - } - }, - "it" : { - "stringUnit" : { - "state" : "translated", - "value" : "Sospenderà tutto il più possibile, per il ruolo di tracker e sensore questo includerà anche la radio lora. Non utilizzare questa impostazione se si desidera utilizzare il dispositivo con le applicazioni del telefono o se si utilizza un dispositivo senza pulsante utente." - } - }, - "pl" : { - "stringUnit" : { - "state" : "translated", - "value" : "Will sleep everything as much as possible, for the tracker and sensor role this will also include the lora radio. Don't use this setting if you want to use your device with the phone apps or are using a device without a user button." - } - }, - "se" : { - "stringUnit" : { - "state" : "translated", - "value" : "Sätter allt i viloläge så mycket som möjligt, för spårnings- och sensorläge kommer detta också inkludera LoRa-radion. Använd inte denna inställning om du vill använda din enhet med mobilappar eller använder en enhet utan en användarknapp." - } - }, - "sr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Спаваће све што је више могуће, за улогу трагача и сензора ово ће укључивати и лора радио. Не користите ово подешавање ако желите да користите свој уређај са мобилним апликацијама или користите уређај без корисничког дугмета." - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "尽可能让所有设备处于睡眠状态,对于跟踪器和传感器来说,这也包括 LoRa 无线电。如果您想将电台与手机 App 一起使用,或使用没有用户按钮的电台,请不要使用此设置。" - } - }, - "zh-Hant-TW" : { - "stringUnit" : { - "state" : "translated", - "value" : "此設定會讓裝置盡可能休眠,包括 LoRa 無線電(用於 Tracker 和 Sensor 角色)。若您要搭配手機 App,或裝置沒有用戶按鈕,請不要使用此設定。" - } - } - } - }, "config.power.shutdown.on.power.loss" : { "localizations" : { "de" : { @@ -7039,7 +7107,7 @@ } } }, - "connected" : { + "Connected" : { "localizations" : { "de" : { "stringUnit" : { @@ -7047,12 +7115,6 @@ "value" : "Derzeit verbunden" } }, - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Bluetooth Connected" - } - }, "fr" : { "stringUnit" : { "state" : "translated", @@ -7147,71 +7209,7 @@ } } }, - "connected.radio" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Verbundenes Gerät" - } - }, - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Connected Radio" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Radio connectée" - } - }, - "he" : { - "stringUnit" : { - "state" : "translated", - "value" : "מכשיר מחובר" - } - }, - "it" : { - "stringUnit" : { - "state" : "translated", - "value" : "Radio connessa" - } - }, - "pl" : { - "stringUnit" : { - "state" : "translated", - "value" : "Podłączone radio" - } - }, - "se" : { - "stringUnit" : { - "state" : "translated", - "value" : "Ansluten Radio" - } - }, - "sr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Повезани радио" - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "电台已连接" - } - }, - "zh-Hant-TW" : { - "stringUnit" : { - "state" : "translated", - "value" : "已連接的節點" - } - } - } - }, - "connecting" : { + "Connecting . ." : { "localizations" : { "de" : { "stringUnit" : { @@ -7219,12 +7217,6 @@ "value" : "Verbinde..." } }, - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Connecting . ." - } - }, "fr" : { "stringUnit" : { "state" : "translated", @@ -7329,61 +7321,55 @@ "localizations" : { "de" : { "stringUnit" : { - "state" : "translated", + "state" : "needs_review", "value" : "Verbindung nach %d Versuchen zu %@ fehlgeschlagen. Evtl. hilft es, die Verbindung unter Einstellungen > Bluetooth manuell zu löschen." } }, - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Connection failed after %d attempts to connect to %@. You may need to forget your device under Settings > Bluetooth." - } - }, "fr" : { "stringUnit" : { - "state" : "translated", + "state" : "needs_review", "value" : "Connexion impossible après %d essais avec %@. Allez dans Réglages > Bluetooth et essayez de faire de faire > Oublier cet appareil." } }, "he" : { "stringUnit" : { - "state" : "translated", + "state" : "needs_review", "value" : "התחברות נכשלה לאחר %d נסיונות להתחבר ל%@. יתכן ויש צורך 'לשכוח' את המכשיר בהגדרות מכשיר > בלוטוס." } }, "it" : { "stringUnit" : { - "state" : "translated", + "state" : "needs_review", "value" : "Connessione fallita dopo %d tentativi di connessione a %@. Potrebbe essere necessario disaccoppiare il tuo dispositivo in Impostazioni > Bluetooth." } }, "pl" : { "stringUnit" : { - "state" : "translated", + "state" : "needs_review", "value" : "Połączenie nie powiodło się po %d próbach połączenia z %@. Zapomnij o urządzeniu w Ustawienia > Bluetooth." } }, "se" : { "stringUnit" : { - "state" : "translated", + "state" : "needs_review", "value" : "Anslutningen misslyckades efter %d försök att ansluta till %@. Du kan behöva glömma din enhet under Inställningar > Bluetooth." } }, "sr" : { "stringUnit" : { - "state" : "translated", + "state" : "needs_review", "value" : "Веза није успела након %d покушаја да се повеже са %@. Можда ћете морати да заборавите уређај у Подешавања > Блутут." } }, "zh-Hans" : { "stringUnit" : { - "state" : "translated", + "state" : "needs_review", "value" : "尝试连接%d失败,你可能需要在系统设置的蓝牙选项中忽略该设备。" } }, "zh-Hant-TW" : { "stringUnit" : { - "state" : "translated", + "state" : "needs_review", "value" : "嘗試連接%d失敗,您可能需要在系统設定的藍芽選項中忽略該節點。" } } @@ -8069,6 +8055,64 @@ } } }, + "Decimal Degrees Format" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Dezimalgrad Format" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Format décimal pour les degrés" + } + }, + "he" : { + "stringUnit" : { + "state" : "translated", + "value" : "פורמט קואורדינטות" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Formato dei gradi decimali" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Format Dziesiętny Stopni" + } + }, + "se" : { + "stringUnit" : { + "state" : "translated", + "value" : "Decimalgrader" + } + }, + "sr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Формат децималних степени" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "十进制" + } + }, + "zh-Hant-TW" : { + "stringUnit" : { + "state" : "translated", + "value" : "十進制" + } + } + } + }, "Default" : { "localizations" : { "de" : { @@ -8161,6 +8205,64 @@ } } }, + "Degrees Minutes Seconds" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Grad Minuten Sekunden" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Degrés Minutes Secondes" + } + }, + "he" : { + "stringUnit" : { + "state" : "translated", + "value" : "מעלות דקות שניות" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Gradi Minuti Secondi" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Stopnie Minuty Sekundy" + } + }, + "se" : { + "stringUnit" : { + "state" : "translated", + "value" : "Grader Minuter Sekunder" + } + }, + "sr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Степени Минути Секунде" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "度分秒" + } + }, + "zh-Hant-TW" : { + "stringUnit" : { + "state" : "translated", + "value" : "度分秒" + } + } + } + }, "Delete" : { "localizations" : { "de" : { @@ -8219,6 +8321,58 @@ } } }, + "Delete all device metrics?" : { + "localizations" : { + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Effacer toutes les mesures de l’appareil?" + } + }, + "he" : { + "stringUnit" : { + "state" : "translated", + "value" : "נקה יומן מכשיר?" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Cancellare tutte le metriche del dispositivo?" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Usunąć wszystkie metryki urządzenia?" + } + }, + "se" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ta bort alla enhetsmätvärden?" + } + }, + "sr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Избришите све метрике уређаја?" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "删除所有设备指标?" + } + }, + "zh-Hant-TW" : { + "stringUnit" : { + "state" : "translated", + "value" : "要刪除所有裝置指標嗎?" + } + } + } + }, "Delete all environment metrics?" : { "localizations" : { "it" : { @@ -9223,64 +9377,6 @@ } } }, - "device.metrics.delete" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Delete all device metrics?" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Effacer toutes les mesures de l’appareil?" - } - }, - "he" : { - "stringUnit" : { - "state" : "translated", - "value" : "נקה יומן מכשיר?" - } - }, - "it" : { - "stringUnit" : { - "state" : "translated", - "value" : "Cancellare tutte le metriche del dispositivo?" - } - }, - "pl" : { - "stringUnit" : { - "state" : "translated", - "value" : "Usunąć wszystkie metryki urządzenia?" - } - }, - "se" : { - "stringUnit" : { - "state" : "translated", - "value" : "Ta bort alla enhetsmätvärden?" - } - }, - "sr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Избришите све метрике уређаја?" - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "删除所有设备指标?" - } - }, - "zh-Hant-TW" : { - "stringUnit" : { - "state" : "translated", - "value" : "要刪除所有裝置指標嗎?" - } - } - } - }, "device.metrics.log" : { "localizations" : { "de" : { @@ -10177,6 +10273,74 @@ } } }, + "driving" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "fahren" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "guida" + } + }, + "sr" : { + "stringUnit" : { + "state" : "translated", + "value" : "вожња" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "驾驶" + } + }, + "zh-Hant-TW" : { + "stringUnit" : { + "state" : "translated", + "value" : "開車" + } + } + } + }, + "Driving" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Fahren" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Guida" + } + }, + "sr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Вожња аута" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "驾驶" + } + }, + "zh-Hant-TW" : { + "stringUnit" : { + "state" : "translated", + "value" : "開車" + } + } + } + }, "Drop Pin in Maps" : { "localizations" : { "it" : { @@ -12523,6 +12687,122 @@ } } }, + "Follow" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Folgen" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Suivre" + } + }, + "he" : { + "stringUnit" : { + "state" : "translated", + "value" : "עקוב" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Seguire" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Śledź" + } + }, + "se" : { + "stringUnit" : { + "state" : "translated", + "value" : "Följ" + } + }, + "sr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Прати" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "跟随" + } + }, + "zh-Hant-TW" : { + "stringUnit" : { + "state" : "translated", + "value" : "置中" + } + } + } + }, + "Follow with heading" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Folgen mit Steuerkurs" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Suivre avec le cap" + } + }, + "he" : { + "stringUnit" : { + "state" : "translated", + "value" : "עקוב עם כיוון" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Seguire con l'intestazione" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Śledź z kierunkiem" + } + }, + "se" : { + "stringUnit" : { + "state" : "translated", + "value" : "Följ med riktning" + } + }, + "sr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Прати са правцем" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "跟随航向" + } + }, + "zh-Hant-TW" : { + "stringUnit" : { + "state" : "translated", + "value" : "跟隨與方向" + } + } + } + }, "For all Mqtt functionality other than the map report you must also set uplink and downlink for each channel you want to bridge over Mqtt." : { "localizations" : { "it" : { @@ -13459,390 +13739,6 @@ } } }, - "gpsformat.dec" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Dezimalgrad Format" - } - }, - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Decimal Degrees Format" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Format décimal pour les degrés" - } - }, - "he" : { - "stringUnit" : { - "state" : "translated", - "value" : "פורמט קואורדינטות" - } - }, - "it" : { - "stringUnit" : { - "state" : "translated", - "value" : "Formato dei gradi decimali" - } - }, - "pl" : { - "stringUnit" : { - "state" : "translated", - "value" : "Format Dziesiętny Stopni" - } - }, - "se" : { - "stringUnit" : { - "state" : "translated", - "value" : "Decimalgrader" - } - }, - "sr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Формат децималних степени" - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "十进制" - } - }, - "zh-Hant-TW" : { - "stringUnit" : { - "state" : "translated", - "value" : "十進制" - } - } - } - }, - "gpsformat.dms" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Grad Minuten Sekunden" - } - }, - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Degrees Minutes Seconds" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Degrés Minutes Secondes" - } - }, - "he" : { - "stringUnit" : { - "state" : "translated", - "value" : "מעלות דקות שניות" - } - }, - "it" : { - "stringUnit" : { - "state" : "translated", - "value" : "Gradi Minuti Secondi" - } - }, - "pl" : { - "stringUnit" : { - "state" : "translated", - "value" : "Stopnie Minuty Sekundy" - } - }, - "se" : { - "stringUnit" : { - "state" : "translated", - "value" : "Grader Minuter Sekunder" - } - }, - "sr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Степени Минути Секунде" - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "度分秒" - } - }, - "zh-Hant-TW" : { - "stringUnit" : { - "state" : "translated", - "value" : "度分秒" - } - } - } - }, - "gpsformat.mgrs" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Militärisches Gitternetz-Referenzsystem" - } - }, - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Military Grid Reference System" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Military Grid Reference System" - } - }, - "he" : { - "stringUnit" : { - "state" : "translated", - "value" : "Military Grid Reference System" - } - }, - "it" : { - "stringUnit" : { - "state" : "translated", - "value" : "Sistema di riferimento della griglia militare" - } - }, - "pl" : { - "stringUnit" : { - "state" : "translated", - "value" : "Wojskowa siatka odniesienia" - } - }, - "se" : { - "stringUnit" : { - "state" : "translated", - "value" : "Militärt rutnätsreferenssystem" - } - }, - "sr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Војни референтни систем мреже" - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "军事网格参考系统" - } - }, - "zh-Hant-TW" : { - "stringUnit" : { - "state" : "translated", - "value" : "軍事網格參考系統" - } - } - } - }, - "gpsformat.olc" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Open Location Code (aka Plus Codes)" - } - }, - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Open Location Code (aka Plus Codes)" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Open Location Code (alias Plus Codes)" - } - }, - "he" : { - "stringUnit" : { - "state" : "translated", - "value" : "Open Location Code (aka Plus Codes)" - } - }, - "it" : { - "stringUnit" : { - "state" : "translated", - "value" : "Codice di localizzazione aperto (alias Codice Plus)" - } - }, - "pl" : { - "stringUnit" : { - "state" : "translated", - "value" : "Otwarty Kod Lokalizacji (tzw. Plus Kody)" - } - }, - "se" : { - "stringUnit" : { - "state" : "translated", - "value" : "Öppen Platskod (även känd som Pluskoder)" - } - }, - "sr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Отворени код локације (тј. Плус кодови)" - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "开放的位置代码(又称加码)" - } - }, - "zh-Hant-TW" : { - "stringUnit" : { - "state" : "translated", - "value" : "開放位置代碼" - } - } - } - }, - "gpsformat.osgr" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Ordnance Survey Gitterreferenz" - } - }, - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Ordnance Survey Grid Reference" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Ordnance Survey Grid Reference" - } - }, - "he" : { - "stringUnit" : { - "state" : "translated", - "value" : "Ordnance Survey Grid Reference" - } - }, - "it" : { - "stringUnit" : { - "state" : "translated", - "value" : "Riferimento di griglia Ordnance Survey" - } - }, - "pl" : { - "stringUnit" : { - "state" : "translated", - "value" : "Brytyjski Układ Odniesienia" - } - }, - "se" : { - "stringUnit" : { - "state" : "translated", - "value" : "Ordnance Survey Rutnätsreferens" - } - }, - "sr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Референца мреже Орданс Сурвеја" - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "英国国土测量局网格参考" - } - }, - "zh-Hant-TW" : { - "stringUnit" : { - "state" : "translated", - "value" : "英國國土測量局網格參考系統" - } - } - } - }, - "gpsformat.utm" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Universal Transversal Mercator" - } - }, - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Universal Transverse Mercator" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Projection Mercator Transverse Universelle" - } - }, - "he" : { - "stringUnit" : { - "state" : "translated", - "value" : "Universal Transverse Mercator" - } - }, - "it" : { - "stringUnit" : { - "state" : "translated", - "value" : "Mercatore Universale Trasverso" - } - }, - "pl" : { - "stringUnit" : { - "state" : "translated", - "value" : "Uniwersalny Układ Transwersalny Mercatora" - } - }, - "se" : { - "stringUnit" : { - "state" : "translated", - "value" : "Universal Transversal Mercator" - } - }, - "sr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Универзални трансверзални Меркаторов пројекат" - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "通用横轴墨卡托投影" - } - }, - "zh-Hant-TW" : { - "stringUnit" : { - "state" : "translated", - "value" : "通用橫軸墨卡托投影" - } - } - } - }, "Group Message" : { "localizations" : { "de" : { @@ -14255,6 +14151,74 @@ } } }, + "hiking" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "wandern" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "escursione" + } + }, + "sr" : { + "stringUnit" : { + "state" : "translated", + "value" : "планинарње" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "徒步" + } + }, + "zh-Hant-TW" : { + "stringUnit" : { + "state" : "translated", + "value" : "登山" + } + } + } + }, + "Hiking" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Wandern" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Escursioni" + } + }, + "sr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Планинарење" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "徒步" + } + }, + "zh-Hant-TW" : { + "stringUnit" : { + "state" : "translated", + "value" : "登山" + } + } + } + }, "History Return Max" : { "localizations" : { "it" : { @@ -16523,6 +16487,28 @@ } } }, + "Long Range - Moderate" : { + "localizations" : { + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Lungo raggio - Moderato" + } + }, + "sr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Дугачки домет - Умерено" + } + }, + "zh-Hant-TW" : { + "stringUnit" : { + "state" : "translated", + "value" : "Long Range - Moderate" + } + } + } + }, "Long Range - Slow" : { "localizations" : { "it" : { @@ -16545,34 +16531,6 @@ } } }, - "long.range.moderate" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Long Range - Moderate" - } - }, - "it" : { - "stringUnit" : { - "state" : "translated", - "value" : "Lungo raggio - Moderato" - } - }, - "sr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Дугачки домет - Умерено" - } - }, - "zh-Hant-TW" : { - "stringUnit" : { - "state" : "translated", - "value" : "Long Range - Moderate" - } - } - } - }, "Longitude" : { "localizations" : { "de" : { @@ -16855,14 +16813,8 @@ } } }, - "Malaysia 433mhz" : { + "Malaysia 433MHz" : { "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Malaysia 433MHz" - } - }, "it" : { "stringUnit" : { "state" : "translated", @@ -16883,34 +16835,86 @@ } } }, - "Malaysia 919mhz" : { + "Malaysia 919MHz" : { "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Malaysia 919MHz" - } - }, "it" : { "stringUnit" : { - "state" : "translated", + "state" : "needs_review", "value" : "Malesia 919MHz" } }, "sr" : { "stringUnit" : { - "state" : "translated", + "state" : "needs_review", "value" : "Малезија 919MHz" } }, "zh-Hant-TW" : { "stringUnit" : { - "state" : "translated", + "state" : "needs_review", "value" : "馬來西亞 919MHz" } } } }, + "Manage Channels" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Kanäle verwalten" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Gérer les canaux" + } + }, + "he" : { + "stringUnit" : { + "state" : "translated", + "value" : "Manage Channels" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Gestire i canali" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Manage Channels" + } + }, + "se" : { + "stringUnit" : { + "state" : "translated", + "value" : "Hantera Kanaler" + } + }, + "sr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Управљај каналима" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "管理频道" + } + }, + "zh-Hant-TW" : { + "stringUnit" : { + "state" : "translated", + "value" : "管理頻道" + } + } + } + }, "Managed Device" : { "localizations" : { "it" : { @@ -17151,134 +17155,6 @@ } } }, - "map.usertrackingmode.follow" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Folgen" - } - }, - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Follow" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Suivre" - } - }, - "he" : { - "stringUnit" : { - "state" : "translated", - "value" : "עקוב" - } - }, - "it" : { - "stringUnit" : { - "state" : "translated", - "value" : "Seguire" - } - }, - "pl" : { - "stringUnit" : { - "state" : "translated", - "value" : "Śledź" - } - }, - "se" : { - "stringUnit" : { - "state" : "translated", - "value" : "Följ" - } - }, - "sr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Прати" - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "跟随" - } - }, - "zh-Hant-TW" : { - "stringUnit" : { - "state" : "translated", - "value" : "置中" - } - } - } - }, - "map.usertrackingmode.followwithheading" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Folgen mit Steuerkurs" - } - }, - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Follow with heading" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Suivre avec le cap" - } - }, - "he" : { - "stringUnit" : { - "state" : "translated", - "value" : "עקוב עם כיוון" - } - }, - "it" : { - "stringUnit" : { - "state" : "translated", - "value" : "Seguire con l'intestazione" - } - }, - "pl" : { - "stringUnit" : { - "state" : "translated", - "value" : "Śledź z kierunkiem" - } - }, - "se" : { - "stringUnit" : { - "state" : "translated", - "value" : "Följ med riktning" - } - }, - "sr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Прати са правцем" - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "跟随航向" - } - }, - "zh-Hant-TW" : { - "stringUnit" : { - "state" : "translated", - "value" : "跟隨與方向" - } - } - } - }, "Max Retransmission Reached" : { "localizations" : { "de" : { @@ -17337,14 +17213,8 @@ } } }, - "medium.range.fast" : { + "Medium Range - Fast" : { "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Medium Range - Fast" - } - }, "it" : { "stringUnit" : { "state" : "translated", @@ -17365,14 +17235,8 @@ } } }, - "medium.range.slow" : { + "Medium Range - Slow" : { "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Medium Range - Slow" - } - }, "it" : { "stringUnit" : { "state" : "translated", @@ -17479,64 +17343,6 @@ } } }, - "mesh.log.ambientlighting.config %@" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Ambient Lighting module config received: %@" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Configuration du module lumière ambiante reçue : %@" - } - }, - "he" : { - "stringUnit" : { - "state" : "translated", - "value" : "הגדרות מודולת תאורת סביבה התקבלו: %@" - } - }, - "it" : { - "stringUnit" : { - "state" : "translated", - "value" : "Configurazione del modulo di illuminazione ambientale ricevuta: %@" - } - }, - "pl" : { - "stringUnit" : { - "state" : "translated", - "value" : "Ambient Lighting module config received: %@" - } - }, - "se" : { - "stringUnit" : { - "state" : "translated", - "value" : "Konfiguration för omgivningsbelysningsmodulen mottagen: %@" - } - }, - "sr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Примљена конфигурација модула амбијенталног осветљења: %@" - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "Ambient Lighting module config received: %@" - } - }, - "zh-Hant-TW" : { - "stringUnit" : { - "state" : "translated", - "value" : "Ambient Lighting module config received: %@" - } - } - } - }, "mesh.log.bluetooth.config %@" : { "localizations" : { "de" : { @@ -20082,6 +19888,64 @@ } } }, + "Military Grid Reference System" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Militärisches Gitternetz-Referenzsystem" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Military Grid Reference System" + } + }, + "he" : { + "stringUnit" : { + "state" : "translated", + "value" : "Military Grid Reference System" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sistema di riferimento della griglia militare" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Wojskowa siatka odniesienia" + } + }, + "se" : { + "stringUnit" : { + "state" : "translated", + "value" : "Militärt rutnätsreferenssystem" + } + }, + "sr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Војни референтни систем мреже" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "军事网格参考系统" + } + }, + "zh-Hant-TW" : { + "stringUnit" : { + "state" : "translated", + "value" : "軍事網格參考系統" + } + } + } + }, "Minimum Distance" : { "localizations" : { "de" : { @@ -20388,6 +20252,64 @@ } } }, + "Most data on your mesh is sent over the primary channel. You can set up secondary channels to create additional messaging groups secured by their own key. [Channel config tips](https://meshtastic.org/docs/configuration/tips/)" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Die meisten Daten in deinem Mesh werden über den primären Kanal gesendet. Du kannst sekundäre Kanäle einrichten, um zusätzliche Nachrichtengruppen zu erstellen, die durch ihren eigenen Schlüssel gesichert sind. [Tipps zur Kanalkonfiguration](https://meshtastic.org/docs/configuration/radio/channels/)" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "La pluspart des données de votre maillage sont envoyées sur le canal principal. Vous pouvez définir des canaux secondaires pour créer des groupes de messagerie additionnelle sécurisés avec leur propre clé. [Conseils de configuration du canal](https://meshtastic.org/docs/configuration/tips/)" + } + }, + "he" : { + "stringUnit" : { + "state" : "translated", + "value" : "Most data on your mesh is sent over the primary channel. You can set up secondary channels to create additional messaging groups secured by their own key. [Channel config tips](https://meshtastic.org/docs/configuration/radio/channels/)" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "La maggior parte dei dati sulla rete viene inviata attraverso il canale primario. È possibile impostare canali secondari per creare gruppi di messaggistica aggiuntivi protetti da una propria chiave. [Suggerimenti per la configurazione del canale](https://meshtastic.org/docs/configuration/tips/)" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Most data on your mesh is sent over the primary channel. You can set up secondary channels to create additional messaging groups secured by their own key. [Channel config tips](https://meshtastic.org/docs/configuration/radio/channels/)" + } + }, + "se" : { + "stringUnit" : { + "state" : "translated", + "value" : "De flesta data i ditt mesh-nätverk skickas över primärkanalen. Du kan ställa in sekundära kanaler för att skapa ytterligare meddelandegrupper skyddade av sin egen nyckel. Tips för kanalkonfiguration" + } + }, + "sr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Већина података на вашој мрежи шаље се преко примарног канала. Можете подесити секундарне канале како бисте креирали додатне групе за размену порука, које су обезбеђене сопственим кључем. [Савети за конфигурацију канала](https://meshtastic.org/docs/configuration/tips/)" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mesh 网格上的大部分数据都通过主频道发送。您可以设置辅助频道以创建由其自身密钥保护的消息组。[频道配置提示](https://meshtastic.org/docs/configuration/tips/)" + } + }, + "zh-Hant-TW" : { + "stringUnit" : { + "state" : "translated", + "value" : "您的Mesh網路中大部分資料將透過主要頻道傳輸。若需要額外的訊息群組,您可以設定次要頻道,並設定專屬金鑰進行保護。" + } + } + } + }, "MQTT" : { "localizations" : { "it" : { @@ -21002,29 +20924,23 @@ } } }, - "New Zealand 865mhz" : { + "New Zealand 865MHz" : { "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "New Zealand 865MHz" - } - }, "it" : { "stringUnit" : { - "state" : "translated", + "state" : "needs_review", "value" : "Nuova Zelanda 865MHz" } }, "sr" : { "stringUnit" : { - "state" : "translated", + "state" : "needs_review", "value" : "Нови зеланд 865MHz" } }, "zh-Hant-TW" : { "stringUnit" : { - "state" : "translated", + "state" : "needs_review", "value" : "紐西蘭 865MHz" } } @@ -22794,6 +22710,64 @@ } } }, + "Open Location Code (aka Plus Codes)" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Open Location Code (aka Plus Codes)" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Open Location Code (alias Plus Codes)" + } + }, + "he" : { + "stringUnit" : { + "state" : "translated", + "value" : "Open Location Code (aka Plus Codes)" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Codice di localizzazione aperto (alias Codice Plus)" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Otwarty Kod Lokalizacji (tzw. Plus Kody)" + } + }, + "se" : { + "stringUnit" : { + "state" : "translated", + "value" : "Öppen Platskod (även känd som Pluskoder)" + } + }, + "sr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Отворени код локације (тј. Плус кодови)" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "开放的位置代码(又称加码)" + } + }, + "zh-Hant-TW" : { + "stringUnit" : { + "state" : "translated", + "value" : "開放位置代碼" + } + } + } + }, "Open Settings" : { "localizations" : { "de" : { @@ -23022,6 +22996,64 @@ } } }, + "Ordnance Survey Grid Reference" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ordnance Survey Gitterreferenz" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ordnance Survey Grid Reference" + } + }, + "he" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ordnance Survey Grid Reference" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Riferimento di griglia Ordnance Survey" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Brytyjski Układ Odniesienia" + } + }, + "se" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ordnance Survey Rutnätsreferens" + } + }, + "sr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Референца мреже Орданс Сурвеја" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "英国国土测量局网格参考" + } + }, + "zh-Hant-TW" : { + "stringUnit" : { + "state" : "translated", + "value" : "英國國土測量局網格參考系統" + } + } + } + }, "OS Log Entry Details" : { "localizations" : { "it" : { @@ -23216,6 +23248,62 @@ } } }, + "overlanding" : { + "localizations" : { + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "overland drive" + } + }, + "sr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Вожња преко копна" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "越野" + } + }, + "zh-Hant-TW" : { + "stringUnit" : { + "state" : "translated", + "value" : "開車 (overland drive)" + } + } + } + }, + "Overlanding" : { + "localizations" : { + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Overlanding" + } + }, + "sr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Оверлендинг" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "越野" + } + }, + "zh-Hant-TW" : { + "stringUnit" : { + "state" : "translated", + "value" : "越野旅行" + } + } + } + }, "Override automatic OLED screen detection." : { "localizations" : { "it" : { @@ -23650,42 +23738,30 @@ } } }, - "Philippines 433mhz" : { + "Philippines 433MHz" : { "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Philippines 433MHz" - } - }, "it" : { "stringUnit" : { - "state" : "translated", + "state" : "needs_review", "value" : "Filippine 433MHz" } }, "sr" : { "stringUnit" : { - "state" : "translated", + "state" : "needs_review", "value" : "Филипини 433MHz" } }, "zh-Hant-TW" : { "stringUnit" : { - "state" : "translated", + "state" : "needs_review", "value" : "菲律賓 433MHz" } } } }, - "Philippines 868mhz" : { + "Philippines 868MHz" : { "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Philippines 868MHz" - } - }, "it" : { "stringUnit" : { "state" : "translated", @@ -23706,29 +23782,23 @@ } } }, - "Philippines 915mhz" : { + "Philippines 915MHz" : { "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Philippines 915MHz" - } - }, "it" : { "stringUnit" : { - "state" : "translated", + "state" : "needs_review", "value" : "Filippine 915MHz" } }, "sr" : { "stringUnit" : { - "state" : "translated", + "state" : "needs_review", "value" : "Филипини 915MHz" } }, "zh-Hant-TW" : { "stringUnit" : { - "state" : "translated", + "state" : "needs_review", "value" : "菲律賓 915MHz" } } @@ -24302,46 +24372,6 @@ } } }, - "position.precision %@" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Innerhalb %@" - } - }, - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Within %@" - } - }, - "it" : { - "stringUnit" : { - "state" : "translated", - "value" : "Entro il %@" - } - }, - "se" : { - "stringUnit" : { - "state" : "translated", - "value" : "Inom %@" - } - }, - "sr" : { - "stringUnit" : { - "state" : "translated", - "value" : "У кругу %@" - } - }, - "zh-Hant-TW" : { - "stringUnit" : { - "state" : "translated", - "value" : "%@ 之內" - } - } - } - }, "Positions Enabled" : { "localizations" : { "it" : { @@ -24538,6 +24568,58 @@ } } }, + "Power Saving" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Stromsparen" + } + }, + "he" : { + "stringUnit" : { + "state" : "translated", + "value" : "Power Saving" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Risparmio energetico" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Power Saving" + } + }, + "se" : { + "stringUnit" : { + "state" : "translated", + "value" : "Strömsparläge" + } + }, + "sr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Уштеда енергије" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "省电模式" + } + }, + "zh-Hant-TW" : { + "stringUnit" : { + "state" : "translated", + "value" : "省電模式" + } + } + } + }, "Power Screen" : { "localizations" : { "it" : { @@ -26994,474 +27076,6 @@ } } }, - "routes.activitytype.biking" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Biken" - } - }, - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Biking" - } - }, - "it" : { - "stringUnit" : { - "state" : "translated", - "value" : "In bicicletta" - } - }, - "sr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Вожња бицикле" - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "自行车" - } - }, - "zh-Hant-TW" : { - "stringUnit" : { - "state" : "translated", - "value" : "自行車" - } - } - } - }, - "routes.activitytype.driving" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Fahren" - } - }, - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Driving" - } - }, - "it" : { - "stringUnit" : { - "state" : "translated", - "value" : "Guida" - } - }, - "sr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Вожња аута" - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "驾驶" - } - }, - "zh-Hant-TW" : { - "stringUnit" : { - "state" : "translated", - "value" : "開車" - } - } - } - }, - "routes.activitytype.filename.biking" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "biken" - } - }, - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "bike tour" - } - }, - "it" : { - "stringUnit" : { - "state" : "translated", - "value" : "tour in bicicletta" - } - }, - "sr" : { - "stringUnit" : { - "state" : "translated", - "value" : "тура бициклом" - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "自行车旅行" - } - }, - "zh-Hant-TW" : { - "stringUnit" : { - "state" : "translated", - "value" : "自行車" - } - } - } - }, - "routes.activitytype.filename.driving" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "fahren" - } - }, - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "drive" - } - }, - "it" : { - "stringUnit" : { - "state" : "translated", - "value" : "guida" - } - }, - "sr" : { - "stringUnit" : { - "state" : "translated", - "value" : "вожња" - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "驾驶" - } - }, - "zh-Hant-TW" : { - "stringUnit" : { - "state" : "translated", - "value" : "開車" - } - } - } - }, - "routes.activitytype.filename.hiking" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "wandern" - } - }, - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "hike" - } - }, - "it" : { - "stringUnit" : { - "state" : "translated", - "value" : "escursione" - } - }, - "sr" : { - "stringUnit" : { - "state" : "translated", - "value" : "планинарње" - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "徒步" - } - }, - "zh-Hant-TW" : { - "stringUnit" : { - "state" : "translated", - "value" : "登山" - } - } - } - }, - "routes.activitytype.filename.overlanding" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "overland drive" - } - }, - "it" : { - "stringUnit" : { - "state" : "translated", - "value" : "overland drive" - } - }, - "sr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Вожња преко копна" - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "越野" - } - }, - "zh-Hant-TW" : { - "stringUnit" : { - "state" : "translated", - "value" : "開車 (overland drive)" - } - } - } - }, - "routes.activitytype.filename.skiing" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "skitour" - } - }, - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "ski tour" - } - }, - "it" : { - "stringUnit" : { - "state" : "translated", - "value" : "tour sciistico" - } - }, - "sr" : { - "stringUnit" : { - "state" : "translated", - "value" : "ски тура" - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "滑雪之旅" - } - }, - "zh-Hant-TW" : { - "stringUnit" : { - "state" : "translated", - "value" : "滑雪" - } - } - } - }, - "routes.activitytype.filename.walking" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "gehen" - } - }, - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "walk" - } - }, - "it" : { - "stringUnit" : { - "state" : "translated", - "value" : "passeggiata" - } - }, - "sr" : { - "stringUnit" : { - "state" : "translated", - "value" : "шетња" - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "步行" - } - }, - "zh-Hant-TW" : { - "stringUnit" : { - "state" : "translated", - "value" : "走路" - } - } - } - }, - "routes.activitytype.hiking" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Wandern" - } - }, - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Hiking" - } - }, - "it" : { - "stringUnit" : { - "state" : "translated", - "value" : "Escursioni" - } - }, - "sr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Планинарење" - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "徒步" - } - }, - "zh-Hant-TW" : { - "stringUnit" : { - "state" : "translated", - "value" : "登山" - } - } - } - }, - "routes.activitytype.overlanding" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Overlanding" - } - }, - "it" : { - "stringUnit" : { - "state" : "translated", - "value" : "Overlanding" - } - }, - "sr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Оверлендинг" - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "越野" - } - }, - "zh-Hant-TW" : { - "stringUnit" : { - "state" : "translated", - "value" : "越野旅行" - } - } - } - }, - "routes.activitytype.skiing" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Skifahren" - } - }, - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Skiing" - } - }, - "it" : { - "stringUnit" : { - "state" : "translated", - "value" : "Sci" - } - }, - "sr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Скијање" - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "滑雪" - } - }, - "zh-Hant-TW" : { - "stringUnit" : { - "state" : "translated", - "value" : "滑雪" - } - } - } - }, - "routes.activitytype.walking" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Gehen" - } - }, - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Walking" - } - }, - "it" : { - "stringUnit" : { - "state" : "translated", - "value" : "Camminare" - } - }, - "sr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Шетња" - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "步行" - } - }, - "zh-Hant-TW" : { - "stringUnit" : { - "state" : "translated", - "value" : "走路" - } - } - } - }, "RSSI %@ dBm" : { "localizations" : { "it" : { @@ -29311,29 +28925,7 @@ } } }, - "Set the GPIO pins for RXD and TXD." : { - "localizations" : { - "it" : { - "stringUnit" : { - "state" : "translated", - "value" : "Impostare i pin GPIO per RXD e TXD." - } - }, - "sr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Подеси GPIO пинове за RXD и TXD." - } - }, - "zh-Hant-TW" : { - "stringUnit" : { - "state" : "translated", - "value" : "設定 RXD 和 TXD 的 GPIO 腳位。" - } - } - } - }, - "set.region" : { + "Set LoRa Region" : { "localizations" : { "de" : { "stringUnit" : { @@ -29341,12 +28933,6 @@ "value" : "Setze LoRa Region" } }, - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Set LoRa Region" - } - }, "fr" : { "stringUnit" : { "state" : "translated", @@ -29397,6 +28983,28 @@ } } }, + "Set the GPIO pins for RXD and TXD." : { + "localizations" : { + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Impostare i pin GPIO per RXD e TXD." + } + }, + "sr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Подеси GPIO пинове за RXD и TXD." + } + }, + "zh-Hant-TW" : { + "stringUnit" : { + "state" : "translated", + "value" : "設定 RXD 和 TXD 的 GPIO 腳位。" + } + } + } + }, "Sets the maximum number of hops, default is 3. Increasing hops also increases congestion and should be used carefully. O hop broadcast messages will not get ACKs." : { "localizations" : { "it" : { @@ -29655,6 +29263,64 @@ } } }, + "Sharing Meshtastic Channels" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Meshtastic Kanäle teilen" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Partage des canaux Meshtastic" + } + }, + "he" : { + "stringUnit" : { + "state" : "translated", + "value" : "משתף ערוצי משטסטיק" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Condividere i canali Meshtastic" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sharing Meshtastic Channels" + } + }, + "se" : { + "stringUnit" : { + "state" : "translated", + "value" : "Dela Meshtastic-kanaler" + } + }, + "sr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Дељење Мештастик канала" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "共享 Meshtastic 频道" + } + }, + "zh-Hant-TW" : { + "stringUnit" : { + "state" : "translated", + "value" : "分享 Meshtastic 頻道" + } + } + } + }, "Short Name" : { "localizations" : { "de" : { @@ -29723,14 +29389,8 @@ } } }, - "short.range.fast" : { + "Short Range - Fast" : { "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Short Range - Fast" - } - }, "it" : { "stringUnit" : { "state" : "translated", @@ -29751,14 +29411,8 @@ } } }, - "short.range.slow" : { + "Short Range - Slow" : { "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Short Range - Slow" - } - }, "it" : { "stringUnit" : { "state" : "translated", @@ -29779,14 +29433,8 @@ } } }, - "short.range.turbo" : { + "Short Range - Turbo" : { "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Short Range - Turbo" - } - }, "it" : { "stringUnit" : { "state" : "translated", @@ -30155,14 +29803,8 @@ } } }, - "Singapore 923mhz" : { + "Singapore 923MHz" : { "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Singapore 923MHz" - } - }, "it" : { "stringUnit" : { "state" : "translated", @@ -30241,6 +29883,74 @@ } } }, + "skiing" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "skitour" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "tour sciistico" + } + }, + "sr" : { + "stringUnit" : { + "state" : "translated", + "value" : "ски тура" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "滑雪之旅" + } + }, + "zh-Hant-TW" : { + "stringUnit" : { + "state" : "translated", + "value" : "滑雪" + } + } + } + }, + "Skiing" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Skifahren" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sci" + } + }, + "sr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Скијање" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "滑雪" + } + }, + "zh-Hant-TW" : { + "stringUnit" : { + "state" : "translated", + "value" : "滑雪" + } + } + } + }, "Smart Position" : { "localizations" : { "it" : { @@ -30489,7 +30199,7 @@ } } }, - "ssid" : { + "SSID" : { "localizations" : { "de" : { "stringUnit" : { @@ -30497,12 +30207,6 @@ "value" : "SSID" } }, - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "SSID" - } - }, "fr" : { "stringUnit" : { "state" : "translated", @@ -30899,61 +30603,55 @@ "localizations" : { "de" : { "stringUnit" : { - "state" : "translated", - "value" : "Subsystem" - } - }, - "en" : { - "stringUnit" : { - "state" : "translated", + "state" : "needs_review", "value" : "Subsystem" } }, "fr" : { "stringUnit" : { - "state" : "translated", + "state" : "needs_review", "value" : "Subsystem" } }, "he" : { "stringUnit" : { - "state" : "translated", + "state" : "needs_review", "value" : "Subsystem" } }, "it" : { "stringUnit" : { - "state" : "translated", + "state" : "needs_review", "value" : "Sottosistema" } }, "pl" : { "stringUnit" : { - "state" : "translated", + "state" : "needs_review", "value" : "Subsystem" } }, "se" : { "stringUnit" : { - "state" : "translated", + "state" : "needs_review", "value" : "Subsystem" } }, "sr" : { "stringUnit" : { - "state" : "translated", + "state" : "needs_review", "value" : "Подсистем" } }, "zh-Hans" : { "stringUnit" : { - "state" : "translated", + "state" : "needs_review", "value" : "Subsystem" } }, "zh-Hant-TW" : { "stringUnit" : { - "state" : "translated", + "state" : "needs_review", "value" : "Subsystem" } } @@ -33113,262 +32811,6 @@ } } }, - "tip.channels.create.message" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Die meisten Daten in deinem Mesh werden über den primären Kanal gesendet. Du kannst sekundäre Kanäle einrichten, um zusätzliche Nachrichtengruppen zu erstellen, die durch ihren eigenen Schlüssel gesichert sind. [Tipps zur Kanalkonfiguration](https://meshtastic.org/docs/configuration/radio/channels/)" - } - }, - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Most data on your mesh is sent over the primary channel. You can set up secondary channels to create additional messaging groups secured by their own key. [Channel config tips](https://meshtastic.org/docs/configuration/tips/)" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "La pluspart des données de votre maillage sont envoyées sur le canal principal. Vous pouvez définir des canaux secondaires pour créer des groupes de messagerie additionnelle sécurisés avec leur propre clé. [Conseils de configuration du canal](https://meshtastic.org/docs/configuration/tips/)" - } - }, - "he" : { - "stringUnit" : { - "state" : "translated", - "value" : "Most data on your mesh is sent over the primary channel. You can set up secondary channels to create additional messaging groups secured by their own key. [Channel config tips](https://meshtastic.org/docs/configuration/radio/channels/)" - } - }, - "it" : { - "stringUnit" : { - "state" : "translated", - "value" : "La maggior parte dei dati sulla rete viene inviata attraverso il canale primario. È possibile impostare canali secondari per creare gruppi di messaggistica aggiuntivi protetti da una propria chiave. [Suggerimenti per la configurazione del canale](https://meshtastic.org/docs/configuration/tips/)" - } - }, - "pl" : { - "stringUnit" : { - "state" : "translated", - "value" : "Most data on your mesh is sent over the primary channel. You can set up secondary channels to create additional messaging groups secured by their own key. [Channel config tips](https://meshtastic.org/docs/configuration/radio/channels/)" - } - }, - "se" : { - "stringUnit" : { - "state" : "translated", - "value" : "De flesta data i ditt mesh-nätverk skickas över primärkanalen. Du kan ställa in sekundära kanaler för att skapa ytterligare meddelandegrupper skyddade av sin egen nyckel. Tips för kanalkonfiguration" - } - }, - "sr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Већина података на вашој мрежи шаље се преко примарног канала. Можете подесити секундарне канале како бисте креирали додатне групе за размену порука, које су обезбеђене сопственим кључем. [Савети за конфигурацију канала](https://meshtastic.org/docs/configuration/tips/)" - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "Mesh 网格上的大部分数据都通过主频道发送。您可以设置辅助频道以创建由其自身密钥保护的消息组。[频道配置提示](https://meshtastic.org/docs/configuration/tips/)" - } - }, - "zh-Hant-TW" : { - "stringUnit" : { - "state" : "translated", - "value" : "您的Mesh網路中大部分資料將透過主要頻道傳輸。若需要額外的訊息群組,您可以設定次要頻道,並設定專屬金鑰進行保護。" - } - } - } - }, - "tip.channels.create.title" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Kanäle verwalten" - } - }, - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Manage Channels" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Gérer les canaux" - } - }, - "he" : { - "stringUnit" : { - "state" : "translated", - "value" : "Manage Channels" - } - }, - "it" : { - "stringUnit" : { - "state" : "translated", - "value" : "Gestire i canali" - } - }, - "pl" : { - "stringUnit" : { - "state" : "translated", - "value" : "Manage Channels" - } - }, - "se" : { - "stringUnit" : { - "state" : "translated", - "value" : "Hantera Kanaler" - } - }, - "sr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Управљај каналима" - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "管理频道" - } - }, - "zh-Hant-TW" : { - "stringUnit" : { - "state" : "translated", - "value" : "管理頻道" - } - } - } - }, - "tip.channels.share.message" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "In a Meshtastic LoRa Mesh there are up to 8 channels. The first one is the Primary channel where most activity happens and is required. If you don't share your primary channel your first shared channel becomes the primary channel on the other network. It talks on its primary and your secondary channel. A channel with the name 'admin' controls nodes remotely. Other channels are for private groups, each with its own key." - } - }, - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "A Meshtastic QR code contains the LoRa config and channel values needed for radios to communicate. You can share a complete channel configuration using the Replace Channels option, if you choose Add Channels your shared channels will be added to the channels on the receiving radio." - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Un code QR Meshtastic contient la configuration LoRa et les valeurs de canal nécessaires pour communiquer. La plupart des activités du maillage ont lieu sur le canal principal requis. Si vous ne partagez pas votre canal principal, votre premier canal partagé devient le canal principal de l’autre réseau. Les autres canaux sont pour les groupes privés, chacun avec sa propre clé." - } - }, - "he" : { - "stringUnit" : { - "state" : "translated", - "value" : "במשטסטיק יש עד 8 ערוצים. הראשון הינו הראשי והינו היכן שרוב הפעילות מתבצעת והכרחי. אם לא תשתף את הערוץ הראשי שלך הערוץ הראשון שלך נהיה הערוץ הראשי ברשת השניה. הוא מדבר בערוץ הראשי שלו במשני שלך. ערוץ בעל השם 'admin' הינו לשליטה מרחוק. ערוצים נוספים הינם לקבוצות פרטיות, כל אחת עם מפתח הצפנה משלה." - } - }, - "it" : { - "stringUnit" : { - "state" : "translated", - "value" : "Un codice QR Meshtastic contiene la configurazione LoRa e i valori dei canali necessari alle radio per comunicare. È possibile condividere una configurazione completa dei canali utilizzando l'opzione Sostituisci canali; se si sceglie Aggiungi canali, i canali condivisi verranno aggiunti ai canali della radio ricevente." - } - }, - "pl" : { - "stringUnit" : { - "state" : "translated", - "value" : "In a Meshtastic LoRa Mesh there are up to 8 channels. The first one is the Primary channel where most activity happens and is required. If you don't share your primary channel your first shared channel becomes the primary channel on the other network. It talks on its primary and your secondary channel. A channel with the name 'admin' controls nodes remotely. Other channels are for private groups, each with its own key." - } - }, - "se" : { - "stringUnit" : { - "state" : "translated", - "value" : "En Meshtastic QR-kod innehåller LoRa-konfigurationen och kanalvärden som behövs för kommunikation. De flesta aktiviteter i mesh-nätverket sker på den obligatoriska primärkanalen. Om du inte delar din primärkanal blir din första delade kanal primärkanalen på det andra nätverket. Andra kanaler är för privata grupper, varje med sin egen nyckel." - } - }, - "sr" : { - "stringUnit" : { - "state" : "translated", - "value" : "QR код за Мештастик садржи LoRA конфигурацију и вредности канала које су потребне радијима за комуникацију. Можете поделити потпуну конфигурацију канала користећи опцију „Замени канале“, а ако изаберете „Додај канале“, ваши делени канали ће бити додати каналима на примајућем радију." - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "在 Meshtastic 网络中最多有 8 个频道。第一个频道是主频道,大多数活动都发生在这里,也是必需的。如果您不共享主频道,您的第一个共享频道就会成为其他网络的主频道。它会在其主频道和您的辅助频道上对话。名称为 admin 的频道可远程控制节点。其他频道用于私人群组,每个群组都有自己的密钥。" - } - }, - "zh-Hant-TW" : { - "stringUnit" : { - "state" : "translated", - "value" : "Meshtastic QR Code 包含 LoRa 設定與頻道資訊。選擇「取代頻道」可分享完整設定,「新增頻道」則會將分享的頻道新增到接收設備中。" - } - } - } - }, - "tip.channels.share.title" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Meshtastic Kanäle teilen" - } - }, - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Sharing Meshtastic Channels" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Partage des canaux Meshtastic" - } - }, - "he" : { - "stringUnit" : { - "state" : "translated", - "value" : "משתף ערוצי משטסטיק" - } - }, - "it" : { - "stringUnit" : { - "state" : "translated", - "value" : "Condividere i canali Meshtastic" - } - }, - "pl" : { - "stringUnit" : { - "state" : "translated", - "value" : "Sharing Meshtastic Channels" - } - }, - "se" : { - "stringUnit" : { - "state" : "translated", - "value" : "Dela Meshtastic-kanaler" - } - }, - "sr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Дељење Мештастик канала" - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "共享 Meshtastic 频道" - } - }, - "zh-Hant-TW" : { - "stringUnit" : { - "state" : "translated", - "value" : "分享 Meshtastic 頻道" - } - } - } - }, "TLS Enabled" : { "localizations" : { "it" : { @@ -33621,37 +33063,31 @@ "localizations" : { "de" : { "stringUnit" : { - "state" : "translated", - "value" : "Tracker" - } - }, - "en" : { - "stringUnit" : { - "state" : "translated", + "state" : "needs_review", "value" : "Tracker" } }, "it" : { "stringUnit" : { - "state" : "translated", + "state" : "needs_review", "value" : "Tracker" } }, "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" : "Tracker" } } @@ -34141,42 +33577,30 @@ } } }, - "Ukraine 433mhz" : { + "Ukraine 433MHz" : { "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Ukraine 433MHz" - } - }, "it" : { "stringUnit" : { - "state" : "translated", + "state" : "needs_review", "value" : "Ucraina 433MHz" } }, "sr" : { "stringUnit" : { - "state" : "translated", + "state" : "needs_review", "value" : "Украјина 433MHz" } }, "zh-Hant-TW" : { "stringUnit" : { - "state" : "translated", + "state" : "needs_review", "value" : "烏克蘭 433MHz" } } } }, - "Ukraine 868mhz" : { + "Ukraine 868MHz" : { "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Ukraine 868MHz" - } - }, "it" : { "stringUnit" : { "state" : "translated", @@ -34307,6 +33731,64 @@ } } }, + "Universal Transverse Mercator" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Universal Transversal Mercator" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Projection Mercator Transverse Universelle" + } + }, + "he" : { + "stringUnit" : { + "state" : "translated", + "value" : "Universal Transverse Mercator" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mercatore Universale Trasverso" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Uniwersalny Układ Transwersalny Mercatora" + } + }, + "se" : { + "stringUnit" : { + "state" : "translated", + "value" : "Universal Transversal Mercator" + } + }, + "sr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Универзални трансверзални Меркаторов пројекат" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "通用横轴墨卡托投影" + } + }, + "zh-Hant-TW" : { + "stringUnit" : { + "state" : "translated", + "value" : "通用橫軸墨卡托投影" + } + } + } + }, "Unknown" : { "localizations" : { "fr" : { @@ -34605,134 +34087,64 @@ } } }, - "update.firmware" : { + "Update Your Firmware" : { "localizations" : { "de" : { "stringUnit" : { - "state" : "translated", + "state" : "needs_review", "value" : "Firmware aktualisieren" } }, - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Update Your Firmware" - } - }, "fr" : { "stringUnit" : { - "state" : "translated", + "state" : "needs_review", "value" : "Mettre à jour votre Firmware" } }, "he" : { "stringUnit" : { - "state" : "translated", + "state" : "needs_review", "value" : "עדכן קושחה" } }, "it" : { "stringUnit" : { - "state" : "translated", + "state" : "needs_review", "value" : "Aggiornare il firmware" } }, "pl" : { "stringUnit" : { - "state" : "translated", + "state" : "needs_review", "value" : "Zaktualizuj firmware" } }, "se" : { "stringUnit" : { - "state" : "translated", + "state" : "needs_review", "value" : "Uppdatera din firmware" } }, "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" : "更新韌體" } } } }, - "update.interval" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Aktualisierungsintervall" - } - }, - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Update Interval" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Intervale de mise à jour" - } - }, - "he" : { - "stringUnit" : { - "state" : "translated", - "value" : "זמן בין עדכונים" - } - }, - "it" : { - "stringUnit" : { - "state" : "translated", - "value" : "Intervallo di aggiornamento" - } - }, - "pl" : { - "stringUnit" : { - "state" : "translated", - "value" : "Interwał aktualizacji" - } - }, - "se" : { - "stringUnit" : { - "state" : "translated", - "value" : "Uppdateringsintervall" - } - }, - "sr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Интервал ажурирања" - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "更新间隔" - } - }, - "zh-Hant-TW" : { - "stringUnit" : { - "state" : "translated", - "value" : "更新間隔" - } - } - } - }, "Updated Node Stats Data." : { "localizations" : { "it" : { @@ -35398,6 +34810,7 @@ } }, "very.long.range.slow" : { + "extractionState" : "stale", "localizations" : { "en" : { "stringUnit" : { @@ -35663,6 +35076,74 @@ } } }, + "walk" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "gehen" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "passeggiata" + } + }, + "sr" : { + "stringUnit" : { + "state" : "translated", + "value" : "шетња" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "步行" + } + }, + "zh-Hant-TW" : { + "stringUnit" : { + "state" : "translated", + "value" : "走路" + } + } + } + }, + "Walking" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Gehen" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Camminare" + } + }, + "sr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Шетња" + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "步行" + } + }, + "zh-Hant-TW" : { + "stringUnit" : { + "state" : "translated", + "value" : "走路" + } + } + } + }, "Wave" : { "localizations" : { "de" : { @@ -36067,6 +35548,52 @@ } } }, + "Will sleep everything as much as possible, for the tracker and sensor role this will also include the lora radio. Don't use this setting if you want to use your device with the phone apps or are using a device without a user button." : { + "localizations" : { + "he" : { + "stringUnit" : { + "state" : "translated", + "value" : "Will sleep everything as much as possible, for the tracker and sensor role this will also include the lora radio. Don't use this setting if you want to use your device with the phone apps or are using a device without a user button." + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sospenderà tutto il più possibile, per il ruolo di tracker e sensore questo includerà anche la radio lora. Non utilizzare questa impostazione se si desidera utilizzare il dispositivo con le applicazioni del telefono o se si utilizza un dispositivo senza pulsante utente." + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Will sleep everything as much as possible, for the tracker and sensor role this will also include the lora radio. Don't use this setting if you want to use your device with the phone apps or are using a device without a user button." + } + }, + "se" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sätter allt i viloläge så mycket som möjligt, för spårnings- och sensorläge kommer detta också inkludera LoRa-radion. Använd inte denna inställning om du vill använda din enhet med mobilappar eller använder en enhet utan en användarknapp." + } + }, + "sr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Спаваће све што је више могуће, за улогу трагача и сензора ово ће укључивати и лора радио. Не користите ово подешавање ако желите да користите свој уређај са мобилним апликацијама или користите уређај без корисничког дугмета." + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "尽可能让所有设备处于睡眠状态,对于跟踪器和传感器来说,这也包括 LoRa 无线电。如果您想将电台与手机 App 一起使用,或使用没有用户按钮的电台,请不要使用此设置。" + } + }, + "zh-Hant-TW" : { + "stringUnit" : { + "state" : "translated", + "value" : "此設定會讓裝置盡可能休眠,包括 LoRa 無線電(用於 Tracker 和 Sensor 角色)。若您要搭配手機 App,或裝置沒有用戶按鈕,請不要使用此設定。" + } + } + } + }, "Wind" : { "localizations" : { "it" : { @@ -36139,6 +35666,40 @@ } } }, + "Within %@" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Innerhalb %@" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Entro il %@" + } + }, + "se" : { + "stringUnit" : { + "state" : "translated", + "value" : "Inom %@" + } + }, + "sr" : { + "stringUnit" : { + "state" : "translated", + "value" : "У кругу %@" + } + }, + "zh-Hant-TW" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@ 之內" + } + } + } + }, "x" : { "localizations" : { "it" : { diff --git a/Meshtastic/Enums/AppSettingsEnums.swift b/Meshtastic/Enums/AppSettingsEnums.swift index 9a86c363..0797a0df 100644 --- a/Meshtastic/Enums/AppSettingsEnums.swift +++ b/Meshtastic/Enums/AppSettingsEnums.swift @@ -80,9 +80,9 @@ enum UserTrackingModes: Int, CaseIterable, Identifiable { case .none: return "None".localized case .follow: - return "map.usertrackingmode.follow".localized + return "Follow".localized case .followWithHeading: - return "map.usertrackingmode.followwithheading".localized + return "Follow with heading".localized } } var icon: String { diff --git a/Meshtastic/Enums/LoraConfigEnums.swift b/Meshtastic/Enums/LoraConfigEnums.swift index 479d1fe7..c6dc7628 100644 --- a/Meshtastic/Enums/LoraConfigEnums.swift +++ b/Meshtastic/Enums/LoraConfigEnums.swift @@ -105,27 +105,27 @@ enum RegionCodes: Int, CaseIterable, Identifiable { case .in: return "India".localized case .nz865: - return "New Zealand 865mhz".localized + return "New Zealand 865MHz".localized case .th: return "Thailand".localized case .ua433: - return "Ukraine 433mhz".localized + return "Ukraine 433MHz".localized case .ua868: - return "Ukraine 868mhz".localized + return "Ukraine 868MHz".localized case .lora24: return "2.4 Ghz".localized case .my433: - return "Malaysia 433mhz".localized + return "Malaysia 433MHz".localized case .my919: - return "Malaysia 919mhz".localized + return "Malaysia 919MHz".localized case .sg923: - return "Singapore 923mhz".localized + return "Singapore 923MHz".localized case .ph433: - return "Philippines 433mhz".localized + return "Philippines 433MHz".localized case .ph868: - return "Philippines 868mhz".localized + return "Philippines 868MHz".localized case .ph915: - return "Philippines 915mhz".localized + return "Philippines 915MHz".localized } } var dutyCycle: Int { @@ -280,7 +280,6 @@ enum ModemPresets: Int, CaseIterable, Identifiable { case longFast = 0 case longSlow = 1 case longModerate = 7 - case vLongSlow = 2 case medSlow = 3 case medFast = 4 case shortSlow = 5 @@ -295,19 +294,17 @@ enum ModemPresets: Int, CaseIterable, Identifiable { case .longSlow: return "Long Range - Slow".localized case .longModerate: - return "long.range.moderate".localized - case .vLongSlow: - return "very.long.range.slow".localized + return "Long Range - Moderate".localized case .medSlow: - return "medium.range.slow".localized + return "Medium Range - Slow".localized case .medFast: - return "medium.range.fast".localized + return "Medium Range - Fast".localized case .shortSlow: - return "short.range.slow".localized + return "Short Range - Slow".localized case .shortFast: - return "short.range.fast".localized + return "Short Range - Fast".localized case .shortTurbo: - return "short.range.turbo".localized + return "Short Range - Turbo".localized } } var name: String { @@ -318,8 +315,6 @@ enum ModemPresets: Int, CaseIterable, Identifiable { return "LongSlow" case .longModerate: return "LongModerate" - case .vLongSlow: - return "VLongFast" case .medSlow: return "MediumSlow" case .medFast: @@ -340,8 +335,6 @@ enum ModemPresets: Int, CaseIterable, Identifiable { return -7.5 case .longModerate: return -17.5 - case .vLongSlow: - return -20 case .medSlow: return -15 case .medFast: @@ -362,8 +355,6 @@ enum ModemPresets: Int, CaseIterable, Identifiable { return Config.LoRaConfig.ModemPreset.longSlow case .longModerate: return Config.LoRaConfig.ModemPreset.longModerate - case .vLongSlow: - return Config.LoRaConfig.ModemPreset.veryLongSlow case .medSlow: return Config.LoRaConfig.ModemPreset.mediumSlow case .medFast: diff --git a/Meshtastic/Enums/PositionConfigEnums.swift b/Meshtastic/Enums/PositionConfigEnums.swift index 5c24510b..24607df3 100644 --- a/Meshtastic/Enums/PositionConfigEnums.swift +++ b/Meshtastic/Enums/PositionConfigEnums.swift @@ -21,17 +21,17 @@ enum GpsFormats: Int, CaseIterable, Identifiable { var description: String { switch self { case .gpsFormatDec: - return "gpsformat.dec".localized + return "Decimal Degrees Format".localized case .gpsFormatDms: - return "gpsformat.dms".localized + return "Degrees Minutes Seconds".localized case .gpsFormatUtm: - return "gpsformat.utm".localized + return "Universal Transverse Mercator".localized case .gpsFormatMgrs: - return "gpsformat.mgrs".localized + return "Military Grid Reference System".localized case .gpsFormatOlc: - return "gpsformat.olc".localized + return "Open Location Code (aka Plus Codes)".localized case .gpsFormatOsgr: - return "gpsformat.osgr".localized + return "Ordnance Survey Grid Reference".localized } } func protoEnumValue() -> Config.DisplayConfig.GpsCoordinateFormat { diff --git a/Meshtastic/Enums/RouteEnums.swift b/Meshtastic/Enums/RouteEnums.swift index 052d0407..06876b4a 100644 --- a/Meshtastic/Enums/RouteEnums.swift +++ b/Meshtastic/Enums/RouteEnums.swift @@ -20,34 +20,34 @@ enum ActivityType: Int, CaseIterable, Identifiable { var description: String { switch self { case .walking: - return "routes.activitytype.walking".localized + return "Walking".localized case .hiking: - return "routes.activitytype.hiking".localized + return "Hiking".localized case .biking: - return "routes.activitytype.biking".localized + return "Biking".localized case .driving: - return "routes.activitytype.driving".localized + return "Driving".localized case .overlanding: - return "routes.activitytype.overlanding".localized + return "Overlanding".localized case .skiing: - return "routes.activitytype.skiing".localized + return "Skiing".localized } } var fileNameString: String { switch self { case .walking: - return "routes.activitytype.filename.walking".localized + return "walk".localized case .hiking: - return "routes.activitytype.filename.hiking".localized + return "hiking".localized case .biking: - return "routes.activitytype.filename.biking".localized + return "biking".localized case .driving: - return "routes.activitytype.filename.driving".localized + return "driving".localized case .overlanding: - return "routes.activitytype.filename.overlanding".localized + return "overlanding".localized case .skiing: - return "routes.activitytype.filename.skiing".localized + return "skiing".localized } } } diff --git a/Meshtastic/Helpers/BLEManager.swift b/Meshtastic/Helpers/BLEManager.swift index 63a4cc68..5f54afd1 100644 --- a/Meshtastic/Helpers/BLEManager.swift +++ b/Meshtastic/Helpers/BLEManager.swift @@ -739,7 +739,7 @@ class BLEManager: NSObject, CBPeripheralDelegate, MqttClientProxyManagerDelegate let supportedVersion = connectedVersion == "0.0.0" || self.minimumVersion.compare(connectedVersion, options: .numeric) == .orderedAscending || minimumVersion.compare(connectedVersion, options: .numeric) == .orderedSame if !supportedVersion { invalidVersion = true - lastConnectionError = "🚨" + "update.firmware".localized + lastConnectionError = "🚨" + "Update Your Firmware".localized return } } diff --git a/Meshtastic/Persistence/UpdateCoreData.swift b/Meshtastic/Persistence/UpdateCoreData.swift index d8477ee2..01e29d47 100644 --- a/Meshtastic/Persistence/UpdateCoreData.swift +++ b/Meshtastic/Persistence/UpdateCoreData.swift @@ -863,7 +863,7 @@ func upsertSecurityConfigPacket(config: Config.SecurityConfig, nodeNum: Int64, s func upsertAmbientLightingModuleConfigPacket(config: ModuleConfig.AmbientLightingConfig, nodeNum: Int64, sessionPasskey: Data? = Data(), context: NSManagedObjectContext) { - let logString = String.localizedStringWithFormat("mesh.log.ambientlighting.config %@".localized, String(nodeNum)) + let logString = String.localizedStringWithFormat("Ambient Lighting module config received: %@".localized, String(nodeNum)) Logger.data.info("🏮 \(logString, privacy: .public)") let fetchNodeInfoRequest = NodeInfoEntity.fetchRequest() diff --git a/Meshtastic/Tips/ChannelTips.swift b/Meshtastic/Tips/ChannelTips.swift index 6b6a0301..f378c257 100644 --- a/Meshtastic/Tips/ChannelTips.swift +++ b/Meshtastic/Tips/ChannelTips.swift @@ -13,10 +13,10 @@ return "tip.channels.share" } var title: Text { - Text("tip.channels.share.title") + Text("Sharing Meshtastic Channels") } var message: Text? { - Text("tip.channels.share.message") + Text("A Meshtastic QR code contains the LoRa config and channel values needed for radios to communicate. You can share a complete channel configuration using the Replace Channels option, if you choose Add Channels your shared channels will be added to the channels on the receiving radio.") } var image: Image? { Image(systemName: "qrcode") @@ -29,10 +29,10 @@ struct CreateChannelsTip: Tip { return "tip.channels.create" } var title: Text { - Text("tip.channels.create.title") + Text("Manage Channels") } var message: Text? { - Text("tip.channels.create.message") + Text("Most data on your mesh is sent over the primary channel. You can set up secondary channels to create additional messaging groups secured by their own key. [Channel config tips](https://meshtastic.org/docs/configuration/tips/)") } var image: Image? { Image(systemName: "fibrechannel") diff --git a/Meshtastic/Views/Bluetooth/Connect.swift b/Meshtastic/Views/Bluetooth/Connect.swift index 8e04f857..4b3dd213 100644 --- a/Meshtastic/Views/Bluetooth/Connect.swift +++ b/Meshtastic/Views/Bluetooth/Connect.swift @@ -46,7 +46,7 @@ struct Connect: View { VStack { List { if bleManager.isSwitchedOn { - Section(header: Text("connected.radio").font(.title)) { + Section(header: Text("Connected Radio").font(.title)) { if let connectedPeripheral = bleManager.connectedPeripheral, connectedPeripheral.peripheral.state == .connected { TipView(BluetoothConnectionTip(), arrowEdge: .bottom) VStack(alignment: .leading) { @@ -139,7 +139,7 @@ struct Connect: View { NavigationLink { LoRaConfig(node: node) } label: { - Label("set.region", systemImage: "globe.americas.fill") + Label("Set LoRa Region", systemImage: "globe.americas.fill") .foregroundColor(.red) .font(.title) } @@ -156,7 +156,7 @@ struct Connect: View { .frame(width: 60, height: 60) .padding(.trailing) if bleManager.timeoutTimerCount == 0 { - Text("connecting") + Text("Connecting . .") .font(.title2) .foregroundColor(.orange) } else { diff --git a/Meshtastic/Views/Bluetooth/InvalidVersion.swift b/Meshtastic/Views/Bluetooth/InvalidVersion.swift index 6a82581b..5d475756 100644 --- a/Meshtastic/Views/Bluetooth/InvalidVersion.swift +++ b/Meshtastic/Views/Bluetooth/InvalidVersion.swift @@ -17,7 +17,7 @@ struct InvalidVersion: View { VStack { - Text("update.firmware") + Text("Update Your Firmware") .font(.largeTitle) .foregroundColor(.orange) diff --git a/Meshtastic/Views/Nodes/DeviceMetricsLog.swift b/Meshtastic/Views/Nodes/DeviceMetricsLog.swift index c958d1ae..6335bcb3 100644 --- a/Meshtastic/Views/Nodes/DeviceMetricsLog.swift +++ b/Meshtastic/Views/Nodes/DeviceMetricsLog.swift @@ -209,7 +209,7 @@ struct DeviceMetricsLog: View { isPresented: $isPresentingClearLogConfirm, titleVisibility: .visible ) { - Button("device.metrics.delete", role: .destructive) { + Button("Delete all device metrics?", role: .destructive) { if clearTelemetry(destNum: node.num, metricsType: 0, context: context) { Logger.data.notice("Cleared Device Metrics for \(node.num, privacy: .public)") } else { diff --git a/Meshtastic/Views/Nodes/Helpers/NodeListItem.swift b/Meshtastic/Views/Nodes/Helpers/NodeListItem.swift index c01d86de..2978ceab 100644 --- a/Meshtastic/Views/Nodes/Helpers/NodeListItem.swift +++ b/Meshtastic/Views/Nodes/Helpers/NodeListItem.swift @@ -75,7 +75,7 @@ struct NodeListItem: View { if connected { IconAndText(systemName: "antenna.radiowaves.left.and.right.circle.fill", imageColor: .green, - text: "connected".localized) + text: "Connected".localized) } 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", diff --git a/Meshtastic/Views/Settings/Channels.swift b/Meshtastic/Views/Settings/Channels.swift index bff2dbb7..0a24c8c5 100644 --- a/Meshtastic/Views/Settings/Channels.swift +++ b/Meshtastic/Views/Settings/Channels.swift @@ -379,6 +379,6 @@ enum PositionPrecision: Int, CaseIterable, Identifiable { var description: String { let distanceFormatter = MKDistanceFormatter() - return String.localizedStringWithFormat("position.precision %@".localized, String(distanceFormatter.string(fromDistance: precisionMeters))) + return String.localizedStringWithFormat("Within %@".localized, String(distanceFormatter.string(fromDistance: precisionMeters))) } } diff --git a/Meshtastic/Views/Settings/Config/LoRaConfig.swift b/Meshtastic/Views/Settings/Config/LoRaConfig.swift index 20371f31..4ff56e01 100644 --- a/Meshtastic/Views/Settings/Config/LoRaConfig.swift +++ b/Meshtastic/Views/Settings/Config/LoRaConfig.swift @@ -304,6 +304,9 @@ struct LoRaConfig: View { } } func setLoRaValues() { + if node?.loRaConfig?.modemPreset ?? 0 == 2 { + node?.loRaConfig?.modemPreset = 0 + } self.hopLimit = Int(node?.loRaConfig?.hopLimit ?? 3) self.region = Int(node?.loRaConfig?.regionCode ?? 0) self.usePreset = node?.loRaConfig?.usePreset ?? true diff --git a/Meshtastic/Views/Settings/Config/Module/DetectionSensorConfig.swift b/Meshtastic/Views/Settings/Config/Module/DetectionSensorConfig.swift index bdbffa39..ebe21b81 100644 --- a/Meshtastic/Views/Settings/Config/Module/DetectionSensorConfig.swift +++ b/Meshtastic/Views/Settings/Config/Module/DetectionSensorConfig.swift @@ -130,7 +130,7 @@ struct DetectionSensorConfig: View { } .toggleStyle(SwitchToggleStyle(tint: .accentColor)) } - Section(header: Text("update.interval")) { + Section(header: Text("Update Interval")) { Picker("Minimum time between detection broadcasts", selection: $minimumBroadcastSecs) { ForEach(UpdateIntervals.allCases) { ui in Text(ui.description).tag(ui.rawValue) diff --git a/Meshtastic/Views/Settings/Config/Module/TelemetryConfig.swift b/Meshtastic/Views/Settings/Config/Module/TelemetryConfig.swift index 3f7f0dcf..79bf05b2 100644 --- a/Meshtastic/Views/Settings/Config/Module/TelemetryConfig.swift +++ b/Meshtastic/Views/Settings/Config/Module/TelemetryConfig.swift @@ -32,7 +32,7 @@ struct TelemetryConfig: View { Form { ConfigHeader(title: "Telemetry", config: \.telemetryConfig, node: node, onAppear: setTelemetryValues) - Section(header: Text("update.interval")) { + Section(header: Text("Update Interval")) { Picker("Device Metrics", selection: $deviceUpdateInterval ) { ForEach(UpdateIntervals.allCases) { ui in if ui.rawValue >= 900 { diff --git a/Meshtastic/Views/Settings/Config/NetworkConfig.swift b/Meshtastic/Views/Settings/Config/NetworkConfig.swift index 566bbbf5..ff199cff 100644 --- a/Meshtastic/Views/Settings/Config/NetworkConfig.swift +++ b/Meshtastic/Views/Settings/Config/NetworkConfig.swift @@ -42,8 +42,8 @@ struct NetworkConfig: View { .toggleStyle(SwitchToggleStyle(tint: .accentColor)) HStack { - Label("ssid", systemImage: "network") - TextField("ssid", text: $wifiSsid) + Label("SSID", systemImage: "network") + TextField("SSID", text: $wifiSsid) .foregroundColor(.gray) .autocapitalization(.none) .disableAutocorrection(true) diff --git a/Meshtastic/Views/Settings/Config/PowerConfig.swift b/Meshtastic/Views/Settings/Config/PowerConfig.swift index 5fde379c..d875cb2b 100644 --- a/Meshtastic/Views/Settings/Config/PowerConfig.swift +++ b/Meshtastic/Views/Settings/Config/PowerConfig.swift @@ -32,8 +32,8 @@ struct PowerConfig: View { Section { if (currentDevice?.architecture == .esp32 || currentDevice?.architecture == .esp32S3) || (currentDevice?.architecture == .nrf52840 && (node?.deviceConfig?.role ?? 0 == 5 || node?.deviceConfig?.role ?? 0 == 6)) { Toggle(isOn: $isPowerSaving) { - Label("config.power.saving", systemImage: "bolt") - Text("config.power.saving.description") + Label("Power Saving", systemImage: "bolt") + Text("Will sleep everything as much as possible, for the tracker and sensor role this will also include the lora radio. Don't use this setting if you want to use your device with the phone apps or are using a device without a user button.") } .toggleStyle(SwitchToggleStyle(tint: .accentColor)) }